• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

messageviewer

  • sources
  • kde-4.12
  • kdepim
  • messageviewer
  • adblock
adblockcreatefilterdialog.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "adblockcreatefilterdialog.h"
19 #include "ui_adblockcreatefilterwidget.h"
20 
21 #include <QDebug>
22 
23 using namespace MessageViewer;
24 AdBlockCreateFilterDialog::AdBlockCreateFilterDialog(QWidget *parent)
25  : KDialog(parent),
26  mCurrentType(AdBlockBlockableItemsWidget::None)
27 {
28  QWidget *w = new QWidget;
29  mUi = new Ui::AdBlockCreateFilterWidget;
30  mUi->setupUi(w);
31  setMainWidget(w);
32  connect(mUi->filtercustom,SIGNAL(textChanged(QString)), SLOT(slotUpdateFilter()));
33  connect(mUi->blockingFilter, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
34  connect(mUi->exceptionFilter, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
35  connect(mUi->atTheBeginning, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
36  connect(mUi->atTheEnd, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
37  connect(mUi->restrictToDomain, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
38  connect(mUi->restrictToDomainStr, SIGNAL(textChanged(QString)), SLOT(slotUpdateFilter()));
39  connect(mUi->firstPartOnly, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
40  connect(mUi->matchCase, SIGNAL(toggled(bool)), SLOT(slotUpdateFilter()));
41  connect(mUi->applyListElement, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(slotUpdateFilter()));
42  mUi->collapseBlocked->addItem(i18n("Use default"), QString());
43  mUi->collapseBlocked->addItem(i18n("Yes"), QLatin1String("collapse"));
44  mUi->collapseBlocked->addItem(i18n("Not"), QLatin1String("~collapse"));
45  connect(mUi->collapseBlocked, SIGNAL(activated(int)), SLOT(slotUpdateFilter()));
46  readConfig();
47 }
48 
49 AdBlockCreateFilterDialog::~AdBlockCreateFilterDialog()
50 {
51  writeConfig();
52  delete mUi;
53  mUi = 0;
54 }
55 
56 void AdBlockCreateFilterDialog::writeConfig()
57 {
58  KConfigGroup group( KGlobal::config(), "AdBlockCreateFilterDialog" );
59  group.writeEntry( "Size", size() );
60 }
61 
62 void AdBlockCreateFilterDialog::readConfig()
63 {
64  KConfigGroup group( KGlobal::config(), "AdBlockCreateFilterDialog" );
65  const QSize sizeDialog = group.readEntry( "Size", QSize(800,600) );
66  if ( sizeDialog.isValid() ) {
67  resize( sizeDialog );
68  }
69 }
70 
71 void AdBlockCreateFilterDialog::setPattern(AdBlockBlockableItemsWidget::TypeElement type, const QString &pattern)
72 {
73  if (mPattern != pattern) {
74  mPattern = pattern;
75  mCurrentType = type;
76  initialize();
77  }
78 }
79 
80 void AdBlockCreateFilterDialog::initialize()
81 {
82  mUi->applyListElement->clear();
83  for (int i = AdBlockBlockableItemsWidget::None+1; i < AdBlockBlockableItemsWidget::MaxTypeElement; ++i) {
84  QListWidgetItem *item = new QListWidgetItem(AdBlockBlockableItemsWidget::elementTypeToI18n(static_cast<AdBlockBlockableItemsWidget::TypeElement>(i)), mUi->applyListElement);
85  item->setData(ElementValue, static_cast<AdBlockBlockableItemsWidget::TypeElement>(i));
86  item->setCheckState(Qt::Unchecked);
87  if (i == (int)mCurrentType) {
88  item->setFlags(item->flags()&~Qt::ItemIsEnabled);
89  }
90 
91  }
92 
93  mUi->blockingFilter->setChecked(true);
94  mUi->filtercustom->setText(mPattern);
95  slotUpdateFilter();
96 }
97 
98 QString AdBlockCreateFilterDialog::filter() const
99 {
100  return mUi->filterName->text();
101 }
102 
103 void AdBlockCreateFilterDialog::slotUpdateFilter()
104 {
105  QString pattern = mUi->filtercustom->text();
106  if (mUi->atTheBeginning->isChecked()) {
107  pattern = QLatin1String("|") + pattern;
108  }
109  if (mUi->atTheEnd->isChecked()) {
110  pattern += QLatin1String("|");
111  }
112 
113  const QString collapseValue = mUi->collapseBlocked->itemData(mUi->collapseBlocked->currentIndex()).toString();
114  if (!collapseValue.isEmpty())
115  pattern += QLatin1Char('$') + collapseValue;
116 
117  pattern += (collapseValue.isEmpty() ? QLatin1String("$") : QLatin1String(",")) + AdBlockBlockableItemsWidget::elementType(mCurrentType);
118 
119 
120  if (mUi->exceptionFilter->isChecked()) {
121  pattern = QLatin1String("@@") + pattern;
122  }
123  const int numberOfElement(mUi->applyListElement->count());
124  for (int i = 0; i < numberOfElement; ++i) {
125  QListWidgetItem *item = mUi->applyListElement->item(i);
126  if ((item->checkState() == Qt::Checked) && (item->flags() & Qt::ItemIsEnabled)) {
127  pattern += QLatin1Char(',') + AdBlockBlockableItemsWidget::elementType(static_cast<AdBlockBlockableItemsWidget::TypeElement>(item->data(ElementValue).toInt()));
128  }
129  }
130 
131  if (mUi->restrictToDomain->isChecked()) {
132  if (!mUi->restrictToDomainStr->text().isEmpty()) {
133  pattern += QLatin1String(",domain=") + mUi->restrictToDomainStr->text();
134  }
135  }
136  if (mUi->matchCase->isChecked()) {
137  pattern += QLatin1String(",match-case");
138  }
139  if (mUi->firstPartOnly->isChecked()) {
140  pattern += QLatin1String(",~third-party");
141  }
142  mUi->filterName->setText(pattern);
143 }
144 
145 #include "adblockcreatefilterdialog.moc"
MessageViewer::AdBlockCreateFilterDialog::filter
QString filter() const
Definition: adblockcreatefilterdialog.cpp:98
QWidget
MessageViewer::AdBlockBlockableItemsWidget::TypeElement
TypeElement
Definition: adblockblockableitemswidget.h:31
KDialog
MessageViewer::AdBlockBlockableItemsWidget::elementTypeToI18n
static QString elementTypeToI18n(AdBlockBlockableItemsWidget::TypeElement type)
Definition: adblockblockableitemswidget.cpp:83
MessageViewer::AdBlockBlockableItemsWidget::None
Definition: adblockblockableitemswidget.h:32
MessageViewer::AdBlockBlockableItemsWidget
Definition: adblockblockableitemswidget.h:27
MessageViewer::AdBlockCreateFilterDialog::~AdBlockCreateFilterDialog
~AdBlockCreateFilterDialog()
Definition: adblockcreatefilterdialog.cpp:49
adblockcreatefilterdialog.h
type
const char * type
Definition: bodypartformatter.cpp:192
MessageViewer::AdBlockCreateFilterDialog::setPattern
void setPattern(AdBlockBlockableItemsWidget::TypeElement type, const QString &pattern)
Definition: adblockcreatefilterdialog.cpp:71
MessageViewer::AdBlockBlockableItemsWidget::MaxTypeElement
Definition: adblockblockableitemswidget.h:43
MessageViewer::AdBlockCreateFilterDialog::AdBlockCreateFilterDialog
AdBlockCreateFilterDialog(QWidget *parent=0)
Definition: adblockcreatefilterdialog.cpp:24
MessageViewer::AdBlockBlockableItemsWidget::elementType
static QString elementType(AdBlockBlockableItemsWidget::TypeElement type)
Definition: adblockblockableitemswidget.cpp:121
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:57 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

messageviewer

Skip menu "messageviewer"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal