Mercurial > trustbridge
annotate ui/administratorwindow.h @ 1315:12ed0b72e9f5
(issue162) Change DO_RELEASE_BUILD to IS_TAG_BUILD to determine g_debug initializatation
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 13 Oct 2014 16:19:28 +0200 |
parents | 2a1aa9df8f11 |
children | ff9cd05e861e |
rev | line source |
---|---|
404 | 1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU GPL (v>=2) | |
5 * and comes with ABSOLUTELY NO WARRANTY! | |
6 * See LICENSE.txt for details. | |
7 */ | |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 #ifndef ADMINSTRATORWINDOW_H |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 #define ADMINSTRATORWINDOW_H |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 /** |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 * @file administratorwindow.h |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 * @brief Administrator UI controller |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 */ |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 #include <QMainWindow> |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 #include <QSettings> |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 #include <QMenuBar> |
335
811eec4e1b99
Use a table view with the new certificate table model in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
333
diff
changeset
|
19 #include <QTableView> |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 #include <QPushButton> |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
343
e3d6de930c90
Updated the table ui in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
335
diff
changeset
|
22 #include "certificatelist.h" |
e3d6de930c90
Updated the table ui in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
335
diff
changeset
|
23 #include "certificatetablemodel.h" |
e3d6de930c90
Updated the table ui in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
335
diff
changeset
|
24 |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 class QMenu; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 class QAction; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
28 /** @brief Main Window of the Administrator application |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
29 * |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
30 * The controlling class of the Admin application. Holds |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
31 * the certificate data and the settings of the application. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
32 */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 class AdministratorWindow : public QMainWindow |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 { |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 Q_OBJECT |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 public: |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 AdministratorWindow(); |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 |
463
5200b8e9b2ae
Rename tablemodel certificates and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
453
diff
changeset
|
40 /** @brief obtain a reference to the certificates currently in the model |
5200b8e9b2ae
Rename tablemodel certificates and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
453
diff
changeset
|
41 * @returns the currently shown certificates |
453
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
42 */ |
463
5200b8e9b2ae
Rename tablemodel certificates and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
453
diff
changeset
|
43 const QList<Certificate>& certificates() const { |
5200b8e9b2ae
Rename tablemodel certificates and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
453
diff
changeset
|
44 return certificateModel->certificates(); |
5200b8e9b2ae
Rename tablemodel certificates and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
453
diff
changeset
|
45 } |
453
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
46 |
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
47 /** @brief get the settings for this application |
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
48 * @returns a reference the applications settings object |
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
49 */ |
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
50 QSettings* settings() {return &mSettings;} |
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
51 |
562
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
52 /** @brief log the diff between the initial certificate list and the list |
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
53 * saved as current. |
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
54 * |
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
55 * @param currentCerts Path to the current certificate list file. |
1053
78798d3af8f0
Fixed doxygen build warnings.
Emanuel Schuetze <emanuel@intevation.de>
parents:
1001
diff
changeset
|
56 * @param keyFingerprint The fingerprint of the signing key used. |
562
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
57 */ |
679
75cd2fbf9ac6
(Issue 9) Log key's sha256 fingerprint
Andre Heinecke <andre.heinecke@intevation.de>
parents:
565
diff
changeset
|
58 void logChanges(const QString ¤tCerts, const QString &keyFingerprint); |
562
ccdc4c6b97ce
Log diff between initial certificate list and saved list to a logfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
463
diff
changeset
|
59 |
565
9db7034b2d6c
Added method to get the current certificate list changes.
Raimund Renkert <rrenkert@intevation.de>
parents:
562
diff
changeset
|
60 /** @brief get the currently changed certificates. |
9db7034b2d6c
Added method to get the current certificate list changes.
Raimund Renkert <rrenkert@intevation.de>
parents:
562
diff
changeset
|
61 * @return a list of certificates. |
9db7034b2d6c
Added method to get the current certificate list changes.
Raimund Renkert <rrenkert@intevation.de>
parents:
562
diff
changeset
|
62 */ |
9db7034b2d6c
Added method to get the current certificate list changes.
Raimund Renkert <rrenkert@intevation.de>
parents:
562
diff
changeset
|
63 QList<Certificate> currentChanges(); |
9db7034b2d6c
Added method to get the current certificate list changes.
Raimund Renkert <rrenkert@intevation.de>
parents:
562
diff
changeset
|
64 |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 private slots: |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
66 /** @brief Create the SW Packages for the target platforms. */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 void createInstaller(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
68 /** @brief Shows the About dialog. */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 void showAbout(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
70 /** @brief Opens the Help in a browser window. */ |
1001
0b7bb4f68f5a
(issue89) Add Help button
Andre Heinecke <andre.heinecke@intevation.de>
parents:
679
diff
changeset
|
71 void showHelp(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
72 /** @brief Presents a Dialog to load a certificate list and handles the loading. */ |
344
4454a4dc73a3
Added file dialog to load a certificate list from file.
Raimund Renkert <rrenkert@intevation.de>
parents:
343
diff
changeset
|
73 void loadCertificateFile(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
74 /** @brief Save the current selection of certificates as a certificate list. */ |
368
f9c98f9e9f76
Show the new dialog on save button click.
Raimund Renkert <rrenkert@intevation.de>
parents:
358
diff
changeset
|
75 void saveCertificateFile(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
76 /** @brief Add certificates to the certificate table. */ |
358
9ba7b4b4c1de
Implemented the load from certificate file and set the edit state of certificates.
Raimund Renkert <rrenkert@intevation.de>
parents:
344
diff
changeset
|
77 void addCertificates(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
78 /** @brief Remove certificates from the current certificate table. */ |
376
9731d28b95af
Implemented 'remove certificate' in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
368
diff
changeset
|
79 void removeCertificates(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
80 /** @brief Changes the state of a certificate when it was clicked. */ |
376
9731d28b95af
Implemented 'remove certificate' in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
368
diff
changeset
|
81 void clickedCertificate(const QModelIndex&); |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 private: |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
84 /** @brief Setup UI Actions */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 void createActions(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
86 /** @brief Setup UI Menu Bar */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 void createMenuBar(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
88 /** @brief Create the UI elements of the Window */ |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 void createContent(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
90 /** @brief Load a certificate list into the table view */ |
344
4454a4dc73a3
Added file dialog to load a certificate list from file.
Raimund Renkert <rrenkert@intevation.de>
parents:
343
diff
changeset
|
91 void loadCertificateTable(); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
92 /** @brief Add a list of certificates to the table view |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
93 * |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
94 * @param[in] certs The certificates to add. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
95 */ |
358
9ba7b4b4c1de
Implemented the load from certificate file and set the edit state of certificates.
Raimund Renkert <rrenkert@intevation.de>
parents:
344
diff
changeset
|
96 void addToCertificateTable(const QList<Certificate> &certs); |
1255
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
97 /** @brief write a log file for the list creation. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
98 * |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
99 * This creates a log entry containing all pertinent information of a |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
100 * certificate list creation. It records changes |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
101 * made to the certificate list and notes down the current time and |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
102 * the key used to sign the certificate list. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
103 * |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
104 * @param [in] list the certificate list that is about to be created and should |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
105 * be logged. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
106 * @param [in] keyFingerprint the encoded fingerprint of the signing key used. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
107 * |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
108 * @returns A byte array containing the log information in latin1 encoding. |
2a1aa9df8f11
(issue133) Improve API documentation
Andre Heinecke <andre.heinecke@intevation.de>
parents:
1053
diff
changeset
|
109 */ |
679
75cd2fbf9ac6
(Issue 9) Log key's sha256 fingerprint
Andre Heinecke <andre.heinecke@intevation.de>
parents:
565
diff
changeset
|
110 QByteArray createLogEntries(const CertificateList &list, const QString &keyFingerprint); |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 |
453
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
112 QSettings mSettings; |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
113 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 QMenuBar *menuBar; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 |
335
811eec4e1b99
Use a table view with the new certificate table model in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
333
diff
changeset
|
116 QTableView *certificateView; |
453
6dec8101793c
Rename settings and certlist and add accessors
Andre Heinecke <aheinecke@intevation.de>
parents:
427
diff
changeset
|
117 CertificateList mCertList; |
343
e3d6de930c90
Updated the table ui in administrator app.
Raimund Renkert <rrenkert@intevation.de>
parents:
335
diff
changeset
|
118 CertificateTabelModel *certificateModel; |
333
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 QPushButton *saveButton; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 QPushButton *loadButton; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 QPushButton *addButton; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 QPushButton *removeButton; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 }; |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
124 |
de94c4ec22b1
Renamed management to administrator application.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
125 #endif // ADMINSTRATORWINDOW_H |