view ui/mainwindow.h @ 370:8b9ba61add57

Also add the testkey for the release build mode
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 15 Apr 2014 10:49:41 +0200
parents 75f7288ad67b
children 6cc124e79066
line wrap: on
line source
#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 "downloader.h"
#include "certificatelist.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,
        TransferError
    };

    CurrentState getState() {return mCurState;}
    void setState(CurrentState state) {mCurState = state;}

private slots:
    void showMessage();
    void iconActivated(QSystemTrayIcon::ActivationReason reason);
    void checkUpdates();
    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 showSettings();
    void showStatus();
    void showHelp();
    void showAbout();
    void showDetails(QListWidgetItem*);
    void resizeButtons();
    void installerError(const QString& errMsg);
    void installCerts();

private:
    /** @brief check the integrity of available files.
     *
     * Do not use this as a 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 verifyAvailableData();
    void createTrayIcon();
    void createActions();
    void createMenuBar();
    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;

    CertificateList mListToInstall;

    QListWidget *mCertListWidget;
    QTextEdit *certificateDetails;
    QPushButton *installButton;
    QPushButton *quitButton;
};

#endif // MAINWINDOW_H

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