Changeset View
Changeset View
Standalone View
Standalone View
messageviewer/src/messagepartthemes/default/defaultrenderer.cpp
Show First 20 Lines • Show All 358 Lines • ▼ Show 20 Line(s) | 313 | public: | |||
---|---|---|---|---|---|
359 | { | 359 | { | ||
360 | mBaseWriter->extraHead(extra); | 360 | mBaseWriter->extraHead(extra); | ||
361 | } | 361 | } | ||
362 | 362 | | |||
363 | QString html; | 363 | QString html; | ||
364 | MimeTreeParser::HtmlWriter *mBaseWriter = nullptr; | 364 | MimeTreeParser::HtmlWriter *mBaseWriter = nullptr; | ||
365 | }; | 365 | }; | ||
366 | 366 | | |||
367 | DefaultRendererPrivate::DefaultRendererPrivate(const Interface::MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, HtmlWriter *writer, const MessagePartRendererFactory *rendererFactory) | 367 | DefaultRendererPrivate::DefaultRendererPrivate(const MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, HtmlWriter *writer, const MessagePartRendererFactory *rendererFactory) | ||
368 | : mMsgPart(msgPart) | 368 | : mMsgPart(msgPart) | ||
369 | , mOldWriter(writer) | 369 | , mOldWriter(writer) | ||
370 | , mCSSHelper(cssHelper) | 370 | , mCSSHelper(cssHelper) | ||
371 | , mRendererFactory(rendererFactory) | 371 | , mRendererFactory(rendererFactory) | ||
372 | { | 372 | { | ||
373 | mHtml = renderFactory(mMsgPart, QSharedPointer<CacheHtmlWriter>()); | 373 | mHtml = renderFactory(mMsgPart, QSharedPointer<CacheHtmlWriter>()); | ||
374 | } | 374 | } | ||
375 | 375 | | |||
376 | DefaultRendererPrivate::~DefaultRendererPrivate() | 376 | DefaultRendererPrivate::~DefaultRendererPrivate() | ||
377 | { | 377 | { | ||
378 | } | 378 | } | ||
379 | 379 | | |||
380 | QString DefaultRendererPrivate::alignText() | 380 | QString DefaultRendererPrivate::alignText() | ||
381 | { | 381 | { | ||
382 | return QApplication::isRightToLeft() ? QStringLiteral("rtl") : QStringLiteral("ltr"); | 382 | return QApplication::isRightToLeft() ? QStringLiteral("rtl") : QStringLiteral("ltr"); | ||
383 | } | 383 | } | ||
384 | 384 | | |||
385 | CSSHelperBase *DefaultRendererPrivate::cssHelper() const | 385 | CSSHelperBase *DefaultRendererPrivate::cssHelper() const | ||
386 | { | 386 | { | ||
387 | auto mp = mMsgPart.dynamicCast<MessagePart>(); | | |||
388 | if (mp) { | | |||
389 | return mCSSHelper; | 387 | return mCSSHelper; | ||
390 | } | 388 | } | ||
391 | return nullptr; | | |||
392 | } | | |||
393 | 389 | | |||
394 | Interface::ObjectTreeSource *DefaultRendererPrivate::source() const | 390 | Interface::ObjectTreeSource *DefaultRendererPrivate::source() const | ||
395 | { | 391 | { | ||
396 | auto mp = mMsgPart.dynamicCast<MessagePart>(); | 392 | return mMsgPart->source(); | ||
397 | if (mp) { | | |||
398 | return mp->source(); | | |||
399 | } | | |||
400 | return nullptr; | | |||
401 | } | 393 | } | ||
402 | 394 | | |||
403 | void DefaultRendererPrivate::renderSubParts(const MessagePart::Ptr &msgPart, const QSharedPointer<CacheHtmlWriter> &htmlWriter) | 395 | void DefaultRendererPrivate::renderSubParts(const MessagePart::Ptr &msgPart, const QSharedPointer<CacheHtmlWriter> &htmlWriter) | ||
404 | { | 396 | { | ||
405 | foreach (const auto &m, msgPart->subParts()) | 397 | foreach (const auto &m, msgPart->subParts()) | ||
406 | htmlWriter->queue(renderFactory(m, htmlWriter)); | 398 | htmlWriter->queue(renderFactory(m, htmlWriter)); | ||
407 | } | 399 | } | ||
408 | 400 | | |||
▲ Show 20 Lines • Show All 125 Lines • ▼ Show 20 Line(s) | 519 | { | |||
534 | htmlWriter->queue(html); | 526 | htmlWriter->queue(html); | ||
535 | } | 527 | } | ||
536 | return htmlWriter->html; | 528 | return htmlWriter->html; | ||
537 | } | 529 | } | ||
538 | 530 | | |||
539 | QString DefaultRendererPrivate::renderEncrypted(const EncryptedMessagePart::Ptr &mp) | 531 | QString DefaultRendererPrivate::renderEncrypted(const EncryptedMessagePart::Ptr &mp) | ||
540 | { | 532 | { | ||
541 | KMime::Content *node = mp->mNode; | 533 | KMime::Content *node = mp->mNode; | ||
542 | const auto metaData = mp->mMetaData; | 534 | const auto metaData = *mp->partMetaData(); | ||
543 | 535 | | |||
544 | Grantlee::Template t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( | 536 | Grantlee::Template t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( | ||
545 | ":/encryptedmessagepart.html")); | 537 | ":/encryptedmessagepart.html")); | ||
546 | Grantlee::Context c = MessageViewer::MessagePartRendererManager::self()->createContext(); | 538 | Grantlee::Context c = MessageViewer::MessagePartRendererManager::self()->createContext(); | ||
547 | QObject block; | 539 | QObject block; | ||
548 | 540 | | |||
549 | if (node || mp->hasSubParts()) { | 541 | if (node || mp->hasSubParts()) { | ||
550 | auto _htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | 542 | auto _htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | ||
Show All 37 Lines | |||||
588 | const auto html = t->render(&c); | 580 | const auto html = t->render(&c); | ||
589 | 581 | | |||
590 | return html; | 582 | return html; | ||
591 | } | 583 | } | ||
592 | 584 | | |||
593 | QString DefaultRendererPrivate::renderSigned(const SignedMessagePart::Ptr &mp) | 585 | QString DefaultRendererPrivate::renderSigned(const SignedMessagePart::Ptr &mp) | ||
594 | { | 586 | { | ||
595 | KMime::Content *node = mp->mNode; | 587 | KMime::Content *node = mp->mNode; | ||
596 | const auto metaData = mp->mMetaData; | 588 | const auto metaData = *mp->partMetaData(); | ||
597 | auto cryptoProto = mp->mCryptoProto; | 589 | auto cryptoProto = mp->mCryptoProto; | ||
598 | 590 | | |||
599 | const bool isSMIME = cryptoProto && (cryptoProto == QGpgME::smime()); | 591 | const bool isSMIME = cryptoProto && (cryptoProto == QGpgME::smime()); | ||
600 | 592 | | |||
601 | Grantlee::Template t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( | 593 | Grantlee::Template t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( | ||
602 | ":/signedmessagepart.html")); | 594 | ":/signedmessagepart.html")); | ||
603 | Grantlee::Context c = MessageViewer::MessagePartRendererManager::self()->createContext(); | 595 | Grantlee::Context c = MessageViewer::MessagePartRendererManager::self()->createContext(); | ||
604 | QObject block; | 596 | QObject block; | ||
▲ Show 20 Lines • Show All 231 Lines • ▼ Show 20 Line(s) | |||||
836 | const auto html = t->render(&c); | 828 | const auto html = t->render(&c); | ||
837 | 829 | | |||
838 | return html; | 830 | return html; | ||
839 | } | 831 | } | ||
840 | 832 | | |||
841 | QString DefaultRendererPrivate::render(const SignedMessagePart::Ptr &mp) | 833 | QString DefaultRendererPrivate::render(const SignedMessagePart::Ptr &mp) | ||
842 | { | 834 | { | ||
843 | auto htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | 835 | auto htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | ||
844 | const auto metaData = mp->mMetaData; | 836 | const auto metaData = *mp->partMetaData(); | ||
845 | if (metaData.isSigned || metaData.inProgress) { | 837 | if (metaData.isSigned || metaData.inProgress) { | ||
846 | { | 838 | { | ||
847 | HTMLBlock::Ptr aBlock; | 839 | HTMLBlock::Ptr aBlock; | ||
848 | if (mp->isAttachment()) { | 840 | if (mp->isAttachment()) { | ||
849 | aBlock | 841 | aBlock | ||
850 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), | 842 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), | ||
851 | mp->attachmentNode())); | 843 | mp->attachmentNode())); | ||
852 | } | 844 | } | ||
Show All 17 Lines | 849 | { | |||
870 | } | 862 | } | ||
871 | } | 863 | } | ||
872 | return htmlWriter->html; | 864 | return htmlWriter->html; | ||
873 | } | 865 | } | ||
874 | 866 | | |||
875 | QString DefaultRendererPrivate::render(const EncryptedMessagePart::Ptr &mp) | 867 | QString DefaultRendererPrivate::render(const EncryptedMessagePart::Ptr &mp) | ||
876 | { | 868 | { | ||
877 | auto htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | 869 | auto htmlWriter = QSharedPointer<CacheHtmlWriter>(new CacheHtmlWriter(mOldWriter)); | ||
878 | const auto metaData = mp->mMetaData; | 870 | const auto metaData = *mp->partMetaData(); | ||
879 | 871 | | |||
880 | if (metaData.isEncrypted || metaData.inProgress) { | 872 | if (metaData.isEncrypted || metaData.inProgress) { | ||
881 | { | 873 | { | ||
882 | HTMLBlock::Ptr aBlock; | 874 | HTMLBlock::Ptr aBlock; | ||
883 | if (mp->isAttachment()) { | 875 | if (mp->isAttachment()) { | ||
884 | aBlock | 876 | aBlock | ||
885 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), | 877 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), | ||
886 | mp->attachmentNode())); | 878 | mp->attachmentNode())); | ||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Line(s) | 964 | aBlock | |||
973 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), mp->attachmentNode())); | 965 | = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), mp->attachmentNode())); | ||
974 | } | 966 | } | ||
975 | const auto html = t->render(&c); | 967 | const auto html = t->render(&c); | ||
976 | htmlWriter->queue(html); | 968 | htmlWriter->queue(html); | ||
977 | } | 969 | } | ||
978 | return htmlWriter->html; | 970 | return htmlWriter->html; | ||
979 | } | 971 | } | ||
980 | 972 | | |||
981 | QSharedPointer<PartRendered> DefaultRendererPrivate::renderWithFactory(QString className, const Interface::MessagePart::Ptr &msgPart) | 973 | QSharedPointer<PartRendered> DefaultRendererPrivate::renderWithFactory(QString className, const MessagePart::Ptr &msgPart) | ||
982 | { | 974 | { | ||
983 | if (mRendererFactory) { | 975 | if (mRendererFactory) { | ||
984 | const auto registry = mRendererFactory->typeRegistry(className); | 976 | const auto registry = mRendererFactory->typeRegistry(className); | ||
985 | 977 | | |||
986 | if (registry.size() > 0) { | 978 | if (registry.size() > 0) { | ||
987 | const auto plugin = registry.at(0); | 979 | const auto plugin = registry.at(0); | ||
988 | return plugin->render(this, msgPart); | 980 | return plugin->render(this, msgPart); | ||
989 | } | 981 | } | ||
990 | } | 982 | } | ||
991 | 983 | | |||
992 | return QSharedPointer<PartRendered>(); | 984 | return QSharedPointer<PartRendered>(); | ||
993 | } | 985 | } | ||
994 | 986 | | |||
995 | QString DefaultRendererPrivate::renderFactory(const Interface::MessagePart::Ptr &msgPart, const QSharedPointer<CacheHtmlWriter> &htmlWriter) | 987 | QString DefaultRendererPrivate::renderFactory(const MessagePart::Ptr &msgPart, const QSharedPointer<CacheHtmlWriter> &htmlWriter) | ||
996 | { | 988 | { | ||
997 | const QString className = QString::fromUtf8(msgPart->metaObject()->className()); | 989 | const QString className = QString::fromUtf8(msgPart->metaObject()->className()); | ||
998 | 990 | | |||
999 | const auto rendered = renderWithFactory(className, msgPart); | 991 | const auto rendered = renderWithFactory(className, msgPart); | ||
1000 | if (rendered) { | 992 | if (rendered) { | ||
1001 | const auto parts = rendered->embededParts(); | 993 | const auto parts = rendered->embededParts(); | ||
1002 | foreach (auto key, parts.keys()) { | 994 | foreach (auto key, parts.keys()) { | ||
1003 | htmlWriter->embedPart(key, parts.value(key)); | 995 | htmlWriter->embedPart(key, parts.value(key)); | ||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Line(s) | 1045 | } else if (auto mp = msgPart.dynamicCast<LegacyPluginMessagePart>()) { | |||
1054 | return mp->formatOutput(); | 1046 | return mp->formatOutput(); | ||
1055 | } | 1047 | } | ||
1056 | 1048 | | |||
1057 | qCWarning(MESSAGEVIEWER_LOG) << "We got a unkonwn classname, using default behaviour for " | 1049 | qCWarning(MESSAGEVIEWER_LOG) << "We got a unkonwn classname, using default behaviour for " | ||
1058 | << className; | 1050 | << className; | ||
1059 | return QString(); | 1051 | return QString(); | ||
1060 | } | 1052 | } | ||
1061 | 1053 | | |||
1062 | DefaultRenderer::DefaultRenderer(const MimeTreeParser::Interface::MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, MimeTreeParser::HtmlWriter *writer) | 1054 | DefaultRenderer::DefaultRenderer(const MimeTreeParser::MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, MimeTreeParser::HtmlWriter *writer) | ||
1063 | : d(new MimeTreeParser::DefaultRendererPrivate(msgPart, cssHelper, writer, MessagePartRendererFactory::instance())) | 1055 | : d(new MimeTreeParser::DefaultRendererPrivate(msgPart, cssHelper, writer, MessagePartRendererFactory::instance())) | ||
1064 | { | 1056 | { | ||
1065 | } | 1057 | } | ||
1066 | 1058 | | |||
1067 | DefaultRenderer::~DefaultRenderer() | 1059 | DefaultRenderer::~DefaultRenderer() | ||
1068 | { | 1060 | { | ||
1069 | delete d; | 1061 | delete d; | ||
1070 | } | 1062 | } | ||
1071 | 1063 | | |||
1072 | QString DefaultRenderer::html() const | 1064 | QString DefaultRenderer::html() const | ||
1073 | { | 1065 | { | ||
1074 | return d->mHtml; | 1066 | return d->mHtml; | ||
1075 | } | 1067 | } |