summaryrefslogtreecommitdiff
path: root/src/adblock
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2012-02-13 21:54:54 +0100
committerAndrea Diamantini <adjam7@gmail.com>2012-03-13 10:24:41 +0100
commit7327127a7852704df9282a45a2995139aa862f4e (patch)
treee203c81e910adad0f1f08bb7162f95d2d9f621bd /src/adblock
parentMove adblock manager to use multiple text files for rules and (diff)
downloadrekonq-7327127a7852704df9282a45a2995139aa862f4e.tar.xz
Update adblock dialog
Diffstat (limited to 'src/adblock')
-rw-r--r--src/adblock/adblockmanager.cpp7
-rw-r--r--src/adblock/adblockmanager.h2
-rw-r--r--src/adblock/adblockwidget.cpp163
-rw-r--r--src/adblock/adblockwidget.h14
-rw-r--r--src/adblock/settings_adblock.ui47
5 files changed, 139 insertions, 94 deletions
diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp
index ff3aad6a..0c0a66db 100644
--- a/src/adblock/adblockmanager.cpp
+++ b/src/adblock/adblockmanager.cpp
@@ -112,6 +112,7 @@ void AdBlockManager::loadSettings()
}
// else
+ // load automatic and local rules
KConfigGroup filtersGroup(_adblockConfig, "FiltersList");
for (int i = 1; i <= 60; ++i)
{
@@ -123,6 +124,10 @@ void AdBlockManager::loadSettings()
loadRules(rulesFilePath);
}
}
+
+ // load local rules
+ QString localRulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_local"));
+ loadRules(localRulesFilePath);
}
@@ -328,7 +333,7 @@ void AdBlockManager::showSettings()
dialog->setCaption(i18nc("@title:window", "Ad Block Settings"));
dialog->setButtons(KDialog::Ok | KDialog::Cancel);
- AdBlockWidget widget;
+ AdBlockWidget widget(_adblockConfig);
dialog->setMainWidget(&widget);
connect(dialog, SIGNAL(okClicked()), &widget, SLOT(save()));
connect(dialog, SIGNAL(okClicked()), this, SLOT(loadSettings()));
diff --git a/src/adblock/adblockmanager.h b/src/adblock/adblockmanager.h
index 6b7c225e..f853a8ed 100644
--- a/src/adblock/adblockmanager.h
+++ b/src/adblock/adblockmanager.h
@@ -165,8 +165,6 @@ private:
void updateSubscriptions();
void loadRules(const QString &);
- KSharedConfig::Ptr config();
-
private:
bool _isAdblockEnabled;
bool _isHideAdsEnabled;
diff --git a/src/adblock/adblockwidget.cpp b/src/adblock/adblockwidget.cpp
index 8e6a81ae..5ada506e 100644
--- a/src/adblock/adblockwidget.cpp
+++ b/src/adblock/adblockwidget.cpp
@@ -33,8 +33,8 @@
// KDE Includes
#include <KSharedConfig>
+#include <KStandardDirs>
#include <KIcon>
-#include <KDebug>
// Qt Includes
#include <QString>
@@ -42,19 +42,20 @@
#include <QListWidgetItem>
-AdBlockWidget::AdBlockWidget(QWidget *parent)
+AdBlockWidget::AdBlockWidget(KSharedConfig::Ptr config, QWidget *parent)
: QWidget(parent)
, _changed(false)
+ , _adblockConfig(config)
{
setupUi(this);
hintLabel->setText(i18n("<qt>Filter expression (e.g. <tt>http://www.example.com/ad/*</tt>, <a href=\"filterhelp\">more information</a>):"));
connect(hintLabel, SIGNAL(linkActivated(QString)), this, SLOT(slotInfoLinkActivated(QString)));
- listWidget->setSortingEnabled(true);
- listWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+ manualFiltersListWidget->setSortingEnabled(true);
+ manualFiltersListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
- searchLine->setListWidget(listWidget);
+ searchLine->setListWidget(manualFiltersListWidget);
insertButton->setIcon(KIcon("list-add"));
connect(insertButton, SIGNAL(clicked()), this, SLOT(insertRule()));
@@ -72,6 +73,8 @@ AdBlockWidget::AdBlockWidget(QWidget *parent)
connect(checkEnableAdblock, SIGNAL(stateChanged(int)), this, SLOT(hasChanged()));
connect(checkHideAds, SIGNAL(stateChanged(int)), this, SLOT(hasChanged()));
connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(hasChanged()));
+
+ connect(automaticFiltersListWidget, SIGNAL(itemChanged(QListWidgetItem *)), this, SLOT(hasChanged()));
}
@@ -80,8 +83,10 @@ void AdBlockWidget::slotInfoLinkActivated(const QString &url)
Q_UNUSED(url)
QString hintHelpString = i18n("<qt><p>Enter an expression to filter. Filters can be defined as either:"
- "<ul><li>a shell-style wildcard, e.g. <tt>http://www.example.com/ads*</tt>, the wildcards <tt>*?[]</tt> may be used</li>"
- "<li>a full regular expression by surrounding the string with '<tt>/</tt>', e.g. <tt>/\\/(ad|banner)\\./</tt></li></ul>"
+ "<ul><li>a shell-style wildcard, e.g. <tt>http://www.example.com/ads*</tt>, "
+ "the wildcards <tt>*?[]</tt> may be used</li>"
+ "<li>a full regular expression by surrounding the string with '<tt>/</tt>', "
+ "e.g. <tt>/\\/(ad|banner)\\./</tt></li></ul>"
"<p>Any filter string can be preceded by '<tt>@@</tt>' to whitelist (allow) any matching URL, "
"which takes priority over any blacklist (blocking) filter.");
@@ -95,64 +100,79 @@ void AdBlockWidget::insertRule()
if (rule.isEmpty())
return;
- listWidget->addItem(rule);
+ manualFiltersListWidget->addItem(rule);
addFilterLineEdit->clear();
}
void AdBlockWidget::removeRule()
{
- listWidget->takeItem(listWidget->currentRow());
+ manualFiltersListWidget->takeItem(manualFiltersListWidget->currentRow());
}
void AdBlockWidget::load()
{
-// const bool isAdBlockEnabled = ReKonfig::adBlockEnabled();
-// checkEnableAdblock->setChecked(isAdBlockEnabled);
-// // update enabled status
-// checkHideAds->setEnabled(checkEnableAdblock->isChecked());
-// tabWidget->setEnabled(checkEnableAdblock->isChecked());
-//
-// const bool areImageFiltered = ReKonfig::hideAdsEnabled();
-// checkHideAds->setChecked(areImageFiltered);
-//
-// const int days = ReKonfig::updateInterval();
-// spinBox->setValue(days);
-//
-// const QStringList subscriptions = ReKonfig::subscriptionTitles();
-//
-// // load automatic rules
-// Q_FOREACH(const QString & sub, subscriptions)
-// {
-// QTreeWidgetItem *subItem = new QTreeWidgetItem(treeWidget);
-// subItem->setText(0, sub);
-// loadRules(subItem);
-// }
-//
-// // load local rules
-// KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata");
-// KConfigGroup localGroup(config, "rules");
-// const QStringList rules = localGroup.readEntry("local-rules" , QStringList());
-// Q_FOREACH(const QString & rule, rules)
-// {
-// listWidget->addItem(rule);
-// }
-}
+ // General settings
+ KConfigGroup settingsGroup(_adblockConfig, "Settings");
+ const bool isAdBlockEnabled = settingsGroup.readEntry("adBlockEnabled", false);
+ checkEnableAdblock->setChecked(isAdBlockEnabled);
-void AdBlockWidget::loadRules(QTreeWidgetItem *item)
-{
- KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata");
- KConfigGroup localGroup(config, "rules");
+ // update enabled status
+ checkHideAds->setEnabled(isAdBlockEnabled);
+ tabWidget->setEnabled(isAdBlockEnabled);
+
+ const bool areImageFiltered = settingsGroup.readEntry("hideAdsEnabled", false);
+ checkHideAds->setChecked(areImageFiltered);
+
+ const int days = settingsGroup.readEntry("updateInterval", 7);
+ spinBox->setValue(days);
+
+ // ------------------------------------------------------------------------------
+
+ // automatic filters
+ KConfigGroup autoFiltersGroup(_adblockConfig, "FiltersList");
+
+ int i = 1;
+ QString n = QString::number(i);
+
+ while (autoFiltersGroup.hasKey("FilterName-" + n))
+ {
+ bool filterEnabled = autoFiltersGroup.readEntry("FilterEnabled-" + n, false);
+ QString filterName = autoFiltersGroup.readEntry("FilterName-" + n, QString());
+
+ QListWidgetItem *subItem = new QListWidgetItem(automaticFiltersListWidget);
+ subItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
+ if (filterEnabled)
+ subItem->setCheckState(Qt::Checked);
+ else
+ subItem->setCheckState(Qt::Unchecked);
+
+ subItem->setText(filterName);
+
+ i++;
+ n = QString::number(i);
+ }
+
+ // ------------------------------------------------------------------------------
- QString str = item->text(0) + "-rules";
- QStringList rules = localGroup.readEntry(str , QStringList());
+ // local filters
+ QString localRulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_local"));
- Q_FOREACH(const QString & rule, rules)
+ QFile ruleFile(localRulesFilePath);
+ if (!ruleFile.open(QFile::ReadOnly | QFile::Text))
{
- QTreeWidgetItem *subItem = new QTreeWidgetItem(item);
- subItem->setText(0, rule);
+ kDebug() << "Unable to open rule file" << localRulesFilePath;
+ return;
+ }
+
+ QTextStream in(&ruleFile);
+ while (!in.atEnd())
+ {
+ QString stringRule = in.readLine();
+ QListWidgetItem *subItem = new QListWidgetItem(manualFiltersListWidget);
+ subItem->setText(stringRule);
}
}
@@ -162,24 +182,45 @@ void AdBlockWidget::save()
if (!_changed)
return;
- // local rules
- KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata");
- KConfigGroup localGroup(config , "rules");
+ // General settings
+ KConfigGroup settingsGroup(_adblockConfig, "Settings");
+
+ settingsGroup.writeEntry("adBlockEnabled", checkEnableAdblock->isChecked());
+ settingsGroup.writeEntry("hideAdsEnabled", checkHideAds->isChecked());
+ settingsGroup.writeEntry("updateInterval", spinBox->value());
- QStringList localRules;
+ // automatic filters
+ KConfigGroup autoFiltersGroup(_adblockConfig, "FiltersList");
+ for (int i = 0; i < automaticFiltersListWidget->count(); i++)
+ {
+ QListWidgetItem *subItem = automaticFiltersListWidget->item(i);
+ bool active = true;
+ if (subItem->checkState() == Qt::Unchecked)
+ active = false;
+
+ QString n = QString::number(i + 1);
+ autoFiltersGroup.writeEntry("FilterEnabled-" + n, active);
+ }
+
+ // local filters
+ QString localRulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_local"));
- const int n = listWidget->count();
- for (int i = 0; i < n; ++i)
+ QFile ruleFile(localRulesFilePath);
+ if (!ruleFile.open(QFile::WriteOnly | QFile::Text))
{
- QListWidgetItem *item = listWidget->item(i);
- localRules << item->text();
+ kDebug() << "Unable to open rule file" << localRulesFilePath;
+ return;
}
- localGroup.writeEntry("local-rules" , localRules);
-// ReKonfig::setAdBlockEnabled(checkEnableAdblock->isChecked());
-// ReKonfig::setHideAdsEnabled(checkHideAds->isChecked());
-// ReKonfig::setUpdateInterval(spinBox->value());
+ QTextStream out(&ruleFile);
+ for (int i = 0; i < manualFiltersListWidget->count(); i++)
+ {
+ QListWidgetItem *subItem = manualFiltersListWidget->item(i);
+ QString stringRule = subItem->text();
+ out << stringRule << '\n';
+ }
+ // -------------------------------------------------------------------------------
_changed = false;
emit changed(false);
}
diff --git a/src/adblock/adblockwidget.h b/src/adblock/adblockwidget.h
index 3c7c667b..0f9e4d7f 100644
--- a/src/adblock/adblockwidget.h
+++ b/src/adblock/adblockwidget.h
@@ -28,12 +28,18 @@
#define ADBLOCK_WIDGET_H
+// Rekonq Includes
+#include "rekonq_defines.h"
+
// Ui Includes
#include "ui_settings_adblock.h"
+// KDE Includes
+#include <KSharedConfig>
+
// Qt Includes
-#include <QtGui/QWidget>
-#include <QtGui/QTreeWidgetItem>
+#include <QWidget>
+#include <QTreeWidgetItem>
class AdBlockWidget : public QWidget, private Ui::adblock
@@ -41,7 +47,7 @@ class AdBlockWidget : public QWidget, private Ui::adblock
Q_OBJECT
public:
- AdBlockWidget(QWidget *parent = 0);
+ AdBlockWidget(KSharedConfig::Ptr config, QWidget *parent = 0);
bool changed();
@@ -60,9 +66,9 @@ private Q_SLOTS:
private:
void load();
- void loadRules(QTreeWidgetItem *item);
bool _changed;
+ KSharedConfig::Ptr _adblockConfig;
};
#endif // ADBLOCK_WIDGET_H
diff --git a/src/adblock/settings_adblock.ui b/src/adblock/settings_adblock.ui
index 68fcf520..cf6c49d3 100644
--- a/src/adblock/settings_adblock.ui
+++ b/src/adblock/settings_adblock.ui
@@ -39,26 +39,14 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
- <widget class="QTreeWidget" name="treeWidget">
- <attribute name="headerVisible">
- <bool>false</bool>
- </attribute>
- <attribute name="headerVisible">
- <bool>false</bool>
- </attribute>
- <column>
- <property name="text">
- <string notr="true">1</string>
- </property>
- </column>
- </widget>
+ <widget class="QListWidget" name="automaticFiltersListWidget"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
- <string>Update automatic filters every:</string>
+ <string>Update enabled automatic filters every:</string>
</property>
</widget>
</item>
@@ -79,6 +67,13 @@
</widget>
</item>
<item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>days</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -115,7 +110,7 @@
</layout>
</item>
<item>
- <widget class="KListWidget" name="listWidget"/>
+ <widget class="KListWidget" name="manualFiltersListWidget"/>
</item>
<item>
<widget class="QLabel" name="hintLabel">
@@ -159,9 +154,14 @@
</widget>
<customwidgets>
<customwidget>
- <class>KListWidget</class>
- <extends>QListWidget</extends>
- <header>klistwidget.h</header>
+ <class>KListWidgetSearchLine</class>
+ <extends>KLineEdit</extends>
+ <header>klistwidgetsearchline.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>klineedit.h</header>
</customwidget>
<customwidget>
<class>KIntSpinBox</class>
@@ -169,9 +169,9 @@
<header>knuminput.h</header>
</customwidget>
<customwidget>
- <class>KLineEdit</class>
- <extends>QLineEdit</extends>
- <header>klineedit.h</header>
+ <class>KListWidget</class>
+ <extends>QListWidget</extends>
+ <header>klistwidget.h</header>
</customwidget>
<customwidget>
<class>KTabWidget</class>
@@ -179,11 +179,6 @@
<header>ktabwidget.h</header>
<container>1</container>
</customwidget>
- <customwidget>
- <class>KListWidgetSearchLine</class>
- <extends>KLineEdit</extends>
- <header>klistwidgetsearchline.h</header>
- </customwidget>
</customwidgets>
<resources/>
<connections/>