annotate ui/mainwindow.cpp @ 1250:7ea3a4c0e2ae

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

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