File indexing completed on 2025-02-23 04:49:24
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "articlehtmlwebenginewriter.h" 0008 #include "akregator_debug.h" 0009 #include "articleviewerwebengine.h" 0010 0011 using namespace Akregator; 0012 0013 ArticleHtmlWebEngineWriter::ArticleHtmlWebEngineWriter(ArticleViewerWebEngine *view, QObject *parent) 0014 : QObject(parent) 0015 , mBaseUrl(QStringLiteral("file:///")) 0016 , mWebView(view) 0017 { 0018 } 0019 0020 ArticleHtmlWebEngineWriter::~ArticleHtmlWebEngineWriter() = default; 0021 0022 void ArticleHtmlWebEngineWriter::begin() 0023 { 0024 if (mState != Ended) { 0025 qCWarning(AKREGATOR_LOG) << "begin() called on non-ended session!"; 0026 reset(); 0027 } 0028 // clear the widget: 0029 mWebView->setUpdatesEnabled(false); 0030 mWebView->load(QUrl(QStringLiteral("about:blank"))); 0031 mState = Begun; 0032 } 0033 0034 void ArticleHtmlWebEngineWriter::setBaseUrl(const QUrl &url) 0035 { 0036 mBaseUrl = url; 0037 } 0038 0039 void ArticleHtmlWebEngineWriter::end() 0040 { 0041 if (mState != Begun) { 0042 qCWarning(AKREGATOR_LOG) << "Called on non-begun or queued session!"; 0043 } 0044 mWebView->setHtml(mHtml, mBaseUrl); 0045 mWebView->show(); 0046 mHtml.clear(); 0047 0048 mWebView->setUpdatesEnabled(true); 0049 mWebView->update(); 0050 mState = Ended; 0051 Q_EMIT finished(); 0052 } 0053 0054 void ArticleHtmlWebEngineWriter::reset() 0055 { 0056 if (mState != Ended) { 0057 mHtml.clear(); 0058 mState = Begun; // don't run into end()'s warning 0059 end(); 0060 mState = Ended; 0061 } 0062 } 0063 0064 void ArticleHtmlWebEngineWriter::queue(const QString &str) 0065 { 0066 if (mState != Begun) { 0067 qCWarning(AKREGATOR_LOG) << "Called in Ended or Queued state!"; 0068 } 0069 mHtml.append(str); 0070 } 0071 0072 void ArticleHtmlWebEngineWriter::flush() 0073 { 0074 mState = Begun; // don't run into end()'s warning 0075 end(); 0076 } 0077 0078 #include "moc_articlehtmlwebenginewriter.cpp"