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"