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 "templateparserextracthtmlinfo.h" 0008 #include "templateextracthtmlelementfrommail.h" 0009 #include "templateextracttextfrommail.h" 0010 #include "templateparser_debug.h" 0011 0012 using namespace TemplateParser; 0013 0014 TemplateParserExtractHtmlInfo::TemplateParserExtractHtmlInfo(QObject *parent) 0015 : QObject(parent) 0016 { 0017 } 0018 0019 TemplateParserExtractHtmlInfo::~TemplateParserExtractHtmlInfo() 0020 { 0021 if (mTemplateWebEngineView) { 0022 mTemplateWebEngineView->deleteLater(); 0023 } 0024 if (mExtractHtmlElementWebEngineView) { 0025 mExtractHtmlElementWebEngineView->deleteLater(); 0026 } 0027 } 0028 0029 void TemplateParserExtractHtmlInfo::setHtmlForExtractingTextPlain(const QString &html) 0030 { 0031 mHtmlForExtractingTextPlain = html; 0032 } 0033 0034 void TemplateParserExtractHtmlInfo::setHtmlForExtractionHeaderAndBody(const QString &html) 0035 { 0036 mHtmlForExtractionHeaderAndBody = html; 0037 } 0038 0039 void TemplateParserExtractHtmlInfo::setTemplate(const QString &str) 0040 { 0041 mTemplateStr = str; 0042 } 0043 0044 void TemplateParserExtractHtmlInfo::start() 0045 { 0046 mResult.clear(); 0047 mResult.mTemplate = mTemplateStr; 0048 if (!mHtmlForExtractingTextPlain.isEmpty()) { 0049 mTemplateWebEngineView = new TemplateExtractTextFromMail; 0050 connect(mTemplateWebEngineView, &TemplateExtractTextFromMail::loadContentDone, this, &TemplateParserExtractHtmlInfo::slotExtractToPlainTextFinished); 0051 mTemplateWebEngineView->setHtmlContent(mHtmlForExtractingTextPlain); 0052 } else { 0053 qCDebug(TEMPLATEPARSER_LOG) << "html string is empty for extracting to plainText"; 0054 slotExtractToPlainTextFinished(false); 0055 } 0056 } 0057 0058 void TemplateParserExtractHtmlInfo::slotExtractToPlainTextFinished(bool success) 0059 { 0060 if (success) { 0061 mResult.mPlainText = mTemplateWebEngineView->plainText(); 0062 } else { 0063 qCDebug(TEMPLATEPARSER_LOG) << "Impossible to extract plaintext"; 0064 } 0065 if (!mHtmlForExtractionHeaderAndBody.isEmpty()) { 0066 mExtractHtmlElementWebEngineView = new TemplateExtractHtmlElementFromMail; 0067 connect(mExtractHtmlElementWebEngineView, 0068 &TemplateExtractHtmlElementFromMail::loadContentDone, 0069 this, 0070 &TemplateParserExtractHtmlInfo::slotExtractHtmlElementFinished); 0071 mExtractHtmlElementWebEngineView->setHtmlContent(mHtmlForExtractionHeaderAndBody); 0072 } else { 0073 qCDebug(TEMPLATEPARSER_LOG) << "html string is empty for extracting to header and body"; 0074 slotExtractHtmlElementFinished(false); 0075 } 0076 } 0077 0078 void TemplateParserExtractHtmlInfo::slotExtractHtmlElementFinished(bool success) 0079 { 0080 if (success) { 0081 mResult.mBodyElement = mExtractHtmlElementWebEngineView->bodyElement(); 0082 mResult.mHeaderElement = mExtractHtmlElementWebEngineView->headerElement(); 0083 mResult.mHtmlElement = mExtractHtmlElementWebEngineView->htmlElement(); 0084 } else { 0085 qCDebug(TEMPLATEPARSER_LOG) << "Impossible to extract html element"; 0086 } 0087 Q_EMIT finished(mResult); 0088 deleteLater(); 0089 } 0090 0091 #include "moc_templateparserextracthtmlinfo.cpp"