annotate ui/mainwindow.cpp @ 1227:a1e990947172

(issue38) Add long time error handling. A Long Time Error is an error that will be shown to the user if it happened at least seven times with an interval of at least a day between occurances. After one success a long time error will be reset.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 24 Sep 2014 15:12:40 +0200
parents 1171a4778562
children 05b938021a24
rev   line source
404
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
2 * Software engineering by Intevation GmbH
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
3 *
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
diff changeset
6 * See LICENSE.txt for details.
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 393
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 <QDebug>
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
11 #include <QProcess>
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
12 #include <QProgressDialog>
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 #include <QMessageBox>
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 #include <QAction>
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15 #include <QDialog>
563
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
16 #include <QDir>
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 #include <QMenu>
2
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
18 #include <QApplication>
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
19 #include <QFile>
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
20 #include <QTemporaryDir>
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
21 #include <QTimer>
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
22 #include <QHBoxLayout>
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
23 #include <QVBoxLayout>
709
8f110e6b8295 (UI) Changed update header to GridLayout and moved action buttons to bottom left.
Emanuel Schuetze <emanuel@intevation.de>
parents: 708
diff changeset
24 #include <QGridLayout>
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
25 #include <QGroupBox>
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
26 #include <QSplitter>
205
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
27 #include <QLabel>
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
28 #include <QImage>
250
1e112cf41e92 Updated the mainwindow layout.
Raimund Renkert <rrenkert@intevation.de>
parents: 249
diff changeset
29 #include <QCheckBox>
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
30 #include <QButtonGroup>
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
31 #include <QToolButton>
857
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
32 #include <QStandardPaths>
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
33 #include <QDesktopServices>
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
34
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
35 #include "certificatelist.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
36 #include "downloader.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
37 #include "helpdialog.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
38 #include "aboutdialog.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
39 #include "separatoritemdelegate.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
40 #include "installwrapper.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
41 #include "util.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
42 #include "logging.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
43 #include "binverify.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
44 #include "processhelp.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
45 #include "processwaitdialog.h"
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
46 #include "trayicon.h"
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
47 #include "proxysettingsdlg.h"
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
48
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
49 // The amount of time in minutes stay silent if we have
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
50 // something to say
548
c84dc8f6d017 Increase nag interval to 70 minutes
Andre Heinecke <aheinecke@intevation.de>
parents: 531
diff changeset
51 #define NAG_INTERVAL_MINUTES 70
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
53 #define DATETIME_FORMAT "d. MMM yyyy HH:mm"
714
57bd73145e48 (Issue25) Fix typos change order and add better date formating
Andre Heinecke <andre.heinecke@intevation.de>
parents: 713
diff changeset
54
409
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
55 #ifndef APPNAME
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
56 #define APPNAME "TrustBridge"
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
57 #endif
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
58
994
8fb1b912fd8e Add test using the default download server used by the software
Andre Heinecke <andre.heinecke@intevation.de>
parents: 987
diff changeset
59 #ifndef SERVER_URL
8fb1b912fd8e Add test using the default download server used by the software
Andre Heinecke <andre.heinecke@intevation.de>
parents: 987
diff changeset
60 #error "DOWNLOAD_SERVER option not set or invalid."
8fb1b912fd8e Add test using the default download server used by the software
Andre Heinecke <andre.heinecke@intevation.de>
parents: 987
diff changeset
61 #endif
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
62
885
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
63 #if defined(_X86_) || defined(__i386__)
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
64 #define TB_ARCH_STRING "-i386"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
65 #else
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
66 #define TB_ARCH_STRING "-amd64"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
67 #endif
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
68
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
69 #ifdef IS_TAG_BUILD
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
70 # define LIST_RESOURCE "/zertifikatsliste.txt"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
71 # ifdef Q_OS_WIN
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
72 # define SW_RESOURCE_VERSION "/TrustBridge-%1.exe"
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
73 # define SW_RESOURCE "/TrustBridge.exe"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
74 # else
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
75 # define SW_RESOURCE_VERSION "/TrustBridge-%1" TB_ARCH_STRING ".sh"
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
76 # define SW_RESOURCE "/TrustBridge" TB_ARCH_STRING ".sh"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
77 # endif
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
78 #else // Not tag build means develpment build
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
79 # define LIST_RESOURCE "/zertifikatsliste.txt"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
80 # ifdef Q_OS_WIN
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
81 # define SW_RESOURCE_VERSION "/development/TrustBridge-%1.exe"
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
82 # define SW_RESOURCE "/development/TrustBridge.exe"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
83 # else
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
84 # define SW_RESOURCE_VERSION "/development/TrustBridge-%1" TB_ARCH_STRING ".sh"
1088
508c96e72f62 (issue124) Switch server URL and remove some RELEASE_BUILD options
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1082
diff changeset
85 # define SW_RESOURCE "/development/TrustBridge" TB_ARCH_STRING ".sh"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
86 # endif
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
87 #endif
7
992c0ec57660 Add unit tests make CertificateList work.
Andre Heinecke <aheinecke@intevation.de>
parents: 2
diff changeset
88
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
89 /* Help installation path the path relative to the installation directory where
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
90 * the help is placed.*/
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
91 #ifdef WIN32
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
92 #define HELP_PATH "/doc/index.html"
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
93 #else
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
94 #define HELP_PATH "/../share/doc/trustbridge/index.html"
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
95 #endif
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
96
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
97 static void activateDetailsButton(QPushButton *);
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
98 static void deactivateDetailsButton(QPushButton *);
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
99
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
100 MainWindow::MainWindow(bool trayMode):
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
101 mTrayMode(trayMode),
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
102 mManualDetailsShown(false)
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
103 {
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 createActions();
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105 createTrayIcon();
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
106 setupGUI();
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
107 resize(900, 600);
709
8f110e6b8295 (UI) Changed update header to GridLayout and moved action buttons to bottom left.
Emanuel Schuetze <emanuel@intevation.de>
parents: 708
diff changeset
108 setMinimumWidth(760);
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
109 qRegisterMetaType<SSLConnection::ErrorCode>("SSLConnection::ErrorCode");
265
ffd47b045d19 Added certificate status enum and register it as metatype.
Raimund Renkert <rrenkert@intevation.de>
parents: 250
diff changeset
110 qRegisterMetaType<Certificate::Status>("Certificate::Status");
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
111
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
112 connect(mTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113 this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
114
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
115 mMessageTimer = new QTimer(this);
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
116 connect(mMessageTimer, SIGNAL(timeout()), this, SLOT(showMessage()));
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
117 mMessageTimer->setInterval(NAG_INTERVAL_MINUTES * 60 * 1000);
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
118 mMessageTimer->start();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
119 checkUpdates();
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
120 loadUnselectedCertificates();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
121 loadCertificateList();
1125
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
122
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
123 if (mSettings.value("ShowOnNextStart").toBool()) {
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
124 mSettings.remove("ShowOnNextStart");
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
125 show();
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
126 } else if (!trayMode) {
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
127 show();
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
128 }
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
129 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
130
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
131 void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason)
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
132 {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
133 switch (reason) {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
134 case QSystemTrayIcon::Trigger:
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
135 case QSystemTrayIcon::MiddleClick:
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
136 showMessage();
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
137 break;
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
138 case QSystemTrayIcon::DoubleClick:
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
139 show();
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
140 break;
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
141 default:
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
142 ;
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
143 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
144 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
145
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
146 void MainWindow::messageClicked()
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
147 {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
148 if (mCurState == NewSoftwareAvailable) {
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
149 verifySWData();
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
150 QString swFileName = mSettings.value("Software/available").toString();
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
151 if (swFileName.isEmpty()) {
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
152 checkUpdates(true);
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
153 mCurState = DownloadingSW;
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
154 return;
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
155 }
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
156 installNewSW(swFileName,
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
157 mSettings.value("Software/availableDate").toDateTime());
965
013ca910589a Open main window in case of error message.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 964
diff changeset
158 } else {
013ca910589a Open main window in case of error message.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 964
diff changeset
159 show();
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
160 }
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
161 }
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
162
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
163 void MainWindow::showMessage()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
164 {
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
165 if (mCurMessage.isEmpty()) {
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
166 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
167 }
961
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
168
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
169 if (!mTrayIcon->isVisible() && !mTrayIcon->isAlternative()) {
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
170 mTrayIcon->show();
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
171 /* When the message is shown before the tray icon is fully visble
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
172 * and becoming visible may be delayed on some desktop environments
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
173 * the message will pop up somehere on the screen and not over
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
174 * the trayicon. So we delay here.*/
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
175 QTimer::singleShot(2000, this, SLOT(showMessage()));
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
176 } else if (mCurState == NewSoftwareAvailable || !isVisible()) {
1144
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
177 if (mCurState == NewListAvailable) {
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
178 mTrayIcon->showMessage(QApplication::applicationName(), mCurMessage,
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
179 QSystemTrayIcon::Information, 10000,
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
180 tr("Show recommendations"));
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
181 } else if (mCurState == NewSoftwareAvailable || !mTrayIcon->isAlternative()) {
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
182 /* Only show new list or new software in alternative as
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
183 * the current tray icon alternative is too invasive for pure
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
184 * informational messages. */
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
185 mTrayIcon->showMessage(QApplication::applicationName(), mCurMessage,
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
186 QSystemTrayIcon::Information, 10000);
a4282bc67a8b (issue99) Make OK button in message box notification configurable and change it for list updates
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1127
diff changeset
187 }
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
188 mMessageTimer->start(); // Restart the timer so that we don't spam
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
189 }
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
190 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
191
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
192 void MainWindow::verifyListData()
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
193 {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
194 QString availableFileName = mSettings.value("List/available").toString();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
195 QString installedFileName = mSettings.value("List/installed").toString();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
196 if (!availableFileName.isEmpty()) {
1153
0495f9187c4b (issue36) read_and_verify_list expects utf8 filenames.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1148
diff changeset
197 mListToInstall.readList(availableFileName.toUtf8().constData());
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
198 if (!mListToInstall.isValid()) {
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
199 handleLTE(lteInvalidList);
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
200 mCurState = TransferError;
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
201 QFile::remove(availableFileName);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
202 mSettings.remove("List/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
203 mSettings.remove("List/availableDate");
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
204 } else {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
205 handleLTE(lteInvalidList, true);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
206 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
207 } else {
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
208 // Make sure the available notation is also removed
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
209 mSettings.remove("List/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
210 mSettings.remove("List/availableDate");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
211 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
212
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
213 if (!installedFileName.isEmpty()) {
1153
0495f9187c4b (issue36) read_and_verify_list expects utf8 filenames.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1148
diff changeset
214 mInstalledList.readList(installedFileName.toUtf8().constData());
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
215 if (!mInstalledList.isValid()) {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
216 // Probably a bug when Qt fileName is encoded and cFileName
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
217 // fails because of this. This needs a unit test!
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
218 // Maybe check that the file is in our data directory
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
219 QFile::remove(installedFileName);
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
220 mSettings.remove("List/installed");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
221 mSettings.remove("List/installedDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
222 }
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
223 } else {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
224 mSettings.remove("List/installed");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
225 mSettings.remove("List/installedDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
226 }
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
227 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
228
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
229 void MainWindow::verifySWData()
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
230 {
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
231 QString swFileName = mSettings.value("Software/available").toString();
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
232
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
233 if (swFileName.isEmpty()) {
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
234 qDebug() << "Date set but no fileName";
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
235 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
236 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
237 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
238
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
239 QFileInfo fi(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
240 if (!fi.exists()) {
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
241 mSettings.remove("Software/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
242 mSettings.remove("Software/availableDate");
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
243 qDebug() << "Software does not yet exist.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
244 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
245 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
246 if (!fi.isExecutable()) {
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
247 qWarning() << "Downloaded file: " << swFileName << " is not executable.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
248 QFile::remove(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
249 mSettings.remove("Software/available");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
250 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
251 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
252 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
253 bin_verify_result verifyResult = verify_binary(swFileName.toUtf8().constData(),
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
254 swFileName.toUtf8().size());
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
255 qDebug() << "Binary verify result: " << verifyResult.result;
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
256 if (verifyResult.result != VerifyValid) {
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
257 handleLTE(lteInvalidSoftware);
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
258 qDebug() << "Failed to verify downloaded data.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
259 QFile::remove(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
260 mSettings.remove("Software/available");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
261 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
262 return;
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
263 }
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
264 handleLTE(lteInvalidSoftware, true); /* Reset error state */
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
265 fclose(verifyResult.fptr);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
266 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
267
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
268 void MainWindow::handleNewList(const QString& fileName, const QDateTime& modDate) {
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
269 qDebug() << "new list available";
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
270 mSettings.setValue("List/available", fileName);
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
271 mSettings.setValue("List/availableDate", modDate);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
272
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
273 verifyListData();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
274 if (!mListToInstall.isValid()) {
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
275 handleLTE(lteInvalidList);
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
276 /* Downloader provided invalid files */
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
277
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
278 /* Retry the download again in 10 - 20 minutes */
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
279 QTimer::singleShot(600000 + (qrand() % 60000), this, SLOT(checkUpdates()));
1153
0495f9187c4b (issue36) read_and_verify_list expects utf8 filenames.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1148
diff changeset
280 qDebug() << "Failed to verify list.";
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
281 } else {
1154
98e0712e790b Indentation fix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1153
diff changeset
282 if (mTrayIcon->isAlternative()) {
98e0712e790b Indentation fix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1153
diff changeset
283 mCurMessage = tr("An updated certificate list is available.");
98e0712e790b Indentation fix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1153
diff changeset
284 } else {
98e0712e790b Indentation fix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1153
diff changeset
285 mCurMessage = tr("An updated certificate list is available.") +" " + tr("Click here to install.");
98e0712e790b Indentation fix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1153
diff changeset
286 }
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
287 setState(NewListAvailable);
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
288 showMessage();
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
289 loadCertificateList();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
290 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
291 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
292
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
293 void MainWindow::handleNewSW(const QString& fileName, const QDateTime& modDate) {
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
294 if (mTrayIcon->isAlternative()) {
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
295 mCurMessage = tr("An update for %1 is available.").arg(
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
296 QApplication::applicationName());
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
297 } else {
904
f89b41fa7048 Fix whitespace errors
Andre Heinecke <andre.heinecke@intevation.de>
parents: 900
diff changeset
298 mCurMessage = QString(tr("An update for %1 is available.") + "\n" +
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
299 tr("Click here to download and install the update.")).arg(
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
300 QApplication::applicationName());
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
301 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
302 setState(NewSoftwareAvailable);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
303 mSettings.setValue("Software/available", fileName);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
304 mSettings.setValue("Software/availableDate", modDate);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
305
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
306 mSettings.sync();
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
307 showMessage();
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
308 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
309
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
310 QString MainWindow::getPrettyInstallerName(QString realFileName) {
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
311 QTemporaryDir tDir;
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
312 if (!tDir.isValid()) {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
313 qDebug () << "Failed to create temporary directory.";
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
314 showErrorMessage (tr("Failed to create temporary directory.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
315 tr("Please ensure that you have the access rights to write in "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
316 "the temporary directory and that there is at least 20MB free "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
317 "disk space available."));
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
318 return QString();
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
319 }
1126
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
320 QString targetPath = tDir.path() + "/" + QObject::tr("TrustBridge-Updater",
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
321 "Used as filename for the updater. Only use ASCII please.");
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
322
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
323 tDir.setAutoRemove(false);
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
324 #ifdef WIN32
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
325 targetPath += ".exe";
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
326 #endif
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
327 if (!QFile::copy(realFileName, targetPath)) {
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
328 showErrorMessage (tr("Failed to create a temporary copy of the installer.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
329 tr("Please ensure that you have the access rights to write in "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
330 "the temporary directory and that there is at least 20MB free "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
331 "disk space available."));
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
332 qDebug() << "Failed to create temporary copy of installer.";
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
333 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
334 return targetPath;
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
335 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
336
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
337 void MainWindow::installNewSW(const QString& fileName, const QDateTime& modDate) {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
338 QFileInfo instProcInfo = QFileInfo(fileName);
563
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
339 QString filePath = QDir::toNativeSeparators(instProcInfo.absoluteFilePath());
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
340
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
341 /* Copy the file to a temporary name for installation */
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
342 filePath = getPrettyInstallerName(filePath);
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
343
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
344 if (filePath.isEmpty()) {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
345 qDebug() << "Failed to copy updater to temporary location.";
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
346 return;
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
347 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
348 mSettings.setValue("Software/Updater", filePath); /* So it can be deleted
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
349 on next start */
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
350 mSettings.sync();
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
351
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
352 bin_verify_result vres = verify_binary(filePath.toUtf8().constData(),
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
353 filePath.toUtf8().size());
592
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
354
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
355 if (vres.result != VerifyValid) {
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
356 handleLTE(lteInvalidSoftware);
592
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
357 qDebug() << "Invalid software. Not installing";
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
358 return;
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
359 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
360 handleLTE(lteInvalidSoftware, true);
592
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
361 QFileInfo fi(QCoreApplication::applicationFilePath());
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
362 QDir installDir = fi.absoluteDir();
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
363
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
364 #ifdef WIN32
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
365 QString parameters = QString::fromLatin1("/S /UPDATE=1 /D=") +
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
366 installDir.path().replace("/", "\\") + "";
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
367
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
368 SHELLEXECUTEINFOW shExecInfo;
563
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
369 memset (&shExecInfo, 0, sizeof(SHELLEXECUTEINFOW));
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
370 shExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW);
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
371
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
372 shExecInfo.lpFile = reinterpret_cast<LPCWSTR> (filePath.utf16());
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
373 shExecInfo.lpParameters = reinterpret_cast<LPCWSTR> (parameters.utf16());
563
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
374
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
375 // shExecInfo.fMask = SEE_MASK_NOASYNC;
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
376 shExecInfo.nShow = SW_SHOWDEFAULT;
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
377
1003
db7e7156c824 (issue66) Only depend on is_system_install on windows to decide privilege raise
Andre Heinecke <andre.heinecke@intevation.de>
parents: 997
diff changeset
378 if (!is_system_install()) {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
379 shExecInfo.lpVerb = L"open";
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
380 } else {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
381 shExecInfo.lpVerb = L"runas";
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
382 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
383
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
384 qDebug() << "Starting process: " << filePath
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
385 << " with arguments: " << parameters;
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
386
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
387 if (!ShellExecuteExW(&shExecInfo)) {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
388 /* Execution failed, maybe the user aborted the UAC check? */
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
389 char* errmsg = getLastErrorMsg();
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
390 QString qerrmsg = QString::fromUtf8(errmsg);
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
391 free(errmsg);
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
392 qDebug() << "Failed to start process: " << qerrmsg;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
393 setState(NewSoftwareAvailable);
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
394 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
395 return;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
396 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
397 #else /* WIN32 */
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
398 /* On linux installDir is <prefix>/bin */
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
399 QStringList parameters;
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
400 installDir.cdUp();
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
401 parameters << "--prefix" << installDir.path();
1067
51b97ebc5b06 (issue54) Launch depending on visibility either as tray or full after installation
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1061
diff changeset
402 parameters << "--update";
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
403 bool sudo_started = false;
841
216a65d7fc4b (issue66) Implement is_system_install and use it
Andre Heinecke <andre.heinecke@intevation.de>
parents: 838
diff changeset
404 bool use_sudo = is_admin() && is_system_install();
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
405 if (use_sudo) {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
406 QStringList sudoPrograms;
987
b8ae69bcc540 Use pkexec instead of gksudo.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 970
diff changeset
407 sudoPrograms << "pkexec" << "kdesudo" << "sudo";
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
408 QStringList sudoParams;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
409 sudoParams << filePath + " " + parameters.join(" ");
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
410
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
411 foreach (const QString &sProg, sudoPrograms) {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
412 qDebug() << "Starting process " << sProg <<" params: " << sudoParams;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
413 if (!QProcess::startDetached(sProg, sudoParams)) {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
414 continue;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
415 } else {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
416 sudo_started = true;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
417 break;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
418 }
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
419 }
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
420 }
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
421 qDebug() << "Starting process " << filePath <<" params: " << parameters;
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
422 if (!sudo_started && !QProcess::startDetached(filePath, parameters)) {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
423 qDebug() << "Failed to start process.";
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
424 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
425 return;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
426 }
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
427
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
428 #endif
1125
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
429 if (isVisible()) {
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
430 mSettings.setValue("ShowOnNextStart", true);
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
431 mSettings.sync();
dd9094d92899 (issue54) If the MainWindows is visible when an update is triggered start it visible after upadte
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1116
diff changeset
432 }
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
433
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
434 syslog_info_printf ("Installing update: %s\n", fileName.toUtf8().constData());
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
435 /* Installer process should now be running. We exit */
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
436 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
437 closeApp();
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
438 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
439
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
440 void MainWindow::checkUpdates(bool downloadSW)
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
441 {
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
442 verifyListData();
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
443
1116
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
444 /* Delete old temporary installers if they exist */
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
445 QString oldUpdater = mSettings.value("Software/Updater").toString();
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
446
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
447 if (!oldUpdater.isEmpty()) {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
448 qDebug() << "Removing old updater: " << oldUpdater;
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
449 QFileInfo fiUpdater(oldUpdater);
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
450 if (!QFile::remove(fiUpdater.absoluteFilePath())) {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
451 qDebug() << "Failed to remove file";
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
452 } else {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
453 if (!fiUpdater.absoluteDir().rmdir(fiUpdater.absoluteDir().absolutePath())) {
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
454 qDebug() << "Failed to remove temporary directory.";
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
455 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
456 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
457 mSettings.remove("Software/Updater");
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
458 }
df2297e741ad (issue127) Rename the installer to a pretty name before execution.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1110
diff changeset
459
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
460 if (!mSettings.contains("Software/installedDate") ||
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
461 mSettings.value("Software/installedVersion").toString() != QApplication::applicationVersion()) {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
462 /* This should only happen on initial startup and after an update has
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
463 * been installed */
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
464 getLastModForCurrentVersion();
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
465 return;
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
466 }
17
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
467 QDateTime listInstalledLastMod = mSettings.value("List/installedDate").toDateTime();
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
468 QDateTime swInstalledLastMod = mSettings.value("Software/installedDate").toDateTime();
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
469
1056
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
470 QDateTime swAvailableLastMod = mSettings.value("Software/availableDate").toDateTime();
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
471
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
472 if (swAvailableLastMod.isValid()) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
473 qDebug() << "Installed an update: " << swInstalledLastMod <<
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
474 " available " << swAvailableLastMod;
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
475 syslog_info_printf ("Software has been updated to version: %s\n",
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
476 QApplication::applicationVersion().toUtf8().constData());
1056
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
477 if (swInstalledLastMod == swAvailableLastMod) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
478 QString fileName = mSettings.value("Software/available").toString();
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
479 if (fileName.isEmpty()) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
480 qDebug() << "Software marked as available but no filename set.";
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
481 } else {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
482 if (QFile::remove(fileName)) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
483 qDebug() << "Removed: " << fileName;
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
484 } else {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
485 qDebug() << "Failed to remove: " << fileName;
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
486 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
487 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
488 /* Clear out available data. */
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
489 mSettings.remove("Software/available");
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
490 mSettings.remove("Software/availableDate");
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
491 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
492 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
493
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
494 QString listResource = QString::fromLatin1(LIST_RESOURCE);
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
495 QString swResource = QString::fromLatin1(SW_RESOURCE);
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
496
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
497 #ifndef RELEASE_BUILD
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
498 /* Use this for testing to specify another file name for updates */
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
499 listResource = mSettings.value("List/resource", listResource).toString();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
500 swResource = mSettings.value("Software/resource", swResource).toString();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
501 #endif
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
502
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
503 Downloader* downloader = new Downloader(this,
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
504 QString::fromLatin1(SERVER_URL),
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
505 QByteArray(),
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
506 swInstalledLastMod,
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
507 listInstalledLastMod,
437
4b486a14252f Acutally use the values that can be taken from the config
Andre Heinecke <aheinecke@intevation.de>
parents: 434
diff changeset
508 swResource,
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
509 listResource,
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
510 downloadSW);
17
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
511
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
512 connect(downloader, SIGNAL(newListAvailable(const QString&, const QDateTime&)),
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
513 this, SLOT(handleNewList(const QString&, const QDateTime&)));
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
514 if (!downloadSW) {
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
515 setState(BeforeDownload);
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
516 connect(downloader, SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&)),
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
517 this, SLOT(handleNewSW(const QString&, const QDateTime&)));
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
518 } else {
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
519 setState(DownloadingSW);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
520 connect(downloader, SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&)),
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
521 this, SLOT(installNewSW(const QString&, const QDateTime&)));
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
522 }
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
523
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
524 connect(downloader, SIGNAL(finished()), downloader, SLOT(deleteLater()));
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
525 connect(downloader, SIGNAL(finished()), this, SLOT(updateCheckSuccess()));
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
526 connect(downloader, SIGNAL(error(const QString &, SSLConnection::ErrorCode)),
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
527 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode)));
10
fe39d93f1261 Start on Downloader component
Andre Heinecke <aheinecke@intevation.de>
parents: 7
diff changeset
528 downloader->start();
1126
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
529
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
530 if (downloadSW && getState() == DownloadingSW && isVisible()) {
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
531 QProgressDialog *progDlg = new QProgressDialog(this);
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
532 progDlg->setCancelButton(0);
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
533 progDlg->setRange(0,0);
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
534 progDlg->setMinimumDuration(0);
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
535 progDlg->setLabelText(tr("Downloading update..."));
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
536 progDlg->show();
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
537 connect(downloader, SIGNAL(finished()), progDlg, SLOT(deleteLater()));
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
538 connect(downloader, SIGNAL(finished()), progDlg, SLOT(cancel()));
a07030035349 (issue96) Add progressbar during download if window is visible.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1125
diff changeset
539 }
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
540 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
541
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
542 void MainWindow::getLastModForCurrentVersion()
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
543 {
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
544 QString softwareVersion = QString::fromLatin1(SW_RESOURCE_VERSION).arg(
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
545 QApplication::applicationVersion());
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
546 qDebug() << softwareVersion;
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
547 QString listResource = QString::fromLatin1(LIST_RESOURCE);
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
548 Downloader* downloader = new Downloader(this,
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
549 QString::fromLatin1(SERVER_URL),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
550 QByteArray(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
551 QDateTime::currentDateTime(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
552 QDateTime::currentDateTime(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
553 softwareVersion,
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
554 listResource,
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
555 false);
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
556 connect(downloader, SIGNAL(finished()), downloader, SLOT(deleteLater()));
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
557 connect(downloader, SIGNAL(error(const QString &, SSLConnection::ErrorCode)),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
558 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode)));
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
559 connect(downloader, SIGNAL(lastModifiedDate(const QDateTime&)),
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
560 this, SLOT(setLastModifiedSWDate(const QDateTime&)));
1155
5f5880cca5cf Fix connect syntax in downloader destroy notification.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1154
diff changeset
561 connect(this, SIGNAL(destroyed(QObject*)), downloader, SLOT(quit()));
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
562 downloader->start();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
563 }
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
564
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
565 void MainWindow::setLastModifiedSWDate(const QDateTime &date)
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
566 {
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
567 mSettings.beginGroup("Software");
1145
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
568 #ifdef IS_TAG_BUILD
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
569 /* We accept an invalid date to force installing any avialable update
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
570 * in release mode. Otherwise we default to current datetime when we
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
571 * did not find out version.*/
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
572 mSettings.setValue("installedDate", date);
1145
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
573 #else
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
574 mSettings.setValue("installedDate", date.isValid() ? date : QDateTime::currentDateTime());
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
575 #endif
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
576 mSettings.setValue("installedVersion", QApplication::applicationVersion());
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
577 mSettings.endGroup();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
578 checkUpdates();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
579 }
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
580
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
581 void MainWindow::downloaderError(const QString &message, SSLConnection::ErrorCode error)
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
582 {
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
583 syslog_error_printf ("Failed to check for updates: %s", message.toUtf8().constData());
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
584 if (error == SSLConnection::InvalidCertificate) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
585 handleLTE(lteInvalidCertificate);
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
586 } else {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
587 handleLTE(lteNoConnection);
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
588 }
1145
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
589 #ifdef IS_TAG_BUILD
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
590 /* During tag build it should never happen that an url checked is not available
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
591 * during development this is normal as each revision produces a new url. */
a41338b18273 (issue130) Do not show error when software was not found and handle it in setLastMod
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1144
diff changeset
592 setState(TransferError);
1061
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
593 if (!isVisible()) {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
594 mCurMessage = message;
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
595 mTrayIcon->show();
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
596 showMessage();
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
597 } else {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
598 showErrorMessage(tr("Failed to check for updates:") + "\n" + message);
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
599 }
1127
1a5f9e260099 (issue130) Remove USE_REAL_RESOURCE option and implement behavior as descript in the issue
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1126
diff changeset
600 #endif
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
601 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
602
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
603 void MainWindow::createActions()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
604 {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
605 mCheckUpdates = new QAction(tr("Check for Updates"), this);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
606 connect(mCheckUpdates, SIGNAL(triggered()), this, SLOT(checkUpdates()));
2
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
607 mQuitAction = new QAction(tr("Quit"), this);
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
608 connect(mQuitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
609 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
610
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
611 void MainWindow::createTrayIcon()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
612 {
11
7e2f14c7aba2 Split up downloader component and further implement it
Andre Heinecke <aheinecke@intevation.de>
parents: 10
diff changeset
613 QIcon trayImg(":/img/tray_22.png");
970
c80777457133 (issue50) Add window icon and icon for 48x48px
Andre Heinecke <andre.heinecke@intevation.de>
parents: 966
diff changeset
614 trayImg.addFile(":/img/tray_48.png", QSize(48,48));
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
615
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
616 mTrayMenu = new QMenu(this);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
617 mTrayMenu->addAction(mCheckUpdates);
2
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
618 mTrayMenu->addAction(mQuitAction);
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
619
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
620 mTrayIcon = new TrayIcon(this);
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
621 mTrayIcon->setContextMenu(mTrayMenu);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
622
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
623 mTrayIcon->setIcon(trayImg);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
624 setWindowIcon(trayImg);
407
af53c40e74b1 Rename m13ui to TrustBridge
Andre Heinecke <aheinecke@intevation.de>
parents: 404
diff changeset
625 mTrayIcon->setToolTip(tr("TrustBridge"));
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
626
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
627 connect(mTrayIcon, SIGNAL(messageClicked()), this, SLOT(messageClicked()));
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
628 }
155
c0fdb8d336cf Added menubar/menu and method stubs to mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 82
diff changeset
629
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
630 QWidget * MainWindow::createInfoWidget()
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
631 {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
632 QWidget *theWidget = new QWidget;
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
633 QVBoxLayout *infoPanelLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
634 QHBoxLayout *infoHeaderLayout = new QHBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
635 QVBoxLayout *infoHeaderTextLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
636 QVBoxLayout *infoCenterLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
637
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
638 QString infoVersion = tr("Version: ");
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
639 infoVersion.append(QApplication::applicationVersion());
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
640 QLabel *appVersion = new QLabel(infoVersion);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
641 appVersion->setTextInteractionFlags(
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
642 Qt::TextSelectableByMouse |
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
643 Qt::TextSelectableByKeyboard);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
644
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
645 QFrame *infoHeaderSeparator = new QFrame();
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
646 infoHeaderSeparator->setFrameShape(QFrame::HLine);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
647 infoHeaderSeparator->setFrameShadow(QFrame::Sunken);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
648
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
649 infoHeaderTextLayout->addWidget(appVersion);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
650 infoHeaderLayout->addLayout(infoHeaderTextLayout);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
651 infoHeaderLayout->insertStretch(2, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
652
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
653 QLabel *textDesc = new QLabel(tr("TrustBridge is a root certificate"
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
654 " installer for Windows and GNU/Linux.<br/>") +
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
655 tr("The root certificate lists are managed"
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
656 " by the German <a href=\"https://www.bsi.bund.de\">"
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
657 "Federal Office for Information Security (BSI)</a>.<br/><br/>") +
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
658 tr("The software was developed by the companies"
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
659 " <a href=\"http://www.intevation.de\">Intevation GmbH</a> and "
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
660 " <a href=\"http://www.dn-systems.de\">DN-Systems GmbH</a>, <br>"
1215
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
661 " contracted by the BSI.<br/><br/>") +
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
662 tr("TrustBridge is Free Software licensed"
1215
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
663 " under GNU GPL v>=3.<br/>Copyright (C) 2014 by Bundesamt für Sicherheit"
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
664 " in der Informationstechnik<br/><br/>") +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
665 tr("TrustBridge uses several Free Software components with different licenses:") +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
666 "<ul><li>TrustBridge source code (GPL v>=2)" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
667 "<li>Qt (LGPL v==2.1)" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
668 "<li>PolarSSL (GPL v>=2)" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
669 "<li>Oxygen-Icons (LGPL v==3)" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
670 "<li>Mozilla NSS (Mozilla Public License v2)" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
671 "<li>libcurl (The curl license)</ul>" +
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
672 tr("Read more about the license information in the 'licenses' directory in the "
1171a4778562 (issue68) Added license note to about dialog of client and admin application.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1211
diff changeset
673 "<a href=\"https://wald.intevation.org/hg/trustbridge/file/tip/licenses\">TrustBridge code repository</a>."));
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
674 textDesc->setTextFormat(Qt::RichText);
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
675 textDesc->setTextInteractionFlags(
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
676 Qt::TextSelectableByMouse |
844
fa68e5aeeaac Make links clickable and also change the about info in mainwindow.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 842
diff changeset
677 Qt::TextSelectableByKeyboard |
fa68e5aeeaac Make links clickable and also change the about info in mainwindow.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 842
diff changeset
678 Qt::LinksAccessibleByMouse);
fa68e5aeeaac Make links clickable and also change the about info in mainwindow.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 842
diff changeset
679 textDesc->setOpenExternalLinks(true);
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
680
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
681 infoCenterLayout->addWidget(infoHeaderSeparator);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
682 infoCenterLayout->addWidget(textDesc);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
683 infoCenterLayout->insertSpacing(2, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
684 infoCenterLayout->insertSpacing(4, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
685 infoCenterLayout->insertSpacing(6, 10);
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
686
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
687 QHBoxLayout *helpButtonLayout = new QHBoxLayout();
996
29783ef4da62 (UI) Added space in QPushButton on about page.
Emanuel Schuetze <emanuel@intevation.de>
parents: 995
diff changeset
688 QPushButton *helpButton = new QPushButton(" " + tr("Show Help"));
964
706405a2f3e8 (issue89) Add help icon to help button
Andre Heinecke <andre.heinecke@intevation.de>
parents: 962
diff changeset
689 helpButton->setIcon(QIcon(":/img/show-help_16.png"));
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
690 connect(helpButton, SIGNAL(clicked()), this, SLOT(showHelp()));
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
691 helpButtonLayout->addWidget(helpButton);
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
692 #ifdef USE_CURL
996
29783ef4da62 (UI) Added space in QPushButton on about page.
Emanuel Schuetze <emanuel@intevation.de>
parents: 995
diff changeset
693 QPushButton *proxySettingsButton = new QPushButton(" " + tr("Proxy settings"));
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
694 proxySettingsButton->setIcon(QIcon(":/img/preferences-network_16.png"));
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
695 connect(proxySettingsButton, SIGNAL(clicked()), this, SLOT(showProxySettings()));
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
696 helpButtonLayout->addWidget(proxySettingsButton);
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
697 #endif
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
698 helpButtonLayout->addStretch();
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
699 infoCenterLayout->addLayout(helpButtonLayout);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
700
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
701 infoCenterLayout->insertStretch(8, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
702
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
703 infoPanelLayout->addLayout(infoHeaderLayout);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
704 infoPanelLayout->addLayout(infoCenterLayout);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
705 theWidget->setLayout(infoPanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
706
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
707 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
708 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
709
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
710 QWidget * MainWindow::createUpdatesWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
711 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
712 QWidget * theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
713 QVBoxLayout *updatesMainLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
714
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
715 /* The header */
1096
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
716 QVBoxLayout *updatesHeaderLayout = new QVBoxLayout;
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
717
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
718 QGridLayout *detailsLayout = new QGridLayout;
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
719
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
720 /* Header 1: Action buttons and summary*/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
721 mUpdatesHeader =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
722 new QLabel("<h2>" + tr("Certificates unchanged")+ "</h2>");
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
723 updatesHeaderLayout->addWidget(mUpdatesHeader);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
724
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
725 QHBoxLayout *updatesHeaderActionButtonLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
726 mQuitButton = new QPushButton(" " + tr("Quit without saving"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
727 mQuitButton->setIcon(QIcon(":/img/application-exit.png"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
728 mQuitButton->setFixedHeight(30);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
729
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
730 mInstallButton = new QPushButton(" " + tr("Install certificates again"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
731 mInstallButton->setFixedHeight(30);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
732 #ifdef Q_OS_WIN
1003
db7e7156c824 (issue66) Only depend on is_system_install on windows to decide privilege raise
Andre Heinecke <andre.heinecke@intevation.de>
parents: 997
diff changeset
733 if (is_system_install()) {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
734 QIcon uacShield = QApplication::style()->standardIcon(QStyle::SP_VistaShield);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
735 mInstallButton->setIcon(uacShield);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
736 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
737 #else
1211
b64f847bde09 (issue121) icon, new version for the do-changes button.
Bernhard Reiter <bernhard@intevation.de>
parents: 1209
diff changeset
738 mInstallButton->setIcon(QIcon(":/img/do-changes-16.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
739 #endif
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
740 connect(mQuitButton, SIGNAL(clicked()), this, SLOT(closeApp()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
741 connect(mInstallButton, SIGNAL(clicked()), this, SLOT(checkAndInstallCerts()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
742
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
743 updatesHeaderActionButtonLayout->addWidget(mInstallButton);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
744 updatesHeaderActionButtonLayout->addWidget(mQuitButton);
1096
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
745 updatesHeaderActionButtonLayout->addStretch(-1);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
746
1096
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
747 updatesHeaderLayout->addLayout(updatesHeaderActionButtonLayout);
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
748 updatesHeaderLayout->addSpacing(20);
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
749
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
750 /* The splitter line */
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
751 QFrame *line = new QFrame();
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
752 line->setFrameShape(QFrame::HLine);
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
753 line->setFrameShadow(QFrame::Sunken);
10f0efd197c7 (issue111) Rework header to be simpler and left bound.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1095
diff changeset
754 updatesHeaderLayout->addWidget(line);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
755
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
756 updatesMainLayout->addLayout(updatesHeaderLayout);
1103
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
757
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
758 /* Central Header Details and update button. Part of the scroll area */
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
759 QScrollArea *centralScrollArea = new QScrollArea;
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
760 QVBoxLayout *updatesCenterLayout = new QVBoxLayout;
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
761 mUpdatesDetailsHeader = new QLabel(QString());
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
762
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
763 QHBoxLayout *updateDateAndSearchButton = new QHBoxLayout;
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
764 mCertListVersion =
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
765 new QLabel(QString());
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
766 mCertListVersionContents = new QLabel(QString());
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
767 const QDateTime lastCheck = mSettings.value("lastUpdateCheck").toDateTime().toLocalTime();
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
768 mLastUpdateCheck = new QLabel(tr("Last update check:"));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
769 if (lastCheck.isValid()) {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
770 const QString lastUpdateCheck = QLocale::system().toString(lastCheck, DATETIME_FORMAT);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
771 mLastUpdateCheckContents = new QLabel(lastUpdateCheck);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
772 } else {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
773 mLastUpdateCheckContents = new QLabel(tr("No connection with the updateserver."));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
774 }
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
775 QPushButton *searchUpdates = new QPushButton(" " + tr("Update"));
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
776 searchUpdates->setFixedHeight(22);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
777 searchUpdates->setToolTip(tr("Check for Updates"));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
778 searchUpdates->setStyleSheet("font-size: 10px;");
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
779 searchUpdates->setIcon(QIcon(":/img/update-list.png"));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
780 connect(searchUpdates, SIGNAL(clicked()), this, SLOT(checkUpdates()));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
781 updateDateAndSearchButton->addWidget(mLastUpdateCheckContents);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
782 updateDateAndSearchButton->addWidget(searchUpdates);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
783
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
784 mUpdatesTip =
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
785 new QLabel(QString());
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
786 mUpdatesTip->setWordWrap(true);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
787
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
788 // addWidget(*Widget, row, column, rowspan, colspan)
1103
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
789 updatesCenterLayout->addWidget(mUpdatesDetailsHeader);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
790 detailsLayout->addWidget(mLastUpdateCheck, 0, 0, 1, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
791 detailsLayout->addLayout(updateDateAndSearchButton, 0, 1, 1, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
792 detailsLayout->addWidget(mCertListVersion, 1, 0, 1, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
793 detailsLayout->addWidget(mCertListVersionContents, 1, 1, 1, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
794 detailsLayout->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum), 2, 2, 1, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
795 detailsLayout->setColumnStretch(2, 1);
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
796
1103
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
797 updatesCenterLayout->addLayout(detailsLayout);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
798
1103
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
799 updatesCenterLayout->addItem(new QSpacerItem(100, 10));
c4e3498e716f (issue111) Move detailed header into the scrollarea
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1102
diff changeset
800 updatesCenterLayout->addWidget(mUpdatesTip);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
801
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
802 /* The central panels. */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
803 QHBoxLayout *updatesNewLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
804 QHBoxLayout *updatesRemoveLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
805 QHBoxLayout *updatesManualLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
806 mUpdatesNewCertificates =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
807 new QLabel("<h3>" +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
808 tr("Install new trusted certificates (%1/%2)").arg(0).arg(0) +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
809 "</h3>");
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
810 mUpdatesDetailsNew = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
811 mUpdatesDetailsNew->setText(" " + tr("Details"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
812 mUpdatesDetailsNew->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
813 mUpdatesDetailsNew->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
814 mUpdatesDetailsNew->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
815 mUpdatesDetailsNew->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
816 connect(mUpdatesDetailsNew,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
817 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
818 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
819 SLOT(toggleUpdatesNew()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
820 updatesNewLayout->addWidget(mUpdatesNewCertificates);
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
821 updatesNewLayout->addWidget(mUpdatesDetailsNew);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
822 updatesNewLayout->addStretch(1);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
823 mUpdatesNew = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
824 connect(mUpdatesNew, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
825 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
826 mUpdatesNew->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
827
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
828 mUpdatesRemoveCertificates =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
829 new QLabel("<h3>" +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
830 tr("Remove revoked certificates (%1/%2)").arg(0).arg(0) +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
831 "</h3>");
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
832 mUpdatesDetailsRemove = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
833 mUpdatesDetailsRemove->setText(" " + tr("Details"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
834 mUpdatesDetailsRemove->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
835 mUpdatesDetailsRemove->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
836 mUpdatesDetailsRemove->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
837 mUpdatesDetailsRemove->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
838 connect(mUpdatesDetailsRemove,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
839 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
840 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
841 SLOT(toggleUpdatesRemove()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
842 updatesRemoveLayout->addWidget(mUpdatesRemoveCertificates);
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
843 updatesRemoveLayout->addWidget(mUpdatesDetailsRemove);
746
d73f4e58d117 Add strecht also between remove button
Andre Heinecke <andre.heinecke@intevation.de>
parents: 743
diff changeset
844 updatesRemoveLayout->addStretch(1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
845 mUpdatesRemove = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
846 connect(mUpdatesRemove, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
847 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
848 mUpdatesRemove->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
849
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
850 mUpdatesManualCertificates = new QLabel(QString());
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
851 mUpdatesDetailsManual = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
852 mUpdatesDetailsManual->setText(" " + tr("Details"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
853 mUpdatesDetailsManual->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
854 mUpdatesDetailsManual->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
855 mUpdatesDetailsManual->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
856 mUpdatesDetailsManual->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
857 connect(mUpdatesDetailsManual,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
858 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
859 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
860 SLOT(toggleUpdatesManual()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
861 mUpdatesDetailsManual->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
862 updatesManualLayout->addWidget(mUpdatesManualCertificates);
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
863 updatesManualLayout->addWidget(mUpdatesDetailsManual);
747
b959304d6ecf Also space away the manual details button
Andre Heinecke <andre.heinecke@intevation.de>
parents: 746
diff changeset
864 updatesManualLayout->addStretch(1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
865 mUpdatesManual = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
866 mUpdatesManual->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
867 connect(mUpdatesManual, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
868 this, SLOT(removeFromManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
869 connect(mUpdatesManual, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
870 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
871
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
872 updatesNewLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
873 updatesRemoveLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
874 updatesManualLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
875 updatesCenterLayout->addLayout(updatesNewLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
876 updatesCenterLayout->addWidget(mUpdatesNew);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
877 updatesCenterLayout->addLayout(updatesRemoveLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
878 updatesCenterLayout->addWidget(mUpdatesRemove);
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
879 updatesCenterLayout->addSpacing(10);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
880 updatesCenterLayout->addLayout(updatesManualLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
881 updatesCenterLayout->addWidget(mUpdatesManual);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
882
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
883 QWidget *dummyWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
884 dummyWidget->setLayout(updatesCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
885 centralScrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
886 centralScrollArea->setWidget(dummyWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
887 centralScrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
888 centralScrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
889
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
890 updatesMainLayout->addWidget(centralScrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
891 updatesCenterLayout->addSpacerItem(new QSpacerItem(0, 0,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
892 QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
893 theWidget->setLayout(updatesMainLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
894 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
895 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
896
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
897
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
898 QWidget *MainWindow::createInstallWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
899 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
900 QWidget *theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
901 QScrollArea *scrollArea = new QScrollArea;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
902 QVBoxLayout *installPanelLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
903 QVBoxLayout *installHeaderLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
904 QVBoxLayout *installCenterLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
905
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
906 QLabel *installHeaderLabel =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
907 new QLabel("<h2>" + tr("Trusted certificates") + "</h2>");
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
908 QLabel *installHeaderText = new QLabel(tr("The following list of trusted root"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
909 " certificates is managed by the BSI. The BSI validates independently the"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
910 " authenticity, security and actuality of these certificates."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
911 installHeaderText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
912 installHeaderLayout->addWidget(installHeaderLabel);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
913 installHeaderLayout->addWidget(installHeaderText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
914
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
915 QLabel *installCenterText = new QLabel(tr("Please choose the certificates"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
916 " you want to trust or untrust. TrustBridge will install these certificates for your"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
917 " secure communication for email and internet."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
918 installCenterText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
919 installCenterLayout->addWidget(installCenterText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
920
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
921 installPanelLayout->addLayout(installHeaderLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
922 installPanelLayout->addLayout(installCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
923
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
924 mInstallList = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
925 connect(mInstallList, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
926 this, SLOT(toggleInManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
927
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
928 scrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
929 scrollArea->setWidget(mInstallList);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
930 scrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
931
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
932 installPanelLayout->addWidget(scrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
933
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
934 theWidget->setLayout(installPanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
935
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
936 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
937 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
938
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
939 QWidget *MainWindow::createRemoveWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
940 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
941 QWidget * theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
942 QScrollArea *scrollArea = new QScrollArea;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
943 QVBoxLayout *removePanelLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
944 QVBoxLayout *removeHeaderLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
945 QVBoxLayout *removeCenterLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
946
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
947 QLabel *removeHeaderLabel =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
948 new QLabel("<h2>" + tr("Revoked certificates") + "</h2>");
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
949 QLabel *removeHeaderText = new QLabel(tr("Certificates can be corrupted"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
950 " or stolen and misused in many ways. Therefore the BSI recommends"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
951 " to remove all revoked certificates from your system."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
952 removeHeaderText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
953 removeHeaderLayout->addWidget(removeHeaderLabel);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
954 removeHeaderLayout->addWidget(removeHeaderText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
955
805
e04c57e9bf2e Mainwindow: Typo.
Bernhard Reiter <bernhard@intevation.de>
parents: 802
diff changeset
956 QLabel *removeCenterText = new QLabel(tr("The following unsecure certificates were"
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
957 " revoked by the BSI. Already uninstalled certificates cannot be reinstalled."
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
958 " It is recommended that you select all certificates to uninstall if you still"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
959 " have revoked certificates installed."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
960 removeCenterText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
961 removeCenterLayout->addWidget(removeCenterText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
962 mRemoveList = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
963 connect(mRemoveList, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
964 this, SLOT(toggleInManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
965
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
966 removePanelLayout->addLayout(removeHeaderLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
967 removePanelLayout->addLayout(removeCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
968
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
969 scrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
970 scrollArea->setWidget(mRemoveList);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
971 scrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
972 removePanelLayout->addWidget(scrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
973 theWidget->setLayout(removePanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
974
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
975 return theWidget;
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
976 }
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
977
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
978 void MainWindow::setupGUI()
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
979 {
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
980 // Create a central widget containing the main layout.
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
981 QWidget *base = new QWidget;
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
982
250
1e112cf41e92 Updated the mainwindow layout.
Raimund Renkert <rrenkert@intevation.de>
parents: 249
diff changeset
983 // Layouts and Container
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
984 QVBoxLayout *mainLayout = new QVBoxLayout;
205
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
985 QHBoxLayout *headerLayout = new QHBoxLayout;
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
986 QVBoxLayout *headerTextLayout = new QVBoxLayout;
1094
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
987 QHBoxLayout *headerSubtitleLayout = new QHBoxLayout;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
988 QHBoxLayout *centerLayout = new QHBoxLayout;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
989 QVBoxLayout *buttonBarLayout = new QVBoxLayout;
271
1ae15ea73850 Some GUI desing and layout changes.
Raimund Renkert <rrenkert@intevation.de>
parents: 267
diff changeset
990 QHBoxLayout *bottomLayout = new QHBoxLayout;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
991 QHBoxLayout *containerLayout = new QHBoxLayout;
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
992
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
993 // The header (icon, about text)
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
994 QImage *logoImage = new QImage(":/img/logo.png");
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
995 QLabel *logo = new QLabel;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
996 logo->setBackgroundRole(QPalette::Base);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
997 logo->setPixmap(QPixmap::fromImage(*logoImage));
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
998 QLabel *title = new QLabel("<h1>" + QString::fromLatin1(APPNAME) + "</h1>");
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
999 QLabel *subTitle = new QLabel(tr("Trust in your digital communication"));
1094
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1000 QLabel *swVersion = new QLabel(QString::fromLatin1("<i>") +
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1001 tr("Version") + " " + QApplication::applicationVersion() +
1095
a0fb21625cf3 (issue111) Avoid clipping the last charcter in italic font.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1094
diff changeset
1002 QString::fromLatin1(" </i>"));
1094
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1003
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1004 swVersion->setTextInteractionFlags(Qt::TextSelectableByKeyboard | Qt::TextSelectableByMouse);
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1005 swVersion->setTextFormat(Qt::RichText);
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1006
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1007 headerSubtitleLayout->addWidget(subTitle);
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1008 headerSubtitleLayout->addStretch(-1);
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1009 headerSubtitleLayout->addWidget(swVersion);
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1010
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1011 headerTextLayout->addWidget(title);
1094
03a1f3761f45 (issue111) Move Version label into header.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1093
diff changeset
1012 headerTextLayout->addLayout(headerSubtitleLayout);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1013 headerLayout->addWidget(logo);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1014 headerLayout->addLayout(headerTextLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1015 headerLayout->setStretch(0, 0);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1016 headerLayout->setStretch(1, 10);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1017
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1018 /***********************************
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1019 * The Buttonbar on the left side.
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1020 ***********************************/
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1021 mButtonGroup = new QButtonGroup;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1022
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1023 TextOverlayButton *updatesButton = new TextOverlayButton;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1024 updatesButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
932
57371f2e8dae (issue72) Set background image as pixmap in textoverlayicon
Andre Heinecke <andre.heinecke@intevation.de>
parents: 926
diff changeset
1025 updatesButton->setBackgroundIcon(":/img/red-circle.png");
1202
407f2c1286ae (issue121) better Icon for the pending changes.
Bernhard Reiter <bernhard@intevation.de>
parents: 1201
diff changeset
1026 updatesButton->setIcon(QIcon(":/img/pending-changes-overview-48.png"));
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1027 updatesButton->setIconSize(QSize(48, 48));
1099
3d4a81eff3fd (issue111) Rename updates button to pending changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1098
diff changeset
1028 updatesButton->setText(tr("Pending\nchanges"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
1029 updatesButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1030 updatesButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1031 updatesButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1032 updatesButton->setChecked(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1033
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1034 connect(this, SIGNAL(changesChanged(const QString&)),
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1035 updatesButton, SLOT(setOverlay(const QString&)));
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1036
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1037 QToolButton *allInstallButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1038 allInstallButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1039 allInstallButton->setIcon(QIcon(":/img/document-encrypt.png"));
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1040 allInstallButton->setIconSize(QSize(48, 48));
659
c7405d526ead (UI) Updated English strings.
Emanuel Schuetze <emanuel@intevation.de>
parents: 657
diff changeset
1041 allInstallButton->setText(tr("Trusted\ncertificates"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
1042 allInstallButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1043 allInstallButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1044 allInstallButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1045
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1046 QToolButton *allRemoveButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1047 allRemoveButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
673
e8bc1215904e (UI) Changed some icons.
Emanuel Schuetze <emanuel@intevation.de>
parents: 669
diff changeset
1048 allRemoveButton->setIcon(QIcon(":/img/dialog-warning.png"));
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1049 allRemoveButton->setIconSize(QSize(48, 48));
661
320a64d58e62 (UI) Updated English strings. Removed Issuer fields.
Emanuel Schuetze <emanuel@intevation.de>
parents: 659
diff changeset
1050 allRemoveButton->setText(tr("Revoked\ncertificates"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
1051 allRemoveButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1052 allRemoveButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1053 allRemoveButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1054
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1055 QToolButton *infoButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1056 infoButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1057 infoButton->setIcon(QIcon(":/img/dialog-information.png"));
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1058 infoButton->setIconSize(QSize(48, 48));
659
c7405d526ead (UI) Updated English strings.
Emanuel Schuetze <emanuel@intevation.de>
parents: 657
diff changeset
1059 infoButton->setText(tr("Information\nand help"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
1060 infoButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
1061 infoButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1062 infoButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1063
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1064 mButtonGroup->addButton(updatesButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1065 mButtonGroup->addButton(allInstallButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1066 mButtonGroup->addButton(allRemoveButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1067 mButtonGroup->addButton(infoButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1068 mButtonGroup->setId(updatesButton, 0);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1069 mButtonGroup->setId(allInstallButton, 1);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1070 mButtonGroup->setId(allRemoveButton, 2);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1071 mButtonGroup->setId(infoButton, 3);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1072
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1073 connect(mButtonGroup, SIGNAL(buttonClicked(int)),
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1074 this, SLOT(togglePages(int)));
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1075 buttonBarLayout->addWidget(updatesButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1076 buttonBarLayout->addWidget(allInstallButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1077 buttonBarLayout->addWidget(allRemoveButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1078 buttonBarLayout->insertStretch(3, 10);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1079 buttonBarLayout->addWidget(infoButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1080
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1081 /* The main pages.*/
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1082
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1083 /* The updates page. */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1084 mUpdatesWidget = createUpdatesWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1085
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1086 /* Install (trusted certs) Page */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1087 mInstallWidget = createInstallWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1088
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1089 /**********************************
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1090 * Page for certificates to be removed.
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1091 **********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1092 mRemoveWidget = createRemoveWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1093
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1094 /**********************************
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1095 * The info page.
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1096 **********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1097 mInfoWidget = createInfoWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1098
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1099 /********************************
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1100 * The main layout for pages.
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
1101 ********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1102 mInstallWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1103 mRemoveWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1104 mInfoWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1105 containerLayout->addWidget(mUpdatesWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1106 containerLayout->addWidget(mInstallWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1107 containerLayout->addWidget(mRemoveWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1108 containerLayout->addWidget(mInfoWidget);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1109
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1110 centerLayout->addLayout(buttonBarLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1111 centerLayout->addLayout(containerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1112
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1113 mainLayout->addLayout(headerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1114 mainLayout->addLayout(centerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1115 mainLayout->addLayout(bottomLayout);
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
1116 base->setLayout(mainLayout);
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
1117 setCentralWidget(base);
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
1118 }
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
1119
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1120 void MainWindow::listChanged(int selected)
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1121 {
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1122 Q_UNUSED (selected);
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1123 setChangeCount(mUpdatesRemove->selectedCertCount() +
1107
51d3b361f17a Revert commit 1102
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1106
diff changeset
1124 mUpdatesNew->selectedCertCount() + mUpdatesManual->certificates().size());
696
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1125
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1126 /* Show a different tip in case of manual changes, updates aviailable, updates and manual
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1127 * changes available */
1107
51d3b361f17a Revert commit 1102
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1106
diff changeset
1128 if (changeCount() && !mUpdatesManual->certificates().size()) {
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1129 mUpdatesTip->setText(
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1130 tr("You should apply the following, recommended changes to your certificate stores:"));
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1131 } else if (changeCount()) {
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1132 mUpdatesTip->setText(
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1133 tr("You can apply the following, changes to your certificate stores:"));
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1134 } else {
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1135 mUpdatesTip->setText(
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1136 tr("There are currently no changes for your certificate stores."));
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1137 }
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1138
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1139 if (!changeCount()) {
693
0fc1a20adaff (Issue 27) Change Quit button text depending on changes or no changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 692
diff changeset
1140 /* No changes */
702
9dea3d895f53 (Issue22) Add a space between button icon and text.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 696
diff changeset
1141 mQuitButton->setText(" " + tr("Quit"));
696
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1142 mUpdatesHeader->setText("<h2>" + tr("Certificates unchanged") +
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1143 "</h2>");
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1144 mInstallButton->setText(" " + tr("Install certificates again"));
693
0fc1a20adaff (Issue 27) Change Quit button text depending on changes or no changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 692
diff changeset
1145 } else {
702
9dea3d895f53 (Issue22) Add a space between button icon and text.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 696
diff changeset
1146 mQuitButton->setText(" " + tr("Quit without saving"));
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1147 mUpdatesHeader->setText("<h2>" + tr("Pending changes (%1)")
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1148 .arg(changeCount()) +
696
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1149 "</h2>");
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1150 mInstallButton->setText(" " + tr("Apply changes"));
693
0fc1a20adaff (Issue 27) Change Quit button text depending on changes or no changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 692
diff changeset
1151 }
0fc1a20adaff (Issue 27) Change Quit button text depending on changes or no changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 692
diff changeset
1152
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1153 if (mUpdatesManual->certificates().size()) {
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1154 mUpdatesDetailsManual->show();
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1155 if (mManualDetailsShown) {
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1156 mUpdatesManual->show();
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1157 deactivateDetailsButton(mUpdatesDetailsManual);
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1158 } else {
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1159 activateDetailsButton(mUpdatesDetailsManual);
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1160 }
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1161 } else {
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1162 mUpdatesDetailsManual->hide();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1163 mUpdatesManual->hide();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1164 }
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1165 mUpdatesManualCertificates->setText("<h2>" +
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1166 tr("Manual changes (%1)").arg(mUpdatesManual->certificates().size()) +
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1167 "</h2>");
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1168
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1169 if (mUpdatesNew->certificates().size()) {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1170 mUpdatesNewCertificates->setText("<h3>" +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1171 tr("Install new trusted certificates (%1/%2)")
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1172 .arg(mUpdatesNew->selectedCertCount())
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1173 .arg(mUpdatesNew->certificates().size()) +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1174 "</h3>");
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1175 mUpdatesDetailsNew->show();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1176 mUpdatesDetailsNew->setIcon(QIcon(":/img/dialog-information_16px.png"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1177 mUpdatesDetailsNew->setToolTip(tr("Show details"));
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1178 mUpdatesNewCertificates->show();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1179 } else {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1180 mUpdatesDetailsNew->hide();
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1181 mUpdatesNew->hide();
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1182 mUpdatesNewCertificates->hide();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1183 }
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1184
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1185 if (mUpdatesRemove->certificates().size()) {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1186 mUpdatesRemoveCertificates->setText("<h3>" +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1187 tr("Remove revoked certificates (%1/%2)")
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1188 .arg(mUpdatesRemove->selectedCertCount())
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1189 .arg(mUpdatesRemove->certificates().size()) +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1190 "</h3>");
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1191 mUpdatesRemoveCertificates->show();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1192 mUpdatesDetailsRemove->setIcon(QIcon(":/img/dialog-information_16px.png"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1193 mUpdatesDetailsRemove->setToolTip(tr("Show details"));
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1194 mUpdatesDetailsRemove->show();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1195 } else {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1196 mUpdatesRemoveCertificates->hide();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1197 mUpdatesDetailsRemove->hide();
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1198 mUpdatesRemove->hide();
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1199 }
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1200
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1201 /* Update the details header */
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1202 if (mUpdatesRemove->certificates().size() ||
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1203 mUpdatesNew->certificates().size()) {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1204 mUpdatesDetailsHeader->setText("<h2>" +
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1205 tr("New, recommended changes (%1/%2)")
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1206 .arg(mUpdatesRemove->selectedCertCount() +
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1207 mUpdatesNew->selectedCertCount())
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1208 .arg(mUpdatesRemove->certificates().size() +
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1209 mUpdatesNew->certificates().size()) +
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1210 "</h2>");
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1211 } else {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1212 mUpdatesDetailsHeader->setText(QString::fromLatin1("<h2>") +
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1213 tr("No new recommendations") + QString::fromLatin1("</h2>"));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1214 }
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1215
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1216 if (mListToInstall.isValid()) {
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1217 mCertListVersion->setText(tr("Certificate list from:"));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1218 mCertListVersionContents->setText(QLocale::system().toString(
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1219 mListToInstall.date().toLocalTime(), DATETIME_FORMAT));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1220 } else {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1221 if (mInstalledList.isValid()) {
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1222 mCertListVersion->setText(tr("Currently installed certificate list:"));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1223 mCertListVersionContents->setText(QLocale::system().toString(
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1224 mInstalledList.date().toLocalTime(), DATETIME_FORMAT));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1225 } else {
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1226 mCertListVersion->setText(tr("No certificate list installed."));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1227 mCertListVersionContents->setText("");
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1228 }
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1229 }
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1230 }
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1231
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
1232 void MainWindow::loadCertificateList()
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
1233 {
1162
2a1206932f53 (issue107) Comment all TODO's and FIXME's with issues as documented in issue107
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1155
diff changeset
1234 /* TODO (issue134): if nothing is available (neither old nor new) add some progress
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1235 * indication */
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1236 mInstallList->clear();
684
69def231f5ac (issue28) clear manual updates after installation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 673
diff changeset
1237 mRemoveList->clear();
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1238 mUpdatesNew->clear();
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1239 mUpdatesRemove->clear();
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1240 QList<Certificate> newInstallCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1241 QList<Certificate> newRemoveCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1242 QList<Certificate> oldInstallCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1243 QList<Certificate> oldRemoveCerts;
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1244
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1245 if (mListToInstall.getCertificates().isEmpty()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1246 // No new list available, add old certificates.
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1247 foreach (const Certificate &cert, mInstalledList.getCertificates()) {
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1248 bool state = !mPreviouslyUnselected.contains(cert.base64Line());
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1249 if (cert.isInstallCert()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1250 oldInstallCerts.append(cert);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1251 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1252 QIcon btnIcon;
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1253 if (!state) {
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1254 btnIcon.addFile(":/img/cert-to-be-installed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1255 btnIcon.addFile(":/img/cert-not-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1256 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be installed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1257 actionBtn->setProperty("ToolTip_On", tr("Certifcate is not installed."));
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1258 } else {
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1259 actionBtn->setProperty("ToolTip_Off", tr("Certificate is installed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1260 actionBtn->setProperty("ToolTip_On", tr("Certificate will be removed."));
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1261 btnIcon.addFile(":/img/cert-is-installed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1262 btnIcon.addFile(":/img/cert-to-be-removed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1263 }
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1264 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1265 mInstallList->addCertificate(cert, state, actionBtn);
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1266 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1267 else {
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1268 oldRemoveCerts.append(cert);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1269 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1270 QIcon btnIcon;
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1271 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be removed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1272 actionBtn->setProperty("ToolTip_On", tr("Certificate has not been removed."));
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1273 btnIcon.addFile(":/img/cert-to-be-removed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1274 btnIcon.addFile(":/img/cert-is-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1275 btnIcon.addFile(":/img/cert-not-installed-good-48.png", QSize(48, 48), QIcon::Disabled, QIcon::Off);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1276 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1277 if (state) {
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1278 actionBtn->setEnabled(false);
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1279 actionBtn->setToolTip(tr("Certificate has been removed."));
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1280 }
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1281 mRemoveList->addCertificate(cert, state, actionBtn);
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1282 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1283 }
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1284 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1285 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1286 // Sort and filter both lists.
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1287 foreach (const Certificate &cert, mListToInstall.getCertificates()) {
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1288 bool state = !mPreviouslyUnselected.contains(cert.base64Line());
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1289 if (cert.isInstallCert()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1290 // Certificate with status "install".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1291 if (mInstalledList.getCertificates().contains(cert)) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1292 // Was in the old list.
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1293 oldInstallCerts.append(cert);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1294 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1295 QIcon btnIcon;
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1296 actionBtn->setProperty("ToolTip_Off", tr("Certificate is installed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1297 actionBtn->setProperty("ToolTip_On", tr("Certifcate is not installed."));
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1298 btnIcon.addFile(":/img/cert-is-installed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1299 btnIcon.addFile(":/img/cert-not-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1300 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1301 mInstallList->addCertificate(cert, state, actionBtn);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1302 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1303 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1304 // Is a brand new certificate
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1305 newInstallCerts.append(cert);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1306 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1307 QIcon btnIcon;
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1308 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be installed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1309 actionBtn->setProperty("ToolTip_On", tr("Certificate will not be installed."));
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1310 btnIcon.addFile(":/img/cert-to-be-installed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1311 btnIcon.addFile(":/img/cert-not-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1312 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1313 mUpdatesNew->addCertificate(cert, state, actionBtn);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1314 }
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1315 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1316 else {
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1317 // Certificate with status "remove".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1318 if (mInstalledList.getCertificates().contains(cert)) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1319 // Was in the old list.
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1320 oldRemoveCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1321 // Is removed, so set editable to false.
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1322 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1323 QIcon btnIcon;
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1324 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be removed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1325 actionBtn->setProperty("ToolTip_On", tr("Certificate has not been removed."));
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1326 btnIcon.addFile(":/img/cert-to-be-removed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1327 btnIcon.addFile(":/img/cert-is-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1328 btnIcon.addFile(":/img/cert-not-installed-good-48.png", QSize(48, 48), QIcon::Disabled, QIcon::Off);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1329 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1330 if (state) {
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1331 actionBtn->setEnabled(false);
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1332 actionBtn->setToolTip(tr("Certificate has been removed."));
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1333 }
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1334 mRemoveList->addCertificate(cert, state, actionBtn);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1335 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1336 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1337 // Was in the old list with status "install" and now has the
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1338 // status "remove".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1339 newRemoveCerts.append(cert);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1340 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1341 QIcon btnIcon;
1110
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1342 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be removed."));
b6cb4fd7ee20 (issue115) Move tooltips into body to make qt tr work
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1109
diff changeset
1343 actionBtn->setProperty("ToolTip_On", tr("Certificate will not be removed."));
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1344 btnIcon.addFile(":/img/cert-to-be-removed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1148
6ec64a30fd5f (issue115) Use updated icons.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1146
diff changeset
1345 btnIcon.addFile(":/img/cert-is-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1346 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1347 mUpdatesRemove->addCertificate(cert, state, actionBtn);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1348 }
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1349 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1350 }
691
315103410002 (Issue 32) Move updates header text generation out of update avialable block
Andre Heinecke <andre.heinecke@intevation.de>
parents: 690
diff changeset
1351 }
692
3791a277f00b Remove code duplication and calculate headers only in listchanged
Andre Heinecke <andre.heinecke@intevation.de>
parents: 691
diff changeset
1352
3791a277f00b Remove code duplication and calculate headers only in listchanged
Andre Heinecke <andre.heinecke@intevation.de>
parents: 691
diff changeset
1353 listChanged(0);
271
1ae15ea73850 Some GUI desing and layout changes.
Raimund Renkert <rrenkert@intevation.de>
parents: 267
diff changeset
1354 }
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1355
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1356 void MainWindow::installerError(const QString& errMsg) {
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1357 QMessageBox::warning(this, tr("Error executing update"), errMsg);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1358 }
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1359
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1360 void MainWindow::installerSuccess() {
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1361 if (mCurState == NewListAvailable ) {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1362 mCurState = NothingChanged;
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1363 mCurMessage = QString();
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1364 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1365
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1366 QString listFileName = mSettings.value("List/available").toString();
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1367 QDateTime listFileDate = mSettings.value("List/availableDate").toDateTime();
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1368 if (!listFileName.isEmpty() && listFileDate.isValid()) {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1369 mSettings.remove("List/available");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1370 mSettings.remove("List/availableDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1371
857
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1372 /* Rename the installed list to list-installed.txt so that external
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1373 * programs (like the uninstaller can easily recognize it). */
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1374 QString dataLoc =
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1375 QStandardPaths::writableLocation(QStandardPaths::DataLocation);
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1376 QDir dataDir(dataLoc);
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1377 if (!dataDir.exists()) {
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1378 /* Should not happen */
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1379 qWarning() << "Data dir removed.";
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1380 return;
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1381 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1382
857
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1383 QFileInfo oldList (dataDir.absoluteFilePath("list-installed.txt"));
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1384 if (oldList.exists()) {
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1385 qDebug() << "Removing old list: " << oldList.filePath();
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1386 if (!QFile::remove(oldList.filePath())) {
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1387 qWarning() << "Removal of old list failed.";
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1388 return;
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1389 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1390 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1391 QFile newList(listFileName);
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1392 if (!newList.rename(oldList.filePath())) {
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1393 qWarning() << "Failed to rename new list.";
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1394 return;
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1395 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1396
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1397 mSettings.setValue("List/installed", oldList.filePath());
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1398 mSettings.setValue("List/installedDate", listFileDate);
857
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1399 mInstalledList = CertificateList(oldList.filePath().toUtf8().constData());
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1400 if (!mInstalledList.isValid()) {
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1401 /* Something went wrong. Go back to square one. */
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1402 qWarning () << "List corrupted after installation";
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1403 mInstalledList = CertificateList();
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1404 QFile::remove(oldList.filePath());
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1405 mSettings.remove("List/installed");
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1406 mSettings.remove("List/installedDate");
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1407 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1408 }
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1409 mListToInstall = CertificateList();
684
69def231f5ac (issue28) clear manual updates after installation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 673
diff changeset
1410 mUpdatesManual->clear();
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1411 loadCertificateList();
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1412 }
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1413
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1414 void MainWindow::installCerts() {
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1415 QStringList choices;
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1416 QStringList unselected;
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1417
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1418 choices << mUpdatesNew->selectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1419 choices << mUpdatesRemove->selectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1420
669
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1421 choices << mUpdatesManual->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1422
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1423 /* Also include the old certificates */
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1424 choices << mInstallList->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1425 choices << mRemoveList->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1426
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1427 QStringList unselectedManuals = mUpdatesManual->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1428 for(int i = 0; i < unselectedManuals.size(); i++) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1429 if (unselectedManuals.at(i).startsWith("I:")) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1430 QString certLine = unselectedManuals.at(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1431 certLine[0] = 'R';
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1432 choices << certLine;
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1433 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1434 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1435
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1436 unselected << mUpdatesNew->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1437 unselected << mUpdatesRemove->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1438 unselected << mInstallList->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1439 unselected << mRemoveList->unselectedCertificates();
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1440
918
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1441 #ifdef Q_OS_WIN
1003
db7e7156c824 (issue66) Only depend on is_system_install on windows to decide privilege raise
Andre Heinecke <andre.heinecke@intevation.de>
parents: 997
diff changeset
1442 if (!is_system_install()) {
db7e7156c824 (issue66) Only depend on is_system_install on windows to decide privilege raise
Andre Heinecke <andre.heinecke@intevation.de>
parents: 997
diff changeset
1443 QMessageBox::warning(this,
926
ca997bc0f790 (issue63) Updated message box text for normal user.
Emanuel Schuetze <emanuel@intevation.de>
parents: 918
diff changeset
1444 tr("Installation with standard user account"),
1006
6aa115b206df Updated translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1003
diff changeset
1445 tr("Windows will now ask you to confirm each root certificate modification "
926
ca997bc0f790 (issue63) Updated message box text for normal user.
Emanuel Schuetze <emanuel@intevation.de>
parents: 918
diff changeset
1446 "because TrustBridge does not have the necessary privileges to install "
ca997bc0f790 (issue63) Updated message box text for normal user.
Emanuel Schuetze <emanuel@intevation.de>
parents: 918
diff changeset
1447 "root certificates into the Windows certificate store silently."));
918
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1448 }
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1449 #endif
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1450
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1451 QProgressDialog *progress = new QProgressDialog(this);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1452 progress->setWindowModality(Qt::WindowModal);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1453 progress->setLabelText(tr("Installing certificates..."));
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1454 progress->setCancelButton(0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1455 progress->setRange(0,0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1456 progress->setMinimumDuration(0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1457 progress->show();
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1458
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1459 CertificateList *instList = mListToInstall.isValid() ?
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1460 &mListToInstall :
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1461 &mInstalledList;
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1462
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1463 InstallWrapper *instWrap = new InstallWrapper(this,
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1464 instList->fileName(),
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1465 choices);
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1466
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1467 syslog_info_printf ("Installing certificate list: '%s' Version '%s'\n",
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1468 instList->fileName().toUtf8().constData(),
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1469 instList->date().toString().toUtf8().constData());
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1470 /* Clean up object and progress dialog */
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1471 connect(instWrap, SIGNAL(finished()), instWrap, SLOT(deleteLater()));
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1472 connect(instWrap, SIGNAL(finished()), progress, SLOT(deleteLater()));
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1473 connect(instWrap, SIGNAL(finished()), progress, SLOT(cancel()));
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1474 connect(instWrap, SIGNAL(installationSuccessful()),
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1475 this, SLOT(installerSuccess()));
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1476 connect(instWrap, SIGNAL(error(const QString &)),
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1477 this, SLOT(installerError(const QString &)));
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1478 instWrap->start();
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1479
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1480 if (!saveUnselectedCertificates(unselected)) {
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1481 qWarning() << "Failed to save previosly unselected certificates.";
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1482 }
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1483
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1484 }
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1485
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1486 void MainWindow::loadUnselectedCertificates()
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1487 {
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1488 mPreviouslyUnselected.clear();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1489 mSettings.beginGroup("unselected");
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1490 QStringList keys = mSettings.allKeys();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1491 foreach (const QString &key, keys) {
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1492 mPreviouslyUnselected << mSettings.value(key, QString()).toString();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1493 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1494 mSettings.endGroup();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1495 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1496
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1497 bool MainWindow::saveUnselectedCertificates(QStringList unselected)
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1498 {
479
a8d56a2846a8 Fill the internal list of previously unselcted certificates when saving in settings.
Raimund Renkert <rrenkert@intevation.de>
parents: 461
diff changeset
1499 mPreviouslyUnselected.clear();
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1500 mSettings.beginGroup("unselected");
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1501 mSettings.remove(""); /* Clears old choices */
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1502 for (int i = 0; i < unselected.size(); i++) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1503 QString key = QString::fromLatin1("cert%1").arg(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1504 QString value = unselected.at(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1505 mSettings.setValue(key, value);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1506 mPreviouslyUnselected << value;
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1507 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1508 mSettings.endGroup();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1509 mSettings.sync();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1510 return mSettings.status() == QSettings::NoError;
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1511 }
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1512
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1513 void MainWindow::toggleInManual(bool state, const Certificate &cert)
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1514 {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1515 if (!mUpdatesManual->contains(cert)) {
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1516 QToolButton* actionBtn = new QToolButton();
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1517 QIcon btnIcon;
1201
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1518 if (mRemoveList->contains(cert)) {
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1519 btnIcon.addFile(":/img/cert-to-be-removed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
1201
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1520 btnIcon.addFile(":/img/cert-is-installed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1521 actionBtn->setProperty("ToolTip_On", tr("Certificate will be removed."));
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1522 /* Off should never be possible here
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1523 * As the manual change of removed certificates is disabled */
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1524 actionBtn->setProperty("ToolTip_Off", tr("Certificate will not be removed."));
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1525 } else {
1209
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1526 btnIcon.addFile(":/img/cert-to-be-installed-good-48.png", QSize(48, 48), QIcon::Normal, QIcon::On);
3815a0d2017b (issue115) icons, new for cert-to-be* with color.
Bernhard Reiter <bernhard@intevation.de>
parents: 1202
diff changeset
1527 btnIcon.addFile(":/img/cert-to-be-removed-bad-48.png", QSize(48, 48), QIcon::Normal, QIcon::Off);
1201
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1528 actionBtn->setProperty("ToolTip_On", tr("Certificate will be installed."));
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1529 actionBtn->setProperty("ToolTip_Off", tr("Certificate will be removed."));
9bdce8d6fd43 (issue144) Handle removal certificates differently in manual changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1162
diff changeset
1530 }
1106
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1531 actionBtn->setIcon(btnIcon);
6f7b7d88f048 (issue115) Rework CertificateListWidgets to have a ToolButton instead of a combobox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1104
diff changeset
1532 mUpdatesManual->addCertificate(cert, state, actionBtn);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1533 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1534 else {
1107
51d3b361f17a Revert commit 1102
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1106
diff changeset
1535 mUpdatesManual->removeCertificate(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1536 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1537 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1538
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1539 void MainWindow::removeFromManual(bool state, const Certificate &cert)
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1540 {
1107
51d3b361f17a Revert commit 1102
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1106
diff changeset
1541 mUpdatesManual->removeCertificate(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1542
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1543 if (cert.isInstallCert()) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1544 mInstallList->setCertState(state, cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1545 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1546 else {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1547 mRemoveList->setCertState(state, cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1548 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1549 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1550
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1551 void MainWindow::closeApp()
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1552 {
782
20ca94680003 Implemented detection of running instance on linux using a lock file.
Sascha Wilde <wilde@intevation.de>
parents: 754
diff changeset
1553 ProcessHelp::cleanUp();
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1554 qApp->quit();
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1555 }
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1556
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1557 void MainWindow::checkAndInstallCerts()
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1558 {
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1559 /* Checking before opening the dialog should be cheaper */
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1560 QList<int> pids = ProcessHelp::getProcessesIdForName("firefox");
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1561 pids.append(ProcessHelp::getProcessesIdForName("thunderbird"));
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1562
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1563 if (pids.isEmpty()) {
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1564 installCerts();
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1565 return;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1566 }
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1567
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1568 QStringList pNames;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1569 pNames << "firefox" << "thunderbird";
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1570
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1571 ProcessWaitDialog *waitDialog = new ProcessWaitDialog(this, pNames);
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1572
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1573 connect(waitDialog, SIGNAL(accepted()), this, SLOT(installCerts()));
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1574 connect(waitDialog, SIGNAL(accepted()), waitDialog, SLOT(deleteLater()));
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1575
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1576 waitDialog->exec();
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1577 return;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1578 }
654
129e611eaf50 Merge branch trustbridge-refactor
Andre Heinecke <andre.heinecke@intevation.de>
parents: 609 653
diff changeset
1579
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1580 void MainWindow::togglePages(int button)
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1581 {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1582 mUpdatesWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1583 mInstallWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1584 mRemoveWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1585 mInfoWidget->hide();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1586 switch(button) {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1587 case 0: mUpdatesWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1588 case 1: mInstallWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1589 case 2: mRemoveWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1590 case 3: mInfoWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1591 default: mUpdatesWidget->show(); break;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1592 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1593 return;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1594 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1595
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1596 static void deactivateDetailsButton(QPushButton *btn) {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1597 btn->setToolTip(QObject::tr("Hide details"));
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1598 btn->setText(" " + QObject::tr("Less"));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1599 btn->setIcon(QIcon(":/img/dialog-information_grey_16px.png"));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1600 }
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1601
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1602 static void activateDetailsButton(QPushButton *btn) {
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1603 btn->setToolTip(QObject::tr("Show details"));
1104
a7a72353d6d2 (issue111) Wording and German translation.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1103
diff changeset
1604 btn->setText(" " + QObject::tr("Details"));
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1605 btn->setIcon(QIcon(":/img/dialog-information_16px.png"));
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1606 }
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1607
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1608 void MainWindow::toggleUpdatesNew() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1609 if (!mUpdatesNew->isVisible()) {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1610 mUpdatesNew->show();
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1611 deactivateDetailsButton(mUpdatesDetailsNew);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1612 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1613 else {
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1614 mUpdatesNew->hide();
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1615 activateDetailsButton(mUpdatesDetailsNew);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1616 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1617 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1618
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1619 void MainWindow::toggleUpdatesRemove() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1620 if (!mUpdatesRemove->isVisible()) {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1621 mUpdatesRemove->show();
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1622 deactivateDetailsButton(mUpdatesDetailsRemove);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1623 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1624 else {
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1625 mUpdatesRemove->hide();
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1626 activateDetailsButton(mUpdatesDetailsRemove);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1627 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1628 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1629
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1630 void MainWindow::toggleUpdatesManual() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1631 if (!mUpdatesManual->isVisible()) {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1632 mUpdatesManual->show();
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1633 mManualDetailsShown = true;
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1634 deactivateDetailsButton(mUpdatesDetailsManual);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1635 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1636 else {
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1637 mUpdatesManual->hide();
1109
6594e8e63a25 (issue115) Add tooltips and fix manual changes handling
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1107
diff changeset
1638 mManualDetailsShown = false;
1098
75a5bfe0525e (issue111) Rework Updates ui
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1097
diff changeset
1639 activateDetailsButton(mUpdatesDetailsManual);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1640 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1641 }
690
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1642
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1643 void MainWindow::closeEvent(QCloseEvent *event)
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1644 {
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1645 if (getState() == NewListAvailable) {
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1646 /* Only minimize to tray if there is a new list */
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1647 QMainWindow::closeEvent(event);
965
013ca910589a Open main window in case of error message.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 964
diff changeset
1648 mTrayIcon->show();
690
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1649 return;
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1650 }
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1651 return closeApp();
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1652 }
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1653
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1654 void MainWindow::updateCheckSuccess()
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1655 {
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1656 if (getState() != TransferError) {
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1657 const QDateTime now = QDateTime::currentDateTime();
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1658 mSettings.setValue("lastUpdateCheck", now);
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1659 mLastUpdateCheckContents->setText(QLocale::system().toString(now, DATETIME_FORMAT));
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1660 mLastUpdateCheckContents->show();
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1661 mLastUpdateCheck->show();
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1662 syslog_info_printf(tr("Sucessfully checked for updates.").toUtf8().constData());
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1663 handleLTE(lteNoConnection, true); /* Reset error state */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1664 handleLTE(lteInvalidCertificate, true);
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1665 }
1042
74951e389cb1 (issue103) Only shut down if the mainwidow is not visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1034
diff changeset
1666 if ((getState() != NewSoftwareAvailable && getState() != NewListAvailable && mTrayMode)
74951e389cb1 (issue103) Only shut down if the mainwidow is not visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1034
diff changeset
1667 && !isVisible()) {
962
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1668 qDebug() << "Shutting down as no list or Software is available.";
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1669 closeApp();
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1670 } else {
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1671 mTrayIcon->show();
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1672 }
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1673 }
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1674
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1675 int MainWindow::changeCount()
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1676 {
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1677 return mChangeCount;
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1678 }
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1679
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1680 void MainWindow::setChangeCount(int cnt)
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1681 {
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1682 if (mChangeCount != cnt) {
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1683 mChangeCount = cnt;
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1684 emit changesChanged(QString("%1").arg(cnt));
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1685 }
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1686 }
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1687
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1688 void MainWindow::showProxySettings()
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1689 {
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1690 ProxySettingsDlg *dlg = new ProxySettingsDlg(this);
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1691 dlg->exec();
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1692 }
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1693
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1694 void MainWindow::showHelp()
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1695 {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1696 char *inst_dir = get_install_dir();
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1697 if (!inst_dir) {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1698 qDebug() << "Failed to find install dir";
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1699 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1700 }
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1701 QString helpPath = QString::fromUtf8(inst_dir);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1702 helpPath += HELP_PATH;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1703 QFileInfo fiHelp(helpPath);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1704 qDebug() << "Opening help: " << fiHelp.absoluteFilePath();
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1705 if (!fiHelp.exists()) {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1706 QMessageBox::warning(this, tr("Error!"), tr ("Failed to find the manual"));
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1707 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1708 }
966
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1709 #ifdef Q_OS_WIN
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1710 QDesktopServices::openUrl(QUrl("file:///" + fiHelp.absoluteFilePath()));
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1711 #else
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1712 QDesktopServices::openUrl(QUrl(fiHelp.absoluteFilePath()));
966
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1713 #endif
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1714 free (inst_dir);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1715 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1716 }
1061
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1717
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1718 void MainWindow::showErrorMessage(const QString &msg)
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1719 {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1720 QMessageBox::warning(this, tr("TrustBridge error"), msg);
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1721 }
1227
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1722
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1723 void MainWindow::handleLTE(LongTimeErrors lte, bool reset)
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1724 {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1725 QString settingPrefix;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1726 switch (lte) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1727 case lteInvalidSoftware:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1728 settingPrefix = "LTE/invalidSW";
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1729 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1730 case lteInvalidList:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1731 settingPrefix = "LTE/invalidList";
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1732 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1733 case lteInvalidCertificate:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1734 settingPrefix = "LTE/invalidCertificate";
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1735 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1736 case lteNoConnection:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1737 settingPrefix = "LTE/noConnection";
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1738 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1739 default:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1740 qDebug() << "Unhandled error. " << lte;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1741 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1742
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1743 if (reset) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1744 /* delete all values and be done */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1745 mSettings.remove(settingPrefix + "_lastSaved");
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1746 mSettings.remove(settingPrefix + "_count");
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1747 mSettings.remove(settingPrefix + "_lastMsgShown");
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1748 return;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1749 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1750
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1751 QDateTime lastSaved = mSettings.value(settingPrefix + "_lastSaved").toDateTime();
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1752 bool cnt_valid;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1753 int cnt = mSettings.value(settingPrefix + "_count").toInt(&cnt_valid);
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1754 if (!cnt_valid) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1755 cnt = 0;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1756 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1757
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1758 if (!lastSaved.isValid() || lastSaved.daysTo(QDateTime::currentDateTime()) >= 1) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1759 /* The error count is increased at most once a day */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1760 mSettings.setValue(settingPrefix + "_lastSaved", QDateTime::currentDateTime());
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1761 mSettings.setValue(settingPrefix + "_count", ++cnt);
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1762 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1763
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1764
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1765 if (cnt < 7) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1766 /* We are done */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1767 return;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1768 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1769 /* A week has passed. Start showing the error. */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1770 QDateTime lastShown = mSettings.value(settingPrefix + "_lastShown").toDateTime();
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1771 if (lastShown.isValid() && lastShown.daysTo(QDateTime::currentDateTime()) < 1) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1772 /* Only show the error message once a day */
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1773 return;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1774 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1775
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1776 mSettings.setValue(settingPrefix + "_lastShown", QDateTime::currentDateTime());
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1777
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1778 switch (lte) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1779 case lteInvalidSoftware:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1780 showErrorMessage(tr("The integrity check for the available software update has "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1781 "failed repeatedly.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1782 tr("Please contact your Support or the publisher of the Software."));
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1783 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1784 case lteInvalidList:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1785 showErrorMessage(tr("The integrity check of the available certificates has "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1786 "failed repeatedly.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1787 tr("Please contact your Support or the publisher of the Software."));
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1788 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1789 case lteInvalidCertificate:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1790 showErrorMessage(tr("The authentication of the download server has "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1791 "failed repeatedly.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1792 tr("Please contact your Support or the publisher of the Software."));
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1793 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1794 case lteNoConnection:
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1795 bool useProxy = mSettings.value("UseProxy", false).toBool();
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1796 if (useProxy) {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1797 showErrorMessage(tr("The connection to the download server has "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1798 "failed repeatedly.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1799 tr("Please check that the Proxy Server \"%1\" is available.").arg(
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1800 mSettings.value("ProxyURL").toString()));
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1801 } else {
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1802 showErrorMessage(tr("The connection to the download server has "
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1803 "failed repeatedly.") + "\n" +
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1804 tr("Please check your internet connection."));
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1805 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1806 break;
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1807 }
a1e990947172 (issue38) Add long time error handling.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1215
diff changeset
1808 }

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