diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -set(PIM_VERSION "5.12.45") +set(PIM_VERSION "5.12.46") if (POLICY CMP0053) cmake_policy(SET CMP0053 NEW) diff --git a/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp b/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp +++ b/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp @@ -44,13 +44,15 @@ QCOMPARE(msg->contents().size(), 0); BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); emptySource.setPreferredMode(MimeTreeParser::Util::MultipartPlain); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); @@ -68,12 +70,14 @@ { BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); @@ -83,13 +87,15 @@ } { BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); emptySource.setHtmlLoadExternal(true); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.htmlContent().contains(QLatin1String("SOME HTML text."))); @@ -104,13 +110,15 @@ QCOMPARE(msg->contents().size(), 2); { BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); emptySource.setPreferredMode(MimeTreeParser::Util::MultipartPlain); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.htmlContent().isEmpty()); @@ -121,13 +129,15 @@ { BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); emptySource.setPreferredMode(MimeTreeParser::Util::MultipartHtml); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.plainTextContent().contains(QLatin1String( @@ -141,13 +151,15 @@ QCOMPARE(msg->contents().size(), 1); { BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); ObjectTreeParser otp(&emptySource); emptySource.setPreferredMode(MimeTreeParser::Util::MultipartPlain); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); @@ -164,6 +176,9 @@ emptySource.setPreferredMode(MimeTreeParser::Util::MultipartHtml); otp.parseObjectTree(msg.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); diff --git a/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp b/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp +++ b/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp @@ -325,11 +325,12 @@ connect(&nodeHelper, &MimeTreeParser::NodeHelper::update, &loop, &QEventLoop::quit); otp.setAllowAsync(bAsync); - fileWriter.begin(); - fileWriter.write(cssHelper.htmlHead(false)); otp.parseObjectTree(msg.data()); + fileWriter.begin(); + fileWriter.write(cssHelper.htmlHead(false)); + testSource.render(otp.parsedPart(), false); fileWriter.write(QStringLiteral("")); fileWriter.end(); @@ -342,11 +343,11 @@ MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper); otp.setAllowAsync(bAsync); - fileWriter.begin(); - fileWriter.write(cssHelper.htmlHead(false)); - otp.parseObjectTree(msg.data()); + fileWriter.begin(); + fileWriter.write(cssHelper.htmlHead(false)); + testSource.render(otp.parsedPart(), false); fileWriter.write(QStringLiteral("")); fileWriter.end(); diff --git a/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp b/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp +++ b/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp @@ -74,13 +74,14 @@ MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper); - fileWriter.begin(); - fileWriter.write(cssHelper.htmlHead(false)); QVERIFY(msg->contents().size() > content); otp.parseObjectTree(msg->contents().at(content), showOnlyMimePart); + fileWriter.begin(); + fileWriter.write(cssHelper.htmlHead(false)); + testSource.render(otp.parsedPart(), showOnlyMimePart); fileWriter.write(QStringLiteral("")); fileWriter.end(); @@ -121,13 +122,13 @@ MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper); - fileWriter.begin(); - fileWriter.write(cssHelper.htmlHead(false)); - QVERIFY(msg->contents().size() > content); otp.parseObjectTree(msg->contents().at(content), showOnlyMimePart); + fileWriter.begin(); + fileWriter.write(cssHelper.htmlHead(false)); + testSource.render(otp.parsedPart(), showOnlyMimePart); fileWriter.write(QStringLiteral("")); fileWriter.end(); diff --git a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp +++ b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp @@ -61,12 +61,14 @@ MimeTreeParser::NodeHelper nodeHelper; BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); emptySource.setAllowDecryption(false); MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); otp.parseObjectTree(originalMessage.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); if (decryptMessage) { @@ -86,11 +88,13 @@ MimeTreeParser::NodeHelper nodeHelper; BufferedHtmlWriter testWriter; - testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); otp.parseObjectTree(originalMessage.data()); + + testWriter.begin(); + emptySource.render(otp.parsedPart(), false); testWriter.end(); QCOMPARE(otp.plainTextContent().toLatin1().data(), ""); 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 @@ -48,7 +48,7 @@ bool autoImportKeys() const override; const MimeTreeParser::BodyPartFormatterFactory *bodyPartFormatterFactory() override; - void render(const MimeTreeParser::MessagePartPtr &msgPart, bool showOnlyOneMimePart) override; + void render(const MimeTreeParser::MessagePartPtr &msgPart, bool showOnlyOneMimePart); virtual const AttachmentStrategy *attachmentStrategy() const; virtual HtmlWriter *htmlWriter() const; diff --git a/messageviewer/src/viewer/viewer_p.cpp b/messageviewer/src/viewer/viewer_p.cpp --- a/messageviewer/src/viewer/viewer_p.cpp +++ b/messageviewer/src/viewer/viewer_p.cpp @@ -925,9 +925,6 @@ } KMime::Message *message = dynamic_cast(content); - if (message) { - htmlWriter()->write(writeMessageHeader(message, hasVCard ? vCardContent : nullptr, true)); - } // Pass control to the OTP now, which does the real work mNodeHelper->setNodeUnprocessed(mMessage.data(), true); @@ -937,6 +934,12 @@ otp.setAllowAsync(!mPrinting); otp.parseObjectTree(content, mMessage.data() != content /* parse/show only single node */); + if (message) { + htmlWriter()->write(writeMessageHeader(message, hasVCard ? vCardContent : nullptr, true)); + } + + otpSource.render(otp.parsedPart(), mMessage.data() != content /* parse/show only single node */); + // TODO: Setting the signature state to nodehelper is not enough, it should actually // be added to the store, so that the message list correctly displays the signature state // of messages that were parsed at least once 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 @@ -66,9 +66,6 @@ virtual bool autoImportKeys() const = 0; virtual const BodyPartFormatterFactory *bodyPartFormatterFactory() = 0; - - virtual void render(const MessagePartPtr &msgPart, bool showOnlyOneMimePart) = 0; - private: Q_DISABLE_COPY(ObjectTreeSource) }; diff --git a/mimetreeparser/src/objecttreeparser.cpp b/mimetreeparser/src/objecttreeparser.cpp --- a/mimetreeparser/src/objecttreeparser.cpp +++ b/mimetreeparser/src/objecttreeparser.cpp @@ -154,8 +154,6 @@ } setPlainTextContent(mp->text()); } - - mSource->render(mParsedPart, parseOnlySingleNode); } } diff --git a/mimetreeparser/src/simpleobjecttreesource.h b/mimetreeparser/src/simpleobjecttreesource.h --- a/mimetreeparser/src/simpleobjecttreesource.h +++ b/mimetreeparser/src/simpleobjecttreesource.h @@ -50,7 +50,6 @@ const QTextCodec *overrideCodec() override; - void render(const MessagePartPtr &msgPart, bool showOnlyOneMimePart) override; private: std::unique_ptr d; diff --git a/mimetreeparser/src/simpleobjecttreesource.cpp b/mimetreeparser/src/simpleobjecttreesource.cpp --- a/mimetreeparser/src/simpleobjecttreesource.cpp +++ b/mimetreeparser/src/simpleobjecttreesource.cpp @@ -81,9 +81,3 @@ Q_UNUSED(mode); Q_UNUSED(availableModes); } - -void SimpleObjectTreeSource::render(const MessagePart::Ptr &msgPart, bool showOnlyOneMimePart) -{ - Q_UNUSED(msgPart); - Q_UNUSED(showOnlyOneMimePart); -}