diff --git a/messageviewer/src/CMakeLists.txt b/messageviewer/src/CMakeLists.txt --- a/messageviewer/src/CMakeLists.txt +++ b/messageviewer/src/CMakeLists.txt @@ -371,6 +371,7 @@ HEADER_NAMES HtmlBlock MessagePartRendererBase + MessagePartRendererManager MessagePartRenderPlugin REQUIRED_HEADERS MessageViewer_renderer_HEADERS PREFIX MessageViewer 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 @@ -321,11 +321,6 @@ { } -QString DefaultRendererPrivate::alignText() -{ - return QApplication::isRightToLeft() ? QStringLiteral("rtl") : QStringLiteral("ltr"); -} - CSSHelperBase *DefaultRendererPrivate::cssHelper() const { return mCSSHelper; @@ -384,7 +379,6 @@ QObject block; c.insert(QStringLiteral("block"), &block); - block.setProperty("dir", alignText()); block.setProperty("link", mp->mOtp->nodeHelper()->asHREF(mp->mMessage.data(), QStringLiteral("body"))); @@ -486,7 +480,6 @@ } c.insert(QStringLiteral("block"), &block); - block.setProperty("dir", alignText()); block.setProperty("inProgress", metaData.inProgress); block.setProperty("isDecrypted", mp->decryptMessage()); block.setProperty("isDecryptable", metaData.isDecryptable); @@ -496,8 +489,6 @@ KIconLoader::Small)).url()); block.setProperty("errorText", metaData.errorText); block.setProperty("noSecKey", mp->mNoSecKey); - block.setProperty("iconSize", - MessageViewer::MessagePartRendererManager::self()->iconCurrentSize()); Grantlee::OutputStream s(htmlWriter->stream()); t->render(&s, &c); @@ -538,7 +529,6 @@ c.insert(QStringLiteral("cryptoProto"), QVariant::fromValue(cryptoProto)); c.insert(QStringLiteral("block"), &block); - block.setProperty("dir", alignText()); block.setProperty("inProgress", metaData.inProgress); block.setProperty("errorText", metaData.errorText); 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 @@ -42,7 +42,6 @@ DefaultRendererPrivate(const MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, HtmlWriter *writer, const MessagePartRendererFactory *rendererFactory); ~DefaultRendererPrivate(); - QString alignText(); CSSHelperBase *cssHelper() const override; Interface::ObjectTreeSource *source() const; diff --git a/messageviewer/src/messagepartthemes/default/messagepartrenderbase.cpp b/messageviewer/src/messagepartthemes/default/messagepartrenderbase.cpp --- a/messageviewer/src/messagepartthemes/default/messagepartrenderbase.cpp +++ b/messageviewer/src/messagepartthemes/default/messagepartrenderbase.cpp @@ -42,8 +42,3 @@ MessagePartRendererBase::~MessagePartRendererBase() { } - -QString MessagePartRendererBase::alignText() const -{ - return QApplication::isRightToLeft() ? QStringLiteral("rtl") : QStringLiteral("ltr"); -} diff --git a/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h b/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h --- a/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h +++ b/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h @@ -63,8 +63,6 @@ virtual ~MessagePartRendererBase(); virtual bool render(const MimeTreeParser::MessagePartPtr &, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const = 0; - - QString alignText() const; }; } #endif diff --git a/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h b/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h --- a/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h +++ b/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h @@ -29,6 +29,8 @@ } namespace MessageViewer { +class GlobalContext; + class MESSAGEVIEWER_EXPORT MessagePartRendererManager : public QObject { Q_OBJECT @@ -39,11 +41,10 @@ Grantlee::Template loadByName(const QString &name); Grantlee::Context createContext(); - int iconCurrentSize() const; private: void initializeRenderer(); GrantleeTheme::Engine *m_engine = nullptr; - int mCurrentIconSize; + GlobalContext *m_globalContext; }; } diff --git a/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp b/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp --- a/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp +++ b/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp @@ -35,6 +35,8 @@ #include #include +#include + Q_DECLARE_METATYPE(GpgME::DecryptionResult::Recipient) Q_DECLARE_METATYPE(const QGpgME::Protocol *) // Read-only introspection of GpgME::DecryptionResult::Recipient object. @@ -57,11 +59,32 @@ } } +namespace MessageViewer { +class GlobalContext : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString dir READ layoutDirection CONSTANT) + Q_PROPERTY(int iconSize READ iconSize CONSTANT) +public: + explicit GlobalContext(QObject *parent) : QObject(parent) {} + QString layoutDirection() const + { + return QGuiApplication::isRightToLeft() ? QStringLiteral("rtl") : QStringLiteral("ltr"); + } + + int iconSize() const + { + return KIconLoader::global()->currentSize(KIconLoader::Desktop); + } +}; +} + using namespace MessageViewer; MessagePartRendererManager::MessagePartRendererManager(QObject *parent) : QObject(parent) , m_engine(nullptr) + , m_globalContext(new GlobalContext(this)) { initializeRenderer(); } @@ -87,8 +110,6 @@ auto loader = QSharedPointer( new GrantleeTheme::QtResourceTemplateLoader()); m_engine->addTemplateLoader(loader); - - mCurrentIconSize = KIconLoader::global()->currentSize(KIconLoader::Desktop); } Grantlee::Template MessagePartRendererManager::loadByName(const QString &name) @@ -110,10 +131,8 @@ m_engine->localizer()->setApplicationDomain(QByteArrayLiteral("libmessageviewer")); c.setLocalizer(m_engine->localizer()); + c.insert(QStringLiteral("global"), m_globalContext); return c; } -int MessagePartRendererManager::iconCurrentSize() const -{ - return mCurrentIconSize; -} +#include "messagepartrenderermanager.moc" diff --git a/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp b/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp --- a/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp +++ b/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp @@ -77,9 +77,6 @@ asUnicodeString(), true)); block.setProperty("link", nodeHelper->asHREF(node, QStringLiteral("body"))); block.setProperty("showLink", mp->showLink()); - block.setProperty("dir", alignText()); - block.setProperty("iconSize", - MessageViewer::MessagePartRendererManager::self()->iconCurrentSize()); block.setProperty("inline", (tmpAsIcon == MimeTreeParser::IconInline)); QString iconPath; diff --git a/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp b/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp --- a/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp +++ b/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp @@ -68,7 +68,6 @@ asUnicodeString(), true)); block.setProperty("link", nodeHelper->asHREF(node, QStringLiteral("body"))); block.setProperty("showLink", mp->showLink()); - block.setProperty("dir", alignText()); t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( ":/textmessagepart.html")); diff --git a/messageviewer/src/messagepartthemes/default/templates/asiconpart.html b/messageviewer/src/messagepartthemes/default/templates/asiconpart.html --- a/messageviewer/src/messagepartthemes/default/templates/asiconpart.html +++ b/messageviewer/src/messagepartthemes/default/templates/asiconpart.html @@ -8,7 +8,7 @@ {% else %}
- {{block.label}} + {{block.label}}
{% endif %}
{{block.comment}}
\ No newline at end of file diff --git a/messageviewer/src/messagepartthemes/default/templates/encapsulatedrfc822messagepart.html b/messageviewer/src/messagepartthemes/default/templates/encapsulatedrfc822messagepart.html --- a/messageviewer/src/messagepartthemes/default/templates/encapsulatedrfc822messagepart.html +++ b/messageviewer/src/messagepartthemes/default/templates/encapsulatedrfc822messagepart.html @@ -1,6 +1,6 @@ - -
+ {% if block.link %} {% i18n "Encapsulated message" %} {% else %} @@ -15,8 +15,8 @@
+ {% i18n "End of encapsulated message" %}
\ No newline at end of file diff --git a/messageviewer/src/messagepartthemes/default/templates/encryptedmessagepart.html b/messageviewer/src/messagepartthemes/default/templates/encryptedmessagepart.html --- a/messageviewer/src/messagepartthemes/default/templates/encryptedmessagepart.html +++ b/messageviewer/src/messagepartthemes/default/templates/encryptedmessagepart.html @@ -4,12 +4,12 @@
- {% i18n "Decrypt Message" %} + {% i18n "Decrypt Message" %}
{% else %} - - +
+ {% if block.inProgress %} {% i18n "Please wait while the message is being decrypted..." %} {% elif block.isDecryptable %} @@ -43,7 +43,7 @@
{% i18n "End of encrypted message" %}{% i18n "End of encrypted message" %}
{% endif %} diff --git a/messageviewer/src/messagepartthemes/default/templates/signedmessagepart.html b/messageviewer/src/messagepartthemes/default/templates/signedmessagepart.html --- a/messageviewer/src/messagepartthemes/default/templates/signedmessagepart.html +++ b/messageviewer/src/messagepartthemes/default/templates/signedmessagepart.html @@ -1,6 +1,6 @@ - - +
+ {% if block.inProgress %} {% i18n "Please wait while the signature is being verified..." %} {% else %} @@ -163,6 +163,6 @@ {{content|safe}}
{% i18n "End of signed message" %}{% i18n "End of signed message" %}
diff --git a/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html b/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html --- a/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html +++ b/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html @@ -1,7 +1,7 @@ {% if block.showTextFrame %} -
+ {% if block.showLink %} {{ block.label }} {% else %}