This commit is contained in:
Martin Rotter 2021-01-07 14:55:04 +01:00
parent 9d91bf0f68
commit a4562a7800
3 changed files with 18 additions and 14 deletions

View File

@ -107,19 +107,21 @@ void AdBlockIcon::createMenu(QMenu* menu) {
if (!pageUrl.host().isEmpty() && m_enabled && m_manager->canRunOnScheme(pageUrl.scheme())) { if (!pageUrl.host().isEmpty() && m_enabled && m_manager->canRunOnScheme(pageUrl.scheme())) {
const QString host = page->url().host().contains(QLatin1String("www.")) ? pageUrl.host().mid(4) : pageUrl.host(); const QString host = page->url().host().contains(QLatin1String("www.")) ? pageUrl.host().mid(4) : pageUrl.host();
const QString hostFilter = QString("@@||%1^$document").arg(host); const QString host_filter = QString("@@||%1^$document").arg(host);
const QString pageFilter = QString("@@|%1|$document").arg(pageUrl.toString()); const QString page_filter = QString("@@|%1|$document").arg(pageUrl.toString());
QAction* act = menu->addAction(tr("Disable on %1").arg(host)); QAction* act = menu->addAction(tr("Disable on %1").arg(host));
act->setCheckable(true); act->setCheckable(true);
act->setChecked(customList->containsFilter(hostFilter)); act->setChecked(customList->containsFilter(host_filter));
act->setData(hostFilter); act->setData(host_filter);
connect(act, &QAction::triggered, this, &AdBlockIcon::toggleCustomFilter); connect(act, &QAction::triggered, this, &AdBlockIcon::toggleCustomFilter);
act = menu->addAction(tr("Disable only on this page")); act = menu->addAction(tr("Disable only on this page"));
act->setCheckable(true); act->setCheckable(true);
act->setChecked(customList->containsFilter(pageFilter)); act->setChecked(customList->containsFilter(page_filter));
act->setData(pageFilter); act->setData(page_filter);
connect(act, &QAction::triggered, this, &AdBlockIcon::toggleCustomFilter); connect(act, &QAction::triggered, this, &AdBlockIcon::toggleCustomFilter);
menu->addSeparator(); menu->addSeparator();
} }
} }
@ -139,20 +141,20 @@ void AdBlockIcon::toggleCustomFilter() {
} }
const QString filter = action->data().toString(); const QString filter = action->data().toString();
AdBlockCustomList* customList = m_manager->customList(); AdBlockCustomList* custom_list = m_manager->customList();
if (customList->containsFilter(filter)) { if (custom_list->containsFilter(filter)) {
customList->removeFilter(filter); custom_list->removeFilter(filter);
} }
else { else {
auto* rule = new AdBlockRule(filter, customList); auto* rule = new AdBlockRule(filter, custom_list);
customList->addRule(rule); custom_list->addRule(rule);
} }
} }
void AdBlockIcon::animateIcon() { void AdBlockIcon::animateIcon() {
++m_timerTicks; m_timerTicks++;
if (m_timerTicks > 10) { if (m_timerTicks > 10) {
stopAnimation(); stopAnimation();

View File

@ -76,11 +76,13 @@ bool AdBlockManager::block(QWebEngineUrlRequestInfo& request) {
if (blockedRule != nullptr) { if (blockedRule != nullptr) {
if (request.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) { if (request.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) {
QUrlQuery query; QUrlQuery query;
QUrl url(QSL("rssguard:adblockedpage")); QUrl url(QSL("%1://%2").arg(APP_LOW_NAME, ADBLOCK_ADBLOCKED_PAGE));
query.addQueryItem(QSL("rule"), blockedRule->filter()); query.addQueryItem(QSL("rule"), blockedRule->filter());
query.addQueryItem(QSL("subscription"), blockedRule->subscription()->title()); query.addQueryItem(QSL("subscription"), blockedRule->subscription()->title());
url.setQuery(query); url.setQuery(query);
res = true;
request.redirect(url); request.redirect(url);
} }
else { else {

View File

@ -25,5 +25,5 @@ AdBlockUrlInterceptor::AdBlockUrlInterceptor(AdBlockManager* manager)
: UrlInterceptor(manager), m_manager(manager) {} : UrlInterceptor(manager), m_manager(manager) {}
void AdBlockUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { void AdBlockUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) {
info.block(m_manager->block(info)); m_manager->block(info);
} }