annotate ui/main.cpp @ 502:e551de11d8b6

Properly handle the case that the file does not exist. TRUNCATE makes create file fail if the file does not exist but we need TRUNCATE in the case that the file already exists
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 28 Apr 2014 09:18:07 +0000
parents 077b4342d69b
children 2ea11a95aa4a
rev   line source
404
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
2 * Software engineering by Intevation GmbH
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
3 *
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
6 * See LICENSE.txt for details.
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 365
diff changeset
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"
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10 #include <QApplication>
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 #include <QSystemTrayIcon>
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 #include <QtPlugin>
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 #include <QMessageBox>
17
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
14 #include <QSettings>
423
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
15 #include <QDebug>
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
16 #include <QTranslator>
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
18 #ifndef VERSION
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
19 #define VERSION "0.0.1"
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
20 #endif
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
21
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
22 #ifndef APPNAME
407
af53c40e74b1 Rename m13ui to TrustBridge
Andre Heinecke <aheinecke@intevation.de>
parents: 404
diff changeset
23 #define APPNAME "TrustBridge"
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
24 #endif
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
25
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
26 #ifndef ORGANIZATION
409
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
27 #define ORGANIZATION "BSI"
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
28 #endif
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 #ifdef Q_OS_WIN
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 #else
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 #endif
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 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
37 {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38 QApplication app (argc, argv);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39
482
0f4331ed4e83 Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents: 423
diff changeset
40 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
41 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
42 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
43 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
44 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
45
154
3349c9596043 Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 73
diff changeset
46 QStringList arguments = QApplication::arguments();
3349c9596043 Added commandline arguemnt '--tray' to hide or show the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 73
diff changeset
47 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
48
482
0f4331ed4e83 Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents: 423
diff changeset
49 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
50 settings.beginGroup("settings");
499
077b4342d69b Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents: 487
diff changeset
51 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
52 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
53
499
077b4342d69b Default autostart to true and change setting to bool
Andre Heinecke <aheinecke@intevation.de>
parents: 487
diff changeset
54 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
55 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
56 }
0f4331ed4e83 Close the application if started in tray mode and autstart is not set.
Raimund Renkert <rrenkert@intevation.de>
parents: 423
diff changeset
57
423
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
58 QTranslator translator;
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
59 if (QLocale::system().name() == "C") {
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
60 /* Useful for testing / development as the primary target is german */
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
61 translator.load(":/l10n/trustbridge_de_DE");
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
62 } else {
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
63 translator.load(":/l10n/trustbridge_" + QLocale::system().name());
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
64 qDebug() << "Loading translations for: " << "trustbridge_" +
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
65 QLocale::system().name();
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
66 }
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
67 app.installTranslator(&translator);
3d1e9df24803 Add translation loading
Andre Heinecke <aheinecke@intevation.de>
parents: 409
diff changeset
68
73
5c616934cbe4 Also check that the system tray supports messages
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
69 if (!QSystemTrayIcon::isSystemTrayAvailable() ||
5c616934cbe4 Also check that the system tray supports messages
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
70 !QSystemTrayIcon::supportsMessages()) {
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
71 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
72 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
73 "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
74 "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
75 return 1;
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
76 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
77
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 154
diff changeset
78 MainWindow mainWin(trayMode);
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
79
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80 return app.exec();
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81 }

http://wald.intevation.org/projects/trustbridge/