diff options
Diffstat (limited to 'src/adblock')
-rw-r--r-- | src/adblock/adblockmanager.cpp | 164 | ||||
-rw-r--r-- | src/adblock/adblockmanager.h | 13 | ||||
-rw-r--r-- | src/adblock/adblockwidget.cpp | 66 |
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); |