File indexing completed on 2024-05-12 05:28:17
0001 // SPDX-FileCopyrightText: 2016 Christian Mollekopf <mollekopf@kolabsys.com> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include <QObject> 0007 0008 #include <QAbstractItemModel> 0009 #include <QModelIndex> 0010 0011 #include <memory> 0012 0013 namespace MimeTreeParser 0014 { 0015 class ObjectTreeParser; 0016 } 0017 class PartModelPrivate; 0018 0019 class PartModel : public QAbstractItemModel 0020 { 0021 Q_OBJECT 0022 Q_PROPERTY(bool showHtml READ showHtml WRITE setShowHtml NOTIFY showHtmlChanged) 0023 Q_PROPERTY(bool containsHtml READ containsHtml NOTIFY containsHtmlChanged) 0024 Q_PROPERTY(bool trimMail READ trimMail WRITE setTrimMail NOTIFY trimMailChanged) 0025 Q_PROPERTY(bool isTrimmed READ isTrimmed NOTIFY trimMailChanged) 0026 public: 0027 PartModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser); 0028 ~PartModel(); 0029 0030 static std::pair<QString, bool> trim(const QString &text); 0031 0032 public: 0033 enum Roles { 0034 TypeRole = Qt::UserRole + 1, 0035 ContentRole, 0036 IsEmbeddedRole, 0037 IsEncryptedRole, 0038 IsSignedRole, 0039 IsErrorRole, 0040 SecurityLevelRole, 0041 EncryptionSecurityLevelRole, 0042 SignatureSecurityLevelRole, 0043 SignatureDetails, 0044 EncryptionDetails, 0045 ErrorType, 0046 ErrorString, 0047 SenderRole, 0048 DateRole 0049 }; 0050 0051 QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE; 0052 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; 0053 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; 0054 QModelIndex parent(const QModelIndex &index) const Q_DECL_OVERRIDE; 0055 int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; 0056 int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; 0057 0058 void setShowHtml(bool html); 0059 bool showHtml() const; 0060 bool containsHtml() const; 0061 0062 void setTrimMail(bool trim); 0063 bool trimMail() const; 0064 bool isTrimmed() const; 0065 0066 Q_SIGNALS: 0067 void showHtmlChanged(); 0068 void trimMailChanged(); 0069 void containsHtmlChanged(); 0070 0071 private: 0072 std::unique_ptr<PartModelPrivate> d; 0073 }; 0074 0075 class SignatureInfo : public QObject 0076 { 0077 Q_OBJECT 0078 Q_PROPERTY(QByteArray keyId MEMBER keyId CONSTANT) 0079 Q_PROPERTY(bool keyMissing MEMBER keyMissing CONSTANT) 0080 Q_PROPERTY(bool keyRevoked MEMBER keyRevoked CONSTANT) 0081 Q_PROPERTY(bool keyExpired MEMBER keyExpired CONSTANT) 0082 Q_PROPERTY(bool sigExpired MEMBER sigExpired CONSTANT) 0083 Q_PROPERTY(bool crlMissing MEMBER crlMissing CONSTANT) 0084 Q_PROPERTY(bool crlTooOld MEMBER crlTooOld CONSTANT) 0085 0086 Q_PROPERTY(QString signer MEMBER signer CONSTANT) 0087 Q_PROPERTY(QStringList signerMailAddresses MEMBER signerMailAddresses CONSTANT) 0088 Q_PROPERTY(bool signatureIsGood MEMBER signatureIsGood CONSTANT) 0089 Q_PROPERTY(bool keyIsTrusted MEMBER keyIsTrusted CONSTANT) 0090 0091 public: 0092 bool keyRevoked = false; 0093 bool keyExpired = false; 0094 bool sigExpired = false; 0095 bool keyMissing = false; 0096 bool crlMissing = false; 0097 bool crlTooOld = false; 0098 QByteArray keyId; 0099 0100 QString signer; 0101 QStringList signerMailAddresses; 0102 bool signatureIsGood = false; 0103 bool keyIsTrusted = false; 0104 };