tpasswordsmodel.h - sailfish-safe - Sailfish frontend for safe(1)
(HTM) git clone git://git.z3bra.org/sailfish-safe.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
tpasswordsmodel.h (2362B)
---
1 /*
2 * Copyright (C) 2018 Daniel Vrátil <dvratil@kde.org>
3 * 2021 Willy Goiffon <contact@z3bra.org>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Library General Public License as
7 * published by the Free Software Foundation; either version 2, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details
14 *
15 * You should have received a copy of the GNU Library General Public
16 * License along with this program; if not, write to the
17 * Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20
21 #ifndef PASSWORDSMODEL_H_
22 #define PASSWORDSMODEL_H_
23
24 #include <QAbstractItemModel>
25 #include <QFileSystemWatcher>
26 #include <QDir>
27
28 class PasswordsModel : public QAbstractItemModel
29 {
30 Q_OBJECT
31
32 class Node;
33 public:
34 enum EntryType {
35 FolderEntry,
36 PasswordEntry
37 };
38 Q_ENUM(EntryType)
39
40 enum Roles {
41 NameRole = Qt::DisplayRole,
42 EntryTypeRole = Qt::UserRole,
43 FullNameRole,
44 PathRole,
45 PasswordRole,
46 HasPasswordRole,
47 };
48
49 explicit PasswordsModel(QObject *parent = nullptr);
50 ~PasswordsModel() override;
51
52 QHash<int, QByteArray> roleNames() const override;
53
54 int rowCount(const QModelIndex & parent) const override;
55 int columnCount(const QModelIndex & parent) const override;
56
57 QModelIndex index(int row, int column, const QModelIndex & parent) const override;
58 QModelIndex parent(const QModelIndex & child) const override;
59
60 QVariant data(const QModelIndex &index, int role) const override;
61
62 Q_INVOKABLE void setPassphrase(const QString &passphrase);
63 Q_INVOKABLE void forgetPassphrase();
64 Q_INVOKABLE void addPassword(const QModelIndex &parent, const QString &name,
65 const QString &password, const QString &extras);
66 private:
67 void populate();
68 void populateDir(const QDir &dir, Node *parent);
69
70 Node *node(const QModelIndex &index) const;
71
72 QFileSystemWatcher mWatcher;
73 QDir mPassStore;
74
75 Node *mRoot = nullptr;
76 };
77
78 #endif