diff options
Diffstat (limited to 'framework/src/domain/mime/partmodel.cpp')
-rw-r--r-- | framework/src/domain/mime/partmodel.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/framework/src/domain/mime/partmodel.cpp b/framework/src/domain/mime/partmodel.cpp index 331ef379..bf11b52d 100644 --- a/framework/src/domain/mime/partmodel.cpp +++ b/framework/src/domain/mime/partmodel.cpp | |||
@@ -26,6 +26,9 @@ | |||
26 | #include <QMimeDatabase> | 26 | #include <QMimeDatabase> |
27 | #include <QTextDocument> | 27 | #include <QTextDocument> |
28 | 28 | ||
29 | #include <gpgme++/key.h> | ||
30 | #include <gpgme.h> | ||
31 | |||
29 | class PartModelPrivate | 32 | class PartModelPrivate |
30 | { | 33 | { |
31 | public: | 34 | public: |
@@ -90,6 +93,7 @@ QHash<int, QByteArray> PartModel::roleNames() const | |||
90 | roles[ErrorString] = "errorString"; | 93 | roles[ErrorString] = "errorString"; |
91 | roles[IsErrorRole] = "error"; | 94 | roles[IsErrorRole] = "error"; |
92 | roles[SenderRole] = "sender"; | 95 | roles[SenderRole] = "sender"; |
96 | roles[SignatureDetails] = "signatureDetails"; | ||
93 | roles[DateRole] = "date"; | 97 | roles[DateRole] = "date"; |
94 | return roles; | 98 | return roles; |
95 | } | 99 | } |
@@ -232,6 +236,30 @@ QVariant PartModel::data(const QModelIndex &index, int role) const | |||
232 | //No info | 236 | //No info |
233 | return "unknown"; | 237 | return "unknown"; |
234 | } | 238 | } |
239 | case SignatureDetails: { | ||
240 | auto signatureInfo = new SignatureInfo; | ||
241 | |||
242 | const auto signatureParts = messagePart->signatures(); | ||
243 | if (signatureParts.size() > 1) { | ||
244 | qWarning() << "Can't deal with more than one signature"; | ||
245 | } | ||
246 | for (const auto &p : signatureParts) { | ||
247 | signatureInfo->mKeyId = p->partMetaData()->keyId; | ||
248 | signatureInfo->mKeyMissing = p->partMetaData()->sigSummary & GpgME::Signature::KeyMissing; | ||
249 | signatureInfo->mKeyExpired = p->partMetaData()->sigSummary & GpgME::Signature::KeyExpired; | ||
250 | signatureInfo->mKeyRevoked = p->partMetaData()->sigSummary & GpgME::Signature::KeyRevoked; | ||
251 | signatureInfo->mSigExpired = p->partMetaData()->sigSummary & GpgME::Signature::SigExpired; | ||
252 | signatureInfo->mCrlMissing = p->partMetaData()->sigSummary & GpgME::Signature::CrlMissing; | ||
253 | signatureInfo->mCrlTooOld = p->partMetaData()->sigSummary & GpgME::Signature::CrlTooOld; | ||
254 | signatureInfo->mSigner = p->partMetaData()->signer; | ||
255 | signatureInfo->mSignClass = p->partMetaData()->signClass; | ||
256 | signatureInfo->mSignerMailAddresses = p->partMetaData()->signerMailAddresses; | ||
257 | signatureInfo->mSignatureIsGood = p->partMetaData()->isGoodSignature; | ||
258 | signatureInfo->mKeyIsTrusted = p->partMetaData()->keyTrust & GpgME::Signature::Full || | ||
259 | p->partMetaData()->keyTrust & GpgME::Signature::Ultimate; | ||
260 | } | ||
261 | return QVariant::fromValue(signatureInfo); | ||
262 | } | ||
235 | case ErrorType: | 263 | case ErrorType: |
236 | return messagePart->error(); | 264 | return messagePart->error(); |
237 | case ErrorString: { | 265 | case ErrorString: { |