File indexing completed on 2025-03-09 04:54:35

0001 /*
0002    SPDX-FileCopyrightText: 2016 Sandro Knauß <sknauss@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include "messagepartrendererbase.h"
0009 
0010 #include <MimeTreeParser/MessagePart>
0011 
0012 namespace MessageViewer
0013 {
0014 class AttachmentStrategy;
0015 class MessagePartRendererFactory;
0016 class CSSHelperBase;
0017 class HtmlWriter;
0018 
0019 class DefaultRendererPrivate : public RenderContext
0020 {
0021     using RenderContext::renderWithFactory;
0022 
0023 public:
0024     DefaultRendererPrivate(CSSHelperBase *cssHelper, const MessagePartRendererFactory *rendererFactory);
0025     ~DefaultRendererPrivate() override;
0026 
0027     CSSHelperBase *cssHelper() const override;
0028 
0029     MimeTreeParser::Interface::ObjectTreeSource *source() const;
0030 
0031     void renderSubParts(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) override;
0032 
0033     void render(const MimeTreeParser::MessagePartList::Ptr &mp, HtmlWriter *htmlWriter);
0034     void render(const MimeTreeParser::MimeMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0035     void render(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0036     void render(const MimeTreeParser::HtmlMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0037     void renderEncrypted(const MimeTreeParser::EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0038     void renderSigned(const MimeTreeParser::SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0039     void render(const MimeTreeParser::SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0040     void render(const MimeTreeParser::EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0041     void render(const MimeTreeParser::AlternativeMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0042     void render(const MimeTreeParser::CertMessagePart::Ptr &mp, HtmlWriter *htmlWriter);
0043     [[nodiscard]] bool renderWithFactory(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) override;
0044     void renderFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter);
0045 
0046     [[nodiscard]] bool isHiddenHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override;
0047     [[nodiscard]] MimeTreeParser::IconType displayHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override;
0048     [[nodiscard]] bool showEmoticons() const override;
0049     [[nodiscard]] bool isPrinting() const override;
0050     [[nodiscard]] bool htmlLoadExternal() const override;
0051     [[nodiscard]] bool showExpandQuotesMark() const override;
0052     [[nodiscard]] bool showOnlyOneMimePart() const override;
0053     [[nodiscard]] bool showSignatureDetails() const override;
0054     [[nodiscard]] bool showEncryptionDetails() const override;
0055     [[nodiscard]] int levelQuote() const override;
0056     MimeTreeParser::MessagePart::Ptr mMsgPart;
0057     CSSHelperBase *mCSSHelper = nullptr;
0058     const MessagePartRendererFactory *mRendererFactory = nullptr;
0059     const AttachmentStrategy *mAttachmentStrategy = nullptr;
0060     std::function<QString(KMime::Message *)> mCreateMessageHeader;
0061 
0062     int mLevelQuote = 1;
0063 
0064     bool mShowEmoticons = false;
0065     bool mIsPrinting = false;
0066     bool mHtmlLoadExternal = false;
0067     bool mShowExpandQuotesMark = false;
0068     bool mShowOnlyOneMimePart = false;
0069     bool mShowSignatureDetails = false;
0070     bool mShowEncryptionDetails = false;
0071 };
0072 }