File indexing completed on 2025-03-09 04:54:34
0001 /* 0002 SPDX-FileCopyrightText: 2010 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com 0003 SPDX-FileCopyrightText: 2010 Leo Franchi <lfranchi@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <MimeTreeParser/BodyPartFormatterFactory> 0011 #include <MimeTreeParser/ObjectTreeSource> 0012 #include <gpgme++/key.h> 0013 0014 #include <MessageViewer/AttachmentStrategy> 0015 #include <MessageViewer/ObjectTreeEmptySource> 0016 0017 namespace MessageViewer 0018 { 0019 namespace Test 0020 { 0021 /** 0022 * setup a environment variables for tests: 0023 * * set LC_ALL to en_US.UTF-8 0024 */ 0025 void setupEnv(); 0026 0027 // We can't use EmptySource, since we need to control some elements of the source for tests to also test 0028 // loadExternal and htmlMail. 0029 class ObjectTreeSource : public MessageViewer::EmptySource 0030 { 0031 public: 0032 ObjectTreeSource(HtmlWriter *writer, MessageViewer::CSSHelperBase *cssHelper) 0033 : mWriter(writer) 0034 , mCSSHelper(cssHelper) 0035 , mAttachmentStrategy(QStringLiteral("smart")) 0036 , mHtmlLoadExternal(false) 0037 , mDecryptMessage(false) 0038 , mShowSignatureDetails(false) 0039 , mShowEncryptionDetails(false) 0040 , mShowExpandQuotesMark(false) 0041 , mPreferredMode(MimeTreeParser::Util::Html) 0042 , mQuoteLevel(1) 0043 { 0044 } 0045 0046 HtmlWriter *htmlWriter() const override 0047 { 0048 return mWriter; 0049 } 0050 0051 CSSHelperBase *cssHelper() const override 0052 { 0053 return mCSSHelper; 0054 } 0055 0056 bool htmlLoadExternal() const override 0057 { 0058 return mHtmlLoadExternal; 0059 } 0060 0061 void setHtmlLoadExternal(bool loadExternal) 0062 { 0063 mHtmlLoadExternal = loadExternal; 0064 } 0065 0066 void setAttachmentStrategy(const QString &strategy) 0067 { 0068 mAttachmentStrategy = strategy; 0069 } 0070 0071 const AttachmentStrategy *attachmentStrategy() const override 0072 { 0073 return AttachmentStrategy::create(mAttachmentStrategy); 0074 } 0075 0076 bool autoImportKeys() const override 0077 { 0078 return true; 0079 } 0080 0081 bool showEmoticons() const override 0082 { 0083 return false; 0084 } 0085 0086 void setShowExpandQuotesMark(bool b) 0087 { 0088 mShowExpandQuotesMark = b; 0089 } 0090 0091 bool showExpandQuotesMark() const override 0092 { 0093 return mShowExpandQuotesMark; 0094 } 0095 0096 const MimeTreeParser::BodyPartFormatterFactory *bodyPartFormatterFactory() override 0097 { 0098 return &mBodyPartFormatterFactory; 0099 } 0100 0101 bool decryptMessage() const override 0102 { 0103 return mDecryptMessage; 0104 } 0105 0106 void setAllowDecryption(bool allowDecryption) 0107 { 0108 mDecryptMessage = allowDecryption; 0109 } 0110 0111 void setShowSignatureDetails(bool showSignatureDetails) 0112 { 0113 mShowSignatureDetails = showSignatureDetails; 0114 } 0115 0116 bool showSignatureDetails() const override 0117 { 0118 return mShowSignatureDetails; 0119 } 0120 0121 void setShowEncryptionDetails(bool showEncryptionDetails) 0122 { 0123 mShowEncryptionDetails = showEncryptionDetails; 0124 } 0125 0126 bool showEncryptionDetails() const override 0127 { 0128 return mShowEncryptionDetails; 0129 } 0130 0131 void setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList<MimeTreeParser::Util::HtmlMode> &availableModes) override 0132 { 0133 Q_UNUSED(mode) 0134 Q_UNUSED(availableModes) 0135 } 0136 0137 MimeTreeParser::Util::HtmlMode preferredMode() const override 0138 { 0139 return mPreferredMode; 0140 } 0141 0142 void setPreferredMode(MimeTreeParser::Util::HtmlMode mode) 0143 { 0144 mPreferredMode = mode; 0145 } 0146 0147 int levelQuote() const override 0148 { 0149 return mQuoteLevel; 0150 } 0151 0152 void setLevelQuote(int level) 0153 { 0154 mQuoteLevel = level; 0155 } 0156 0157 QByteArray overrideCodecName() const override 0158 { 0159 return {}; 0160 } 0161 0162 QString createMessageHeader(KMime::Message *message) override 0163 { 0164 Q_UNUSED(message) 0165 return {}; // do nothing 0166 } 0167 0168 private: 0169 HtmlWriter *mWriter; 0170 MessageViewer::CSSHelperBase *mCSSHelper; 0171 QString mAttachmentStrategy; 0172 MimeTreeParser::BodyPartFormatterFactory mBodyPartFormatterFactory; 0173 bool mHtmlLoadExternal; 0174 bool mDecryptMessage; 0175 bool mShowSignatureDetails; 0176 bool mShowEncryptionDetails; 0177 bool mShowExpandQuotesMark; 0178 MimeTreeParser::Util::HtmlMode mPreferredMode; 0179 int mQuoteLevel; 0180 }; 0181 } 0182 }