Mercurial > trustbridge
annotate ui/main.cpp @ 1307:2bacaec6e101
(perf) Use cached values to deterimine elevation.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 13 Oct 2014 12:32:13 +0200 |
parents | 6d5b305e9430 |
children | 12ed0b72e9f5 |
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" |
631
edf269b6e499
Add self test as first opertation on start
Andre Heinecke <andre.heinecke@intevation.de>
parents:
612
diff
changeset
|
10 #include "logging.h" |
634
80d1a80b3e8d
Factor out selftest for better test and reviewability
Andre Heinecke <andre.heinecke@intevation.de>
parents:
633
diff
changeset
|
11 #include "selftest.h" |
876
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
12 #include "util.h" |
827
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
13 #ifdef WIN32 |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
14 #include "taskscheduler.h" |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
15 #endif |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
16 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
17 #include <QApplication> |
840
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
18 #include <QFile> |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 #include <QtPlugin> |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 #include <QMessageBox> |
17
c12825a651ed
Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents:
16
diff
changeset
|
21 #include <QSettings> |
423
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
22 #include <QDebug> |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
23 #include <QTranslator> |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 |
672
376978e9cc61
Add debug output about style
Andre Heinecke <andre.heinecke@intevation.de>
parents:
634
diff
changeset
|
25 #include <QStyleFactory> |
876
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
26 #include <QFontDatabase> |
672
376978e9cc61
Add debug output about style
Andre Heinecke <andre.heinecke@intevation.de>
parents:
634
diff
changeset
|
27 |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
28 #ifndef VERSION |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
29 #define VERSION "0.0.1" |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
30 #endif |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
31 |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
32 #ifndef APPNAME |
407
af53c40e74b1
Rename m13ui to TrustBridge
Andre Heinecke <aheinecke@intevation.de>
parents:
404
diff
changeset
|
33 #define APPNAME "TrustBridge" |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
34 #endif |
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
35 |
840
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
36 #ifndef STARTUP_FILE_NAME |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
37 #define STARTUP_FILE_NAME "trustbridge-tray-starter.cfg" |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
38 #endif |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
39 |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
40 #ifndef ORGANIZATION |
409
09bb19e5e369
Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents:
407
diff
changeset
|
41 #define ORGANIZATION "BSI" |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
42 #endif |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
43 |
829
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
44 #define COPYRIGHT "Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik \n" \ |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
45 "Software engineering by Intevation GmbH \n\n" \ |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
46 "This file is Free Software under the GNU GPL (v>=2)\n" \ |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
47 "and comes with ABSOLUTELY NO WARRANTY!\n" |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
48 |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
49 #ifdef Q_OS_WIN |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
50 Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
51 #else |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
52 Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
53 #endif |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
54 |
1072
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
55 #ifdef DO_RELEASE_BUILD |
1058
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
56 bool g_debug = false; |
1072
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
57 #else |
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
58 bool g_debug = true; |
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
59 #endif |
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
60 |
1058
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
61 QtMessageHandler g_default_msg_handler = NULL; |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
62 |
1072
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
63 void filterDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) |
1058
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
64 { |
1072
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
65 if (!g_debug && type == QtDebugMsg) { |
1058
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
66 return; |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
67 } |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
68 |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
69 if (g_default_msg_handler) { |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
70 (*g_default_msg_handler)(type, context, msg); |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
71 } |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
72 } |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
73 |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
74 |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
75 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
|
76 { |
939
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
77 #ifdef WIN32 |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
78 /* First verify integrity even before calling QApplication. |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
79 * We only do this on Windows as we have a PKCS#7 embedded |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
80 * signature there which we check with OS methods. |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
81 * |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
82 * On GNU/Linux platforms you should use an IDS system to |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
83 * monitor executable corruptions. |
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
84 */ |
634
80d1a80b3e8d
Factor out selftest for better test and reviewability
Andre Heinecke <andre.heinecke@intevation.de>
parents:
633
diff
changeset
|
85 if (!selftest()) { |
1076
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
86 syslog_error_printf("Integrity check failed."); |
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
87 MessageBoxW(NULL, |
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
88 L"TrustBridge wurde nach der Installation modifizert.\n" |
1078
5fad33497694
(isse116) Typo in message fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
1076
diff
changeset
|
89 L"Um ihr System zu schützen wurde das Starten der Anwendung abgebrochen.\n" |
1076
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
90 L"Bitte installieren Sie TrustBridge erneut.\n\n" |
1079
6d5b305e9430
(isse116) Typo in message fixed.
Emanuel Schuetze <emanuel@intevation.de>
parents:
1078
diff
changeset
|
91 L"TrustBridge has been modified after installation.\n" |
1076
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
92 L"To protect your system the application launch has been aborted.\n" |
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
93 L"Please reinstall TrustBridge.", |
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
94 L"Integritätsprüfung fehlgeschlagen / Integrity check failed.", |
96e448e1cc9f
(issue116) Add error message when selftest failed
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1074
diff
changeset
|
95 MB_ICONERROR | MB_OK); |
631
edf269b6e499
Add self test as first opertation on start
Andre Heinecke <andre.heinecke@intevation.de>
parents:
612
diff
changeset
|
96 return -1; |
634
80d1a80b3e8d
Factor out selftest for better test and reviewability
Andre Heinecke <andre.heinecke@intevation.de>
parents:
633
diff
changeset
|
97 } |
939
574cd1fae1dc
Only do selftest on Windows
Andre Heinecke <andre.heinecke@intevation.de>
parents:
879
diff
changeset
|
98 #endif |
631
edf269b6e499
Add self test as first opertation on start
Andre Heinecke <andre.heinecke@intevation.de>
parents:
612
diff
changeset
|
99 |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
100 QApplication app (argc, argv); |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
101 |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
102 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
|
103 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
|
104 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
|
105 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
|
106 QSettings::setDefaultFormat(QSettings::IniFormat); |
1058
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
107 QStringList arguments = QApplication::arguments(); |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
108 |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
109 if (arguments.contains("--debug")) { |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
110 g_debug = true; |
fe2c6666b462
(issue46) Add debug option to trustbridge client application
Andre Heinecke <andre.heinecke@intevation.de>
parents:
993
diff
changeset
|
111 } |
1072
1e429faf7c84
(issue46) Default to debug output on if RELEASE_BUILD is not defined
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1058
diff
changeset
|
112 g_default_msg_handler = qInstallMessageHandler(filterDebugOutput); |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
113 |
672
376978e9cc61
Add debug output about style
Andre Heinecke <andre.heinecke@intevation.de>
parents:
634
diff
changeset
|
114 qDebug() << "Application style is: " << app.style()->metaObject()->className(); |
376978e9cc61
Add debug output about style
Andre Heinecke <andre.heinecke@intevation.de>
parents:
634
diff
changeset
|
115 qDebug() << "Available styles: " << QStyleFactory::keys().join(", "); |
876
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
116 qDebug() << "Font is: " << app.font(); |
672
376978e9cc61
Add debug output about style
Andre Heinecke <andre.heinecke@intevation.de>
parents:
634
diff
changeset
|
117 |
154
3349c9596043
Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
73
diff
changeset
|
118 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
|
119 |
829
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
120 if (arguments.contains("--version")) { |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
121 printf (APPNAME " Version: %s \n", |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
122 QApplication::applicationVersion().toLocal8Bit().constData()); |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
123 printf (COPYRIGHT); |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
124 return 0; |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
125 } |
294d76174102
(issue5) Add --version to trustbridge and trustbridge-admin
Andre Heinecke <andre.heinecke@intevation.de>
parents:
827
diff
changeset
|
126 |
482
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
127 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
|
128 settings.beginGroup("settings"); |
499
077b4342d69b
Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents:
487
diff
changeset
|
129 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
|
130 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
|
131 |
499
077b4342d69b
Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents:
487
diff
changeset
|
132 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
|
133 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
|
134 } |
0f4331ed4e83
Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents:
423
diff
changeset
|
135 |
612
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
136 if (ProcessHelp::otherProcessesExist(APPNAME)) { |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
137 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
|
138 ProcessHelp::activateWindowForProcess(APPNAME); |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
139 return 0; |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
140 } |
2ea11a95aa4a
Bail if the user is already running the application.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
499
diff
changeset
|
141 |
423
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
142 QTranslator translator; |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
143 if (QLocale::system().name() == "C") { |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
144 /* Useful for testing / development as the primary target is german */ |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
145 translator.load(":/l10n/trustbridge_de_DE"); |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
146 } else { |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
147 qDebug() << "Loading translations for: " << "trustbridge_" + |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
148 QLocale::system().name(); |
993
561cc777e0b6
Add failure indicator if translation load failed.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
939
diff
changeset
|
149 if (!translator.load(":/l10n/trustbridge_" + QLocale::system().name())) { |
561cc777e0b6
Add failure indicator if translation load failed.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
939
diff
changeset
|
150 qDebug() << "Failed."; |
561cc777e0b6
Add failure indicator if translation load failed.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
939
diff
changeset
|
151 } |
423
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
152 } |
3d1e9df24803
Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents:
409
diff
changeset
|
153 app.installTranslator(&translator); |
871
4efd6378c001
(issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
840
diff
changeset
|
154 /* |
712
1e61903f61e2
Only exit when no tray is available and we are in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
672
diff
changeset
|
155 if ((!QSystemTrayIcon::isSystemTrayAvailable() || |
1e61903f61e2
Only exit when no tray is available and we are in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
672
diff
changeset
|
156 !QSystemTrayIcon::supportsMessages()) && trayMode) { |
16
225a5ec20dad
Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents:
0
diff
changeset
|
157 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
|
158 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
|
159 "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
|
160 "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
|
161 return 1; |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
162 } |
871
4efd6378c001
(issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
840
diff
changeset
|
163 */ |
827
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
164 #ifdef Q_OS_WIN |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
165 { |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
166 TaskScheduler taskSched; |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
167 qDebug() << " task sched done: " << taskSched.createDailyTask(QCoreApplication::applicationFilePath(), |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
168 QString::fromLatin1("--tray"), QTime::currentTime()); |
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
169 } |
840
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
170 #else |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
171 /* Save the display on start so that it might later be used by the cron startup script. */ |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
172 QFile startup_file (settings.fileName().replace(APPNAME ".ini", STARTUP_FILE_NAME)); |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
173 startup_file.open(QIODevice::WriteOnly); |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
174 startup_file.write(QString::fromLatin1("DISPLAY=%1\n").arg(qgetenv("DISPLAY").constData()).toUtf8()); |
c9a31544aaab
(issue50) Write startup file with display variable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
829
diff
changeset
|
175 startup_file.close(); |
827
8de162b91a22
(Issue49) Create a Scheduled daily task to run trustbridge
Andre Heinecke <andre.heinecke@intevation.de>
parents:
712
diff
changeset
|
176 #endif |
876
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
177 |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
178 /* Install static fonts */ |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
179 |
879
59fc7ececa5f
Reference bug id for font database problem
Andre Heinecke <andre.heinecke@intevation.de>
parents:
876
diff
changeset
|
180 /* The putenv here works around a bug in qt (#29192). Qt thinks it is a fatal |
876
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
181 * error if the font directory does not exist. */ |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
182 qputenv("QT_QPA_FONTDIR", get_install_dir()); |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
183 int fontId = QFontDatabase::addApplicationFont(":/fonts/DejaVuSans.ttf"); |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
184 if (fontId != -1) |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
185 { |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
186 QFont font("DejaVuSans"); |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
187 font.setPointSize(9); |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
188 app.setFont(font); |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
189 } |
0051cb07da28
Reduce libraries, document i386 build and statically link fonts.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
871
diff
changeset
|
190 |
365
75f7288ad67b
Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents:
154
diff
changeset
|
191 MainWindow mainWin(trayMode); |
0
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
192 |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
193 return app.exec(); |
cb0cde2c5eb9
Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
194 } |