Mercurial > trustbridge
view ui/mainwindow.h @ 657:37ffc8ddb698
Fix merge errors
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 25 Jun 2014 15:31:08 +0200 |
parents | 129e611eaf50 |
children | a2e94e88d304 |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #ifndef MAINWINDOW_H #define MAINWINDOW_H /** * @file mainwindow.h * @brief Main UI controller */ #include <QSystemTrayIcon> #include <QMainWindow> #include <QSettings> #include <QMenuBar> #include <QListWidget> #include <QTextEdit> #include <QPushButton> #include <QLabel> #include <QCheckBox> #include <QScrollArea> #include "downloader.h" #include "certificatelist.h" #include "certificatelistwidget.h" class QMenu; class QAction; class QTimer; class MainWindow : public QMainWindow { Q_OBJECT public: /**@brief create a new Main Window object * * In tray mode this window is not shown and only shows * notification messages if there is some actionable state * reached. If tray mode is true it also exits after * an update check. * * @param[in] trayMode set the tray mode * */ MainWindow(bool trayMode); void setMessage(const QString message) {mCurMessage = message;} QString getMessage() {return mCurMessage;} enum CurrentState { BeforeDownload, NewListAvailable, NewSoftwareAvailable, DownloadingSW, TransferError, NothingChanged }; CurrentState getState() {return mCurState;} void setState(CurrentState state) {mCurState = state;} private slots: void showMessage(); void iconActivated(QSystemTrayIcon::ActivationReason reason); void checkUpdates(bool downloadSW = false); void handleNewList(const QString& fileName, const QDateTime& modDate); void handleNewSW(const QString& fileName, const QDateTime& modDate); void downloaderError(const QString &message, SSLConnection::ErrorCode error); /** @brief Trigger the appropiate action depending on the state */ void messageClicked(); void installerError(const QString& errMsg); void installerSuccess(); void installCerts(); void toggleInManual(bool state, const Certificate &cert); void removeFromManual(bool state, const Certificate &cert); void togglePages(int button); void toggleUpdatesNew(); void toggleUpdatesRemove(); void toggleUpdatesManual(); void listChanged(int selected); /** @brief check for running software that needs to close before installing * * This function calls installCerts if no software is running otherwise * it informs the user about the software that still needs to be closed. */ void checkAndInstallCerts(); /** @brief get the last modified date on the download server for * the current version. * * After the initial installation this function can be used to * determine the DateTime that corresponds to the currently installed * version on the download server. * * Calls setLastModifiedSWDate on success. Otherwise downloaderError * is triggered. */ void getLastModForCurrentVersion(); /** @brief set the last modified software date/time * * The last modifiedSWDate is the corresponding last modified * timestamp from the download server vor the currently installed version. */ void setLastModifiedSWDate(const QDateTime &date); /** @brief saves the currently unselected certificates * * This creates / updates a qsettings section that * [unselected] that contains the certificates that * were unselected previously. * * Unselected are certificates that are unchecked * in the certListWidget * * Returns false on error. */ bool saveUnselectedCertificates(QStringList unselected); /** @brief loads previously unselected certificates from settings * * The certificates are strored in the list mPreviouslyUnselected. * * On error mPreviouslyUnselected is empty after this call. */ void loadUnselectedCertificates(); protected slots: /** @brief cleanup and close the main window * * Perform a clean exit (saving state etc.) and close * the application */ virtual void closeApp(); /* @brief Execute the file fileName to install the softwareupdate. * * Once the installer process is started this function terminates * the application. */ void installNewSW(const QString& fileName, const QDateTime& modDate); private: /** @brief check the integrity of available certificate lists. * * Note: Do not use this as a local trust check as this only works on * FileNames where the underlying files can change. This * is just meant to check if the downloaded data was somehow * removed or corrupted. It also initializes mListToInstall * and mInstalledList. */ void verifyListData(); /** @brief check the integrity of available software updates. * * Note: Do not use this as a local trust check as this only works on * FileNames where the underlying files can change. This * is just meant to check if the downloaded data was somehow * removed or corrupted. */ void verifySWData(); void createTrayIcon(); void createActions(); void createContent(); void loadCertificateList(); /* Are we running in tray mode ?*/ const bool mTrayMode; /* The message currently shown at intervals */ QString mCurMessage; QString mInstalledSWVersion; QString mInstalledListVersion; QSettings mSettings; QSystemTrayIcon *mTrayIcon; QTimer *mMessageTimer; QMenu *mTrayMenu; QAction *mCheckUpdates; QAction *mQuitAction; CurrentState mCurState; QMenuBar *mMenuBar; /* The current list that should be installed */ CertificateList mListToInstall; /* The last list that we installed */ CertificateList mInstalledList; /* Previously made "unselect" choices in the form of * base64lines with I:/R: prefix */ QStringList mPreviouslyUnselected; QLabel *mCurrentListDate; QLabel *mNewListDate; QButtonGroup *mButtonGroup; QScrollArea *mUpdatesPanel; QWidget *mUpdatesWidget; QScrollArea *mInstallPanel; QScrollArea *mRemovePanel; QScrollArea *mInfoPanel; QLabel *mUpdatesHeader; QLabel *mLastCertUpdate; QLabel *mLastSWupdate; QLabel *mUpdatesNewCertificates; QLabel *mUpdatesRemoveCertificates; QLabel *mUpdatesManualCertificates; CertificateListWidget *mUpdatesNew; CertificateListWidget *mUpdatesRemove; CertificateListWidget *mUpdatesManual; CertificateListWidget *mInstallList; CertificateListWidget *mRemoveList; QPushButton *mUpdatesDetailsNew; QPushButton *mUpdatesDetailsRemove; QPushButton *mUpdatesDetailsManual; }; #endif // MAINWINDOW_H