File indexing completed on 2025-02-16 04:57:41

0001 /*
0002    SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "templateextracttextfrommail.h"
0008 #include "templateparser_debug.h"
0009 #include "templatewebenginepage.h"
0010 
0011 using namespace TemplateParser;
0012 
0013 template<typename Arg, typename R, typename C>
0014 struct InvokeWrapper {
0015     R *receiver;
0016     void (C::*memberFun)(Arg);
0017     void operator()(Arg result)
0018     {
0019         (receiver->*memberFun)(result);
0020     }
0021 };
0022 
0023 template<typename Arg, typename R, typename C>
0024 InvokeWrapper<Arg, R, C> invoke(R *receiver, void (C::*memberFun)(Arg))
0025 {
0026     InvokeWrapper<Arg, R, C> wrapper = {receiver, memberFun};
0027     return wrapper;
0028 }
0029 
0030 TemplateExtractTextFromMail::TemplateExtractTextFromMail(QObject *parent)
0031     : QObject(parent)
0032     , mPage(new TemplateWebEnginePage(this))
0033 {
0034     connect(mPage, &TemplateWebEnginePage::loadFinished, this, &TemplateExtractTextFromMail::slotLoadFinished);
0035 }
0036 
0037 TemplateExtractTextFromMail::~TemplateExtractTextFromMail() = default;
0038 
0039 void TemplateExtractTextFromMail::setHtmlContent(const QString &html)
0040 {
0041     mExtractedPlainText.clear();
0042     mPage->setHtml(html);
0043 }
0044 
0045 void TemplateExtractTextFromMail::slotLoadFinished(bool ok)
0046 {
0047     if (ok) {
0048         mPage->toPlainText(invoke(this, &TemplateExtractTextFromMail::setPlainText));
0049     } else {
0050         qCWarning(TEMPLATEPARSER_LOG) << "Loading page failed";
0051         Q_EMIT loadContentDone(false);
0052     }
0053 }
0054 
0055 void TemplateExtractTextFromMail::setPlainText(const QString &plainText)
0056 {
0057     mExtractedPlainText = plainText;
0058     Q_EMIT loadContentDone(true);
0059 }
0060 
0061 QString TemplateExtractTextFromMail::plainText() const
0062 {
0063     return mExtractedPlainText;
0064 }
0065 
0066 #include "moc_templateextracttextfrommail.cpp"