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 }