summaryrefslogtreecommitdiff
path: root/src/adblock/adblockmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/adblock/adblockmanager.h')
-rw-r--r--src/adblock/adblockmanager.h98
1 files changed, 60 insertions, 38 deletions
diff --git a/src/adblock/adblockmanager.h b/src/adblock/adblockmanager.h
index f01aaca0..eae761e0 100644
--- a/src/adblock/adblockmanager.h
+++ b/src/adblock/adblockmanager.h
@@ -2,7 +2,7 @@
*
* This file is a part of the rekonq project
*
-* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com>
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
*
*
* This program is free software; you can redistribute it and/or
@@ -10,9 +10,9 @@
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
+* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -30,42 +30,42 @@
// NOTE: AdBlockPlus Filters (fast) summary
-//
+//
// ### Basic Filter rules
-//
-// RULE = http://example.com/ads/*
+//
+// RULE = http://example.com/ads/*
// this should block every link containing all things from that link
-//
+//
// ### Exception rules (@@)
-//
+//
// RULE = @@advice*
-//
+//
// this will save every site, also that matched by other rules, cointaining words
// that starts with "advice". Wildcards && regular expression allowed here.
-//
+//
// ### Beginning/end matching rules (||)
-//
+//
// RULE=||http://badsite.com
-//
+//
// will stop all links starting with http://badsite.com
-//
+//
// RULE=*swf||
-//
+//
// will stop all links to direct flash contents
-//
+//
// ### Comments (!)
-//
+//
// RULE=!azz..
-//
+//
// Every rule starting with a ! is commented out and should not be checked
-//
+//
// ### Filter Options
-//
-// You can also specify a number of options to modify the behavior of a filter.
+//
+// You can also specify a number of options to modify the behavior of a filter.
// You list these options separated with commas after a dollar sign ($) at the end of the filter
-//
+//
// RULE=*/ads/*$element,match-case
-//
+//
// where $element can be one of the following:
// $script external scripts loaded via HTML script tag
// $image regular images, typically loaded via HTML img tag
@@ -80,37 +80,44 @@
// $subdocument embedded pages, usually included via HTML frames
// $document the page itself (only exception rules can be applied to the page)
// $other types of requests not covered in the list above
-//
+//
// Inverse type options are allowed through the ~ sign, for example:
-//
+//
// RULE=*/ads/*~$script,match-case
-//
+//
// ### Regular expressions
-//
+//
// They usually allow to check for (a lot of) sites, using just one rule, but be careful:
// BASIC FILTERS ARE PROCESSED FASTER THAN REGULAR EXPRESSIONS (In ADP! In rekonq, I don't know...)
-//
-//
+//
+//
// ### ELEMENT HIDING (##)
-//
-// This is quite different from usual adblock (but, for me, more powerful!). Sometimes you will find advertisements
+//
+// This is quite different from usual adblock (but, for me, more powerful!). Sometimes you will find advertisements
// that can’t be blocked because they are embedded as text in the web page itself.
// All you can do there is HIDE the element :)
-//
+//
// RULE=##div.advise
-//
+//
// The previous rule will hide every div whose class is named "advise". Usual CSS selectors apply here :)
//
// END NOTE ----------------------------------------------------------------------------------------------------------
+// Rekonq Includes
+#include "rekonq_defines.h"
+
// Local Includes
#include "adblockrule.h"
+// KDE Includes
+#include <KIO/Job>
+
// Qt Includes
#include <QObject>
#include <QNetworkReply>
#include <QStringList>
+#include <QByteArray>
// Forward Includes
class QNetworkRequest;
@@ -120,18 +127,30 @@ class WebPage;
typedef QList<AdBlockRule> AdBlockRuleList;
-class AdBlockManager : public QObject
+class REKONQ_TESTS_EXPORT AdBlockManager : public QObject
{
-Q_OBJECT
-
+ Q_OBJECT
+
public:
AdBlockManager(QObject *parent = 0);
~AdBlockManager();
- void loadSettings();
- QNetworkReply *block(const QNetworkRequest &request);
+ QNetworkReply *block(const QNetworkRequest &request, WebPage *page);
void applyHidingRules(WebPage *page);
-
+ void addSubscription(const QString &title, const QString &location);
+
+public slots:
+ void loadSettings(bool checkUpdateDate = true);
+
+private:
+ void updateNextSubscription();
+ void saveRules(const QStringList &);
+ void loadRules(const QStringList &);
+
+private slots:
+ void slotResult(KJob *);
+ void subscriptionData(KIO::Job*, const QByteArray&);
+
private:
bool _isAdblockEnabled;
bool _isHideAdsEnabled;
@@ -139,6 +158,9 @@ private:
AdBlockRuleList _blackList;
AdBlockRuleList _whiteList;
QStringList _hideList;
+
+ int _index;
+ QByteArray _buffer;
};
#endif