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