diff options
Diffstat (limited to 'src/mainwindow.h')
-rw-r--r-- | src/mainwindow.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/mainwindow.h b/src/mainwindow.h new file mode 100644 index 00000000..f09d4e98 --- /dev/null +++ b/src/mainwindow.h @@ -0,0 +1,150 @@ +#ifndef MAINWINDOW_H_ +#define MAINWINDOW_H_ + +#include "datahelpers.h" +#include "enums.h" +#include "imitatepass.h" +#include "pass.h" +#include "realpass.h" +#include "storemodel.h" +#include "trayicon.h" +#include <QFileSystemModel> +#include <QMainWindow> +#include <QProcess> +#include <QQueue> +#include <QTimer> +#include <QTreeView> + +#if SINGLE_APP +#include "singleapplication.h" +#else +#define SingleApplication QApplication +#endif + +namespace Ui { +class MainWindow; +} + +/*! + \class MainWindow + \brief The MainWindow class does way too much, not only is it a switchboard, + configuration handler and more, it's also the process-manager. + + This class could really do with an overhaul. + */ +class MainWindow : public QMainWindow { + Q_OBJECT + + enum actionType { GPG, GIT, EDIT, REMOVE, GPG_INTERNAL, PWGEN }; + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + bool checkConfig(); + void setApp(SingleApplication *app); + void setText(QString); + QStringList getSecretKeys(); + void generateKeyPair(QString, QDialog *); + void userDialog(QString = ""); + void config(); + void executePassGitInit(); + + /** + * @brief MainWindow::pwdConfig instance of passwordConfiguration. + * @sa MainWindow::passwordConfiguration + */ + passwordConfiguration pwdConfig; + +protected: + void closeEvent(QCloseEvent *event); + void keyPressEvent(QKeyEvent *event); + void changeEvent(QEvent *event); + bool eventFilter(QObject *obj, QEvent *event); + +public slots: + void deselect(); + +private slots: + void on_updateButton_clicked(bool block = false); + void on_pushButton_clicked(); + void on_treeView_clicked(const QModelIndex &index); + void on_treeView_doubleClicked(const QModelIndex &index); + void on_configButton_clicked(); + void readyRead(const QString &, const QString &); + void processFinished(int, const QString &, const QString &); + void processError(QProcess::ProcessError); + void clearClipboard(); + void clearPanel(bool notify); + void clearPanel(); + void on_lineEdit_textChanged(const QString &arg1); + void on_lineEdit_returnPressed(); + void on_addButton_clicked(); + void on_deleteButton_clicked(); + void on_editButton_clicked(); + void on_usersButton_clicked(); + void messageAvailable(QString message); + void on_profileBox_currentIndexChanged(QString); + void showContextMenu(const QPoint &pos); + void showBrowserContextMenu(const QPoint &pos); + void addFolder(); + void editPassword(); + void focusInput(); + void copyTextToClipboard(const QString &text); + + void executeWrapperStarted(); + void showStatusMessage(QString msg, int timeout); + void startReencryptPath(); + void endReencryptPath(); + void critical(QString, QString); + void setLastDecrypt(QString); + void passShowHandler(const QString &); + + void processErrorExit(const QString &); + +private: + QAction *actionAddPassword; + QAction *actionAddFolder; + + QApplication *QtPass; + QScopedPointer<Ui::MainWindow> ui; + QFileSystemModel model; + StoreModel proxyModel; + QScopedPointer<QItemSelectionModel> selectionModel; + QTreeView *treeView; + QProcess fusedav; + QString clippedText; + QTimer clearPanelTimer; + QTimer clearClipboardTimer; + actionType currentAction; + QString lastDecrypt; + bool freshStart; + QDialog *keygen; + QString currentDir; + bool startupPhase; + TrayIcon *tray; + Pass *pass; + RealPass rpass; + ImitatePass ipass; + + void updateText(); + void enableUiElements(bool state); + void selectFirstFile(); + QModelIndex firstFile(QModelIndex parentIndex); + QString getDir(const QModelIndex &, bool); + QString getFile(const QModelIndex &, bool); + void setPassword(QString, bool, bool); + QList<UserInfo> listKeys(QString keystring = "", bool secret = false); + + void mountWebDav(); + void updateProfileBox(); + void initTrayIcon(); + void destroyTrayIcon(); + void clearTemplateWidgets(); + void reencryptPath(QString dir); + void addToGridLayout(int position, const QString &field, + const QString &value); + void DisplayInTextBrowser(QString toShow, QString prefix = QString(), + QString postfix = QString()); +}; + +#endif // MAINWINDOW_H_ |