]> git.sur5r.net Git - minitube/blob - src/main.cpp
Removed icon loader
[minitube] / src / main.cpp
1 #include <QtGui>
2 #include <qtsingleapplication.h>
3 #include "constants.h"
4 #include "mainwindow.h"
5 #include "searchparams.h"
6 #include "utils.h"
7 #ifndef Q_WS_X11
8 #include "extra.h"
9 #endif
10 #ifdef Q_WS_MAC
11 #include "mac_startup.h"
12 #endif
13
14 int main(int argc, char **argv) {
15
16 #ifdef Q_WS_MAC
17     mac::MacMain();
18 #endif
19
20     QtSingleApplication app(argc, argv);
21     QString message = app.arguments().size() > 1 ? app.arguments().at(1) : "";
22     if (message == "--help") {
23         MainWindow::printHelp();
24         return 0;
25     }
26     if (app.sendMessage(message))
27         return 0;
28
29     app.setApplicationName(Constants::NAME);
30     app.setOrganizationName(Constants::ORG_NAME);
31     app.setOrganizationDomain(Constants::ORG_DOMAIN);
32 #ifndef APP_WIN
33     app.setWheelScrollLines(1);
34 #endif
35     app.setAttribute(Qt::AA_DontShowIconsInMenus);
36
37 #ifndef Q_WS_X11
38     Extra::appSetup(&app);
39 #else
40     QFile cssFile(":/style.css");
41     cssFile.open(QFile::ReadOnly);
42     QString styleSheet = QLatin1String(cssFile.readAll());
43     app.setStyleSheet(styleSheet);
44 #endif
45
46     // qt translations
47     QTranslator qtTranslator;
48     qtTranslator.load("qt_" + QLocale::system().name(),
49                       QLibraryInfo::location(QLibraryInfo::TranslationsPath));
50     app.installTranslator(&qtTranslator);
51
52     // app translations
53 #ifdef PKGDATADIR
54     QString dataDir = QLatin1String(PKGDATADIR);
55 #else
56     QString dataDir = "";
57 #endif
58     QString localeDir = qApp->applicationDirPath() + "/locale";
59     if (!QDir(localeDir).exists()) {
60         localeDir = dataDir + "/locale";
61     }
62     // qDebug() << "Using locale dir" << localeDir << locale;
63     QTranslator translator;
64     translator.load(QLocale::system(), localeDir);
65     app.installTranslator(&translator);
66     QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
67
68     MainWindow mainWin;
69     mainWin.setWindowTitle(Constants::NAME);
70
71 #ifndef Q_WS_X11
72     Extra::windowSetup(&mainWin);
73 #endif
74
75 // no window icon on Mac
76 #ifndef APP_MAC
77     QIcon appIcon;
78     if (QDir(dataDir).exists()) {
79         appIcon = Utils::icon(Constants::UNIX_NAME);
80     } else {
81         dataDir = qApp->applicationDirPath() + "/data";
82         const int iconSizes [] = { 16, 22, 32, 48, 64, 128, 256, 512 };
83         for (int i = 0; i < 8; i++) {
84             QString size = QString::number(iconSizes[i]);
85             QString png = dataDir + "/" + size + "x" + size + "/" + Constants::UNIX_NAME + ".png";
86             appIcon.addFile(png, QSize(iconSizes[i], iconSizes[i]));
87         }
88     }
89     if (appIcon.isNull()) {
90         appIcon.addFile(":/images/app.png");
91     }
92     mainWin.setWindowIcon(appIcon);
93 #endif
94
95     mainWin.show();
96
97     mainWin.connect(&app, SIGNAL(messageReceived(const QString &)), &mainWin, SLOT(messageReceived(const QString &)));
98     app.setActivationWindow(&mainWin, true);
99
100     // all string literals are UTF-8
101     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
102
103     if (app.arguments().size() > 1) {
104         QString query = app.arguments().at(1);
105         if (query.startsWith("--")) {
106             mainWin.messageReceived(query);
107             return 0;
108         } else {
109             SearchParams *searchParams = new SearchParams();
110             searchParams->setKeywords(query);
111             mainWin.showMedia(searchParams);
112         }
113     }
114
115     // Seed random number generator
116     qsrand(QDateTime::currentDateTime().toTime_t());
117
118     return app.exec();
119 }