annotate ui/mainwindow.cpp @ 1086:93325618ac7b

(issue117) Set verify callback to abort the handshake earlier if the certificate does not match.
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 12 Sep 2014 13:09:02 +0200
parents a12e6172d82c
children 508c96e72f62
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>
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
20 #include <QTimer>
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
21 #include <QHBoxLayout>
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
22 #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
23 #include <QGridLayout>
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
24 #include <QGroupBox>
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
25 #include <QSplitter>
205
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
26 #include <QLabel>
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
27 #include <QImage>
250
1e112cf41e92 Updated the mainwindow layout.
Raimund Renkert <rrenkert@intevation.de>
parents: 249
diff changeset
28 #include <QCheckBox>
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
29 #include <QButtonGroup>
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
30 #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
31 #include <QStandardPaths>
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
32 #include <QDesktopServices>
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
33
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
34 #include "certificatelist.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
35 #include "downloader.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
36 #include "helpdialog.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
37 #include "aboutdialog.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
38 #include "separatoritemdelegate.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
39 #include "installwrapper.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
40 #include "util.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
41 #include "logging.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
42 #include "binverify.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
43 #include "processhelp.h"
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
44 #include "processwaitdialog.h"
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
45 #include "trayicon.h"
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
46 #include "proxysettingsdlg.h"
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
47
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
48 // 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
49 // something to say
548
c84dc8f6d017 Increase nag interval to 70 minutes
Andre Heinecke <aheinecke@intevation.de>
parents: 531
diff changeset
50 #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
51
995
da6ce90bef17 Fixed DATETIME_FORMAT.
Emanuel Schuetze <emanuel@intevation.de>
parents: 994
diff changeset
52 #define DATETIME_FORMAT "dddd, d. MMMM yyyy HH:mm:ss"
714
57bd73145e48 (Issue25) Fix typos change order and add better date formating
Andre Heinecke <andre.heinecke@intevation.de>
parents: 713
diff changeset
53
409
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
54 #ifndef APPNAME
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
55 #define APPNAME "TrustBridge"
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
56 #endif
09bb19e5e369 Remove m13 mentions and change test certificate to intevation.de
Andre Heinecke <aheinecke@intevation.de>
parents: 407
diff changeset
57
994
8fb1b912fd8e Add test using the default download server used by the software
Andre Heinecke <andre.heinecke@intevation.de>
parents: 987
diff changeset
58 #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
59 #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
60 #endif
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
61
885
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
62 #if defined(_X86_) || defined(__i386__)
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
63 #define TB_ARCH_STRING "-i386"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
64 #else
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
65 #define TB_ARCH_STRING "-amd64"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
66 #endif
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
67
1055
9812983e7650 Switch back to development test url
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1042
diff changeset
68 #ifdef RELEASE_BUILD
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
69 # define LIST_RESOURCE "/users/aheinecke/zertifikatsliste.txt"
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
70 # ifdef Q_OS_WIN
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
71 # define SW_RESOURCE_VERSION "/users/aheinecke/TrustBridge-%1.exe"
664
911b94a475e0 Fix SW_Resource defines for linux
Andre Heinecke <andre.heinecke@intevation.de>
parents: 663
diff changeset
72 # define SW_RESOURCE "/users/aheinecke/TrustBridge.exe"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
73 # else
885
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
74 # define SW_RESOURCE_VERSION "/users/aheinecke/TrustBridge-%1" TB_ARCH_STRING ".sh"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
75 # define SW_RESOURCE "/users/aheinecke/TrustBridge" TB_ARCH_STRING ".sh"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
76 # endif
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
77 #else // RELEASE_BUILD
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
78 # define LIST_RESOURCE "/users/aheinecke/development/zertifikatsliste.txt"
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
79 # ifdef Q_OS_WIN
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
80 # define SW_RESOURCE_VERSION "/users/aheinecke/development/TrustBridge-development.exe"
664
911b94a475e0 Fix SW_Resource defines for linux
Andre Heinecke <andre.heinecke@intevation.de>
parents: 663
diff changeset
81 # define SW_RESOURCE "/users/aheinecke/development/TrustBridge.exe"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
82 # else
885
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
83 # define SW_RESOURCE_VERSION "/users/aheinecke/development/TrustBridge-development" TB_ARCH_STRING ".sh"
1cc85fd3daa5 (issue70) Handle i386 and amd64 packages
Andre Heinecke <andre.heinecke@intevation.de>
parents: 871
diff changeset
84 # define SW_RESOURCE "/users/aheinecke/development/TrustBridge" TB_ARCH_STRING ".sh"
607
e83589f1fd7f Use different URI's for development
Andre Heinecke <andre.heinecke@intevation.de>
parents: 594
diff changeset
85 # endif
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
86 #endif
7
992c0ec57660 Add unit tests make CertificateList work.
Andre Heinecke <aheinecke@intevation.de>
parents: 2
diff changeset
87
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
88 /* 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
89 * the help is placed.*/
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
90 #ifdef WIN32
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
91 #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
92 #else
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
93 #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
94 #endif
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
95
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
96 MainWindow::MainWindow(bool trayMode):
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
97 mTrayMode(trayMode)
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
98 {
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
99 createActions();
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
100 createTrayIcon();
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
101 setupGUI();
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
102 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
103 setMinimumWidth(760);
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
104 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
105 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
106
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
107 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
108 this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
109
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
110 mMessageTimer = new QTimer(this);
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
111 connect(mMessageTimer, SIGNAL(timeout()), this, SLOT(showMessage()));
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
112 mMessageTimer->setInterval(NAG_INTERVAL_MINUTES * 60 * 1000);
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
113 mMessageTimer->start();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
114 checkUpdates();
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
115 loadUnselectedCertificates();
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
116 loadCertificateList();
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
117 if (!trayMode) {
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
118 show();
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
119 }
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
120 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
121
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
122 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
123 {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
124 switch (reason) {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
125 case QSystemTrayIcon::Trigger:
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
126 case QSystemTrayIcon::MiddleClick:
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
127 showMessage();
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
128 break;
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
129 case QSystemTrayIcon::DoubleClick:
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
130 show();
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
131 break;
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
132 default:
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 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
135 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
136
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
137 void MainWindow::messageClicked()
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
138 {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
139 if (mCurState == NewSoftwareAvailable) {
893
b61d5a289d8f Hide after selecting to install the update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 885
diff changeset
140 hide();
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
141 verifySWData();
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
142 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
143 if (swFileName.isEmpty()) {
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
144 checkUpdates(true);
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
145 mCurState = DownloadingSW;
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
146 return;
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
147 }
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
148 installNewSW(swFileName,
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
149 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
150 } else {
013ca910589a Open main window in case of error message.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 964
diff changeset
151 show();
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
152 }
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
153 }
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
154
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
155 void MainWindow::showMessage()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
156 {
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
157 if (mCurMessage.isEmpty()) {
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
158 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
159 }
961
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
160
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
161 if (!mTrayIcon->isVisible() && !mTrayIcon->isAlternative()) {
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
162 mTrayIcon->show();
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
163 /* 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
164 * 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
165 * 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
166 * the trayicon. So we delay here.*/
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
167 QTimer::singleShot(2000, this, SLOT(showMessage()));
423e31ac656e Delay the tray icon after the download
Andre Heinecke <andre.heinecke@intevation.de>
parents: 956
diff changeset
168 } else if (mCurState == NewSoftwareAvailable || !isVisible()) {
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
169 mTrayIcon->showMessage(QApplication::applicationName(), mCurMessage,
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
170 QSystemTrayIcon::Information, 10000);
19
9af6198deb8e Add timed trigger for the message
Andre Heinecke <aheinecke@intevation.de>
parents: 17
diff changeset
171 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
172 }
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
173 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
174
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
175 void MainWindow::verifyListData()
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
176 {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
177 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
178 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
179 if (!availableFileName.isEmpty()) {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
180 mListToInstall.readList(availableFileName.toLocal8Bit().constData());
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
181 if (!mListToInstall.isValid()) {
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
182 mCurState = TransferError;
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
183 // Probably a bug when Qt fileName is encoded and cFileName
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
184 // fails because of this. This needs a unit test!
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
185 // Maybe check that the file is in our data directory
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
186 QFile::remove(availableFileName);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
187 mSettings.remove("List/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
188 mSettings.remove("List/availableDate");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
189 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
190 } else {
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
191 // 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
192 mSettings.remove("List/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
193 mSettings.remove("List/availableDate");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
194 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
195
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
196 if (!installedFileName.isEmpty()) {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
197 mInstalledList.readList(installedFileName.toLocal8Bit().constData());
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
198 if (!mInstalledList.isValid()) {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
199 // 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
200 // 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
201 // 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
202 QFile::remove(installedFileName);
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
203 mSettings.remove("List/installed");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
204 mSettings.remove("List/installedDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
205 }
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
206 } else {
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
207 mSettings.remove("List/installed");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
208 mSettings.remove("List/installedDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
209 }
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
210 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
211
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
212 void MainWindow::verifySWData()
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
213 {
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
214 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
215
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
216 if (swFileName.isEmpty()) {
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
217 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
218 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
219 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
220
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
221 QFileInfo fi(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
222 if (!fi.exists()) {
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
223 mSettings.remove("Software/available");
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
224 mSettings.remove("Software/availableDate");
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
225 qDebug() << "Software does not yet exist.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
226 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
227 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
228 if (!fi.isExecutable()) {
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
229 qWarning() << "Downloaded file: " << swFileName << " is not executable.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
230 QFile::remove(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
231 mSettings.remove("Software/available");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
232 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
233 return;
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
234 }
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
235 bin_verify_result verifyResult = verify_binary(swFileName.toUtf8().constData(),
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
236 swFileName.toUtf8().size());
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
237 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
238 if (verifyResult.result != VerifyValid) {
591
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
239 qDebug() << "Failed to verify downloaded data.";
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
240 QFile::remove(swFileName);
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
241 mSettings.remove("Software/available");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
242 mSettings.remove("Software/availableDate");
26a18e3c3db4 Cleanups and coding style.
Andre Heinecke <aheinecke@intevation.de>
parents: 587
diff changeset
243 return;
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
244 }
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
245 fclose(verifyResult.fptr);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
246 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
247
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
248 void MainWindow::handleNewList(const QString& fileName, const QDateTime& modDate) {
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
249 qDebug() << "new list available";
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
250 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
251 mSettings.setValue("List/availableDate", modDate);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
252
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
253 verifyListData();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
254 if (!mListToInstall.isValid()) {
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
255 /* 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
256 /* TODO: Error count. Error handling. Otherwise
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
257 * we can go into an endless loop here */
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
258
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
259 /* 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
260 QTimer::singleShot(600000 + (qrand() % 60000), this, SLOT(checkUpdates()));
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
261 } else {
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
262 if (mTrayIcon->isAlternative()) {
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
263 mCurMessage = tr("An updated certificate list is available.");
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
264 } else {
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
265 mCurMessage = tr("An updated certificate list is available.") +" " + tr("Click here to install.");
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
266 }
82
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
267 setState(NewListAvailable);
1f27d6db5ee3 Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents: 72
diff changeset
268 showMessage();
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
269 loadCertificateList();
71
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
270 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
271 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
272
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
273 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
274 if (mTrayIcon->isAlternative()) {
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
275 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
276 QApplication::applicationName());
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
277 } else {
904
f89b41fa7048 Fix whitespace errors
Andre Heinecke <andre.heinecke@intevation.de>
parents: 900
diff changeset
278 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
279 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
280 QApplication::applicationName());
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
281 }
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
282 setState(NewSoftwareAvailable);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
283 mSettings.setValue("Software/available", fileName);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
284 mSettings.setValue("Software/availableDate", modDate);
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
285
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
286 mSettings.sync();
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
287 showMessage();
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
288 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
289
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
290 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
291 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
292 QString filePath = QDir::toNativeSeparators(instProcInfo.absoluteFilePath());
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
293 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
294 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
295
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
296 if (vres.result != VerifyValid) {
592
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
297 qDebug() << "Invalid software. Not installing";
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
298 return;
592
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
299 }
778f74d0706f Verify the binary directly without relying on settings (which might differ)
Andre Heinecke <aheinecke@intevation.de>
parents: 591
diff changeset
300 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
301 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
302
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
303 #ifdef WIN32
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
304 QString parameters = QString::fromLatin1("/S /UPDATE=1 /D=") +
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
305 installDir.path().replace("/", "\\") + "";
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
306
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
307 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
308 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
309 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
310
aee3eb10bbba Add unit test for sw update execution and fix shell execute params
Andre Heinecke <aheinecke@intevation.de>
parents: 555
diff changeset
311 shExecInfo.lpFile = reinterpret_cast<LPCWSTR> (filePath.utf16());
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
312 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
313
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
314 // shExecInfo.fMask = SEE_MASK_NOASYNC;
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
315 shExecInfo.nShow = SW_SHOWDEFAULT;
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
316
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
317 if (!is_system_install()) {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
318 shExecInfo.lpVerb = L"open";
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
319 } else {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
320 shExecInfo.lpVerb = L"runas";
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
321 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
322
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
323 qDebug() << "Starting process: " << filePath
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
324 << " with arguments: " << parameters;
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
325
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
326 if (!ShellExecuteExW(&shExecInfo)) {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
327 /* 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
328 char* errmsg = getLastErrorMsg();
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
329 QString qerrmsg = QString::fromUtf8(errmsg);
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
330 free(errmsg);
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
331 qDebug() << "Failed to start process: " << qerrmsg;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
332 setState(NewSoftwareAvailable);
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
333 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
334 return;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
335 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
336 #else /* WIN32 */
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
337 /* On linux installDir is <prefix>/bin */
594
c944de9900de Add installation parameters with correct quoting
Andre Heinecke <aheinecke@intevation.de>
parents: 592
diff changeset
338 QStringList parameters;
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
339 installDir.cdUp();
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
340 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
341 parameters << "--update";
51b97ebc5b06 (issue54) Launch depending on visibility either as tray or full after installation
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1061
diff changeset
342 if (isVisible()) {
51b97ebc5b06 (issue54) Launch depending on visibility either as tray or full after installation
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1061
diff changeset
343 parameters << "--show-after-update";
51b97ebc5b06 (issue54) Launch depending on visibility either as tray or full after installation
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1061
diff changeset
344 }
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
345 bool sudo_started = false;
841
216a65d7fc4b (issue66) Implement is_system_install and use it
Andre Heinecke <andre.heinecke@intevation.de>
parents: 838
diff changeset
346 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
347 if (use_sudo) {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
348 QStringList sudoPrograms;
987
b8ae69bcc540 Use pkexec instead of gksudo.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 970
diff changeset
349 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
350 QStringList sudoParams;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
351 sudoParams << filePath + " " + parameters.join(" ");
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
352
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
353 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
354 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
355 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
356 continue;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
357 } else {
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
358 sudo_started = true;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
359 break;
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
360 }
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
361 }
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
362 }
894
2e7fff9d195a Update in the real prefix
Andre Heinecke <andre.heinecke@intevation.de>
parents: 893
diff changeset
363 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
364 if (!sudo_started && !QProcess::startDetached(filePath, parameters)) {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
365 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
366 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
367 return;
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
368 }
810
ee75e236843c Use sudo to install software in case of is_admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 807
diff changeset
369
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
370 #endif
1081
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
371
edbf5e5e88f4 (issue118) Extend verify_binary to carry an open file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1067
diff changeset
372 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
373 /* 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
374 fclose(vres.fptr);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
375 closeApp();
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
376 }
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
377
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
378 void MainWindow::checkUpdates(bool downloadSW)
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
379 {
587
02a89710a7cd Split up list and software verification and use it
Andre Heinecke <aheinecke@intevation.de>
parents: 563
diff changeset
380 verifyListData();
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
381
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
382 if (!mSettings.contains("Software/installedDate") ||
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
383 mSettings.value("Software/installedVersion").toString() != QApplication::applicationVersion()) {
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
384 /* 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
385 * been installed */
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
386 getLastModForCurrentVersion();
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
387 return;
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
388 }
17
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
389 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
390 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
391
1056
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
392 QDateTime swAvailableLastMod = mSettings.value("Software/availableDate").toDateTime();
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
393
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
394 if (swAvailableLastMod.isValid()) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
395 qDebug() << "Installed an update: " << swInstalledLastMod <<
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
396 " available " << swAvailableLastMod;
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
397 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
398 QApplication::applicationVersion().toUtf8().constData());
1056
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
399 if (swInstalledLastMod == swAvailableLastMod) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
400 QString fileName = mSettings.value("Software/available").toString();
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
401 if (fileName.isEmpty()) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
402 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
403 } else {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
404 if (QFile::remove(fileName)) {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
405 qDebug() << "Removed: " << fileName;
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
406 } else {
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
407 qDebug() << "Failed to remove: " << fileName;
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
408 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
409 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
410 /* Clear out available data. */
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
411 mSettings.remove("Software/available");
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
412 mSettings.remove("Software/availableDate");
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
413 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
414 }
c7db2cc97bad (issue44) Remove downloaded binaries after update
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1055
diff changeset
415
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
416 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
417 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
418
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
419 #ifndef RELEASE_BUILD
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
420 /* 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
421 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
422 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
423 #endif
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
424
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
425
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
426 Downloader* downloader = new Downloader(this,
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
427 QString::fromLatin1(SERVER_URL),
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
428 QByteArray(),
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
429 swInstalledLastMod,
72
7e304573ebd1 Add some testing hacks for interactive testing
Andre Heinecke <aheinecke@intevation.de>
parents: 71
diff changeset
430 listInstalledLastMod,
437
4b486a14252f Acutally use the values that can be taken from the config
Andre Heinecke <aheinecke@intevation.de>
parents: 434
diff changeset
431 swResource,
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
432 listResource,
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
433 downloadSW);
17
c12825a651ed Read out content-length and use this to skip existing files
Andre Heinecke <aheinecke@intevation.de>
parents: 16
diff changeset
434
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
435 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
436 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
437 if (!downloadSW) {
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
438 setState(BeforeDownload);
461
1ce835c40eb7 Ask the user if software updates should be installed.
Raimund Renkert <rrenkert@intevation.de>
parents: 456
diff changeset
439 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
440 this, SLOT(handleNewSW(const QString&, const QDateTime&)));
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
441 } else {
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
442 setState(DownloadingSW);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
443 connect(downloader, SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&)),
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
444 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
445 }
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
446
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
447 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
448 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
449 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
450 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode)));
10
fe39d93f1261 Start on Downloader component
Andre Heinecke <aheinecke@intevation.de>
parents: 7
diff changeset
451 downloader->start();
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
452 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
453
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
454 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
455 {
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
456 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
457 QApplication::applicationVersion());
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
458 qDebug() << softwareVersion;
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
459 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
460 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
461 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
462 QByteArray(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
463 QDateTime::currentDateTime(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
464 QDateTime::currentDateTime(),
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
465 softwareVersion,
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
466 listResource,
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
467 false);
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
468 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
469 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
470 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
471 connect(downloader, SIGNAL(lastModifiedDate(const QDateTime&)),
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
472 this, SLOT(setLastModifiedSWDate(const QDateTime&)));
486
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
473
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
474 downloader->start();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
475 }
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
476
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
477 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
478 {
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
479 mSettings.beginGroup("Software");
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
480 mSettings.setValue("installedDate", date);
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
481 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
482 mSettings.endGroup();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
483 checkUpdates();
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
484 }
fa56a9403939 Lookup the last modified date for software installer after first installation.
Raimund Renkert <rrenkert@intevation.de>
parents: 481
diff changeset
485
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 31
diff changeset
486 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
487 {
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
488 /* TODO logging and handle error according to a plan */
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
489 syslog_error_printf ("Failed to check for updates: %s", message.toUtf8().constData());
1061
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
490 if (!isVisible()) {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
491 mCurMessage = message;
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
492 mTrayIcon->show();
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
493 showMessage();
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
494 } else {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
495 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
496 }
551
15121735805e Start implementation of software update installation
Andre Heinecke <aheinecke@intevation.de>
parents: 548
diff changeset
497 setState(TransferError);
16
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
498 }
225a5ec20dad Use QSettings and manage downloader from mainwindow.
Andre Heinecke <aheinecke@intevation.de>
parents: 11
diff changeset
499
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
500 void MainWindow::createActions()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
501 {
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
502 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
503 connect(mCheckUpdates, SIGNAL(triggered()), this, SLOT(checkUpdates()));
2
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
504 mQuitAction = new QAction(tr("Quit"), this);
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
505 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
506 }
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
507
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
508 void MainWindow::createTrayIcon()
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
509 {
11
7e2f14c7aba2 Split up downloader component and further implement it
Andre Heinecke <aheinecke@intevation.de>
parents: 10
diff changeset
510 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
511 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
512
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
513 mTrayMenu = new QMenu(this);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
514 mTrayMenu->addAction(mCheckUpdates);
2
cf88cc432b9d Add quit action
Andre Heinecke <aheinecke@intevation.de>
parents: 0
diff changeset
515 mTrayMenu->addAction(mQuitAction);
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
516
871
4efd6378c001 (issue51) Add fallback in case systemtray is unavailable.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 857
diff changeset
517 mTrayIcon = new TrayIcon(this);
0
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
518 mTrayIcon->setContextMenu(mTrayMenu);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
519
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
520 mTrayIcon->setIcon(trayImg);
cb0cde2c5eb9 Initial commit. Basically a Hello World with a Tray Icon.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
521 setWindowIcon(trayImg);
407
af53c40e74b1 Rename m13ui to TrustBridge
Andre Heinecke <aheinecke@intevation.de>
parents: 404
diff changeset
522 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
523
f22a99f7cb69 Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
524 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
525 }
155
c0fdb8d336cf Added menubar/menu and method stubs to mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 82
diff changeset
526
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
527 QWidget * MainWindow::createInfoWidget()
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
528 {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
529 QWidget *theWidget = new QWidget;
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
530 QVBoxLayout *infoPanelLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
531 QHBoxLayout *infoHeaderLayout = new QHBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
532 QVBoxLayout *infoHeaderTextLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
533 QVBoxLayout *infoCenterLayout = new QVBoxLayout;
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
534
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
535 QString infoVersion = tr("Version: ");
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
536 infoVersion.append(QApplication::applicationVersion());
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
537 QLabel *appVersion = new QLabel(infoVersion);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
538 appVersion->setTextInteractionFlags(
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
539 Qt::TextSelectableByMouse |
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
540 Qt::TextSelectableByKeyboard);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
541
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
542 QFrame *infoHeaderSeparator = new QFrame();
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
543 infoHeaderSeparator->setFrameShape(QFrame::HLine);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
544 infoHeaderSeparator->setFrameShadow(QFrame::Sunken);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
545
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
546 infoHeaderTextLayout->addWidget(appVersion);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
547 infoHeaderLayout->addLayout(infoHeaderTextLayout);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
548 infoHeaderLayout->insertStretch(2, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
549
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
550 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
551 " 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
552 tr("The root certificate lists are managed"
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
553 " 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
554 "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
555 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
556 " <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
557 " <a href=\"http://www.dn-systems.de\">DN-Systems GmbH</a>, <br>"
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
558 " contracted by the German Federal Office for Information Security (BSI).<br/><br/>") +
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
559 tr("TrustBridge is Free Software licensed"
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
560 " under GNU GPL v2+.<br/><br/>Copyright (C) 2014 by Bundesamt für Sicherheit"
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
561 " in der Informationstechnik"));
807
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
562 textDesc->setTextFormat(Qt::RichText);
1e18d4c1932a Unify about dialog labels and Remove Trustbridge header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 805
diff changeset
563 textDesc->setTextInteractionFlags(
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
564 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
565 Qt::TextSelectableByKeyboard |
fa68e5aeeaac Make links clickable and also change the about info in mainwindow.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 842
diff changeset
566 Qt::LinksAccessibleByMouse);
fa68e5aeeaac Make links clickable and also change the about info in mainwindow.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 842
diff changeset
567 textDesc->setOpenExternalLinks(true);
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
568
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
569 infoCenterLayout->addWidget(infoHeaderSeparator);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
570 infoCenterLayout->addWidget(textDesc);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
571 infoCenterLayout->insertSpacing(2, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
572 infoCenterLayout->insertSpacing(4, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
573 infoCenterLayout->insertSpacing(6, 10);
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
574
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
575 QHBoxLayout *helpButtonLayout = new QHBoxLayout();
996
29783ef4da62 (UI) Added space in QPushButton on about page.
Emanuel Schuetze <emanuel@intevation.de>
parents: 995
diff changeset
576 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
577 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
578 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
579 helpButtonLayout->addWidget(helpButton);
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
580 #ifdef USE_CURL
996
29783ef4da62 (UI) Added space in QPushButton on about page.
Emanuel Schuetze <emanuel@intevation.de>
parents: 995
diff changeset
581 QPushButton *proxySettingsButton = new QPushButton(" " + tr("Proxy settings"));
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
582 proxySettingsButton->setIcon(QIcon(":/img/preferences-network_16.png"));
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
583 connect(proxySettingsButton, SIGNAL(clicked()), this, SLOT(showProxySettings()));
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
584 helpButtonLayout->addWidget(proxySettingsButton);
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
585 #endif
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
586 helpButtonLayout->addStretch();
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
587 infoCenterLayout->addLayout(helpButtonLayout);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
588
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
589 infoCenterLayout->insertStretch(8, 10);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
590
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
591 infoPanelLayout->addLayout(infoHeaderLayout);
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
592 infoPanelLayout->addLayout(infoCenterLayout);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
593 theWidget->setLayout(infoPanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
594
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
595 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
596 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
597
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
598 QWidget * MainWindow::createUpdatesWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
599 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
600 QWidget * theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
601 QVBoxLayout *updatesMainLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
602
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
603 /* The header */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
604 QGridLayout *updatesHeaderLayout = new QGridLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
605
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
606 /* Header 1: Update date and search button */
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
607 QHBoxLayout *updateDateAndSearchButton = new QHBoxLayout;
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
608 mUpdatesHeader =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
609 new QLabel("<h2>" + tr("Certificates unchanged")+ "</h2>");
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
610 mLastCertUpdate =
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
611 new QLabel(tr("Installed certificates from:"));
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
612 mLastCertUpdateContents = new QLabel(QString());
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
613 mLastCertUpdate->hide();
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
614 mLastCertUpdateContents->hide();
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
615 mSoftwareVersionLabel =
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
616 new QLabel(tr("TrustBridge Version:"));
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
617 mSoftwareVersionContents = new QLabel(QApplication::applicationVersion());
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
618
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
619 const QDateTime lastCheck = mSettings.value("lastUpdateCheck").toDateTime().toLocalTime();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
620 if (lastCheck.isValid()) {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
621 const QString lastUpdateCheck = QLocale::system().toString(lastCheck, DATETIME_FORMAT);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
622 mLastUpdateCheck =
781
60d3f59f0803 Fix typos in translatable strings.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 754
diff changeset
623 new QLabel(tr("Last successful update check:"));
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
624 mLastUpdateCheckContents = new QLabel(lastUpdateCheck);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
625 } else {
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
626 mLastUpdateCheck = new QLabel(tr("Last successful update check:"));
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
627 mLastUpdateCheckContents = new QLabel(tr("No connection with the updateserver."));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
628 }
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 841
diff changeset
629 QPushButton *searchUpdates = new QPushButton(" " + tr("Update"));
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 841
diff changeset
630 searchUpdates->setFixedHeight(22);
802
2db9ab3f6b1b String unified.
Bernhard Reiter <bernhard@intevation.de>
parents: 796
diff changeset
631 searchUpdates->setToolTip(tr("Check for Updates"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
632 searchUpdates->setStyleSheet("font-size: 10px;");
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
633 searchUpdates->setIcon(QIcon(":/img/update-list.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
634 connect(searchUpdates, SIGNAL(clicked()), this, SLOT(checkUpdates()));
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
635 updateDateAndSearchButton->addWidget(mLastUpdateCheckContents);
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
636 updateDateAndSearchButton->addWidget(searchUpdates);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
637
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
638 // addWidget(*Widget, row, column, rowspan, colspan, [Qt::Alignment])
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
639 updatesHeaderLayout->addWidget(mUpdatesHeader, 0, 0, 1, 2);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
640 updatesHeaderLayout->addWidget(mSoftwareVersionLabel, 1, 0, 1, 1);
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
641 updatesHeaderLayout->addWidget(mSoftwareVersionContents, 1, 1, 1, 1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
642 updatesHeaderLayout->addWidget(mLastUpdateCheck, 2, 0, 1, 1);
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
643 updatesHeaderLayout->addLayout(updateDateAndSearchButton, 2, 1, 1, 1);
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
644 // updatesHeaderLayout->addWidget(mLastUpdateCheckContents, 2, 1, 1, 1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
645 updatesHeaderLayout->addWidget(mLastCertUpdate, 3, 0, 1, 1);
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
646 updatesHeaderLayout->addWidget(mLastCertUpdateContents, 3, 1, 1, 1);
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
647 updatesHeaderLayout->setColumnStretch(3, 1);
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
648
787
07cc0aabf782 (issue60) Make update list button less prominent and icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 783
diff changeset
649 // updatesHeaderLayout->addWidget(searchUpdates, 1, 4, 1, 2, Qt::AlignRight);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
650 updatesHeaderLayout->setRowMinimumHeight(4, 15);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
651
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
652 /* Header 2: Action text and buttons */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
653 mUpdatesTip =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
654 new QLabel(tr("There are currently no changes for your certificate stores."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
655 mUpdatesTip->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
656 QHBoxLayout *updatesHeaderActionButtonLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
657 mQuitButton = new QPushButton(" " + tr("Quit without saving"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
658 mQuitButton->setIcon(QIcon(":/img/application-exit.png"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
659 mQuitButton->setFixedHeight(30);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
660
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
661 mInstallButton = new QPushButton(" " + tr("Install certificates again"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
662 mInstallButton->setFixedHeight(30);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
663 #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
664 if (is_system_install()) {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
665 QIcon uacShield = QApplication::style()->standardIcon(QStyle::SP_VistaShield);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
666 mInstallButton->setIcon(uacShield);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
667 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
668 #else
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
669 mInstallButton->setIcon(QIcon(":/img/view-refresh_16px.png"));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
670 #endif
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
671 connect(mQuitButton, SIGNAL(clicked()), this, SLOT(closeApp()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
672 connect(mInstallButton, SIGNAL(clicked()), this, SLOT(checkAndInstallCerts()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
673
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
674 // addWidget(*Widget, row, column, rowspan, colspan)
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
675 updatesHeaderLayout->addWidget(mUpdatesTip, 5, 0, 1, 4);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
676 updatesHeaderActionButtonLayout->addWidget(mInstallButton);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
677 updatesHeaderActionButtonLayout->addWidget(mQuitButton);
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
678 updatesHeaderLayout->addLayout(updatesHeaderActionButtonLayout, 6, 0, 1, -1, Qt::AlignRight);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
679 updatesHeaderLayout->setRowMinimumHeight(7, 10);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
680
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
681 /* The central panels. */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
682 QScrollArea *centralScrollArea = new QScrollArea;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
683 QVBoxLayout *updatesCenterLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
684 QHBoxLayout *updatesNewLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
685 QHBoxLayout *updatesRemoveLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
686 QHBoxLayout *updatesManualLayout = new QHBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
687 mUpdatesNewCertificates =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
688 new QLabel("<h3>" +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
689 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
690 "</h3>");
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
691 mUpdatesDetailsNew = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
692 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
693 mUpdatesDetailsNew->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
694 mUpdatesDetailsNew->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
695 mUpdatesDetailsNew->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
696 mUpdatesDetailsNew->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
697 connect(mUpdatesDetailsNew,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
698 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
699 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
700 SLOT(toggleUpdatesNew()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
701 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
702 updatesNewLayout->addWidget(mUpdatesDetailsNew);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
703 updatesNewLayout->addStretch(1);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
704 mUpdatesNew = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
705 connect(mUpdatesNew, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
706 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
707 mUpdatesNew->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
708
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
709 mUpdatesRemoveCertificates =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
710 new QLabel("<h3>" +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
711 tr("Remove revoked certificates (%1/%2)").arg(0).arg(0) +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
712 "</h3>");
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
713 mUpdatesDetailsRemove = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
714 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
715 mUpdatesDetailsRemove->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
716 mUpdatesDetailsRemove->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
717 mUpdatesDetailsRemove->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
718 mUpdatesDetailsRemove->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
719 connect(mUpdatesDetailsRemove,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
720 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
721 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
722 SLOT(toggleUpdatesRemove()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
723 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
724 updatesRemoveLayout->addWidget(mUpdatesDetailsRemove);
746
d73f4e58d117 Add strecht also between remove button
Andre Heinecke <andre.heinecke@intevation.de>
parents: 743
diff changeset
725 updatesRemoveLayout->addStretch(1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
726 mUpdatesRemove = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
727 connect(mUpdatesRemove, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
728 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
729 mUpdatesRemove->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
730
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
731 mUpdatesManualCertificates =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
732 new QLabel("<h3>" +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
733 tr("Manually changed certificates (%1)").arg(0) +
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
734 "</h3>");
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
735 mUpdatesDetailsManual = new QPushButton();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
736 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
737 mUpdatesDetailsManual->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
738 mUpdatesDetailsManual->setStyleSheet("font-size: 10px;");
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
739 mUpdatesDetailsManual->setFixedHeight(22);
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
740 mUpdatesDetailsManual->setIcon(QIcon(":/img/dialog-information_16px.png"));
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
741 connect(mUpdatesDetailsManual,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
742 SIGNAL(clicked()),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
743 this,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
744 SLOT(toggleUpdatesManual()));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
745 mUpdatesDetailsManual->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
746 mUpdatesManualCertificates->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
747 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
748 updatesManualLayout->addWidget(mUpdatesDetailsManual);
747
b959304d6ecf Also space away the manual details button
Andre Heinecke <andre.heinecke@intevation.de>
parents: 746
diff changeset
749 updatesManualLayout->addStretch(1);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
750 mUpdatesManual = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
751 mUpdatesManual->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
752 connect(mUpdatesManual, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
753 this, SLOT(removeFromManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
754 connect(mUpdatesManual, SIGNAL(certListChanged(int)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
755 this, SLOT(listChanged(int)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
756
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
757 updatesNewLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
758 updatesRemoveLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
759 updatesManualLayout->setAlignment(Qt::AlignTop);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
760 updatesCenterLayout->addLayout(updatesNewLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
761 updatesCenterLayout->addWidget(mUpdatesNew);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
762 updatesCenterLayout->addLayout(updatesRemoveLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
763 updatesCenterLayout->addWidget(mUpdatesRemove);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
764 updatesCenterLayout->addLayout(updatesManualLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
765 updatesCenterLayout->addWidget(mUpdatesManual);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
766
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
767 QWidget *dummyWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
768 dummyWidget->setLayout(updatesCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
769 centralScrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
770 centralScrollArea->setWidget(dummyWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
771 centralScrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
772 centralScrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
773
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
774 updatesMainLayout->addLayout(updatesHeaderLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
775 updatesMainLayout->addWidget(centralScrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
776 updatesCenterLayout->addSpacerItem(new QSpacerItem(0, 0,
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
777 QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
778 theWidget->setLayout(updatesMainLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
779 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
780 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
781
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
782
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
783 QWidget *MainWindow::createInstallWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
784 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
785 QWidget *theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
786 QScrollArea *scrollArea = new QScrollArea;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
787 QVBoxLayout *installPanelLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
788 QVBoxLayout *installHeaderLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
789 QVBoxLayout *installCenterLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
790
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
791 QLabel *installHeaderLabel =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
792 new QLabel("<h2>" + tr("Trusted certificates") + "</h2>");
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
793 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
794 " 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
795 " authenticity, security and actuality of these certificates."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
796 installHeaderText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
797 installHeaderLayout->addWidget(installHeaderLabel);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
798 installHeaderLayout->addWidget(installHeaderText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
799
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
800 QLabel *installCenterText = new QLabel(tr("Please choose the certificates"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
801 " 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
802 " secure communication for email and internet."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
803 installCenterText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
804 installCenterLayout->addWidget(installCenterText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
805
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
806 installPanelLayout->addLayout(installHeaderLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
807 installPanelLayout->addLayout(installCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
808
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
809 mInstallList = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
810 connect(mInstallList, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
811 this, SLOT(toggleInManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
812
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
813 scrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
814 scrollArea->setWidget(mInstallList);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
815 scrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
816
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
817 installPanelLayout->addWidget(scrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
818
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
819 theWidget->setLayout(installPanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
820
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
821 return theWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
822 }
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
823
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
824 QWidget *MainWindow::createRemoveWidget()
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
825 {
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
826 QWidget * theWidget = new QWidget;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
827 QScrollArea *scrollArea = new QScrollArea;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
828 QVBoxLayout *removePanelLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
829 QVBoxLayout *removeHeaderLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
830 QVBoxLayout *removeCenterLayout = new QVBoxLayout;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
831
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
832 QLabel *removeHeaderLabel =
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
833 new QLabel("<h2>" + tr("Revoked certificates") + "</h2>");
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
834 QLabel *removeHeaderText = new QLabel(tr("Certificates can be corrupted"
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
835 " 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
836 " to remove all revoked certificates from your system."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
837 removeHeaderText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
838 removeHeaderLayout->addWidget(removeHeaderLabel);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
839 removeHeaderLayout->addWidget(removeHeaderText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
840
805
e04c57e9bf2e Mainwindow: Typo.
Bernhard Reiter <bernhard@intevation.de>
parents: 802
diff changeset
841 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
842 " revoked by the BSI. Already uninstalled certificates cannot be reinstalled."
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
843 " 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
844 " have revoked certificates installed."));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
845 removeCenterText->setWordWrap(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
846 removeCenterLayout->addWidget(removeCenterText);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
847 mRemoveList = new CertificateListWidget(this);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
848 connect(mRemoveList, SIGNAL(certChanged(bool, const Certificate&)),
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
849 this, SLOT(toggleInManual(bool, const Certificate&)));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
850
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
851 removePanelLayout->addLayout(removeHeaderLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
852 removePanelLayout->addLayout(removeCenterLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
853
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
854 scrollArea->setWidgetResizable(true);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
855 scrollArea->setWidget(mRemoveList);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
856 scrollArea->setFrameShape(QFrame::NoFrame);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
857 removePanelLayout->addWidget(scrollArea);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
858 theWidget->setLayout(removePanelLayout);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
859
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
860 return theWidget;
739
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
861 }
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
862
5f0fca113ff4 Factor out Info Panel creation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 732
diff changeset
863 void MainWindow::setupGUI()
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
864 {
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
865 // Create a central widget containing the main layout.
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
866 QWidget *base = new QWidget;
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
867
250
1e112cf41e92 Updated the mainwindow layout.
Raimund Renkert <rrenkert@intevation.de>
parents: 249
diff changeset
868 // Layouts and Container
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
869 QVBoxLayout *mainLayout = new QVBoxLayout;
205
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
870 QHBoxLayout *headerLayout = new QHBoxLayout;
a3f542bf38f7 Added header for mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents: 200
diff changeset
871 QVBoxLayout *headerTextLayout = new QVBoxLayout;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
872 QHBoxLayout *centerLayout = new QHBoxLayout;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
873 QVBoxLayout *buttonBarLayout = new QVBoxLayout;
271
1ae15ea73850 Some GUI desing and layout changes.
Raimund Renkert <rrenkert@intevation.de>
parents: 267
diff changeset
874 QHBoxLayout *bottomLayout = new QHBoxLayout;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
875 QHBoxLayout *containerLayout = new QHBoxLayout;
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
876
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
877 // The header (icon, about text)
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
878 QImage *logoImage = new QImage(":/img/logo.png");
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
879 QLabel *logo = new QLabel;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
880 logo->setBackgroundRole(QPalette::Base);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
881 logo->setPixmap(QPixmap::fromImage(*logoImage));
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
882 QLabel *title = new QLabel("<h1>" + QString::fromLatin1(APPNAME) + "</h1>");
689
6df31cb47d54 Updated translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 687
diff changeset
883 QLabel *subTitle = new QLabel(tr("Trust in your digital communication"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
884 headerTextLayout->addWidget(title);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
885 headerTextLayout->addWidget(subTitle);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
886 headerLayout->addWidget(logo);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
887 headerLayout->addLayout(headerTextLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
888 headerLayout->setStretch(0, 0);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
889 headerLayout->setStretch(1, 10);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
890
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
891 /***********************************
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
892 * The Buttonbar on the left side.
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
893 ***********************************/
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
894 mButtonGroup = new QButtonGroup;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
895
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
896 TextOverlayButton *updatesButton = new TextOverlayButton;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
897 updatesButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
932
57371f2e8dae (issue72) Set background image as pixmap in textoverlayicon
Andre Heinecke <andre.heinecke@intevation.de>
parents: 926
diff changeset
898 updatesButton->setBackgroundIcon(":/img/red-circle.png");
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
899 updatesButton->setIcon(QIcon(":/img/view-refresh.png"));
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
900 updatesButton->setIconSize(QSize(48, 48));
713
cdf8a924e480 (UI) Increase apply/quit button height. Updated translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 709
diff changeset
901 updatesButton->setText(tr("Updates"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
902 updatesButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
903 updatesButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
904 updatesButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
905 updatesButton->setChecked(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
906
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
907 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
908 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
909
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
910 QToolButton *allInstallButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
911 allInstallButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
912 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
913 allInstallButton->setIconSize(QSize(48, 48));
659
c7405d526ead (UI) Updated English strings.
Emanuel Schuetze <emanuel@intevation.de>
parents: 657
diff changeset
914 allInstallButton->setText(tr("Trusted\ncertificates"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
915 allInstallButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
916 allInstallButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
917 allInstallButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
918
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
919 QToolButton *allRemoveButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
920 allRemoveButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
673
e8bc1215904e (UI) Changed some icons.
Emanuel Schuetze <emanuel@intevation.de>
parents: 669
diff changeset
921 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
922 allRemoveButton->setIconSize(QSize(48, 48));
661
320a64d58e62 (UI) Updated English strings. Removed Issuer fields.
Emanuel Schuetze <emanuel@intevation.de>
parents: 659
diff changeset
923 allRemoveButton->setText(tr("Revoked\ncertificates"));
663
b00c26fbc695 (UI) linebreak and bigger buttons for German translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 661
diff changeset
924 allRemoveButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
925 allRemoveButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
926 allRemoveButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
927
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
928 QToolButton *infoButton = new QToolButton;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
929 infoButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
930 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
931 infoButton->setIconSize(QSize(48, 48));
659
c7405d526ead (UI) Updated English strings.
Emanuel Schuetze <emanuel@intevation.de>
parents: 657
diff changeset
932 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
933 infoButton->setFixedWidth(120);
732
d39b5b65366e (UI) Updated png icons in correct sizes.
Emanuel Schuetze <emanuel@intevation.de>
parents: 722
diff changeset
934 infoButton->setFixedHeight(90);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
935 infoButton->setCheckable(true);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
936
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
937 mButtonGroup->addButton(updatesButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
938 mButtonGroup->addButton(allInstallButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
939 mButtonGroup->addButton(allRemoveButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
940 mButtonGroup->addButton(infoButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
941 mButtonGroup->setId(updatesButton, 0);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
942 mButtonGroup->setId(allInstallButton, 1);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
943 mButtonGroup->setId(allRemoveButton, 2);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
944 mButtonGroup->setId(infoButton, 3);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
945
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
946 connect(mButtonGroup, SIGNAL(buttonClicked(int)),
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
947 this, SLOT(togglePages(int)));
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
948 buttonBarLayout->addWidget(updatesButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
949 buttonBarLayout->addWidget(allInstallButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
950 buttonBarLayout->addWidget(allRemoveButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
951 buttonBarLayout->insertStretch(3, 10);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
952 buttonBarLayout->addWidget(infoButton);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
953
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
954 /* The main pages.*/
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
955
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
956 /* The updates page. */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
957 mUpdatesWidget = createUpdatesWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
958
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
959 /* Install (trusted certs) Page */
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
960 mInstallWidget = createInstallWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
961
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
962 /**********************************
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
963 * Page for certificates to be removed.
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
964 **********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
965 mRemoveWidget = createRemoveWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
966
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
967 /**********************************
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
968 * The info page.
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
969 **********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
970 mInfoWidget = createInfoWidget();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
971
652
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
972 /********************************
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
973 * The main layout for pages.
f65503c1833b Updated mainwindow layout and removed obsolete code.
Raimund Renkert <rrenkert@intevation.de>
parents: 643
diff changeset
974 ********************************/
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
975 mInstallWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
976 mRemoveWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
977 mInfoWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
978 containerLayout->addWidget(mUpdatesWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
979 containerLayout->addWidget(mInstallWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
980 containerLayout->addWidget(mRemoveWidget);
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
981 containerLayout->addWidget(mInfoWidget);
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
982
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
983 centerLayout->addLayout(buttonBarLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
984 centerLayout->addLayout(containerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
985
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
986 mainLayout->addLayout(headerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
987 mainLayout->addLayout(centerLayout);
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
988 mainLayout->addLayout(bottomLayout);
187
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
989 base->setLayout(mainLayout);
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
990 setCentralWidget(base);
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
991 }
0c06a608e15f Create the mainwindow content.
Raimund Renkert <rrenkert@intevation.de>
parents: 155
diff changeset
992
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
993 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
994 {
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
995 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
996 setChangeCount(mUpdatesRemove->selectedCertCount() +
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
997 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
998
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
999 /* 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
1000 * changes available */
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1001 if (changeCount() && !mUpdatesManual->certificates().size()) {
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1002 mUpdatesTip->setText(
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1003 tr("You should apply the following, recommended changes to your certificate stores."));
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1004 } else if (changeCount()) {
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1005 mUpdatesTip->setText(
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1006 tr("You can apply the following, changes to your certificate stores."));
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1007 } else {
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1008 mUpdatesTip->setText(
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1009 tr("There are currently no changes for your certificate stores."));
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1010 }
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1011
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1012 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
1013 /* No changes */
702
9dea3d895f53 (Issue22) Add a space between button icon and text.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 696
diff changeset
1014 mQuitButton->setText(" " + tr("Quit"));
696
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1015 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
1016 "</h2>");
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1017 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
1018 } else {
702
9dea3d895f53 (Issue22) Add a space between button icon and text.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 696
diff changeset
1019 mQuitButton->setText(" " + tr("Quit without saving"));
713
cdf8a924e480 (UI) Increase apply/quit button height. Updated translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 709
diff changeset
1020 mUpdatesHeader->setText("<h2>" + tr("Changes to certificate stores (%1)")
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1021 .arg(changeCount()) +
696
55f78c4166fb (Issue32) Change Updates to Changes and track changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 694
diff changeset
1022 "</h2>");
718
e7a070e64b80 (Issue26) Make updates tip and install button depend on changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 717
diff changeset
1023 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
1024 }
0fc1a20adaff (Issue 27) Change Quit button text depending on changes or no changes.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 692
diff changeset
1025
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1026 if (mUpdatesManual->certificates().size()) {
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1027 mUpdatesDetailsManual->show();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1028 mUpdatesDetailsManual->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
1029 mUpdatesDetailsManual->setToolTip(tr("Show details"));
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1030 mUpdatesManualCertificates->show();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1031 } else {
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1032 mUpdatesDetailsManual->hide();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1033 mUpdatesManualCertificates->hide();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1034 mUpdatesManual->hide();
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1035 }
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1036
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1037 if (mUpdatesNew->certificates().size()) {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1038 mUpdatesNewCertificates->setText("<h3>" +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1039 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
1040 .arg(mUpdatesNew->selectedCertCount())
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1041 .arg(mUpdatesNew->certificates().size()) +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1042 "</h3>");
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1043 mUpdatesDetailsNew->show();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1044 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
1045 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
1046 mUpdatesNewCertificates->show();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1047 } else {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1048 mUpdatesDetailsNew->hide();
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1049 mUpdatesNew->hide();
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1050 mUpdatesNewCertificates->hide();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1051 }
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1052
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1053 if (mUpdatesRemove->certificates().size()) {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1054 mUpdatesRemoveCertificates->setText("<h3>" +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1055 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
1056 .arg(mUpdatesRemove->selectedCertCount())
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1057 .arg(mUpdatesRemove->certificates().size()) +
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1058 "</h3>");
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1059 mUpdatesRemoveCertificates->show();
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1060 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
1061 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
1062 mUpdatesDetailsRemove->show();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1063 } else {
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1064 mUpdatesRemoveCertificates->hide();
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1065 mUpdatesDetailsRemove->hide();
719
49bf73b5c7de (Issue34) Show / hide details area depending on available changes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 718
diff changeset
1066 mUpdatesRemove->hide();
717
77c9c2dfc8ac (Issue26) Hide update lists if no updates are available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 716
diff changeset
1067 }
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1068 }
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1069
189
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
1070 void MainWindow::loadCertificateList()
5f0d45ca9de4 Show certificates in the list view and details in the textfield.
Raimund Renkert <rrenkert@intevation.de>
parents: 187
diff changeset
1071 {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1072 /* TODO: if nothing is available (neither old nor new) add some progress
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1073 * indication */
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1074 mInstallList->clear();
684
69def231f5ac (issue28) clear manual updates after installation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 673
diff changeset
1075 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
1076 mUpdatesNew->clear();
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1077 mUpdatesRemove->clear();
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1078 QList<Certificate> newInstallCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1079 QList<Certificate> newRemoveCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1080 QList<Certificate> oldInstallCerts;
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1081 QList<Certificate> oldRemoveCerts;
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1082
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1083 if (mListToInstall.getCertificates().isEmpty()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1084 // 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
1085 foreach (const Certificate &cert, mInstalledList.getCertificates()) {
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1086 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
1087 if (cert.isInstallCert()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1088 oldInstallCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1089 mInstallList->addCertificate(cert, state);
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1090 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1091 else {
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1092 oldRemoveCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1093 mRemoveList->addCertificate(cert, state, !state);
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1094 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1095 }
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1096 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1097 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1098 // 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
1099 foreach (const Certificate &cert, mListToInstall.getCertificates()) {
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1100 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
1101 if (cert.isInstallCert()) {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1102 // Certificate with status "install".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1103 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
1104 // 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
1105 oldInstallCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1106 mInstallList->addCertificate(cert, state);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1107 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1108 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1109 // 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
1110 newInstallCerts.append(cert);
687
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 684
diff changeset
1111 mUpdatesNew->addCertificate(cert, state, true,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 684
diff changeset
1112 tr("install"), tr("ignore"));
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1113 }
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1114 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1115 else {
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1116 // Certificate with status "remove".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1117 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
1118 // 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
1119 oldRemoveCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1120 // Is removed, so set editable to false.
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1121 mRemoveList->addCertificate(cert, state, !state);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1122 }
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1123 else {
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1124 // 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
1125 // status "remove".
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1126 newRemoveCerts.append(cert);
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1127 mUpdatesRemove->addCertificate(cert, state);
445
b3721ded6f5b Sort and filter the certificate list, changed certificate item roles.
Raimund Renkert <rrenkert@intevation.de>
parents: 437
diff changeset
1128 }
267
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1129 }
89e8783866f8 Use the certificate item delegate in the mainwind list view.
Raimund Renkert <rrenkert@intevation.de>
parents: 265
diff changeset
1130 }
691
315103410002 (Issue 32) Move updates header text generation out of update avialable block
Andre Heinecke <andre.heinecke@intevation.de>
parents: 690
diff changeset
1131 }
692
3791a277f00b Remove code duplication and calculate headers only in listchanged
Andre Heinecke <andre.heinecke@intevation.de>
parents: 691
diff changeset
1132
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1133 if (mInstalledList.date().isValid()) {
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1134 mLastCertUpdateContents->setText(QLocale::system().toString(mInstalledList.date().toLocalTime(),
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1135 DATETIME_FORMAT));
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1136 mLastCertUpdate->show();
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1137 mLastCertUpdateContents->show();
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1138 }
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1139 mUpdatesManualCertificates->setText("<h3>" +
659
c7405d526ead (UI) Updated English strings.
Emanuel Schuetze <emanuel@intevation.de>
parents: 657
diff changeset
1140 tr("Manually changed certificates (%1)").arg(0) +
628
3a9c0f38bbad Made certificate lists member of mainwindow and added some temporary debug msgs.
Raimund Renkert <rrenkert@intevation.de>
parents: 584
diff changeset
1141 "</h3>");
692
3791a277f00b Remove code duplication and calculate headers only in listchanged
Andre Heinecke <andre.heinecke@intevation.de>
parents: 691
diff changeset
1142 listChanged(0);
271
1ae15ea73850 Some GUI desing and layout changes.
Raimund Renkert <rrenkert@intevation.de>
parents: 267
diff changeset
1143 }
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1144
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1145 void MainWindow::installerError(const QString& errMsg) {
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1146 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
1147 }
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1148
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1149 void MainWindow::installerSuccess() {
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1150 if (mCurState == NewListAvailable ) {
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1151 mCurState = NothingChanged;
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1152 mCurMessage = QString();
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1153 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1154
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1155 QString listFileName = mSettings.value("List/available").toString();
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1156 QDateTime listFileDate = mSettings.value("List/availableDate").toDateTime();
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1157 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
1158 mSettings.remove("List/available");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1159 mSettings.remove("List/availableDate");
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1160
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
1161 /* 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
1162 * 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
1163 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
1164 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
1165 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
1166 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
1167 /* 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
1168 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
1169 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
1170 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1171
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
1172 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
1173 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
1174 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
1175 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
1176 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
1177 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
1178 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1179 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1180 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
1181 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
1182 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
1183 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
1184 }
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1185
9bab4fc3a1fe Delete old lists and rename the currently installed list to list-installed.txt
Andre Heinecke <andre.heinecke@intevation.de>
parents: 845
diff changeset
1186 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
1187 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
1188 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
1189 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
1190 /* 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
1191 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
1192 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
1193 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
1194 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
1195 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
1196 }
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1197 }
997
405c97ca4ab0 Save installation success independet of state.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 996
diff changeset
1198 mListToInstall = CertificateList();
684
69def231f5ac (issue28) clear manual updates after installation.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 673
diff changeset
1199 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
1200 loadCertificateList();
389
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1201 }
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1202
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1203 void MainWindow::installCerts() {
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1204 QStringList choices;
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1205 QStringList unselected;
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1206
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1207 choices << mUpdatesNew->selectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1208 choices << mUpdatesRemove->selectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1209
669
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1210 choices << mUpdatesManual->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1211
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1212 /* 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
1213 choices << mInstallList->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1214 choices << mRemoveList->selectedCertificates();
7147550ee15d Always include previous certificates in choices for the installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 664
diff changeset
1215
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1216 QStringList unselectedManuals = mUpdatesManual->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1217 for(int i = 0; i < unselectedManuals.size(); i++) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1218 if (unselectedManuals.at(i).startsWith("I:")) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1219 QString certLine = unselectedManuals.at(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1220 certLine[0] = 'R';
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1221 choices << certLine;
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1222 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1223 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1224
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1225 unselected << mUpdatesNew->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1226 unselected << mUpdatesRemove->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1227 unselected << mInstallList->unselectedCertificates();
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1228 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
1229
918
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1230 #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
1231 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
1232 QMessageBox::warning(this,
926
ca997bc0f790 (issue63) Updated message box text for normal user.
Emanuel Schuetze <emanuel@intevation.de>
parents: 918
diff changeset
1233 tr("Installation with standard user account"),
1006
6aa115b206df Updated translations.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1003
diff changeset
1234 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
1235 "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
1236 "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
1237 }
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1238 #endif
e5fd2d0cf42f (issue63) Add warning message when installation is not as admin
Andre Heinecke <andre.heinecke@intevation.de>
parents: 904
diff changeset
1239
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1240 QProgressDialog *progress = new QProgressDialog(this);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1241 progress->setWindowModality(Qt::WindowModal);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1242 progress->setLabelText(tr("Installing certificates..."));
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1243 progress->setCancelButton(0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1244 progress->setRange(0,0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1245 progress->setMinimumDuration(0);
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1246 progress->show();
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1247
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1248 CertificateList *instList = mListToInstall.isValid() ?
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1249 &mListToInstall :
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1250 &mInstalledList;
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1251
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1252 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
1253 instList->fileName(),
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1254 choices);
1082
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1255
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1256 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
1257 instList->fileName().toUtf8().constData(),
a12e6172d82c Extend logging to all choices and SW updates.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1081
diff changeset
1258 instList->date().toString().toUtf8().constData());
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1259 /* Clean up object and progress dialog */
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1260 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
1261 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
1262 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
1263 connect(instWrap, SIGNAL(installationSuccessful()),
3be838c3e4d8 Handle installation success. Save / load last installed list.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 375
diff changeset
1264 this, SLOT(installerSuccess()));
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1265 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
1266 this, SLOT(installerError(const QString &)));
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1267 instWrap->start();
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1268
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1269 if (!saveUnselectedCertificates(unselected)) {
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1270 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
1271 }
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1272
365
75f7288ad67b Switch from listupdatedialog to installwrapper. Minor UI improvements
Andre Heinecke <aheinecke@intevation.de>
parents: 274
diff changeset
1273 }
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1274
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1275 void MainWindow::loadUnselectedCertificates()
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1276 {
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1277 mPreviouslyUnselected.clear();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1278 mSettings.beginGroup("unselected");
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1279 QStringList keys = mSettings.allKeys();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1280 foreach (const QString &key, keys) {
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1281 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
1282 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1283 mSettings.endGroup();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1284 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1285
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1286 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
1287 {
479
a8d56a2846a8 Fill the internal list of previously unselcted certificates when saving in settings.
Raimund Renkert <rrenkert@intevation.de>
parents: 461
diff changeset
1288 mPreviouslyUnselected.clear();
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1289 mSettings.beginGroup("unselected");
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1290 mSettings.remove(""); /* Clears old choices */
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1291 for (int i = 0; i < unselected.size(); i++) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1292 QString key = QString::fromLatin1("cert%1").arg(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1293 QString value = unselected.at(i);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1294 mSettings.setValue(key, value);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1295 mPreviouslyUnselected << value;
372
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1296 }
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1297 mSettings.endGroup();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1298 mSettings.sync();
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1299 return mSettings.status() == QSettings::NoError;
6cc124e79066 Add save/load unselected and add role enumerator
Andre Heinecke <andre.heinecke@intevation.de>
parents: 365
diff changeset
1300 }
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1301
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1302 void MainWindow::toggleInManual(bool state, const Certificate &cert)
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1303 {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1304 if (!mUpdatesManual->contains(cert)) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1305 mUpdatesManual->addCertificate(cert, state);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1306 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1307 else {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1308 mUpdatesManual->removeCertificate(cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1309 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1310
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1311 mUpdatesManualCertificates->setText("<h3>" +
661
320a64d58e62 (UI) Updated English strings. Removed Issuer fields.
Emanuel Schuetze <emanuel@intevation.de>
parents: 659
diff changeset
1312 tr("Manually changed certificates (%1)")
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1313 .arg(mUpdatesManual->certificates().size()) +
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1314 "</h3>");
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1315 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1316
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1317 void MainWindow::removeFromManual(bool state, const Certificate &cert)
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1318 {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1319 mUpdatesManual->removeCertificate(cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1320
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1321 mUpdatesManualCertificates->setText("<h3>" +
661
320a64d58e62 (UI) Updated English strings. Removed Issuer fields.
Emanuel Schuetze <emanuel@intevation.de>
parents: 659
diff changeset
1322 tr("Manually changed certificates (%1)")
640
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1323 .arg(mUpdatesManual->certificates().size()) +
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1324 "</h3>");
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1325
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1326 if (cert.isInstallCert()) {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1327 mInstallList->setCertState(state, cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1328 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1329 else {
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1330 mRemoveList->setCertState(state, cert);
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1331 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1332 }
626507197360 Updated mainwindow and handle certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 628
diff changeset
1333
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1334 void MainWindow::closeApp()
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1335 {
782
20ca94680003 Implemented detection of running instance on linux using a lock file.
Sascha Wilde <wilde@intevation.de>
parents: 754
diff changeset
1336 ProcessHelp::cleanUp();
447
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1337 qApp->quit();
b1b14daf2116 Save the select state of certificate items when closing the app.
Raimund Renkert <rrenkert@intevation.de>
parents: 446
diff changeset
1338 }
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1339
609
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1340 void MainWindow::checkAndInstallCerts()
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1341 {
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1342 /* 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
1343 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
1344 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
1345
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1346 if (pids.isEmpty()) {
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1347 installCerts();
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1348 return;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1349 }
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1350
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1351 QStringList pNames;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1352 pNames << "firefox" << "thunderbird";
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1353
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1354 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
1355
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1356 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
1357 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
1358
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1359 waitDialog->exec();
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1360 return;
292c590ba9cb Add warning dialog for running firefox and tunderbird processes
Andre Heinecke <andre.heinecke@intevation.de>
parents: 607
diff changeset
1361 }
654
129e611eaf50 Merge branch trustbridge-refactor
Andre Heinecke <andre.heinecke@intevation.de>
parents: 609 653
diff changeset
1362
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1363 void MainWindow::togglePages(int button)
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1364 {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1365 mUpdatesWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1366 mInstallWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1367 mRemoveWidget->hide();
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1368 mInfoWidget->hide();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1369 switch(button) {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1370 case 0: mUpdatesWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1371 case 1: mInstallWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1372 case 2: mRemoveWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1373 case 3: mInfoWidget->show(); break;
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 740
diff changeset
1374 default: mUpdatesWidget->show(); break;
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1375 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1376 return;
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1377 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1378
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1379 void MainWindow::toggleUpdatesNew() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1380 if (!mUpdatesNew->isVisible()) {
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1381 mUpdatesDetailsNew->setToolTip(tr("Hide details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1382 mUpdatesDetailsNew->setIcon(QIcon(":/img/dialog-information_grey_16px.png"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1383 mUpdatesNew->show();
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1384 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1385 else {
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1386 mUpdatesNew->hide();
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1387 mUpdatesDetailsNew->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1388 mUpdatesDetailsNew->setIcon(QIcon(":/img/dialog-information_16px.png"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1389 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1390 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1391
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1392 void MainWindow::toggleUpdatesRemove() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1393 if (!mUpdatesRemove->isVisible()) {
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1394 mUpdatesDetailsRemove->setToolTip(tr("Hide details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1395 mUpdatesDetailsRemove->setIcon(QIcon(":/img/dialog-information_grey_16px.png"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1396 mUpdatesRemove->show();
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1397 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1398 else {
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1399 mUpdatesRemove->hide();
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1400 mUpdatesDetailsRemove->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1401 mUpdatesDetailsRemove->setIcon(QIcon(":/img/dialog-information_16px.png"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1402 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1403 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1404
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1405 void MainWindow::toggleUpdatesManual() {
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1406 if (!mUpdatesManual->isVisible()) {
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1407 mUpdatesDetailsManual->setToolTip(tr("Hide details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1408 mUpdatesDetailsManual->setIcon(QIcon(":/img/dialog-information_grey_16px.png"));
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1409 mUpdatesManual->show();
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1410 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1411 else {
790
399bc0df073d (issue60) Make windows smaller and change details buttons to icon only
Andre Heinecke <andre.heinecke@intevation.de>
parents: 787
diff changeset
1412 mUpdatesDetailsManual->setToolTip(tr("Show details"));
845
d33834129d2a (issue59) Improve details button.
Emanuel Schuetze <emanuel@intevation.de>
parents: 844
diff changeset
1413 mUpdatesDetailsManual->setIcon(QIcon(":/img/dialog-information_16px.png"));
653
39f03316f675 Change button text when toggling details and select the first list item.
Raimund Renkert <rrenkert@intevation.de>
parents: 652
diff changeset
1414 mUpdatesManual->hide();
584
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1415 }
ebfe1128ee97 Started trustbridge mainwindow refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 563
diff changeset
1416 }
690
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1417
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1418 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
1419 {
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1420 if (getState() == NewListAvailable) {
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1421 /* 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
1422 QMainWindow::closeEvent(event);
965
013ca910589a Open main window in case of error message.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 964
diff changeset
1423 mTrayIcon->show();
690
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1424 return;
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1425 }
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1426 return closeApp();
e4abb41484a0 (issue 27)Only close if no new list is available
Andre Heinecke <andre.heinecke@intevation.de>
parents: 689
diff changeset
1427 }
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1428
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1429 void MainWindow::updateCheckSuccess()
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1430 {
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1431 if (getState() != TransferError) {
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1432 const QDateTime now = QDateTime::currentDateTime();
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1433 mSettings.setValue("lastUpdateCheck", now);
754
27043d74dc90 (Issue25) Align header contents in their own column.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 748
diff changeset
1434 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
1435 mLastUpdateCheckContents->show();
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1436 mLastUpdateCheck->show();
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1437 syslog_info_printf(tr("Sucessfully checked for updates.").toUtf8().constData());
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1438 }
1042
74951e389cb1 (issue103) Only shut down if the mainwidow is not visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1034
diff changeset
1439 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
1440 && !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
1441 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
1442 closeApp();
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1443 } else {
0a4f7235e759 Close the application if nothing new is available and in tray mode.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 961
diff changeset
1444 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
1445 }
708
bd48fae793b6 (Issue25) Log update check success, change header labels.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 703
diff changeset
1446 }
716
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1447
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1448 int MainWindow::changeCount()
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1449 {
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1450 return mChangeCount;
929c3db85eb7 Add central place to obtain current change count.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 714
diff changeset
1451 }
722
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1452
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1453 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
1454 {
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1455 if (mChangeCount != cnt) {
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1456 mChangeCount = cnt;
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1457 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
1458 }
b0929968562a (Issue31) Add textoverlaybutton to show a text in the button.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 719
diff changeset
1459 }
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1460
956
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1461 void MainWindow::showProxySettings()
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1462 {
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1463 ProxySettingsDlg *dlg = new ProxySettingsDlg(this);
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1464 dlg->exec();
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1465 }
879a634d0a40 (issue41) Add proxy support
Andre Heinecke <andre.heinecke@intevation.de>
parents: 940
diff changeset
1466
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1467 void MainWindow::showHelp()
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1468 {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1469 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
1470 if (!inst_dir) {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1471 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
1472 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1473 }
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1474 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
1475 helpPath += HELP_PATH;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1476 QFileInfo fiHelp(helpPath);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1477 qDebug() << "Opening help: " << fiHelp.absoluteFilePath();
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1478 if (!fiHelp.exists()) {
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1479 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
1480 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1481 }
966
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1482 #ifdef Q_OS_WIN
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1483 QDesktopServices::openUrl(QUrl("file:///" + fiHelp.absoluteFilePath()));
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1484 #else
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1485 QDesktopServices::openUrl(QUrl(fiHelp.absoluteFilePath()));
966
9783e32e215f (issue89) Use platform specific help url.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 965
diff changeset
1486 #endif
940
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1487 free (inst_dir);
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1488 return;
7c89c5dc2200 (issue89) Add ui to open help in browser
Andre Heinecke <andre.heinecke@intevation.de>
parents: 932
diff changeset
1489 }
1061
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1490
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1491 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
1492 {
db831a204a6b (issue38) Show error message as messagebox if the window is visible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1056
diff changeset
1493 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
1494 }

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