diff options
Diffstat (limited to 'src/adblock')
| -rw-r--r-- | src/adblock/adblockmanager.cpp | 87 | ||||
| -rw-r--r-- | src/adblock/adblockmanager.h | 6 | 
2 files changed, 57 insertions, 36 deletions
| diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp index 8005c7e5..9777bb94 100644 --- a/src/adblock/adblockmanager.cpp +++ b/src/adblock/adblockmanager.cpp @@ -120,22 +120,31 @@ void AdBlockManager::loadSettings()      QDateTime lastUpdate = QDateTime::fromString(settingsGroup.readEntry("lastUpdate", QString()));      int days = settingsGroup.readEntry("updateInterval", 7); -    if (today > lastUpdate.addDays(days)) +    bool allSubscriptionsNeedUpdate = (today > lastUpdate.addDays(days)); +    if (allSubscriptionsNeedUpdate)      {          settingsGroup.writeEntry("lastUpdate", today.toString()); - -        updateSubscriptions(); -        return;      } -    // else -    // load automatic and local rules +    // (Eventually) update and load automatic rules      KConfigGroup filtersGroup(_adblockConfig, "FiltersList"); -    for (int i = 1; i <= 60; ++i) +    for (int i = 0; i < 60; i++)      { -        QString n = QString::number(i); -        bool filterActive = filtersGroup.readEntry("FilterEnabled-" + n, false); -        if (filterActive) +        QString n = QString::number(i + 1); +        if (!filtersGroup.hasKey("FilterEnabled-" + n)) +            continue; + +        bool isFilterEnabled = filtersGroup.readEntry("FilterEnabled-" + n, false); +        if (!isFilterEnabled) +            continue; + +        bool fileExists = subscriptionFileExists(i); +        if (allSubscriptionsNeedUpdate || !fileExists) +        { +            kDebug() << "FILE SHOULDN'T EXIST. updating subscription"; +            updateSubscription(i); +        } +        else          {              QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n);              loadRules(rulesFilePath); @@ -315,38 +324,46 @@ void AdBlockManager::applyHidingRules(WebPage *page)  } -void AdBlockManager::updateSubscriptions() +void AdBlockManager::updateSubscription(int i)  {      KConfigGroup filtersGroup(_adblockConfig, "FiltersList"); +    QString n = QString::number(i + 1); -    int i = 1; -    QString n = QString::number(i); +    QString fUrl = filtersGroup.readEntry("FilterURL-" + n, QString()); +    KUrl subUrl = KUrl(fUrl); -    while (filtersGroup.hasKey("FilterName-" + n)) -    { -        bool isFilterEnabled = filtersGroup.readEntry("FilterEnabled-" + n, false); -        if (isFilterEnabled) -        { -            QString fUrl = filtersGroup.readEntry("FilterURL-" + n, QString()); -            KUrl subUrl = KUrl(fUrl); +    QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n); +    KUrl destUrl = KUrl(rulesFilePath); -            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"); -        } +    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"); -        i++; -        n = QString::number(i); -    } +    connect(job, SIGNAL(finished(KJob *)), this, SLOT(slotFinished(KJob *))); +} -    loadSettings(); + +void AdBlockManager::slotFinished(KJob *job) +{ +    if (job->error()) +        return; + +    KIO::FileCopyJob *fJob = qobject_cast<KIO::FileCopyJob *>(job); +    KUrl url = fJob->destUrl(); +    url.setProtocol(QString()); // this is needed to load local url well :( +    loadRules(url.url()); +} + + +bool AdBlockManager::subscriptionFileExists(int i) +{ +    QString n = QString::number(i + 1); + +    QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n); +    return QFile::exists(rulesFilePath);  } diff --git a/src/adblock/adblockmanager.h b/src/adblock/adblockmanager.h index 30daa27e..469f87cb 100644 --- a/src/adblock/adblockmanager.h +++ b/src/adblock/adblockmanager.h @@ -164,7 +164,9 @@ public:      void clearElementsLists();  private: -    void updateSubscriptions(); +    void updateSubscription(int); +    bool subscriptionFileExists(int); +      void loadRules(const QString &);  private Q_SLOTS: @@ -172,6 +174,8 @@ private Q_SLOTS:      void showSettings();      void showBlockedItemDialog(); +    void slotFinished(KJob *); +  Q_SIGNALS:      void reloadCurrentPage(); | 
