[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim] messageviewer/adblock: improve++
From:       Montel Laurent <montel () kde ! org>
Date:       2013-09-30 20:03:01
Message-ID: E1VQjgL-0004Pa-ES () scm ! kde ! org
[Download RAW message or body]

Git commit 6727dff434030f53f1579058a5424432cd1cee27 by Montel Laurent.
Committed on 30/09/2013 at 20:02.
Pushed by mlaurent into branch 'master'.

improve++

M  +60   -7    messageviewer/adblock/adblockblockableitemswidget.cpp
M  +1    -0    messageviewer/adblock/adblockblockableitemswidget.h
M  +6    -1    messageviewer/adblock/adblocksettingwidget.cpp

http://commits.kde.org/kdepim/6727dff434030f53f1579058a5424432cd1cee27

diff --git a/messageviewer/adblock/adblockblockableitemswidget.cpp b/messageviewer/adblock/adblockblockableitemswidget.cpp
index 9b1123e..8a47ba7 100644
--- a/messageviewer/adblock/adblockblockableitemswidget.cpp
+++ b/messageviewer/adblock/adblockblockableitemswidget.cpp
@@ -17,17 +17,25 @@
 
 #include "adblockblockableitemswidget.h"
 #include "adblockcreatefilterdialog.h"
+#include "settings/globalsettings.h"
+#include "adblock/adblockmanager.h"
 
 #include <KLocale>
 #include <KTreeWidgetSearchLine>
 #include <KMenu>
+#include <KConfigGroup>
+#include <KStandardDirs>
 
+#include <QHeaderView>
 #include <QTreeWidget>
 #include <QVBoxLayout>
 #include <QWebFrame>
 #include <QWebElement>
 #include <QDebug>
 #include <QPointer>
+#include <QClipboard>
+#include <QApplication>
+#include <QFile>
 
 using namespace MessageViewer;
 
@@ -52,11 +60,16 @@ AdBlockBlockableItemsWidget::AdBlockBlockableItemsWidget(QWidget *parent)
 
     lay->addWidget(searchLine);
     lay->addWidget(mListItems);
-    //TODO save/restore headers.
+
+    KConfigGroup config( MessageViewer::GlobalSettings::self()->config(),"AdBlockHeaders");
+    mListItems->header()->restoreState(config.readEntry("HeaderState",QByteArray()));
 }
 
 AdBlockBlockableItemsWidget::~AdBlockBlockableItemsWidget()
 {
+    KConfigGroup groupHeader( MessageViewer::GlobalSettings::self()->config(),"AdBlockHeaders" );
+    groupHeader.writeEntry( "HeaderState", mListItems->header()->saveState());
+    groupHeader.sync();
 }
 
 void AdBlockBlockableItemsWidget::setWebFrame(QWebFrame *frame)
@@ -86,12 +99,17 @@ void AdBlockBlockableItemsWidget::searchBlockableElement(QWebFrame *frame)
 
 void AdBlockBlockableItemsWidget::customContextMenuRequested(const QPoint &)
 {
-    if (!mListItems->currentItem())
+    QTreeWidgetItem *item = mListItems->currentItem();
+    if (!item)
         return;
 
     KMenu menu;
-    menu.addAction(i18n("Copy"),this,SLOT(slotCopyItem()));
-    menu.addAction(i18n("Block item"),this,SLOT(slotBlockItem()));
+    menu.addAction(i18n("Copy url"),this,SLOT(slotCopyItem()));
+    menu.addAction(i18n("Block item..."),this,SLOT(slotBlockItem()));
+    if (!item->text(FilterValue).isEmpty()) {
+        menu.addSeparator();
+        menu.addAction(i18n("Remove filter"),this,SLOT(slotRemoveFilter()));
+    }
     menu.exec(QCursor::pos());
 }
 
@@ -115,13 +133,48 @@ void AdBlockBlockableItemsWidget::slotCopyItem()
     QTreeWidgetItem *item = mListItems->currentItem();
     if (!item)
         return;
-
-    //TODO
+    QClipboard *cb = QApplication::clipboard();
+    cb->setText(item->text(Url), QClipboard::Clipboard);
 }
 
 void AdBlockBlockableItemsWidget::saveFilters()
 {
-    //TODO
+    const int numberOfElement(mListItems->topLevelItemCount());
+    QString filters;
+    for (int i = 0; i < numberOfElement; ++i) {
+        QTreeWidgetItem *item = mListItems->topLevelItem(i);
+        if (!item->text(FilterValue).isEmpty()) {
+            if (filters.isEmpty()) {
+                filters = item->text(FilterValue);
+            } else {
+                filters += QLatin1Char('\n') + item->text(FilterValue);
+            }
+        }
+    }
+
+    if (filters.isEmpty())
+        return;
+
+    const QString localRulesFilePath = KStandardDirs::locateLocal("appdata" , QLatin1String("adblockrules_local"));
+
+    QFile ruleFile(localRulesFilePath);
+    if (!ruleFile.open(QFile::WriteOnly | QFile::Text)) {
+        kDebug() << "Unable to open rule file" << localRulesFilePath;
+        return;
+    }
+
+    QTextStream out(&ruleFile);
+    out << filters;
+
+    AdBlockManager::self()->reloadConfig();
+}
+
+void AdBlockBlockableItemsWidget::slotRemoveFilter()
+{
+    QTreeWidgetItem *item = mListItems->currentItem();
+    if (!item)
+        return;
+    item->setText(FilterValue, QString());
 }
 
 #include "adblockblockableitemswidget.moc"
diff --git a/messageviewer/adblock/adblockblockableitemswidget.h b/messageviewer/adblock/adblockblockableitemswidget.h
index 4064c45..c30161b 100644
--- a/messageviewer/adblock/adblockblockableitemswidget.h
+++ b/messageviewer/adblock/adblockblockableitemswidget.h
@@ -38,6 +38,7 @@ private Q_SLOTS:
     void slotCopyItem();
     void slotBlockItem();
     void customContextMenuRequested(const QPoint &);
+    void slotRemoveFilter();
 
 private:
     enum BlockType {
diff --git a/messageviewer/adblock/adblocksettingwidget.cpp b/messageviewer/adblock/adblocksettingwidget.cpp
index 751310d..8a77b0c 100644
--- a/messageviewer/adblock/adblocksettingwidget.cpp
+++ b/messageviewer/adblock/adblocksettingwidget.cpp
@@ -216,7 +216,7 @@ void AdBlockSettingWidget::save()
 
     // automatic filters
     KConfig config(QLatin1String("messagevieweradblockrc"));
-    const QStringList list = config.groupList().filter( QRegExp( QLatin1String("MessageListTab\\d+") ) );
+    const QStringList list = config.groupList().filter( QRegExp( QLatin1String("FilterList \\d+") ) );
     foreach ( const QString &group, list ) {
         config.deleteGroup( group );
     }
@@ -294,6 +294,7 @@ void AdBlockSettingWidget::slotAddFilter()
         subItem->setData(UrlList, url);
         subItem->setData(LastUpdateList, QDateTime());
         subItem->setData(PathList, QString());
+        hasChanged();
     }
     delete dlg;
 }
@@ -310,6 +311,7 @@ void AdBlockSettingWidget::slotRemoveSubscription()
             }
             delete item;
         }
+        hasChanged();
     }
 }
 
@@ -328,6 +330,9 @@ void AdBlockSettingWidget::slotImportFilters()
 {
     const QString filter = i18n( "*|all files (*)" );
     const QString result = PimCommon::Util::loadToFile(filter, this);
+    if (result.isEmpty()) {
+        return;
+    }
     const QStringList listFilter = result.split(QLatin1Char('\n'));
     QStringList excludeFilter;
     const int numberOfElement(manualFiltersListWidget->count());
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic