Mercurial > trustbridge
annotate ui/main.cpp @ 617:63a128400bf3
Add message compiler logic and messages file
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 19 Jun 2014 14:43:53 +0200 |
parents | 2ea11a95aa4a |
children | edf269b6e499 |
rev | line source |
---|---|
404 | 1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU GPL (v>=2) | |
5 * and comes with ABSOLUTELY NO WARRANTY! | |
6 * See LICENSE.txt for details. | |
7 */ | |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
8 #include "mainwindow.h" |
612
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
9 #include "processhelp.h" |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
10 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
11 #include <QApplication> |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
12 #include <QSystemTrayIcon> |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
13 #include <QtPlugin> |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
14 #include <QMessageBox> |
17
c12825a651ed
Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents:
16
diff
changeset
|
15 #include <QSettings> |
423
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
16 #include <QDebug> |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
17 #include <QTranslator> |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
19 #ifndef VERSION |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
20 #define VERSION "0.0.1" |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
21 #endif |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
22 |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
23 #ifndef APPNAME |
407
af53c40e74b1
Rename m13ui to TrustBridge
Andre Heinecke <aheinecke@intevation.de>
parents:
404
diff
changeset
|
24 #define APPNAME "TrustBridge" |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
25 #endif |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
26 |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
27 #ifndef ORGANIZATION |
409
09bb19e5e369
Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents:
407
diff
changeset
|
28 #define ORGANIZATION "BSI" |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
29 #endif |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
31 #ifdef Q_OS_WIN |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
32 Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
33 #else |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
34 Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
35 #endif |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
36 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
37 int main(int argc, char **argv) |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
38 { |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 QApplication app (argc, argv); |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
40 |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
41 QApplication::setQuitOnLastWindowClosed(false); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
42 QApplication::setOrganizationName(QString::fromLatin1(ORGANIZATION)); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
43 QApplication::setApplicationName(QString::fromLatin1(APPNAME)); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
44 QApplication::setApplicationVersion(QString::fromLatin1(VERSION)); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
45 QSettings::setDefaultFormat(QSettings::IniFormat); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
46 |
154
3349c9596043
Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
73
diff
changeset
|
47 QStringList arguments = QApplication::arguments(); |
3349c9596043
Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
73
diff
changeset
|
48 bool trayMode = arguments.contains("--tray"); |
3349c9596043
Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
73
diff
changeset
|
49 |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
50 QSettings settings; |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
51 settings.beginGroup("settings"); |
499
077b4342d69b
Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents:
487
diff
changeset
|
52 bool autoStart = settings.value("autostart", true).toBool(); |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
53 settings.endGroup(); |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
54 |
499
077b4342d69b
Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents:
487
diff
changeset
|
55 if (trayMode && !autoStart) { |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
56 return 0; |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
57 } |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
58 |
612
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
59 if (ProcessHelp::otherProcessesExist(APPNAME)) { |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
60 qDebug() << "Another " << APPNAME << " process is already running. Exiting."; |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
61 ProcessHelp::activateWindowForProcess(APPNAME); |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
62 return 0; |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
63 } |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
64 |
423
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
65 QTranslator translator; |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
66 if (QLocale::system().name() == "C") { |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
67 /* Useful for testing / development as the primary target is german */ |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
68 translator.load(":/l10n/trustbridge_de_DE"); |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
69 } else { |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
70 translator.load(":/l10n/trustbridge_" + QLocale::system().name()); |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
71 qDebug() << "Loading translations for: " << "trustbridge_" + |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
72 QLocale::system().name(); |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
73 } |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
74 app.installTranslator(&translator); |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
75 |
73
5c616934cbe4
Also check that the system tray supports messages
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
76 if (!QSystemTrayIcon::isSystemTrayAvailable() || |
5c616934cbe4
Also check that the system tray supports messages
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
77 !QSystemTrayIcon::supportsMessages()) { |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
78 QMessageBox::critical(0, QString::fromLatin1(APPNAME), |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
79 QObject::tr("Couldn't detect any system tray " |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
80 "on this system. This software can only " |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
81 "be used in a desktop environment.")); |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
82 return 1; |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
83 } |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
84 |
365
75f7288ad67b
Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents:
154
diff
changeset
|
85 MainWindow mainWin(trayMode); |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
86 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
87 return app.exec(); |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
88 } |