From ac7c15f3ed41a51b830a79ab5c78e0580e42e798 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 13 Feb 2012 22:13:05 +0100 Subject: Add adblock icon to inform users that some contents was hidden This is a patch by Andrea Di Menna, changed a bit to allow element blocked/hided listing (you'll see it in next commit) REVIEW:102761 REVIEWED-BY: adjam --- src/adblock/adblockmanager.cpp | 6 ++++++ src/urlbar/urlbar.cpp | 10 ++++++++++ src/urlbar/urlbar.h | 3 ++- src/webpage.cpp | 1 + src/webpage.h | 11 +++++++++++ src/webtab.cpp | 6 ++++++ src/webtab.h | 2 ++ 7 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp index 0c0a66db..b435d437 100644 --- a/src/adblock/adblockmanager.cpp +++ b/src/adblock/adblockmanager.cpp @@ -226,6 +226,8 @@ QNetworkReply *AdBlockManager::block(const QNetworkRequest &request, WebPage *pa { kDebug() << "ADBLOCK: BLACK RULE Matched by string: " << urlString; AdBlockNetworkReply *reply = new AdBlockNetworkReply(request, urlString, this); + // TODO: add it to blocked list + page->setHasAdBlockedElements(true); return reply; } @@ -253,6 +255,8 @@ QNetworkReply *AdBlockManager::block(const QNetworkRequest &request, WebPage *pa } AdBlockNetworkReply *reply = new AdBlockNetworkReply(request, urlString, this); + // TODO: add it to blocked list + page->setHasAdBlockedElements(true); return reply; } } @@ -287,6 +291,8 @@ void AdBlockManager::applyHidingRules(WebPage *page) kDebug() << "Hide element: " << el.localName(); el.setStyleProperty(QL1S("visibility"), QL1S("hidden")); el.removeFromDocument(); + // TODO: add it to hided list + page->setHasAdBlockedElements(true); } } } diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 43109db3..9ef51f47 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -402,6 +402,12 @@ void UrlBar::loadFinished() connect(bt, SIGNAL(clicked(QPoint)), _tab, SLOT(showSearchEngine(QPoint))); } + if (_tab->hasAdBlockedElements()) + { + IconButton *bt = addRightIcon(UrlBar::AdBlock); + connect(bt, SIGNAL(clicked(QPoint)), (QObject *) rApp->adblockManager(), SLOT(showBlockedItems())); + } + // we need to update urlbar after the right icon settings // removing this code (where setStyleSheet automatically calls update) needs adding again // an update call @@ -599,6 +605,10 @@ IconButton *UrlBar::addRightIcon(UrlBar::icon ic) rightIcon->setIcon(KIcon("emblem-favorite")); rightIcon->setToolTip(i18n("Remove from favorite")); break; + case UrlBar::AdBlock: + rightIcon->setIcon(KIcon("preferences-web-browser-adblock")); + rightIcon->setToolTip(i18n("There are elements blocked by AdBlock")); + break; default: ASSERT_NOT_REACHED("ERROR.. default non extant case!!"); break; diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index fb7bcb2b..7cd79853 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -83,7 +83,8 @@ public: SSL = 0x00000100, BK = 0x00001000, SearchEngine = 0x00010000, - Favorite = 0x00100000 + Favorite = 0x00100000, + AdBlock = 0x01000000 }; explicit UrlBar(QWidget *parent = 0); diff --git a/src/webpage.cpp b/src/webpage.cpp index a60b0651..7ae7420d 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp @@ -444,6 +444,7 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) void WebPage::loadStarted() { + _hasAdBlockedElements = false; } diff --git a/src/webpage.h b/src/webpage.h index 31f42184..abc9f64c 100644 --- a/src/webpage.h +++ b/src/webpage.h @@ -62,6 +62,16 @@ public: QString suggestedFileName(); + inline bool hasAdBlockedElements() const + { + return _hasAdBlockedElements; + }; + + inline void setHasAdBlockedElements(bool b) + { + _hasAdBlockedElements = b; + }; + bool hasSslValid() const; public Q_SLOTS: @@ -98,6 +108,7 @@ private: bool _networkAnalyzer; bool _isOnRekonqPage; + bool _hasAdBlockedElements; }; #endif diff --git a/src/webtab.cpp b/src/webtab.cpp index 57f46ea4..8db44dd8 100644 --- a/src/webtab.cpp +++ b/src/webtab.cpp @@ -347,3 +347,9 @@ void WebTab::showMessageBar() connect(msgBar, SIGNAL(accepted()), rApp->sessionManager(), SLOT(restoreCrashedSession())); } + + +bool WebTab::hasAdBlockedElements() +{ + return page()->hasAdBlockedElements(); +} diff --git a/src/webtab.h b/src/webtab.h index 5c04b683..b0c849ef 100644 --- a/src/webtab.h +++ b/src/webtab.h @@ -89,6 +89,8 @@ public: void setPart(KParts::ReadOnlyPart *p, const KUrl &u); + bool hasAdBlockedElements(); + private Q_SLOTS: void updateProgress(int progress); void resetProgress(); -- cgit v1.2.1