summaryrefslogtreecommitdiffstats
path: root/mainwindow.h
blob: e8960ef932ee999f3515ed5c088b578bfed84ae6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTreeView>
#include <QFileSystemModel>
#include <QProcess>
#include <QQueue>
#include <QSettings>
#include "storemodel.h"
#include "trayicon.h"
#if SINGLE_APP
#include "singleapplication.h"
#else
#define SingleApplication QApplication
#endif

namespace Ui {
class MainWindow;
}

struct execQueueItem {
    QString app;
    QString args;
    QString input;
};

struct UserInfo;

class MainWindow : public QMainWindow
{
    Q_OBJECT

enum actionType { GPG, GIT, EDIT, DELETE, GPG_INTERNAL };

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void setPassExecutable(QString);
    void setGitExecutable(QString);
    void setGpgExecutable(QString);
    QString getGpgExecutable();
    bool checkConfig();
    void setApp(SingleApplication* app);
    void setText(QString);
    QStringList getSecretKeys();
    void genKey(QString, QDialog *);
    void userDialog(QString = "");

protected:
    void closeEvent(QCloseEvent *event);

private slots:
    void on_updateButton_clicked();
    void on_pushButton_clicked();
    void on_treeView_clicked(const QModelIndex &index);
    void on_configButton_clicked();
    void readyRead(bool finished);
    void processFinished(int, QProcess::ExitStatus);
    void processError(QProcess::ProcessError);
    void clearClipboard();
    void on_lineEdit_textChanged(const QString &arg1);
    void on_lineEdit_returnPressed();
    void on_clearButton_clicked();
    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);

private:
    QApplication *QtPass;
    QScopedPointer<QSettings> settings;
    QScopedPointer<Ui::MainWindow> ui;
    QFileSystemModel model;
    StoreModel proxyModel;
    QScopedPointer<QItemSelectionModel> selectionModel;
    QScopedPointer<QProcess> process;
    bool usePass;
    bool useClipboard;
    bool useAutoclear;
    bool hidePassword;
    bool hideContent;
    bool addGPGId;
    int autoclearSeconds;
    QString passStore;
    QString passExecutable;
    QString gitExecutable;
    QString gpgExecutable;
    QString gpgHome;
    bool useWebDav;
    QString webDavUrl;
    QString webDavUser;
    QString webDavPassword;
    QProcess fusedav;
    QString clippedPass;
    actionType currentAction;
    QString lastDecrypt;
    bool wrapperRunning;
    QStringList env;
    QQueue<execQueueItem> *execQueue;
    bool firstRun;
    QDialog *keygen = 0;
    QString currentDir;
    QHash<QString, QString> profiles;
    QString profile;
    bool startupPhase;
    trayIcon *tray = NULL;
    bool useTrayIcon;
    bool hideOnClose;
    void updateText();
    void executePass(QString, QString = QString());
    void executeWrapper(QString, QString, QString = QString());
    void config();
    void enableUiElements(bool);
    void selectFirstFile();
    QModelIndex firstFile(QModelIndex parentIndex);
    QString getDir(const QModelIndex &, bool);
    QString getFile(const QModelIndex &, bool);
    void setPassword(QString, bool);
    QSettings &getSettings();
    QList<UserInfo> listKeys(QString keystring = "", bool secret = false);
    QStringList getRecipientList(QString for_file);
    QString getRecipientString(QString for_file, QString separator = " ", int *count = NULL);
    void mountWebDav();
    void updateEnv();
    void updateProfileBox();
    void initTrayIcon();
    void destroyTrayIcon();
};

#endif // MAINWINDOW_H