aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/poi.conf10
-rw-r--r--smolbote.qbs19
-rw-r--r--src/blocker/blockermanager.cpp (renamed from src/forms/blockerdialog.cpp)37
-rw-r--r--src/blocker/blockermanager.h (renamed from src/forms/blockerdialog.h)9
-rw-r--r--src/blocker/blockerrule.cpp (renamed from src/webengine/blockerrule.cpp)63
-rw-r--r--src/blocker/blockerrule.h (renamed from src/webengine/blockerrule.h)7
-rw-r--r--src/blocker/blockersubscription.cpp (renamed from src/webengine/blockersubscription.cpp)113
-rw-r--r--src/blocker/blockersubscription.h (renamed from src/webengine/blockersubscription.h)50
-rw-r--r--src/blocker/regexp.cpp (renamed from src/webengine/regexp.cpp)2
-rw-r--r--src/blocker/regexp.h (renamed from src/webengine/regexp.h)3
-rw-r--r--src/blocker/subscriptiondialog.ui67
-rw-r--r--src/blocker/subscriptionform.ui (renamed from src/forms/blockerdialog.ui)51
-rw-r--r--src/browser.cpp7
-rw-r--r--src/browser.h4
-rw-r--r--src/mainwindow.cpp6
-rw-r--r--src/mainwindow.h4
-rw-r--r--src/mainwindow.ui20
-rw-r--r--src/webengine/urlinterceptor.cpp23
-rw-r--r--src/webengine/urlinterceptor.h6
-rw-r--r--test/blocklist.txt9
20 files changed, 231 insertions, 279 deletions
diff --git a/data/poi.conf b/data/poi.conf
index aec03e9..b9c1aee 100644
--- a/data/poi.conf
+++ b/data/poi.conf
@@ -41,9 +41,13 @@ profile="Default"
# URL blocker
[blocker]
-dialogShortcut="Ctrl+Shift+A"
-path="blocklist.txt"
-#subscriptions=[]
+shortcut="Ctrl+Shift+A"
+path="~settings/"
+subscriptions=[
+# "https://easylist.to/easylist/easylist.txt",
+ "https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt",
+ "https://easylist.to/easylist/easyprivacy.txt"
+]
# Bookmark manager
[bookmarks]
diff --git a/smolbote.qbs b/smolbote.qbs
index 0d3b395..4d538eb 100644
--- a/smolbote.qbs
+++ b/smolbote.qbs
@@ -54,11 +54,18 @@ Project {
files: [
"data/resources.qrc",
+ "src/blocker/blockermanager.cpp",
+ "src/blocker/blockermanager.h",
+ "src/blocker/blockerrule.cpp",
+ "src/blocker/blockerrule.h",
+ "src/blocker/blockersubscription.cpp",
+ "src/blocker/blockersubscription.h",
+ "src/blocker/regexp.cpp",
+ "src/blocker/regexp.h",
+ "src/blocker/subscriptiondialog.ui",
+ "src/blocker/subscriptionform.ui",
"src/browser.cpp",
"src/browser.h",
- "src/forms/blockerdialog.cpp",
- "src/forms/blockerdialog.h",
- "src/forms/blockerdialog.ui",
"src/forms/bookmarksdialog.cpp",
"src/forms/bookmarksdialog.h",
"src/forms/bookmarksdialog.ui",
@@ -74,15 +81,9 @@ Project {
"src/mainwindow.ui",
"src/settings.cpp",
"src/settings.h",
- "src/webengine/blockerrule.cpp",
- "src/webengine/blockerrule.h",
- "src/webengine/blockersubscription.cpp",
- "src/webengine/blockersubscription.h",
"src/webengine/downloaditemform.cpp",
"src/webengine/downloaditemform.h",
"src/webengine/downloaditemform.ui",
- "src/webengine/regexp.cpp",
- "src/webengine/regexp.h",
"src/webengine/urlinterceptor.cpp",
"src/webengine/urlinterceptor.h",
"src/webengine/webengineprofile.cpp",
diff --git a/src/forms/blockerdialog.cpp b/src/blocker/blockermanager.cpp
index 9c6bd0a..3dd516c 100644
--- a/src/forms/blockerdialog.cpp
+++ b/src/blocker/blockermanager.cpp
@@ -18,47 +18,28 @@
**
******************************************************************************/
-#include "blockerdialog.h"
-#include "ui_blockerdialog.h"
+#include "blockermanager.h"
+#include "ui_subscriptiondialog.h"
#include "browser.h"
#include <QLabel>
#include <QListWidget>
-BlockerDialog::BlockerDialog(QWidget *parent) :
+#include "blocker/blockersubscription.h"
+
+BlockerManager::BlockerManager(QWidget *parent) :
QDialog(parent),
ui(new Ui::UrlInterceptorDialog)
{
ui->setupUi(this);
- m_subscription = new BlockerSubscription(this);
- QString sublocation = sSettings->value("blocker.path").toString();
- if(!sublocation.isEmpty()) {
- m_subscription->loadFromFile(sublocation);
- }
-
- ui->title->setText(m_subscription->title());
- ui->homepage->setText(m_subscription->homepage());
- ui->license->setText(m_subscription->license());
- ui->version->setText(m_subscription->version());
- ui->lastModified->setText(m_subscription->lastModified().toString());
- ui->expires->setText(m_subscription->expires().toString());
-
- // show subscription items
- for(BlockerRule *rule : m_subscription->urlBlacklist()) {
- ui->blacklist_listWidget->addItem(rule->toString());
- }
- for(BlockerRule *rule : m_subscription->urlWhitelist()) {
- ui->whitelist_listWidget->addItem(rule->toString());
+ for(QString listUrl : sSettings->value("blocker.subscriptions").toStringList()) {
+ BlockerSubscription *sub = new BlockerSubscription(listUrl, this);
+ ui->tabWidget->addTab(sub, sub->name());
}
}
-BlockerDialog::~BlockerDialog()
+BlockerManager::~BlockerManager()
{
delete ui;
}
-
-BlockerSubscription* BlockerDialog::subscription()
-{
- return m_subscription;
-}
diff --git a/src/forms/blockerdialog.h b/src/blocker/blockermanager.h
index 6970795..eb5e04e 100644
--- a/src/forms/blockerdialog.h
+++ b/src/blocker/blockermanager.h
@@ -22,24 +22,21 @@
#define URLINTERCEPTORDIALOG_H
#include <QDialog>
-#include "webengine/blockersubscription.h"
namespace Ui {
class UrlInterceptorDialog;
}
-class BlockerDialog : public QDialog
+class BlockerManager : public QDialog
{
Q_OBJECT
public:
- explicit BlockerDialog(QWidget *parent = 0);
- ~BlockerDialog();
- BlockerSubscription *subscription();
+ explicit BlockerManager(QWidget *parent = 0);
+ ~BlockerManager();
private:
Ui::UrlInterceptorDialog *ui;
- BlockerSubscription *m_subscription;
};
#endif // URLINTERCEPTORDIALOG_H
diff --git a/src/webengine/blockerrule.cpp b/src/blocker/blockerrule.cpp
index 79669b9..1c118e2 100644
--- a/src/webengine/blockerrule.cpp
+++ b/src/blocker/blockerrule.cpp
@@ -32,13 +32,13 @@ BlockerRule::BlockerRule(QString rule, QObject *parent) :
// Empty rule or comment
if(pattern.trimmed().isEmpty() || pattern.startsWith("!")) {
- m_type = RuleType::Invalid;
+ m_valid = false;
return;
}
// Ignore element hiding rules for now
if(pattern.contains("##") || pattern.contains("#@#")) {
- m_type = RuleType::Invalid;
+ m_valid = false;
return;
}
@@ -96,7 +96,7 @@ BlockerRule::BlockerRule(QString rule, QObject *parent) :
// Regular expression
if(rule.startsWith("/") && rule.endsWith("/")) {
- m_type = RuleType::RegularExpressionMatch;
+ m_valid = true;
ruleExpression.setPattern(pattern);
return;
}
@@ -118,40 +118,39 @@ BlockerRule::BlockerRule(QString rule, QObject *parent) :
// Regular rule
ruleExpression.setWildcardPattern(pattern);
- m_type = RuleType::RegularExpressionMatch;
+ m_valid = true;
}
bool BlockerRule::match(const QWebEngineUrlRequestInfo &info)
{
- switch (m_type) {
- case RuleType::Invalid:
- break;
+ if(!m_valid) {
+ return false;
+ }
- case RuleType::RegularExpressionMatch:
- if(domainExpression.match(info.requestUrl().host())) {
- if(ruleExpression.match(info.requestUrl().toString())) {
- if(matchOptions(info, m_whitelistOptions)) {
- return false;
- }
- if(matchOptions(info, m_blacklistOptions)) {
- return true;
- }
- return true;
- }
+ // if both domain and rule match
+ if(domainExpression.match(info.requestUrl().host()) && ruleExpression.match(info.requestUrl().toString())) {
+
+ // option explicitly allows
+ if(matchOptions(info, m_whitelistOptions)) {
+ return false;
}
- break;
+
+ // option explicitly bans
+ if(matchOptions(info, m_blacklistOptions)) {
+ return true;
+ }
+
+ // no options, but both domain and rule match --> rule matches
+ return true;
}
+ // domain and/or rule do not match
return false;
}
bool BlockerRule::isValid()
{
- if(m_type == RuleType::Invalid) {
- return false;
- } else {
- return true;
- }
+ return m_valid;
}
bool BlockerRule::isException()
{
@@ -170,41 +169,41 @@ bool BlockerRule::matchOptions(const QWebEngineUrlRequestInfo &info, const RuleO
return false;
}
- bool ret = false;
+ bool hasOption = false;
switch (info.resourceType()) {
case QWebEngineUrlRequestInfo::ResourceTypeScript:
if(options.testFlag(RuleOption::script)) {
- ret = true;
+ hasOption = true;
}
break;
case QWebEngineUrlRequestInfo::ResourceTypeImage:
if(options.testFlag(RuleOption::image)) {
- ret = true;
+ hasOption = true;
}
break;
case QWebEngineUrlRequestInfo::ResourceTypeStylesheet:
if(options.testFlag(RuleOption::stylesheet)) {
- ret = true;
+ hasOption = true;
}
break;
case QWebEngineUrlRequestInfo::ResourceTypeObject:
if(options.testFlag(RuleOption::object)) {
- ret = true;
+ hasOption = true;
}
break;
case QWebEngineUrlRequestInfo::ResourceTypePluginResource:
if(options.testFlag(RuleOption::objectsubrequest)) {
- ret = true;
+ hasOption = true;
}
break;
case QWebEngineUrlRequestInfo::ResourceTypeSubFrame:
if(options.testFlag(RuleOption::subdocument)) {
- ret = true;
+ hasOption = true;
}
break;
default:
break;
}
- return ret;
+ return hasOption;
}
diff --git a/src/webengine/blockerrule.h b/src/blocker/blockerrule.h
index bdb2eb9..0981514 100644
--- a/src/webengine/blockerrule.h
+++ b/src/blocker/blockerrule.h
@@ -30,11 +30,6 @@ class BlockerRule : public QObject
{
Q_OBJECT
public:
- enum RuleType {
- Invalid,
- RegularExpressionMatch
- };
-
enum RuleOption {
script = 1,
image = 2,
@@ -70,7 +65,7 @@ public slots:
private:
bool matchOptions(const QWebEngineUrlRequestInfo &info, const RuleOptions &options);
- RuleType m_type;
+ bool m_valid;
bool m_exception = false;
QStringList hostsBlacklist;
QStringList hostsWhitelist;
diff --git a/src/webengine/blockersubscription.cpp b/src/blocker/blockersubscription.cpp
index 40d3e9f..02def48 100644
--- a/src/webengine/blockersubscription.cpp
+++ b/src/blocker/blockersubscription.cpp
@@ -19,29 +19,59 @@
******************************************************************************/
#include "blockersubscription.h"
+#include "ui_subscriptionform.h"
+#include "browser.h"
#include <QFile>
-#include <QTextStream>
+#include <QNetworkRequest>
+#include <QNetworkReply>
-BlockerSubscription::BlockerSubscription(QObject *parent) :
- QObject(parent)
+BlockerSubscription::BlockerSubscription(const QString url, QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::SubscriptionForm)
{
+ ui->setupUi(this);
+ QUrl _url = QUrl::fromUserInput(url);
+ m_name = _url.fileName();
+
+ if(!sSettings->value("blocker.path").toString().isEmpty()) {
+ QString cacheName = sSettings->value("blocker.path").toString() + m_name;
+ QFile *cache = new QFile(cacheName);
+ if(cache->exists()) {
+ load(cache);
+ }
+
+ } else {
+
+ // no cache path specified - pull the subscription
+ QNetworkRequest request;
+ request.setUrl(QUrl::fromUserInput(url));
+
+ QNetworkReply *reply = sNetwork->get(request);
+ connect(reply, &QNetworkReply::finished, [this, reply]() {
+ this->load(reply);
+ });
+ }
}
-int BlockerSubscription::loadFromFile(const QString &file)
+BlockerSubscription::~BlockerSubscription()
{
- QFile subfile(file);
- if(!subfile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- qDebug("Cannot open subscription: %s", qUtf8Printable(file));
- return -1;
- }
+ delete ui;
+}
+
+QString BlockerSubscription::name() const
+{
+ return m_name;
+}
- QTextStream subscription(&subfile);
+void BlockerSubscription::load(QIODevice *dev)
+{
+ QTextStream subscription(dev);
QString header = subscription.readLine();
- if(header != "[Adblock Plus 2.0]") {
- qDebug("Invalid format of subscription: %s", qUtf8Printable(file));
- return -1;
+ if(!header.startsWith("[Adblock Plus")) {
+ qDebug("Invalid format of subscription: %s", qUtf8Printable(m_name));
+ return;
}
// clear all lists
@@ -63,7 +93,9 @@ int BlockerSubscription::loadFromFile(const QString &file)
if(rule->isValid()) {
if(rule->isException()) {
m_urlWhitelist.append(rule);
+ ui->whitelist_listWidget->addItem(rule->toString());
} else {
+ ui->blacklist_listWidget->addItem(rule->toString());
m_urlBlacklist.append(rule);
}
}
@@ -72,74 +104,35 @@ int BlockerSubscription::loadFromFile(const QString &file)
}
}
- qDebug("Loaded %i/%i rules from subscription %s", m_urlBlacklist.count() + m_urlWhitelist.count(), rules, qUtf8Printable(file));
- return rules;
-}
-
-const QString BlockerSubscription::title()
-{
- return m_title;
-}
-
-const QString BlockerSubscription::homepage()
-{
- return m_homepage;
+ qDebug("Loaded %i/%i rules from subscription %s", m_urlBlacklist.count() + m_urlWhitelist.count(), rules, qUtf8Printable(m_name));
+ dev->deleteLater();
}
-const QString BlockerSubscription::license()
-{
- return m_license;
-}
-
-const QString BlockerSubscription::version()
-{
- return m_version;
-}
-
-const QDateTime BlockerSubscription::lastModified()
-{
- return m_lastModified;
-}
-
-const QDateTime BlockerSubscription::expires()
-{
- return m_expires;
-}
-
-const QList<BlockerRule*> BlockerSubscription::urlBlacklist()
-{
- return m_urlBlacklist;
-}
-
-const QList<BlockerRule*> BlockerSubscription::urlWhitelist()
-{
- return m_urlWhitelist;
-}
void BlockerSubscription::parseComment(const QString &line)
{
if(line.startsWith("! Title: ")) {
- m_title = line.right(line.length() - 9);
+ ui->title->setText(line.right(line.length() - 9));
return;
}
if(line.startsWith("! Homepage: ")) {
- m_homepage = line.right(line.length() - 12);
+ ui->homepage->setText(line.right(line.length() - 12));
return;
}
if(line.startsWith("! Licence: ")) {
- m_license = line.right(line.length() - 11);
+ ui->license->setText(line.right(line.length() - 11));
return;
}
if(line.startsWith("! Version: ")) {
- m_version = line.right(line.length() - 11);
+ ui->version->setText(line.right(line.length() - 11));
return;
}
if(line.startsWith("! Last modified: ")) {
- m_lastModified = QDateTime::fromString(line.right(line.length() - 17), Qt::RFC2822Date);
+ ui->lastModified->setText(line.right(line.length() - 17));
return;
}
if(line.startsWith("! Expires: ")) {
- m_expires = m_lastModified.addDays(line.right(line.length() - 11).left(2).toInt());
+ ui->expires->setText(line.right(line.length() - 11).left(2));
return;
}
}
diff --git a/src/webengine/blockersubscription.h b/src/blocker/blockersubscription.h
index b8e3b9a..fddb93d 100644
--- a/src/webengine/blockersubscription.h
+++ b/src/blocker/blockersubscription.h
@@ -18,50 +18,38 @@
**
******************************************************************************/
-#ifndef URLINTERCEPTORSUBSCRIPTION_H
-#define URLINTERCEPTORSUBSCRIPTION_H
+#ifndef SUBSCRIPTIONFORM_H
+#define SUBSCRIPTIONFORM_H
-#include <QObject>
-#include <QDateTime>
-#include "blockerrule.h"
+#include <QWidget>
+#include "blocker/blockerrule.h"
-class BlockerSubscription : public QObject
+namespace Ui {
+class SubscriptionForm;
+}
+
+class BlockerSubscription : public QWidget
{
Q_OBJECT
-public:
- explicit BlockerSubscription(QObject *parent = 0);
-
- int loadFromFile(const QString &file);
-
- const QString title();
- const QString homepage();
- const QString license();
- const QString version();
- const QDateTime lastModified();
- const QDateTime expires();
- const QList<BlockerRule*> urlBlacklist();
- const QList<BlockerRule*> urlWhitelist();
+public:
+ explicit BlockerSubscription(const QString url, QWidget *parent = 0);
+ ~BlockerSubscription();
-signals:
+ QString name() const;
-public slots:
+private slots:
+ void load(QIODevice *dev);
private:
void parseComment(const QString &line);
- QString m_title;
- QString m_homepage;
- QString m_license;
-
- QString m_version;
- QDateTime m_lastModified;
- QDateTime m_expires;
+ Ui::SubscriptionForm *ui;
+ QString m_name;
QList<BlockerRule*> m_urlWhitelist; // exception rules
QList<BlockerRule*> m_urlBlacklist; // block rules
- // element exceptions
- // element blocking
+
};
-#endif // URLINTERCEPTORSUBSCRIPTION_H
+#endif // SUBSCRIPTIONFORM_H
diff --git a/src/webengine/regexp.cpp b/src/blocker/regexp.cpp
index 4a5878a..a8dff79 100644
--- a/src/webengine/regexp.cpp
+++ b/src/blocker/regexp.cpp
@@ -27,9 +27,11 @@ RegExp::RegExp() :
bool RegExp::match(const QString &subject, int offset, MatchType matchType, MatchOptions matchOptions) const
{
+ // Empty matches all
if(pattern().isEmpty()) {
return true;
}
+
return QRegularExpression::match(subject, offset, matchType, matchOptions).hasMatch();
}
diff --git a/src/webengine/regexp.h b/src/blocker/regexp.h
index d66a98d..16827ad 100644
--- a/src/webengine/regexp.h
+++ b/src/blocker/regexp.h
@@ -23,6 +23,9 @@
#include <QRegularExpression>
+/*!
+ * Regular Expression class for AdBlockPlus filters
+ */
class RegExp : public QRegularExpression
{
public:
diff --git a/src/blocker/subscriptiondialog.ui b/src/blocker/subscriptiondialog.ui
new file mode 100644
index 0000000..7a63cc9
--- /dev/null
+++ b/src/blocker/subscriptiondialog.ui
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UrlInterceptorDialog</class>
+ <widget class="QDialog" name="UrlInterceptorDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>640</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Blocker</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTabWidget" name="tabWidget"/>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>UrlInterceptorDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>UrlInterceptorDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/forms/blockerdialog.ui b/src/blocker/subscriptionform.ui
index a84dac8..703fb6d 100644
--- a/src/forms/blockerdialog.ui
+++ b/src/blocker/subscriptionform.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>UrlInterceptorDialog</class>
- <widget class="QDialog" name="UrlInterceptorDialog">
+ <class>SubscriptionForm</class>
+ <widget class="QWidget" name="SubscriptionForm">
<property name="geometry">
<rect>
<x>0</x>
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>Blocker</string>
+ <string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -142,51 +142,8 @@
</widget>
</widget>
</item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Close</set>
- </property>
- </widget>
- </item>
</layout>
</widget>
<resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>UrlInterceptorDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>UrlInterceptorDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
+ <connections/>
</ui>
diff --git a/src/browser.cpp b/src/browser.cpp
index 4b49cbe..4697ac5 100644
--- a/src/browser.cpp
+++ b/src/browser.cpp
@@ -37,6 +37,7 @@ Browser::~Browser()
qDeleteAll(m_windows);
m_windows.clear();
+ delete m_networkAccessManager;
delete m_bookmarksManager;
delete m_downloadManager;
}
@@ -88,6 +89,7 @@ bool Browser::preLaunch(QStringList urls)
}
}
+ m_networkAccessManager = new QNetworkAccessManager();
m_bookmarksManager = new BookmarksDialog;
m_downloadManager = new DownloadDialog;
@@ -106,6 +108,11 @@ Settings *Browser::settings()
return m_settings;
}
+QNetworkAccessManager *Browser::network()
+{
+ return m_networkAccessManager;
+}
+
BookmarksDialog *Browser::bookmarks()
{
return m_bookmarksManager;
diff --git a/src/browser.h b/src/browser.h
index 0a6702f..aa7c605 100644
--- a/src/browser.h
+++ b/src/browser.h
@@ -27,8 +27,10 @@
#include "forms/downloaddialog.h"
#include <QLocalServer>
#include "settings.h"
+#include <QNetworkAccessManager>
#define sSettings Browser::instance()->settings()
+#define sNetwork Browser::instance()->network()
class MainWindow;
class Browser : public QApplication
@@ -45,6 +47,7 @@ public:
static Browser *instance();
Settings *settings();
+ QNetworkAccessManager *network();
BookmarksDialog *bookmarks();
DownloadDialog *downloads();
@@ -62,6 +65,7 @@ private:
Settings *m_settings;
QLocalServer *m_localServer;
QVector<MainWindow*> m_windows;
+ QNetworkAccessManager *m_networkAccessManager;
BookmarksDialog *m_bookmarksManager;
DownloadDialog *m_downloadManager;
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 18c1e14..f455fae 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -30,7 +30,7 @@
MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) :
QMainWindow(parent),
- blocklistManager(new BlockerDialog(this)),
+ blocklistManager(new BlockerManager(this)),
ui(new Ui::MainWindow),
navigationToolBar(new QToolBar(tr("Navigation"), this)),
tabToolBar(new QToolBar(tr("Tab bar"), this)),
@@ -62,7 +62,7 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) :
QAction *bookmarksAction = toolsMenu->addAction(tr("Bookmarks"), Browser::instance()->bookmarks(), SLOT(show()));
bookmarksAction->setShortcut(QKeySequence(sSettings->value("bookmarks.dialogShortcut").toString()));
toolsMenu->addSeparator();
- toolsMenu->addAction(tr("Blocker"), blocklistManager, SLOT(show()));
+ toolsMenu->addAction(tr("Blocker"), blocklistManager, SLOT(show()), QKeySequence::fromString(sSettings->value("blocker.shortcut").toString()));
// Profile menu
QMenu *profileMenu = new QMenu(tr("Profile"), menuBar);
@@ -181,7 +181,7 @@ void MainWindow::loadProfile(const QString &name)
}
UrlRequestInterceptor *interceptor = new UrlRequestInterceptor(this);
- interceptor->setSubscription(blocklistManager->subscription());
+ interceptor->setSubscription(blocklistManager);
m_profile->setRequestInterceptor(interceptor);
connect(m_profile, SIGNAL(downloadRequested(QWebEngineDownloadItem*)), Browser::instance()->downloads(), SLOT(addDownload(QWebEngineDownloadItem*)));
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index afc5537..da2b429 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -30,7 +30,7 @@
#include <QUrl>
#include "widgets/webviewtabbar.h"
#include "webengine/urlinterceptor.h"
-#include "forms/blockerdialog.h"
+#include "blocker/blockermanager.h"
#include "widgets/loadingbar.h"
namespace Ui {
@@ -67,7 +67,7 @@ private slots:
void handleTitleUpdated(const QString &title);
private:
- BlockerDialog *blocklistManager;
+ BlockerManager *blocklistManager;
WebEngineProfile *m_profile = nullptr;
// ui
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 24266d7..46f241a 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -15,26 +15,6 @@
</property>
<widget class="QWidget" name="centralWidget"/>
<widget class="QStatusBar" name="statusBar"/>
- <action name="actionNew_Window">
- <property name="text">
- <string>New Window</string>
- </property>
- </action>
- <action name="actionNew_Tab">
- <property name="text">
- <string>New Tab</string>
- </property>
- </action>
- <action name="actionOpen">
- <property name="text">
- <string>Open</string>
- </property>
- </action>
- <action name="actionQuit">
- <property name="text">
- <string>Quit</string>
- </property>
- </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
diff --git a/src/webengine/urlinterceptor.cpp b/src/webengine/urlinterceptor.cpp
index 9352af6..3c6a56e 100644
--- a/src/webengine/urlinterceptor.cpp
+++ b/src/webengine/urlinterceptor.cpp
@@ -27,27 +27,10 @@ UrlRequestInterceptor::UrlRequestInterceptor(QObject *parent) :
void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info)
{
- for(BlockerRule *rule : m_sub->urlWhitelist()) {
- if(rule->match(info)) {
- qDebug("OK %i %s", info.resourceType(), qUtf8Printable(info.requestUrl().toString()));
- return;
- }
- }
-
- for(BlockerRule *rule : m_sub->urlBlacklist()) {
- if(rule->match(info)) {
- info.block(true);
- qDebug(" %i %s", info.resourceType(), qUtf8Printable(info.requestUrl().toString()));
- return;
- }
- }
-
- // rule is neither in whitelist nor blacklist
- qDebug("OK %i %s", info.resourceType(), qUtf8Printable(info.requestUrl().toString()));
-
+ //
}
-void UrlRequestInterceptor::setSubscription(BlockerSubscription *subscription)
+void UrlRequestInterceptor::setSubscription(BlockerManager *subscription)
{
- m_sub = subscription;
+ m_blocker = subscription;
}
diff --git a/src/webengine/urlinterceptor.h b/src/webengine/urlinterceptor.h
index 0f9fe65..00fe666 100644
--- a/src/webengine/urlinterceptor.h
+++ b/src/webengine/urlinterceptor.h
@@ -22,7 +22,7 @@
#define ADBLOCKINTERCEPTOR_H
#include <QWebEngineUrlRequestInterceptor>
-#include "blockersubscription.h"
+#include "blocker/blockermanager.h"
class UrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
@@ -31,14 +31,14 @@ public:
explicit UrlRequestInterceptor(QObject *parent = 0);
void interceptRequest(QWebEngineUrlRequestInfo &info);
- void setSubscription(BlockerSubscription *subscription);
+ void setSubscription(BlockerManager *subscription);
signals:
public slots:
private:
- BlockerSubscription *m_sub;
+ BlockerManager *m_blocker;
};
#endif // ADBLOCKINTERCEPTOR_H
diff --git a/test/blocklist.txt b/test/blocklist.txt
deleted file mode 100644
index f67b77c..0000000
--- a/test/blocklist.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-[Adblock Plus 2.0]
-! Version: 0
-! Title: Test blocklist
-! Last modified: 5 Feb 2017 00:00 UTC
-! Expires: 4 days (update frequency)
-! Homepage: https://gitlab.com/xiannox/smolbote
-! Licence: n/a
-
-||duckduckgo.com^t1256.css