diff --git a/messageviewer/src/messagepartthemes.qrc b/messageviewer/src/messagepartthemes.qrc --- a/messageviewer/src/messagepartthemes.qrc +++ b/messageviewer/src/messagepartthemes.qrc @@ -1,6 +1,7 @@ messagepartthemes/default/templates/asiconpart.html + messagepartthemes/default/templates/alternativepart.html messagepartthemes/default/templates/attachmentblock.html messagepartthemes/default/templates/certmessagepart.html messagepartthemes/default/templates/encapsulatedrfc822messagepart.html 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 @@ -1197,14 +1197,29 @@ aBlock = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), mp->attachmentNode())); } - MimeMessagePart::Ptr part(mp->mTextPart); - if (mp->viewHtml() && mp->mHTMLPart) { - part = mp->mHTMLPart; - } else if (mp->text().trimmed().isEmpty()) { - part = mp->mHTMLPart; + Grantlee::Template t = getGrantleeTemplate(QStringLiteral(":/alternativepart.html")); + Grantlee::Context c; + QObject block; + + c.insert(QStringLiteral("block"), &block); + block.setProperty("viewHtml", mp->viewHtml()); + block.setProperty("textEmpty", mp->text().trimmed().isEmpty()); + if (mp->isAttachment()) { + block.setProperty("index", mp->attachmentNode()->index().toString()); + } else { + block.setProperty("index", QStringLiteral("0")); + } + + if (mp->mHTMLPart) { + c.insert(QStringLiteral("htmlBlock"), render(mp->mHTMLPart)); } - htmlWriter->queue(render(part)); + if (mp->mTextPart) { + c.insert(QStringLiteral("textBlock"), render(mp->mTextPart)); + } + + const auto html = t->render(&c); + htmlWriter->queue(html); } return htmlWriter->html; } diff --git a/messageviewer/src/messagepartthemes/default/templates/alternativepart.html b/messageviewer/src/messagepartthemes/default/templates/alternativepart.html new file mode 100644 --- /dev/null +++ b/messageviewer/src/messagepartthemes/default/templates/alternativepart.html @@ -0,0 +1,50 @@ +
+{% if textBlock and htmlBlock %} +
+

{% i18n "This is a alternative Mail and you can switch beetween HTML and Text view." %}

+

{% i18n "Switch to text view." %}

+
+{% endif %} + + +
+ \ No newline at end of file diff --git a/messageviewer/src/viewer/csshelperbase.cpp b/messageviewer/src/viewer/csshelperbase.cpp --- a/messageviewer/src/viewer/csshelperbase.cpp +++ b/messageviewer/src/viewer/csshelperbase.cpp @@ -539,6 +539,20 @@ "}\n\n") .arg(cHtmlWarning.name()) + + QStringLiteral("div.info {\n" + " border: 2px solid %1;\n" + " border-radius: 5px;\n" + " color: %2;\n" + " background-color: %1;\n" + "}\n\n") + .arg(pal.color(QPalette::Highlight).name(), + pal.color(QPalette::HighlightedText).name()) + + + QStringLiteral("div.switch {\n" + " color: black;\n" + " background-color: #e0e0e0;\n" + "}\n\n") + + QStringLiteral("div.header {\n" "%1" "}\n\n" @@ -603,7 +617,15 @@ .arg(pointsToPixel(this->mPaintDevice, mBodyFont.pointSize())); return - QStringLiteral("div.header {\n" + QStringLiteral("a.button {\n" + " border: solid 2px black ! important;\n" + " border-radius: 5px;\n" + " padding: .5em;\n;" + " color: black ! important;\n" + " background-color: #ccc ! important;\n" + "}\n\n" + + "div.header {\n" " margin-bottom: 10pt ! important;\n" "}\n\n" @@ -660,6 +682,17 @@ " line-height: normal;\n" "}\n\n" + "div.switch {\n" + " margin: 1em;\n" + " padding: 1em;\n" + "}\n\n" + + "div.switch div.info {\n" + " margin: 1em;\n" + " text-align: center;\n" + " line-height: normal;\n" + "}\n\n" + "div.fancy.header > div {\n" " font-weight: bold ! important;\n" " padding: 4px ! important;\n"