File indexing completed on 2024-10-06 08:17:34
0001 /* 0002 SPDX-FileCopyrightText: 2008, 2009, 2010, 2011, 2012 Rolf Eike Beer <kde@opensource.sf-tec.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 #ifndef KGPGITEMMODEL_H 0007 #define KGPGITEMMODEL_H 0008 0009 #include "core/kgpgkey.h" 0010 #include "core/KGpgKeyNode.h" 0011 #include "core/KGpgNode.h" 0012 0013 #include <QAbstractItemModel> 0014 #include <QString> 0015 #include <QStringList> 0016 0017 #define KEYCOLUMN_NAME 0 0018 #define KEYCOLUMN_EMAIL 1 0019 #define KEYCOLUMN_TRUST 2 0020 #define KEYCOLUMN_EXPIR 3 0021 #define KEYCOLUMN_SIZE 4 0022 #define KEYCOLUMN_CREAT 5 0023 #define KEYCOLUMN_ID 6 0024 0025 class KGpgExpandableNode; 0026 class KGpgGroupNode; 0027 class KGpgGroupMemberNode; 0028 class KGpgRootNode; 0029 class QColor; 0030 0031 class KGpgItemModel : public QAbstractItemModel 0032 { 0033 Q_OBJECT 0034 0035 private: 0036 KGpgRootNode *m_root; 0037 QString m_default; 0038 0039 public: 0040 0041 explicit KGpgItemModel(QObject *parent = nullptr); 0042 ~KGpgItemModel() override; 0043 0044 QModelIndex index(int row, int column, 0045 const QModelIndex &parent = QModelIndex()) const override; 0046 QModelIndex parent(const QModelIndex &child) const override; 0047 0048 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0049 int columnCount(const QModelIndex & /*parent = QModelIndex()*/ ) const override 0050 { return 7; } 0051 0052 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0053 bool hasChildren(const QModelIndex &parent) const override; 0054 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0055 0056 KGpgNode *nodeForIndex(const QModelIndex &index) const; 0057 KGpgKeyNode *findKeyNode(const QString &id) const; 0058 0059 KGpgRootNode *getRootNode() const; 0060 QString statusCountMessage() const; 0061 static QString statusCountMessageString(const unsigned int keys, const unsigned int groups); 0062 bool isDefaultKey(const KGpgNode *node) const; 0063 0064 public Q_SLOTS: 0065 KGpgGroupNode *addGroup(const QString &name, const KGpgKeyNode::List &keys); 0066 void delNode(KGpgNode *node); 0067 void changeGroup(KGpgGroupNode *node, const KGpgNode::List &keys); 0068 void deleteFromGroup(KGpgGroupNode *group, KGpgGroupMemberNode *member); 0069 void setDefaultKey(KGpgKeyNode *def); 0070 QModelIndex nodeIndex(KGpgNode *node, const int column = 0); 0071 inline void refreshKey(const QString &id) 0072 { refreshKeys(QStringList(id)); } 0073 inline void refreshKey(KGpgKeyNode *nd) 0074 { refreshKeys(KGpgKeyNode::List() << nd); } 0075 void refreshKeys(const QStringList &ids); 0076 void refreshKeys(KGpgKeyNode::List keys); 0077 void refreshAllKeys(); 0078 void refreshGroups(); 0079 void invalidateIndexes(KGpgNode *nd); 0080 void refreshTrust(const KgpgCore::KgpgKeyTrust trust, const QColor &color); 0081 0082 protected: 0083 int rowForNode(KGpgNode *node) const; 0084 void updateNodeTrustColor(KGpgExpandableNode *node, const KgpgCore::KgpgKeyTrust trust, const QColor &color); 0085 }; 0086 0087 #endif