From cc9c3680c1aa809d1a3e52e2c888bf9ea1a35035 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 16 Jun 2015 20:10:37 +0200 Subject: [PATCH] Extensive work on Adblock. --- CMakeLists.txt | 4 - .../icons/mini-kfaenza/view-fullscreen.png | Bin 2408 -> 2380 bytes .../mini-kfaenza/web-adblock-disabled.png | Bin 0 -> 5294 bytes .../icons/mini-kfaenza/web-adblock.png | Bin 3748 -> 6409 bytes src/gui/formmain.cpp | 1 + src/gui/plaintoolbutton.cpp | 9 +- src/gui/plaintoolbutton.h | 3 + src/gui/statusbar.cpp | 15 ++- src/gui/statusbar.h | 17 ++- src/network-web/adblock/adblockdialog.cpp | 6 +- src/network-web/adblock/adblockdialog.h | 55 +++++----- src/network-web/adblock/adblockdialog.ui | 37 +++++-- src/network-web/adblock/adblockicon.cpp | 49 ++++----- src/network-web/adblock/adblockicon.h | 59 +++++----- src/network-web/adblock/adblockmanager.cpp | 13 ++- src/network-web/adblock/adblockmanager.h | 83 +++++++------- .../adblock/adblocksubscription.cpp | 10 +- src/network-web/adblock/adblocksubscription.h | 102 +++++++++--------- 18 files changed, 237 insertions(+), 226 deletions(-) create mode 100644 resources/graphics/icons/mini-kfaenza/web-adblock-disabled.png diff --git a/CMakeLists.txt b/CMakeLists.txt index a64516256..9f06d824b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -431,8 +431,6 @@ set(APP_SOURCES src/network-web/adblock/adblocktreewidget.cpp src/network-web/adblock/followredirectreply.cpp - - # MAIN sources. src/main.cpp ) @@ -526,8 +524,6 @@ set(APP_HEADERS src/network-web/adblock/adblockicon.h src/network-web/adblock/adblockmanager.h src/network-web/adblock/adblockmatcher.h - src/network-web/adblock/adblockrule.h - src/network-web/adblock/adblocksearchtree.h src/network-web/adblock/adblocksubscription.h src/network-web/adblock/adblocktreewidget.h src/network-web/adblock/followredirectreply.h diff --git a/resources/graphics/icons/mini-kfaenza/view-fullscreen.png b/resources/graphics/icons/mini-kfaenza/view-fullscreen.png index ef92f8e76c921d08c9e5291dd6caec80a1c28420..f66ed81c2132ae56f36e2ad1846a1220a273183d 100644 GIT binary patch delta 2369 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 literal 0 HcmV?d00001 diff --git a/resources/graphics/icons/mini-kfaenza/web-adblock.png b/resources/graphics/icons/mini-kfaenza/web-adblock.png index b18972d03fe7d07f0d33a226b4d298337ec8e5e7..fb6222e42c79997244a105bbe9942936f526f630 100644 GIT binary patch literal 6409 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 literal 3748 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 @@ -31,11 +33,10 @@ StatusBar::StatusBar(QWidget *parent) : QStatusBar(parent) { setSizeGripEnabled(false); setContentsMargins(0, 0, 0, 0); - adblockIcon_ = new AdBlockIcon(this); + m_adblockIcon = new AdBlockIcon(this); // Initializations of widgets for status bar. - m_fullscreenSwitcher = new QToolButton(this); - m_fullscreenSwitcher->setAutoRaise(true); + m_fullscreenSwitcher = new PlainToolButton(this); m_fullscreenSwitcher->setCheckable(true); m_fullscreenSwitcher->setIcon(qApp->icons()->fromTheme("view-fullscreen")); m_fullscreenSwitcher->setText(tr("Fullscreen mode")); @@ -68,22 +69,18 @@ StatusBar::StatusBar(QWidget *parent) : QStatusBar(parent) { addPermanentWidget(m_barProgressFeeds); addPermanentWidget(m_lblProgressDownload); addPermanentWidget(m_barProgressDownload); + addPermanentWidget(m_adblockIcon); addPermanentWidget(m_fullscreenSwitcher); - addPermanentWidget(adblockIcon_); } StatusBar::~StatusBar() { qDebug("Destroying StatusBar instance."); } -void StatusBar::displayDownloadManager() { - qApp->mainForm()->tabWidget()->showDownloadManager(); -} - bool StatusBar::eventFilter(QObject *watched, QEvent *event) { if (watched == m_lblProgressDownload || watched == m_barProgressDownload) { if (event->type() == QEvent::MouseButtonPress) { - displayDownloadManager(); + qApp->mainForm()->tabWidget()->showDownloadManager(); } } diff --git a/src/gui/statusbar.h b/src/gui/statusbar.h index 4a790b6ac..dd8bf72f1 100755 --- a/src/gui/statusbar.h +++ b/src/gui/statusbar.h @@ -20,12 +20,11 @@ #include -#include - class QProgressBar; -class QToolButton; +class PlainToolButton; class QLabel; +class AdBlockIcon; class StatusBar : public QStatusBar { Q_OBJECT @@ -35,11 +34,13 @@ class StatusBar : public QStatusBar { explicit StatusBar(QWidget *parent = 0); virtual ~StatusBar(); - inline QToolButton *fullscreenSwitcher() const { + inline PlainToolButton *fullscreenSwitcher() const { return m_fullscreenSwitcher; } - AdBlockIcon *adBlockIcon() { return adblockIcon_; } + inline AdBlockIcon *adBlockIcon() { + return m_adblockIcon; + } public slots: // Progress bar operations @@ -49,8 +50,6 @@ class StatusBar : public QStatusBar { void showProgressDownload(int progress, const QString &tooltip); void clearProgressDownload(); - void displayDownloadManager(); - protected: bool eventFilter(QObject *watched, QEvent *event); @@ -59,8 +58,8 @@ class StatusBar : public QStatusBar { QLabel *m_lblProgressFeeds; QProgressBar *m_barProgressDownload; QLabel *m_lblProgressDownload; - QToolButton *m_fullscreenSwitcher; - AdBlockIcon* adblockIcon_; + PlainToolButton *m_fullscreenSwitcher; + AdBlockIcon* m_adblockIcon; }; #endif // STATUSBAR_H diff --git a/src/network-web/adblock/adblockdialog.cpp b/src/network-web/adblock/adblockdialog.cpp index 8681b3e21..f7dff329c 100755 --- a/src/network-web/adblock/adblockdialog.cpp +++ b/src/network-web/adblock/adblockdialog.cpp @@ -89,6 +89,10 @@ AdBlockDialog::AdBlockDialog(QWidget* parent) buttonBox->setFocus(); } +AdBlockDialog::~AdBlockDialog() { + qDebug("Destroying AdBlockDialog instance."); +} + void AdBlockDialog::showRule(const AdBlockRule* rule) const { AdBlockSubscription* subscription = rule->subscription(); @@ -210,7 +214,7 @@ void AdBlockDialog::load() m_loaded = true; - QTimer::singleShot(50, this, SLOT(loadSubscriptions())); + QTimer::singleShot(100, this, SLOT(loadSubscriptions())); } void AdBlockDialog::closeEvent(QCloseEvent* ev) diff --git a/src/network-web/adblock/adblockdialog.h b/src/network-web/adblock/adblockdialog.h index 7563b23f0..ca834ce93 100755 --- a/src/network-web/adblock/adblockdialog.h +++ b/src/network-web/adblock/adblockdialog.h @@ -46,44 +46,45 @@ class AdBlockRule; class AdBlockDialog : public QWidget, public Ui_AdBlockDialog { - Q_OBJECT + Q_OBJECT -public: - explicit AdBlockDialog(QWidget* parent = 0); + public: + explicit AdBlockDialog(QWidget* parent = 0); + virtual ~AdBlockDialog(); - void showRule(const AdBlockRule* rule) const; + void showRule(const AdBlockRule* rule) const; -private slots: - void addRule(); - void removeRule(); + private slots: + void addRule(); + void removeRule(); - void addSubscription(); - void removeSubscription(); + void addSubscription(); + void removeSubscription(); - void currentChanged(int index); - void filterString(const QString &string); - void enableAdBlock(bool state); + void currentChanged(int index); + void filterString(const QString &string); + void enableAdBlock(bool state); - void aboutToShowMenu(); - void learnAboutRules(); + void aboutToShowMenu(); + void learnAboutRules(); - void loadSubscriptions(); - void load(); + void loadSubscriptions(); + void load(); -private: - void closeEvent(QCloseEvent* ev); + private: + void closeEvent(QCloseEvent* ev); - AdBlockManager* m_manager; - AdBlockTreeWidget* m_currentTreeWidget; - AdBlockSubscription* m_currentSubscription; + AdBlockManager* m_manager; + AdBlockTreeWidget* m_currentTreeWidget; + AdBlockSubscription* m_currentSubscription; - QAction* m_actionAddRule; - QAction* m_actionRemoveRule; - QAction* m_actionAddSubscription; - QAction* m_actionRemoveSubscription; + QAction* m_actionAddRule; + QAction* m_actionRemoveRule; + QAction* m_actionAddSubscription; + QAction* m_actionRemoveSubscription; - bool m_loaded; - bool m_useLimitedEasyList; + bool m_loaded; + bool m_useLimitedEasyList; }; #endif // ADBLOCKDIALOG_H diff --git a/src/network-web/adblock/adblockdialog.ui b/src/network-web/adblock/adblockdialog.ui index 067a0437f..98eff9d73 100755 --- a/src/network-web/adblock/adblockdialog.ui +++ b/src/network-web/adblock/adblockdialog.ui @@ -57,7 +57,16 @@ true - + + 0 + + + 0 + + + 0 + + 0 @@ -67,10 +76,6 @@ Options - - - :/images/images/adblock.png:/images/images/adblock.png - @@ -129,7 +134,7 @@ Qt::Horizontal - QDialogButtonBox::Ok + QDialogButtonBox::Close @@ -137,9 +142,7 @@ - - - + adblockCheckBox @@ -157,5 +160,21 @@ + + buttonBox + clicked(QAbstractButton*) + AdBlockDialog + close() + + + 434 + 440 + + + 272 + 230 + + + diff --git a/src/network-web/adblock/adblockicon.cpp b/src/network-web/adblock/adblockicon.cpp index 72b0065da..fa61eebac 100755 --- a/src/network-web/adblock/adblockicon.cpp +++ b/src/network-web/adblock/adblockicon.cpp @@ -32,16 +32,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . * ============================================================ */ -#include "adblockicon.h" -#include "adblockrule.h" -#include "adblockmanager.h" -#include "adblocksubscription.h" -#include "webpage.h" +#include "network-web/adblock/adblockicon.h" + +#include "network-web/adblock/adblockrule.h" +#include "network-web/adblock/adblockmanager.h" +#include "network-web/adblock/adblocksubscription.h" +#include "network-web/webpage.h" +#include "network-web/webbrowser.h" #include "miscellaneous/application.h" +#include "gui/plaintoolbutton.h" #include "gui/formmain.h" #include "gui/tabwidget.h" -#include "network-web/webbrowser.h" #include #include @@ -50,27 +52,13 @@ AdBlockIcon::AdBlockIcon(QWidget *window, QWidget *parent) - : QToolButton(parent) - , m_window(window) - , m_menuAction(0) - , m_flashTimer(0) - , m_timerTicks(0) - , m_enabled(false) -{ - setFocusPolicy(Qt::NoFocus); - setStyleSheet("QToolButton { border: none; padding: 0px; }"); + : PlainToolButton(parent), m_window(window), m_menuAction(0), m_flashTimer(0), m_timerTicks(0), m_enabled(false) { + setToolTip(tr("Adblock lets you block unwanted content on web pages.")); connect(this, SIGNAL(clicked(QPoint)), this, SLOT(showMenu(QPoint))); connect(AdBlockManager::instance(), SIGNAL(enabledChanged(bool)), this, SLOT(setEnabled(bool))); } -void AdBlockIcon::retranslateStrings() -{ - setToolTip(tr("AdBlock lets you block unwanted content on web pages")); - - AdBlockManager::instance()->customList()->retranslateStrings(); -} - void AdBlockIcon::popupBlocked(const QString &ruleString, const QUrl &url) { int index = ruleString.lastIndexOf(QLatin1String(" (")); @@ -117,24 +105,25 @@ QAction* AdBlockIcon::menuAction() return m_menuAction; } -void AdBlockIcon::createMenu(QMenu* menu) +void AdBlockIcon::createMenu(QMenu *menu) { - if (!menu) { + if (menu == NULL) { menu = qobject_cast(sender()); - if (!menu) { + + if (menu == NULL) { return; } } menu->clear(); - AdBlockManager* manager = AdBlockManager::instance(); - AdBlockCustomList* customList = manager->customList(); + AdBlockManager *manager = AdBlockManager::instance(); + AdBlockCustomList *customList = manager->customList(); WebPage* page = qApp->mainForm()->tabWidget()->widget(qApp->mainForm()->tabWidget()->currentIndex())->webBrowser()->view()->page(); const QUrl pageUrl = page->mainFrame()->url(); - menu->addAction(tr("Show AdBlock &Settings"), manager, SLOT(showDialog())); + menu->addAction(tr("Show Adblock &settings"), manager, SLOT(showDialog())); menu->addSeparator(); if (!pageUrl.host().isEmpty() && m_enabled && manager->canRunOnScheme(pageUrl.scheme())) { @@ -244,10 +233,10 @@ void AdBlockIcon::stopAnimation() void AdBlockIcon::setEnabled(bool enabled) { if (enabled) { - setIcon(QIcon(":images/images/adblock.png")); + setIcon(qApp->icons()->fromTheme("web-adblock")); } else { - setIcon(QIcon(":images/images/adblock-disabled.png")); + setIcon(qApp->icons()->fromTheme("web-adblock-disabled")); } m_enabled = enabled; diff --git a/src/network-web/adblock/adblockicon.h b/src/network-web/adblock/adblockicon.h index c16b186ad..259d8bec0 100755 --- a/src/network-web/adblock/adblockicon.h +++ b/src/network-web/adblock/adblockicon.h @@ -35,50 +35,49 @@ #ifndef ADBLOCKICON_H #define ADBLOCKICON_H -#include +#include "gui/plaintoolbutton.h" -#include "adblockrule.h" class QMenu; class QUrl; -class MainWindow; +class AdBlockRule; -class AdBlockIcon : public QToolButton -{ - Q_OBJECT -public: - explicit AdBlockIcon(QWidget *window, QWidget *parent = 0); - ~AdBlockIcon(); +class AdBlockIcon : public PlainToolButton { + Q_OBJECT + public: + // Constructors. + explicit AdBlockIcon(QWidget *window, QWidget *parent = 0); + virtual ~AdBlockIcon(); - void retranslateStrings(); - void popupBlocked(const QString &ruleString, const QUrl &url); - QAction* menuAction(); + void popupBlocked(const QString &ruleString, const QUrl &url); + QAction *menuAction(); -signals: - void clicked(QPoint); + public slots: + void setEnabled(bool enabled); + void createMenu(QMenu *menu = NULL); -public slots: - void setEnabled(bool enabled); - void createMenu(QMenu* menu = 0); + private slots: + void showMenu(const QPoint &pos); + void toggleCustomFilter(); -private slots: - void showMenu(const QPoint &pos); - void toggleCustomFilter(); + void animateIcon(); + void stopAnimation(); - void animateIcon(); - void stopAnimation(); + protected: + void mouseReleaseEvent(QMouseEvent *event); -private: - void mouseReleaseEvent(QMouseEvent* event); + signals: + void clicked(QPoint); - QWidget *m_window; - QAction* m_menuAction; + private: + QWidget *m_window; + QAction* m_menuAction; - QVector > m_blockedPopups; - QTimer* m_flashTimer; + QVector > m_blockedPopups; + QTimer* m_flashTimer; - int m_timerTicks; - bool m_enabled; + int m_timerTicks; + bool m_enabled; }; #endif // ADBLOCKICON_H diff --git a/src/network-web/adblock/adblockmanager.cpp b/src/network-web/adblock/adblockmanager.cpp index b87bac832..0702d11a1 100755 --- a/src/network-web/adblock/adblockmanager.cpp +++ b/src/network-web/adblock/adblockmanager.cpp @@ -43,6 +43,7 @@ #include "miscellaneous/application.h" #include "miscellaneous/settings.h" #include "network-web/silentnetworkaccessmanager.h" +#include "gui/formmain.h" #include #include @@ -445,8 +446,14 @@ AdBlockSubscription* AdBlockManager::subscriptionByName(const QString &name) con return 0; } -AdBlockDialog* AdBlockManager::showDialog() -{ +AdBlockDialog *AdBlockManager::showDialog() { + QPointer form_pointer = new AdBlockDialog(); + form_pointer.data()->show(); + form_pointer.data()->raise(); + form_pointer.data()->activateWindow(); + form_pointer.data()->setAttribute(Qt::WA_DeleteOnClose, true); + return form_pointer.data(); + /* if (!m_adBlockDialog) { m_adBlockDialog = new AdBlockDialog; } @@ -455,7 +462,7 @@ AdBlockDialog* AdBlockManager::showDialog() m_adBlockDialog.data()->raise(); m_adBlockDialog.data()->activateWindow(); - return m_adBlockDialog.data(); + return m_adBlockDialog.data();*/ } void AdBlockManager::showRule() diff --git a/src/network-web/adblock/adblockmanager.h b/src/network-web/adblock/adblockmanager.h index f3e76585d..7b8451e81 100755 --- a/src/network-web/adblock/adblockmanager.h +++ b/src/network-web/adblock/adblockmanager.h @@ -70,68 +70,67 @@ class AdBlockSubscription; class AdBlockManager : public QObject { - Q_OBJECT + Q_OBJECT -public: - AdBlockManager(QObject* parent = 0); - ~AdBlockManager(); + public: + AdBlockManager(QObject* parent = 0); + ~AdBlockManager(); - static AdBlockManager* instance(); + static AdBlockManager* instance(); - static QString filterCharsFromFilename(const QString &name); + static QString filterCharsFromFilename(const QString &name); - static QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QString("(%1)")); + static QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QString("(%1)")); - void load(); - void save(); + void load(); + void save(); - bool isEnabled() const; - bool canRunOnScheme(const QString &scheme) const; + bool isEnabled() const; + bool canRunOnScheme(const QString &scheme) const; - bool useLimitedEasyList() const; - void setUseLimitedEasyList(bool useLimited); + bool useLimitedEasyList() const; + void setUseLimitedEasyList(bool useLimited); - QString elementHidingRules() const; - QString elementHidingRulesForDomain(const QUrl &url) const; + QString elementHidingRules() const; + QString elementHidingRulesForDomain(const QUrl &url) const; - AdBlockSubscription* subscriptionByName(const QString &name) const; - QList subscriptions() const; + AdBlockSubscription* subscriptionByName(const QString &name) const; + QList subscriptions() const; - QNetworkReply* block(const QNetworkRequest &request); + QNetworkReply* block(const QNetworkRequest &request); - QStringList disabledRules() const; - void addDisabledRule(const QString &filter); - void removeDisabledRule(const QString &filter); + QStringList disabledRules() const; + void addDisabledRule(const QString &filter); + void removeDisabledRule(const QString &filter); - AdBlockSubscription* addSubscription(const QString &title, const QString &url); - bool removeSubscription(AdBlockSubscription* subscription); + AdBlockSubscription* addSubscription(const QString &title, const QString &url); + bool removeSubscription(AdBlockSubscription* subscription); - AdBlockCustomList* customList() const; + AdBlockCustomList* customList() const; -signals: - void enabledChanged(bool enabled); + signals: + void enabledChanged(bool enabled); -public slots: - void setEnabled(bool enabled); - void showRule(); + public slots: + void setEnabled(bool enabled); + void showRule(); + void updateAllSubscriptions(); - void updateAllSubscriptions(); + AdBlockDialog *showDialog(); - AdBlockDialog* showDialog(); + private: + inline bool canBeBlocked(const QUrl &url) const; -private: - inline bool canBeBlocked(const QUrl &url) const; + bool m_loaded; + bool m_enabled; + bool m_useLimitedEasyList; - bool m_loaded; - bool m_enabled; - bool m_useLimitedEasyList; + QList m_subscriptions; + static AdBlockManager* s_adBlockManager; + AdBlockMatcher* m_matcher; + QStringList m_disabledRules; - QList m_subscriptions; - static AdBlockManager* s_adBlockManager; - AdBlockMatcher* m_matcher; - QStringList m_disabledRules; - - QPointer m_adBlockDialog; + QPointer m_adBlockDialog; }; #endif // ADBLOCKMANAGER_H diff --git a/src/network-web/adblock/adblocksubscription.cpp b/src/network-web/adblock/adblocksubscription.cpp index 9edce5222..cc46bbbbe 100755 --- a/src/network-web/adblock/adblocksubscription.cpp +++ b/src/network-web/adblock/adblocksubscription.cpp @@ -327,18 +327,12 @@ AdBlockSubscription::~AdBlockSubscription() // AdBlockCustomList -AdBlockCustomList::AdBlockCustomList(QObject* parent) - : AdBlockSubscription(tr("Custom Rules"), parent) -{ +AdBlockCustomList::AdBlockCustomList(QObject* parent) : AdBlockSubscription(tr("Custom rules"), parent) { + setTitle(tr("Custom rules")); // TODO setFilePath(qApp->homeFolderPath() + "/adblock/customlist.txt"); } -void AdBlockCustomList::retranslateStrings() -{ - setTitle(tr("Custom Rules")); -} - void AdBlockCustomList::loadSubscription(const QStringList &disabledRules) { // DuckDuckGo ad whitelist rules diff --git a/src/network-web/adblock/adblocksubscription.h b/src/network-web/adblock/adblocksubscription.h index 6e79d0f0f..4772af3bd 100755 --- a/src/network-web/adblock/adblocksubscription.h +++ b/src/network-web/adblock/adblocksubscription.h @@ -77,82 +77,80 @@ class FollowRedirectReply; class AdBlockSubscription : public QObject { - Q_OBJECT -public: - explicit AdBlockSubscription(const QString &title, QObject* parent = 0); - ~AdBlockSubscription(); + Q_OBJECT + public: + explicit AdBlockSubscription(const QString &title, QObject* parent = 0); + ~AdBlockSubscription(); - QString title() const; - void setTitle(const QString &title); + QString title() const; + void setTitle(const QString &title); - QString filePath() const; - void setFilePath(const QString &path); + QString filePath() const; + void setFilePath(const QString &path); - QUrl url() const; - void setUrl(const QUrl &url); + QUrl url() const; + void setUrl(const QUrl &url); - virtual void loadSubscription(const QStringList &disabledRules); - virtual void saveSubscription(); + virtual void loadSubscription(const QStringList &disabledRules); + virtual void saveSubscription(); - const AdBlockRule* rule(int offset) const; - QVector allRules() const; + const AdBlockRule* rule(int offset) const; + QVector allRules() const; - const AdBlockRule* enableRule(int offset); - const AdBlockRule* disableRule(int offset); + const AdBlockRule* enableRule(int offset); + const AdBlockRule* disableRule(int offset); - virtual bool canEditRules() const; - virtual bool canBeRemoved() const; + virtual bool canEditRules() const; + virtual bool canBeRemoved() const; - virtual int addRule(AdBlockRule* rule); - virtual bool removeRule(int offset); - virtual const AdBlockRule* replaceRule(AdBlockRule* rule, int offset); + virtual int addRule(AdBlockRule* rule); + virtual bool removeRule(int offset); + virtual const AdBlockRule* replaceRule(AdBlockRule* rule, int offset); -public slots: - void updateSubscription(); + public slots: + void updateSubscription(); -signals: - void subscriptionChanged(); - void subscriptionUpdated(); - void subscriptionError(const QString &message); + signals: + void subscriptionChanged(); + void subscriptionUpdated(); + void subscriptionError(const QString &message); -protected slots: - void subscriptionDownloaded(); + protected slots: + void subscriptionDownloaded(); -protected: - virtual bool saveDownloadedData(const QByteArray &data); + protected: + virtual bool saveDownloadedData(const QByteArray &data); - FollowRedirectReply* m_reply; + FollowRedirectReply* m_reply; - QVector m_rules; + QVector m_rules; -private: - QString m_title; - QString m_filePath; + private: + QString m_title; + QString m_filePath; - QUrl m_url; - bool m_updated; + QUrl m_url; + bool m_updated; }; class AdBlockCustomList : public AdBlockSubscription { - Q_OBJECT -public: - explicit AdBlockCustomList(QObject* parent = 0); + Q_OBJECT + public: + explicit AdBlockCustomList(QObject* parent = 0); - void retranslateStrings(); + void loadSubscription(const QStringList &disabledRules); + void saveSubscription(); - void loadSubscription(const QStringList &disabledRules); - void saveSubscription(); + bool canEditRules() const; + bool canBeRemoved() const; - bool canEditRules() const; - bool canBeRemoved() const; + bool containsFilter(const QString &filter) const; + bool removeFilter(const QString &filter); - bool containsFilter(const QString &filter) const; - bool removeFilter(const QString &filter); - - int addRule(AdBlockRule* rule); - bool removeRule(int offset); - const AdBlockRule* replaceRule(AdBlockRule* rule, int offset); + int addRule(AdBlockRule* rule); + bool removeRule(int offset); + const AdBlockRule* replaceRule(AdBlockRule* rule, int offset); }; #endif // ADBLOCKSUBSCRIPTION_H