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/messag= eviewer/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 #include #include +#include +#include = +#include #include #include #include #include #include #include +#include +#include +#include = using namespace MessageViewer; = @@ -52,11 +60,16 @@ AdBlockBlockableItemsWidget::AdBlockBlockableItemsWidge= t(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",QByt= eArray())); } = AdBlockBlockableItemsWidget::~AdBlockBlockableItemsWidget() { + KConfigGroup groupHeader( MessageViewer::GlobalSettings::self()->confi= g(),"AdBlockHeaders" ); + groupHeader.writeEntry( "HeaderState", mListItems->header()->saveState= ()); + groupHeader.sync(); } = void AdBlockBlockableItemsWidget::setWebFrame(QWebFrame *frame) @@ -86,12 +99,17 @@ void AdBlockBlockableItemsWidget::searchBlockableElemen= t(QWebFrame *frame) = void AdBlockBlockableItemsWidget::customContextMenuRequested(const QPoint = &) { - if (!mListItems->currentItem()) + QTreeWidgetItem *item =3D 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 =3D mListItems->currentItem(); if (!item) return; - - //TODO + QClipboard *cb =3D QApplication::clipboard(); + cb->setText(item->text(Url), QClipboard::Clipboard); } = void AdBlockBlockableItemsWidget::saveFilters() { - //TODO + const int numberOfElement(mListItems->topLevelItemCount()); + QString filters; + for (int i =3D 0; i < numberOfElement; ++i) { + QTreeWidgetItem *item =3D mListItems->topLevelItem(i); + if (!item->text(FilterValue).isEmpty()) { + if (filters.isEmpty()) { + filters =3D item->text(FilterValue); + } else { + filters +=3D QLatin1Char('\n') + item->text(FilterValue); + } + } + } + + if (filters.isEmpty()) + return; + + const QString localRulesFilePath =3D KStandardDirs::locateLocal("appda= ta" , 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 =3D mListItems->currentItem(); + if (!item) + return; + item->setText(FilterValue, QString()); } = #include "adblockblockableitemswidget.moc" diff --git a/messageviewer/adblock/adblockblockableitemswidget.h b/messagev= iewer/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 =3D config.groupList().filter( QRegExp( QLatin1= String("MessageListTab\\d+") ) ); + const QStringList list =3D config.groupList().filter( QRegExp( QLatin1= String("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 =3D i18n( "*|all files (*)" ); const QString result =3D PimCommon::Util::loadToFile(filter, this); + if (result.isEmpty()) { + return; + } const QStringList listFilter =3D result.split(QLatin1Char('\n')); QStringList excludeFilter; const int numberOfElement(manualFiltersListWidget->count());