Messagelib
7 #include "templateextracthtmlelementfrommail.h"
8 #include "templateparser_debug.h"
9 #include "templatewebenginepage.h"
10 #include <QWebEngineScript>
12 template<
typename Arg,
typename R,
typename C>
13 struct InvokeWrapperFunction {
15 void (C::*memberFun)(Arg);
16 void operator()(Arg result)
18 (receiver->*memberFun)(result);
22 template<
typename Arg,
typename R,
typename C>
23 InvokeWrapperFunction<Arg, R, C> invokeFunction(R *receiver,
void (C::*memberFun)(Arg))
25 InvokeWrapperFunction<Arg, R, C> wrapper = {receiver, memberFun};
29 using namespace TemplateParser;
31 TemplateExtractHtmlElementFromMail::TemplateExtractHtmlElementFromMail(
QObject *parent)
33 , mPage(new TemplateWebEnginePage(this))
35 connect(mPage, &TemplateWebEnginePage::loadFinished,
this, &TemplateExtractHtmlElementFromMail::slotLoadFinished);
38 TemplateExtractHtmlElementFromMail::~TemplateExtractHtmlElementFromMail() =
default;
40 void TemplateExtractHtmlElementFromMail::clear()
43 mHeaderElement.clear();
47 void TemplateExtractHtmlElementFromMail::setHtmlContent(
const QString &html)
54 QString extractHeaderBodyScript()
56 const QString source = QStringLiteral(
59 " body: document.getElementsByTagName('body')[0].innerHTML,"
60 " header: document.getElementsByTagName('head')[0].innerHTML"
67 void TemplateExtractHtmlElementFromMail::slotLoadFinished(
bool success)
70 mPage->runJavaScript(extractHeaderBodyScript(),
71 (QWebEngineScript::UserWorld + 2),
72 invokeFunction(
this, &TemplateExtractHtmlElementFromMail::handleHtmlInfo));
74 Q_EMIT loadContentDone(
false);
78 void TemplateExtractHtmlElementFromMail::handleHtmlInfo(
const QVariant &result)
81 const QVariantMap
map = result.
toMap();
82 mBodyElement =
map.value(QStringLiteral(
"body")).toString();
83 mHeaderElement =
map.value(QStringLiteral(
"header")).toString();
84 Q_EMIT loadContentDone(
true);
86 qCWarning(TEMPLATEPARSER_LOG) <<
"Impossible to get value";
87 Q_EMIT loadContentDone(
false);
91 QString TemplateExtractHtmlElementFromMail::htmlElement()
const
96 QString TemplateExtractHtmlElementFromMail::headerElement()
const
98 return mHeaderElement;
101 QString TemplateExtractHtmlElementFromMail::bodyElement()
const
bool isValid() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QMap< QString, QVariant > toMap() const const
QFuture< void > map(Sequence &sequence, MapFunctor function)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Mar 24 2023 04:08:32 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.