diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/adblock/adblockmanager.cpp | 7 | ||||
| -rw-r--r-- | src/adblock/adblockmanager.h | 2 | ||||
| -rw-r--r-- | src/adblock/adblockwidget.cpp | 163 | ||||
| -rw-r--r-- | src/adblock/adblockwidget.h | 14 | ||||
| -rw-r--r-- | src/adblock/settings_adblock.ui | 47 | 
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/> | 
