]> git.sur5r.net Git - minitube/blob - src/main.cpp
b2df305140a7de4aa178a08c48cfb2b953497109
[minitube] / src / main.cpp
1 #include <QtGui>
2 #include <qtsingleapplication.h>
3 #include "constants.h"
4 #include "MainWindow.h"
5 #include "searchparams.h"
6 #ifdef Q_WS_MAC
7 #include "mac_startup.h"
8 #include "macfullscreen.h"
9 #endif
10 #ifdef APP_WIN
11 #include "local/win/qtwin.h"
12 #endif
13 #include "iconloader/qticonloader.h"
14
15 int main(int argc, char **argv) {
16
17 #ifdef Q_WS_MAC
18     mac::MacMain();
19 #endif
20
21     QtSingleApplication app(argc, argv);
22     if (app.sendMessage("Wake up!"))
23         return 0;
24
25     app.setApplicationName(Constants::NAME);
26     app.setOrganizationName(Constants::ORG_NAME);
27     app.setOrganizationDomain(Constants::ORG_DOMAIN);
28 #ifndef APP_MAC
29     app.setWheelScrollLines(1);
30 #endif
31
32 #ifdef APP_MAC
33     QFile file(":/mac.css");
34     file.open(QFile::ReadOnly);
35     app.setStyleSheet(QLatin1String(file.readAll()));
36 #endif
37
38 #ifdef APP_WIN
39     QFile file(":/win.css");
40     file.open(QFile::ReadOnly);
41     app.setStyleSheet(QLatin1String(file.readAll()));
42 #endif
43
44     const QString locale = QLocale::system().name();
45
46     // qt translations
47     QTranslator qtTranslator;
48     qtTranslator.load("qt_" + locale,
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() + QDir::separator() + "locale";
59     if (!QDir(localeDir).exists()) {
60         localeDir = dataDir + QDir::separator() + "locale";
61     }
62     // qDebug() << "Using locale dir" << localeDir << locale;
63     QTranslator translator;
64     translator.load(locale, localeDir);
65     app.installTranslator(&translator);
66     QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
67
68     MainWindow mainWin;
69     mainWin.setWindowTitle(Constants::NAME);
70
71 #ifdef Q_WS_MAC
72     mac::SetupFullScreenWindow(mainWin.winId());
73 #endif
74
75 // no window icon on Mac
76 #ifndef APP_MAC
77     QIcon appIcon;
78     if (QDir(dataDir).exists()) {
79         appIcon = QtIconLoader::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 #ifdef APP_WIN
96     if (QtWin::isCompositionEnabled()) {
97         QtWin::extendFrameIntoClientArea(&mainWin);
98         mainWin.setContentsMargins(0, 0, 0, 0);
99     }
100     app.setFont(QFont("Segoe UI", 9));
101 #endif
102
103     mainWin.show();
104
105     app.setActivationWindow(&mainWin, true);
106
107     // all string literals are UTF-8
108     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
109
110     if (app.arguments().size() > 1) {
111         QString query = app.arguments().at(1);
112         SearchParams *searchParams = new SearchParams();
113         searchParams->setKeywords(query);
114         mainWin.showMedia(searchParams);
115     }
116
117     // Seed random number generator
118     qsrand(QDateTime::currentDateTime().toTime_t());
119
120     return app.exec();
121 }