diff --git a/messageviewer/src/messagepartthemes/default/defaultrenderer.h b/messageviewer/src/messagepartthemes/default/defaultrenderer.h --- a/messageviewer/src/messagepartthemes/default/defaultrenderer.h +++ b/messageviewer/src/messagepartthemes/default/defaultrenderer.h @@ -22,6 +22,12 @@ #include +#include + +namespace KMime { +class Message; +} + namespace MimeTreeParser { class MessagePart; typedef QSharedPointer MessagePartPtr; @@ -47,6 +53,7 @@ void setShowSignatureDetails(bool showSignatureDetails); void setLevelQuote(int levelQuote); void setHtmlLoadExternal(bool htmlLoadExternal); + void setCreateMessageHeader(std::function); void render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *writer); private: DefaultRendererPrivate *d; diff --git a/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp b/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp --- a/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp +++ b/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp @@ -380,7 +380,7 @@ block.setProperty("link", mp->nodeHelper()->asHREF(mp->message().data(), QStringLiteral("body"))); - c.insert(QStringLiteral("msgHeader"), mp->source()->createMessageHeader(mp->message().data())); + c.insert(QStringLiteral("msgHeader"), mCreateMessageHeader(mp->message().data())); c.insert(QStringLiteral("content"), QVariant::fromValue([this, mp, htmlWriter](Grantlee::OutputStream *) { renderSubParts(mp, htmlWriter); })); @@ -1117,6 +1117,11 @@ d->mHtmlLoadExternal = htmlLoadExternal; } +void DefaultRenderer::setCreateMessageHeader(std::function createMessageHeader) +{ + d->mCreateMessageHeader = createMessageHeader; +} + void DefaultRenderer::render(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) { d->mMsgPart = msgPart; diff --git a/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h b/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h --- a/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h +++ b/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h @@ -70,6 +70,8 @@ CSSHelperBase *mCSSHelper = nullptr; const MessagePartRendererFactory *mRendererFactory = nullptr; const AttachmentStrategy *mAttachmentStrategy = nullptr; + std::function mCreateMessageHeader; + int mLevelQuote = 1; bool mShowEmoticons = false; diff --git a/messageviewer/src/viewer/objecttreeemptysource.h b/messageviewer/src/viewer/objecttreeemptysource.h --- a/messageviewer/src/viewer/objecttreeemptysource.h +++ b/messageviewer/src/viewer/objecttreeemptysource.h @@ -41,7 +41,7 @@ MimeTreeParser::Util::HtmlMode preferredMode() const override; void setAllowDecryption(bool allowDecryption); const QTextCodec *overrideCodec() override; - QString createMessageHeader(KMime::Message *message) override; + virtual QString createMessageHeader(KMime::Message *message); bool autoImportKeys() const override; const MimeTreeParser::BodyPartFormatterFactory *bodyPartFormatterFactory() override; diff --git a/messageviewer/src/viewer/objecttreeemptysource.cpp b/messageviewer/src/viewer/objecttreeemptysource.cpp --- a/messageviewer/src/viewer/objecttreeemptysource.cpp +++ b/messageviewer/src/viewer/objecttreeemptysource.cpp @@ -151,6 +151,7 @@ auto renderer = DefaultRenderer(cssHelper()); renderer.setAttachmentStrategy(attachmentStrategy()); + renderer.setCreateMessageHeader(std::bind(&EmptySource::createMessageHeader, this, std::placeholders::_1)); renderer.setHtmlLoadExternal(htmlLoadExternal()); renderer.setIsPrinting(isPrinting()); renderer.setLevelQuote(levelQuote()); diff --git a/mimetreeparser/autotests/setupenv.h b/mimetreeparser/autotests/setupenv.h --- a/mimetreeparser/autotests/setupenv.h +++ b/mimetreeparser/autotests/setupenv.h @@ -88,12 +88,6 @@ return nullptr; } - QString createMessageHeader(KMime::Message *message) override - { - Q_UNUSED(message); - return QString(); //do nothing - } - void render(const MessagePart::Ptr &msgPart, bool showOnlyOneMimePart) override { Q_UNUSED(msgPart); diff --git a/mimetreeparser/src/interfaces/objecttreesource.h b/mimetreeparser/src/interfaces/objecttreesource.h --- a/mimetreeparser/src/interfaces/objecttreesource.h +++ b/mimetreeparser/src/interfaces/objecttreesource.h @@ -62,8 +62,6 @@ /** The override codec that should be used for the mail */ virtual const QTextCodec *overrideCodec() = 0; - virtual QString createMessageHeader(KMime::Message *message) = 0; - /** should keys be imported automatically **/ virtual bool autoImportKeys() const = 0;