From d1800a9cf963ad220c62bb543efec6864f91f080 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 28 Mar 2022 13:12:41 +0200 Subject: [PATCH] fix missing icon, more efficient adblock usage --- .../desktop/com.github.rssguard.appdata.xml | 2 +- resources/icons.qrc | 4 ++ .../gui/litehtml/litehtmlviewer.cpp | 66 ++++++++++--------- src/librssguard/gui/litehtml/litehtmlviewer.h | 1 + .../services/abstract/labelsnode.cpp | 2 +- 5 files changed, 41 insertions(+), 34 deletions(-) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 265e13e2f..5155e4f25 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -26,7 +26,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/resources/icons.qrc b/resources/icons.qrc index 8b4a8422e..f79f998c5 100644 --- a/resources/icons.qrc +++ b/resources/icons.qrc @@ -29,6 +29,7 @@ ./graphics/Breeze/actions/32/edit-reset.svg ./graphics/Breeze/actions/22/edit-select-all.svg ./graphics/Breeze/actions/22/edit-select-none.svg + ./graphics/Breeze/emblems/22/emblem-favorite.svg ./graphics/Breeze/emblems/22/emblem-shared.svg ./graphics/Breeze/places/96/folder.svg ./graphics/Breeze/actions/22/format-indent-more.svg @@ -103,6 +104,7 @@ ./graphics/Breeze Dark/actions/32/edit-reset.svg ./graphics/Breeze Dark/actions/22/edit-select-all.svg ./graphics/Breeze Dark/actions/22/edit-select-none.svg + ./graphics/Breeze Dark/emblems/22/emblem-favorite.svg ./graphics/Breeze Dark/emblems/22/emblem-shared.svg ./graphics/Breeze Dark/places/96/folder.svg ./graphics/Breeze Dark/actions/22/format-indent-more.svg @@ -174,6 +176,7 @@ ./graphics/Faenza/actions/64/edit-copy.png ./graphics/Faenza/actions/64/edit-select-all.png ./graphics/Faenza/emblems/64/emblem-downloads.png + ./graphics/Faenza/emblems/64/emblem-favorite.png ./graphics/Faenza/emblems/64/emblem-shared.png ./graphics/Faenza/emblems/64/emblem-system.png ./graphics/Faenza/places/64/folder.png @@ -252,6 +255,7 @@ ./graphics/Numix/22/actions/edit-copy.svg ./graphics/Numix/22/actions/edit-select-all.svg ./graphics/Numix/22/emblems/emblem-downloads.svg + ./graphics/Numix/22/emblems/emblem-favorite.svg ./graphics/Numix/22/emblems/emblem-shared.svg ./graphics/Numix/22/emblems/emblem-system.svg ./graphics/Numix/22/places/folder.svg diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/litehtml/litehtmlviewer.cpp index 3f66cc51f..29b6fc6f3 100755 --- a/src/librssguard/gui/litehtml/litehtmlviewer.cpp +++ b/src/librssguard/gui/litehtml/litehtmlviewer.cpp @@ -60,45 +60,38 @@ void LiteHtmlViewer::findText(const QString& text, bool backwards) { void LiteHtmlViewer::setUrl(const QUrl& url) { emit loadStarted(); - AdblockRequestInfo block_request(url); - - if (url.path().endsWith(QSL("css"))) { - block_request.setResourceType(QSL("stylesheet")); - } - else { - block_request.setResourceType(QSL("image")); - } - - if (qApp->web()->adBlock()->block(block_request).m_blocked) { - qWarningNN << LOGSEC_ADBLOCK << "Blocked request:" << QUOTE_W_SPACE_DOT(block_request.requestUrl().toString()); - - // TODO: Display "site blocked" error. - return; - } - - QEventLoop loop; - - connect(m_downloader.data(), &Downloader::completed, &loop, &QEventLoop::quit); - m_downloader->manipulateData(url.toString(), - QNetworkAccessManager::Operation::GetOperation, - {}, - 5000); - - loop.exec(); - - auto net_error = m_downloader->lastOutputError(); QString html_str; + bool is_error = false; - if (net_error != QNetworkReply::NetworkError::NoError) { - html_str = "Error!"; + if (blockedWithAdblock(url)) { + is_error = true; + html_str = tr("Site \"%1\" was blocked with AdBlock.").arg(url.toString()); } else { - html_str = QString::fromUtf8(m_downloader->lastOutputData()); + QEventLoop loop; + + connect(m_downloader.data(), &Downloader::completed, &loop, &QEventLoop::quit); + m_downloader->manipulateData(url.toString(), + QNetworkAccessManager::Operation::GetOperation, + {}, + 5000); + + loop.exec(); + + auto net_error = m_downloader->lastOutputError(); + + if (net_error != QNetworkReply::NetworkError::NoError) { + is_error = true; + html_str = "Error!"; + } + else { + html_str = QString::fromUtf8(m_downloader->lastOutputData()); + } } setHtml(html_str, url); - emit loadFinished(net_error == QNetworkReply::NetworkError::NoError); + emit loadFinished(is_error); } void LiteHtmlViewer::setHtml(const QString& html, const QUrl& base_url) { @@ -264,7 +257,7 @@ void LiteHtmlViewer::wheelEvent(QWheelEvent* event) { QLiteHtmlWidget::wheelEvent(event); } -QByteArray LiteHtmlViewer::handleResource(const QUrl& url) { +bool LiteHtmlViewer::blockedWithAdblock(const QUrl& url) { AdblockRequestInfo block_request(url); if (url.path().endsWith(QSL("css"))) { @@ -276,6 +269,15 @@ QByteArray LiteHtmlViewer::handleResource(const QUrl& url) { if (qApp->web()->adBlock()->block(block_request).m_blocked) { qWarningNN << LOGSEC_ADBLOCK << "Blocked request:" << QUOTE_W_SPACE_DOT(block_request.requestUrl().toString()); + return true; + } + else { + return false; + } +} + +QByteArray LiteHtmlViewer::handleResource(const QUrl& url) { + if (blockedWithAdblock(url)) { return {}; } else { diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.h b/src/librssguard/gui/litehtml/litehtmlviewer.h index 60e1ac5b2..0c3746017 100755 --- a/src/librssguard/gui/litehtml/litehtmlviewer.h +++ b/src/librssguard/gui/litehtml/litehtmlviewer.h @@ -50,6 +50,7 @@ class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer { virtual void wheelEvent(QWheelEvent* event); private: + bool blockedWithAdblock(const QUrl& url); QByteArray handleResource(const QUrl& url); private: diff --git a/src/librssguard/services/abstract/labelsnode.cpp b/src/librssguard/services/abstract/labelsnode.cpp index 01faf0f9f..edc895af6 100644 --- a/src/librssguard/services/abstract/labelsnode.cpp +++ b/src/librssguard/services/abstract/labelsnode.cpp @@ -15,7 +15,7 @@ LabelsNode::LabelsNode(RootItem* parent_item) : RootItem(parent_item), m_actLabelNew(nullptr) { setKind(RootItem::Kind::Labels); setId(ID_LABELS); - setIcon(qApp->icons()->fromTheme(QSL("tag-folder"))); + setIcon(qApp->icons()->fromTheme(QSL("tag-folder"), QSL("emblem-favorite"))); setTitle(tr("Labels")); setDescription(tr("You can see all your labels (tags) here.")); }