summaryrefslogtreecommitdiff
path: root/src/adblock
diff options
context:
space:
mode:
Diffstat (limited to 'src/adblock')
-rw-r--r--src/adblock/adblockmanager.cpp164
-rw-r--r--src/adblock/adblockmanager.h13
-rw-r--r--src/adblock/adblockwidget.cpp66
3 files changed, 108 insertions, 135 deletions
diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp
index e48cc753..ff3aad6a 100644
--- a/src/adblock/adblockmanager.cpp
+++ b/src/adblock/adblockmanager.cpp
@@ -37,9 +37,8 @@
#include "webpage.h"
// KDE Includes
-#include <KSharedConfig>
-#include <KConfigGroup>
-#include <KIO/TransferJob>
+#include <KIO/FileCopyJob>
+#include <KStandardDirs>
// Qt Includes
#include <QUrl>
@@ -50,7 +49,6 @@ AdBlockManager::AdBlockManager(QObject *parent)
: QObject(parent)
, _isAdblockEnabled(false)
, _isHideAdsEnabled(false)
- , _index(0)
{
loadSettings();
}
@@ -66,8 +64,21 @@ AdBlockManager::~AdBlockManager()
void AdBlockManager::loadSettings()
{
- _index = 0;
- _buffer.clear();
+ // first, check this...
+ QString adblockFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrc"));
+ if (!QFile::exists(adblockFilePath))
+ {
+ QString generalAdblockFilePath = KStandardDirs::locate("appdata" , QL1S("adblockrc"));
+ QFile adblockFile(generalAdblockFilePath);
+ bool copied = adblockFile.copy(adblockFilePath);
+ if (!copied)
+ {
+ kDebug() << "oh oh... Problems copying default adblock file";
+ return;
+ }
+ }
+ _adblockConfig = KSharedConfig::openConfig("adblockrc", KConfig::SimpleConfig, "appdata");
+ // ----------------
_hostWhiteList.clear();
_hostBlackList.clear();
@@ -75,7 +86,8 @@ void AdBlockManager::loadSettings()
_blackList.clear();
_hideList.clear();
- _isAdblockEnabled = ReKonfig::adBlockEnabled();
+ KConfigGroup settingsGroup(_adblockConfig, "Settings");
+ _isAdblockEnabled = settingsGroup.readEntry("adBlockEnabled", false);
kDebug() << "ADBLOCK ENABLED = " << _isAdblockEnabled;
// no need to load filters if adblock is not enabled :)
@@ -83,43 +95,51 @@ void AdBlockManager::loadSettings()
return;
// just to be sure..
- _isHideAdsEnabled = ReKonfig::hideAdsEnabled();
-
- // read settings
- KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata");
- KConfigGroup rulesGroup(config, "rules");
- QStringList rules;
- rules = rulesGroup.readEntry("local-rules" , QStringList());
- loadRules(rules);
+ _isHideAdsEnabled = settingsGroup.readEntry("hideAdsEnabled", false);
// ----------------------------------------------------------
QDateTime today = QDateTime::currentDateTime();
- QDateTime lastUpdate = ReKonfig::lastUpdate(); // the day of the implementation.. :)
- int days = ReKonfig::updateInterval();
+ QDateTime lastUpdate = QDateTime::fromString(settingsGroup.readEntry("lastUpdate", QString()));
+ int days = settingsGroup.readEntry("updateInterval", 7);
if (today > lastUpdate.addDays(days))
{
- ReKonfig::setLastUpdate(today);
+ settingsGroup.writeEntry("lastUpdate", today.toString());
- updateNextSubscription();
+ updateSubscriptions();
return;
}
// else
- QStringList titles = ReKonfig::subscriptionTitles();
- Q_FOREACH(const QString & title, titles)
+ KConfigGroup filtersGroup(_adblockConfig, "FiltersList");
+ for (int i = 1; i <= 60; ++i)
{
- rules = rulesGroup.readEntry(title + "-rules" , QStringList());
- loadRules(rules);
+ QString n = QString::number(i);
+ bool filterActive = filtersGroup.readEntry("FilterEnabled-" + n, false);
+ if (filterActive)
+ {
+ QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n);
+ loadRules(rulesFilePath);
+ }
}
}
-void AdBlockManager::loadRules(const QStringList &rules)
+void AdBlockManager::loadRules(const QString &rulesFilePath)
{
- Q_FOREACH(const QString & stringRule, rules)
+ QFile ruleFile(rulesFilePath);
+ if (!ruleFile.open(QFile::ReadOnly | QFile::Text))
+ {
+ kDebug() << "Unable to open rule file" << rulesFilePath;
+ return;
+ }
+
+ QTextStream in(&ruleFile);
+ while (!in.atEnd())
{
+ QString stringRule = in.readLine();
+
// ! rules are comments
if (stringRule.startsWith('!'))
continue;
@@ -267,82 +287,38 @@ void AdBlockManager::applyHidingRules(WebPage *page)
}
-void AdBlockManager::updateNextSubscription()
+void AdBlockManager::updateSubscriptions()
{
- QStringList locations = ReKonfig::subscriptionLocations();
-
- if (_index < locations.size())
- {
- QString urlString = locations.at(_index);
- KUrl subUrl = KUrl(urlString);
-
- KIO::TransferJob* job = KIO::get(subUrl , KIO::Reload , KIO::HideProgressInfo);
- job->metaData().insert("ssl_no_client_cert", "TRUE");
- job->metaData().insert("ssl_no_ui", "TRUE");
- job->metaData().insert("UseCache", "false");
- job->metaData().insert("cookies", "none");
- job->metaData().insert("no-auth", "true");
-
- connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(subscriptionData(KIO::Job*,QByteArray)));
- connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*)));
-
- return;
- }
-
- _index = 0;
- _buffer.clear();
-}
+ KConfigGroup filtersGroup(_adblockConfig, "FiltersList");
+ int i = 1;
+ QString n = QString::number(i);
-void AdBlockManager::slotResult(KJob *job)
-{
- if (job->error())
- return;
-
- QList<QByteArray> list = _buffer.split('\n');
- QStringList ruleList;
- Q_FOREACH(const QByteArray & ba, list)
+ while (filtersGroup.hasKey("FilterName-" + n))
{
- ruleList << QString(ba);
- }
- loadRules(ruleList);
- saveRules(ruleList);
-
- _index++;
-
- // last..
- updateNextSubscription();
-}
-
-
-void AdBlockManager::subscriptionData(KIO::Job* job, const QByteArray& data)
-{
- Q_UNUSED(job)
-
- if (data.isEmpty())
- return;
-
- int oldSize = _buffer.size();
- _buffer.resize(_buffer.size() + data.size());
- memcpy(_buffer.data() + oldSize, data.data(), data.size());
-}
-
+ bool isFilterEnabled = filtersGroup.readEntry("FilterEnabled-" + n, false);
+ if (isFilterEnabled)
+ {
+ QString fUrl = filtersGroup.readEntry("FilterURL-" + n, QString());
+ KUrl subUrl = KUrl(fUrl);
+
+ kDebug() << "Filter ENABLED: " << fUrl;
+ QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n);
+ KUrl destUrl = KUrl(rulesFilePath);
+
+ KIO::FileCopyJob* job = KIO::file_copy(subUrl , destUrl, -1, KIO::HideProgressInfo);
+ job->metaData().insert("ssl_no_client_cert", "TRUE");
+ job->metaData().insert("ssl_no_ui", "TRUE");
+ job->metaData().insert("UseCache", "false");
+ job->metaData().insert("cookies", "none");
+ job->metaData().insert("no-auth", "true");
+ }
-void AdBlockManager::saveRules(const QStringList &rules)
-{
- QStringList cleanedRules;
- Q_FOREACH(const QString & r, rules)
- {
- if (!r.startsWith('!') && !r.startsWith('[') && !r.isEmpty())
- cleanedRules << r;
+ i++;
+ n = QString::number(i);
}
- QStringList titles = ReKonfig::subscriptionTitles();
- QString title = titles.at(_index) + "-rules";
-
- KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata");
- KConfigGroup cg(config , "rules");
- cg.writeEntry(title, cleanedRules);
+ loadSettings();
}
diff --git a/src/adblock/adblockmanager.h b/src/adblock/adblockmanager.h
index cce00877..6b7c225e 100644
--- a/src/adblock/adblockmanager.h
+++ b/src/adblock/adblockmanager.h
@@ -130,6 +130,7 @@
// KDE Includes
#include <KIO/Job>
+#include <KSharedConfig>
// Qt Includes
#include <QObject>
@@ -161,13 +162,10 @@ public Q_SLOTS:
void showSettings();
private:
- void updateNextSubscription();
- void saveRules(const QStringList &);
- void loadRules(const QStringList &);
+ void updateSubscriptions();
+ void loadRules(const QString &);
-private Q_SLOTS:
- void slotResult(KJob *);
- void subscriptionData(KIO::Job*, const QByteArray&);
+ KSharedConfig::Ptr config();
private:
bool _isAdblockEnabled;
@@ -179,8 +177,7 @@ private:
AdBlockRuleList _whiteList;
QStringList _hideList;
- int _index;
- QByteArray _buffer;
+ KSharedConfig::Ptr _adblockConfig;
};
#endif
diff --git a/src/adblock/adblockwidget.cpp b/src/adblock/adblockwidget.cpp
index c26e31f4..8e6a81ae 100644
--- a/src/adblock/adblockwidget.cpp
+++ b/src/adblock/adblockwidget.cpp
@@ -108,36 +108,36 @@ void AdBlockWidget::removeRule()
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);
- }
+// 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);
+// }
}
@@ -176,9 +176,9 @@ void AdBlockWidget::save()
}
localGroup.writeEntry("local-rules" , localRules);
- ReKonfig::setAdBlockEnabled(checkEnableAdblock->isChecked());
- ReKonfig::setHideAdsEnabled(checkHideAds->isChecked());
- ReKonfig::setUpdateInterval(spinBox->value());
+// ReKonfig::setAdBlockEnabled(checkEnableAdblock->isChecked());
+// ReKonfig::setHideAdsEnabled(checkHideAds->isChecked());
+// ReKonfig::setUpdateInterval(spinBox->value());
_changed = false;
emit changed(false);