aheinecke@404: /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
aheinecke@404:  * Software engineering by Intevation GmbH
aheinecke@404:  *
aheinecke@404:  * This file is Free Software under the GNU GPL (v>=2)
aheinecke@404:  * and comes with ABSOLUTELY NO WARRANTY!
aheinecke@404:  * See LICENSE.txt for details.
aheinecke@404:  */
rrenkert@333: #ifndef ADMINSTRATORWINDOW_H
rrenkert@333: #define ADMINSTRATORWINDOW_H
rrenkert@333: 
rrenkert@333: /**
rrenkert@333:  * @file administratorwindow.h
rrenkert@333:  * @brief Administrator UI controller
rrenkert@333:  */
rrenkert@333: 
rrenkert@333: #include <QMainWindow>
rrenkert@333: #include <QSettings>
rrenkert@333: #include <QMenuBar>
rrenkert@335: #include <QTableView>
rrenkert@333: #include <QPushButton>
rrenkert@333: 
rrenkert@343: #include "certificatelist.h"
rrenkert@343: #include "certificatetablemodel.h"
rrenkert@343: 
rrenkert@333: class QMenu;
rrenkert@333: class QAction;
rrenkert@333: 
rrenkert@333: class AdministratorWindow : public QMainWindow
rrenkert@333: {
rrenkert@333:     Q_OBJECT
rrenkert@333: 
rrenkert@333: public:
rrenkert@333:     AdministratorWindow();
rrenkert@333: 
aheinecke@463:     /** @brief obtain a reference to the certificates currently in the model
aheinecke@463:      * @returns the currently shown certificates
aheinecke@453:      */
aheinecke@463:     const QList<Certificate>& certificates() const {
aheinecke@463:         return certificateModel->certificates();
aheinecke@463:     }
aheinecke@453: 
aheinecke@453:     /** @brief get the settings for this application
aheinecke@453:      * @returns a reference the applications settings object
aheinecke@453:      */
aheinecke@453:     QSettings* settings() {return &mSettings;}
aheinecke@453: 
rrenkert@562:     /** @brief log the diff between the initial certificate list and the list
rrenkert@562:      * saved as current.
rrenkert@562:      *
rrenkert@562:      * @param currentCerts  Path to the current certificate list file.
rrenkert@562:      */
rrenkert@562:     void logChanges(const QString &currentCerts);
rrenkert@562: 
rrenkert@565:     /** @brief get the currently changed certificates.
rrenkert@565:      * @return a list of certificates.
rrenkert@565:      */
rrenkert@565:     QList<Certificate> currentChanges();
rrenkert@565: 
rrenkert@333: private slots:
rrenkert@333:     void createInstaller();
rrenkert@333:     void showAbout();
rrenkert@344:     void loadCertificateFile();
rrenkert@368:     void saveCertificateFile();
rrenkert@358:     void addCertificates();
rrenkert@376:     void removeCertificates();
rrenkert@376:     void clickedCertificate(const QModelIndex&);
rrenkert@333: 
rrenkert@333: private:
rrenkert@333:     void createActions();
rrenkert@333:     void createMenuBar();
rrenkert@333:     void createContent();
rrenkert@344:     void loadCertificateTable();
rrenkert@358:     void addToCertificateTable(const QList<Certificate> &certs);
rrenkert@562:     QByteArray createLogEntries(const CertificateList &list);
rrenkert@333: 
aheinecke@453:     QSettings mSettings;
rrenkert@333: 
rrenkert@333:     QMenuBar *menuBar;
rrenkert@333: 
rrenkert@335:     QTableView *certificateView;
aheinecke@453:     CertificateList mCertList;
rrenkert@343:     CertificateTabelModel *certificateModel;
rrenkert@333:     QPushButton *saveButton;
rrenkert@333:     QPushButton *loadButton;
rrenkert@333:     QPushButton *addButton;
rrenkert@333:     QPushButton *removeButton;
rrenkert@333: };
rrenkert@333: 
rrenkert@333: #endif // ADMINSTRATORWINDOW_H