File indexing completed on 2024-06-23 05:18:29
0001 /* 0002 SPDX-FileCopyrightText: 2021 Sandro Knauß <sknauss@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "draftstatus.h" 0008 0009 #include <MessageCore/AutocryptUtils> 0010 0011 using namespace MessageComposer; 0012 0013 void MessageComposer::removeDraftCryptoHeaders(const KMime::Message::Ptr &msg) 0014 { 0015 DraftEncryptionState(msg).removeState(); 0016 DraftSignatureState(msg).removeState(); 0017 DraftCryptoMessageFormatState(msg).removeState(); 0018 } 0019 0020 DraftEncryptionState::DraftEncryptionState(const KMime::Message::Ptr &msg) 0021 : mMsg(msg) 0022 { 0023 } 0024 0025 void DraftEncryptionState::setState(bool encrypt) 0026 { 0027 auto hdr = new KMime::Headers::Generic("X-KMail-EncryptActionEnabled"); 0028 hdr->fromUnicodeString(encrypt ? QStringLiteral("true") : QStringLiteral("false"), "utf-8"); 0029 mMsg->setHeader(hdr); 0030 } 0031 0032 void DraftEncryptionState::removeState() 0033 { 0034 mMsg->removeHeader("X-KMail-EncryptActionEnabled"); 0035 } 0036 0037 bool DraftEncryptionState::encryptionState() const 0038 { 0039 if (isDefined()) { 0040 auto hdr = mMsg->headerByType("X-KMail-EncryptActionEnabled"); 0041 return hdr->as7BitString(false).contains("true"); 0042 } 0043 0044 return false; 0045 } 0046 0047 bool DraftEncryptionState::isDefined() const 0048 { 0049 return mMsg->hasHeader("X-KMail-EncryptActionEnabled"); 0050 } 0051 0052 DraftSignatureState::DraftSignatureState(const KMime::Message::Ptr &msg) 0053 : mMsg(msg) 0054 { 0055 } 0056 0057 void DraftSignatureState::setState(bool sign) 0058 { 0059 auto hdr = new KMime::Headers::Generic("X-KMail-SignatureActionEnabled"); 0060 hdr->fromUnicodeString(sign ? QStringLiteral("true") : QStringLiteral("false"), "utf-8"); 0061 mMsg->setHeader(hdr); 0062 } 0063 0064 void DraftSignatureState::removeState() 0065 { 0066 mMsg->removeHeader("X-KMail-SignatureActionEnabled"); 0067 } 0068 0069 bool DraftSignatureState::signState() const 0070 { 0071 if (isDefined()) { 0072 auto hdr = mMsg->headerByType("X-KMail-SignatureActionEnabled"); 0073 return hdr->as7BitString(false).contains("true"); 0074 } 0075 0076 return false; 0077 } 0078 0079 bool DraftSignatureState::isDefined() const 0080 { 0081 return mMsg->hasHeader("X-KMail-SignatureActionEnabled"); 0082 } 0083 0084 DraftCryptoMessageFormatState::DraftCryptoMessageFormatState(const KMime::Message::Ptr &msg) 0085 : mMsg(msg) 0086 { 0087 } 0088 0089 void DraftCryptoMessageFormatState::setState(Kleo::CryptoMessageFormat cryptoMessageFormat) 0090 { 0091 auto hdr = new KMime::Headers::Generic("X-KMail-CryptoMessageFormat"); 0092 hdr->fromUnicodeString(QString::number(cryptoMessageFormat), "utf-8"); 0093 mMsg->setHeader(hdr); 0094 } 0095 0096 void DraftCryptoMessageFormatState::removeState() 0097 { 0098 mMsg->removeHeader("X-KMail-CryptoMessageFormat"); 0099 } 0100 0101 Kleo::CryptoMessageFormat DraftCryptoMessageFormatState::cryptoMessageFormatState() const 0102 { 0103 if (isDefined()) { 0104 auto hdr = mMsg->headerByType("X-KMail-CryptoMessageFormat"); 0105 return static_cast<Kleo::CryptoMessageFormat>(hdr->asUnicodeString().toInt()); 0106 } 0107 0108 return Kleo::AutoFormat; 0109 } 0110 0111 bool DraftCryptoMessageFormatState::isDefined() const 0112 { 0113 return mMsg->hasHeader("X-KMail-CryptoMessageFormat"); 0114 }