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

mailcommon

  • sources
  • kde-4.14
  • kdepim
  • mailcommon
  • filter
filterselectiondialog.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2015 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 
19 #include "filterselectiondialog.h"
20 #include "mailfilter.h"
21 
22 #include <KDebug>
23 #include <KListWidgetSearchLine>
24 #include <KPushButton>
25 
26 #include <QListWidget>
27 #include <QVBoxLayout>
28 
29 
30 using namespace MailCommon;
31 
32 FilterSelectionDialog::FilterSelectionDialog( QWidget *parent )
33  : KDialog( parent )
34 {
35  setObjectName( QLatin1String("filterselection") );
36  setModal( true );
37  setCaption( i18n( "Select Filters" ) );
38  setButtons( Ok | Cancel );
39  setDefaultButton( Ok );
40  showButtonSeparator( true );
41 
42  QVBoxLayout *const top = new QVBoxLayout( mainWidget() );
43 
44  filtersListWidget = new QListWidget();
45  KListWidgetSearchLine *searchLine = new KListWidgetSearchLine( this, filtersListWidget );
46  searchLine->setClickMessage(
47  i18nc( "@info/plain Displayed grayed-out inside the textbox, verb to search",
48  "Search" ) );
49 
50  top->addWidget( searchLine );
51  top->addWidget( filtersListWidget );
52  filtersListWidget->setAlternatingRowColors( true );
53  filtersListWidget->setSortingEnabled( false );
54  filtersListWidget->setSelectionMode( QAbstractItemView::NoSelection );
55 
56  QHBoxLayout *const buttonLayout = new QHBoxLayout();
57  top->addLayout( buttonLayout );
58  selectAllButton = new KPushButton( i18n( "Select All" ) );
59  buttonLayout->addWidget( selectAllButton );
60  unselectAllButton = new KPushButton( i18n( "Unselect All" ) );
61  buttonLayout->addWidget( unselectAllButton );
62 
63  connect( selectAllButton, SIGNAL(clicked()), this, SLOT(slotSelectAllButton()) );
64  connect( unselectAllButton, SIGNAL(clicked()), this, SLOT(slotUnselectAllButton()) );
65 
66  readConfig();
67 }
68 
69 FilterSelectionDialog::~FilterSelectionDialog()
70 {
71  writeConfig();
72 }
73 
74 void FilterSelectionDialog::reject()
75 {
76  qDeleteAll(originalFilters);
77  QDialog::reject();
78 }
79 
80 void FilterSelectionDialog::writeConfig()
81 {
82  KConfigGroup group( KGlobal::config(), "FilterSelectionDialog" );
83  group.writeEntry( "Size", size() );
84 }
85 
86 void FilterSelectionDialog::readConfig()
87 {
88  KConfigGroup group( KGlobal::config(), "FilterSelectionDialog" );
89  const QSize sizeDialog = group.readEntry( "Size", QSize(300, 350) );
90  if ( sizeDialog.isValid() ) {
91  resize( sizeDialog );
92  }
93 }
94 
95 void FilterSelectionDialog::setFilters( const QList<MailFilter *> &filters )
96 {
97  if ( filters.isEmpty() ) {
98  enableButtonOk( false );
99  return;
100  }
101 
102  originalFilters = filters;
103  filtersListWidget->clear();
104 
105  foreach ( const MailFilter *filter, filters ) {
106  QListWidgetItem *item = new QListWidgetItem( filter->name(), filtersListWidget );
107  item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
108  item->setCheckState( Qt::Checked );
109  }
110 }
111 
112 QList<MailFilter*> FilterSelectionDialog::selectedFilters() const
113 {
114  QList<MailFilter*> filters;
115 
116  const int filterCount = filtersListWidget->count();
117  for ( int i = 0; i < filterCount; ++i ) {
118  const QListWidgetItem *item = filtersListWidget->item( i );
119  if ( item->checkState() == Qt::Checked ) {
120  filters << originalFilters[ i ];
121  } else {
122  delete originalFilters[ i ];
123  }
124  }
125 
126  return filters;
127 }
128 
129 void FilterSelectionDialog::slotUnselectAllButton()
130 {
131  const int filterCount = filtersListWidget->count();
132  for ( int i = 0; i < filterCount; ++i ) {
133  QListWidgetItem * const item = filtersListWidget->item( i );
134  item->setCheckState( Qt::Unchecked );
135  }
136 }
137 
138 void FilterSelectionDialog::slotSelectAllButton()
139 {
140  const int filterCount = filtersListWidget->count();
141  for ( int i = 0; i < filterCount; ++i ) {
142  QListWidgetItem * const item = filtersListWidget->item( i );
143  item->setCheckState( Qt::Checked );
144  }
145 }
146 
QWidget
QSize::isValid
bool isValid() const
QListWidgetItem::checkState
Qt::CheckState checkState() const
QDialog::reject
virtual void reject()
QAbstractItemView::setAlternatingRowColors
void setAlternatingRowColors(bool enable)
QListWidget::setSortingEnabled
void setSortingEnabled(bool enable)
QAbstractItemView::setSelectionMode
void setSelectionMode(QAbstractItemView::SelectionMode mode)
filterselectiondialog.h
QListWidgetItem
QHBoxLayout
mailfilter.h
KDialog
MailCommon::FilterSelectionDialog::~FilterSelectionDialog
virtual ~FilterSelectionDialog()
Definition: filterselectiondialog.cpp:69
QListWidget
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QListWidget::clear
void clear()
QList::isEmpty
bool isEmpty() const
QListWidgetItem::setFlags
void setFlags(QFlags< Qt::ItemFlag > flags)
QVBoxLayout
QListWidgetItem::setCheckState
void setCheckState(Qt::CheckState state)
QList
QListWidget::item
QListWidgetItem * item(int row) const
QListWidget::count
count
MailCommon::FilterSelectionDialog::reject
void reject()
Definition: filterselectiondialog.cpp:74
MailCommon::FilterSelectionDialog::slotSelectAllButton
void slotSelectAllButton()
Definition: filterselectiondialog.cpp:138
QSize
MailCommon::FilterSelectionDialog::FilterSelectionDialog
FilterSelectionDialog(QWidget *parent=0)
Definition: filterselectiondialog.cpp:32
MailCommon::FilterSelectionDialog::setFilters
void setFilters(const QList< MailFilter * > &filters)
Definition: filterselectiondialog.cpp:95
QLatin1String
MailCommon::FilterSelectionDialog::slotUnselectAllButton
void slotUnselectAllButton()
Definition: filterselectiondialog.cpp:129
MailCommon::MailFilter::name
QString name() const
Equivalent to ()->name().
Definition: mailfilter.cpp:130
MailCommon::FilterSelectionDialog::selectedFilters
QList< MailFilter * > selectedFilters() const
Definition: filterselectiondialog.cpp:112
MailCommon::MailFilter
Definition: mailfilter.h:42
QBoxLayout::addLayout
void addLayout(QLayout *layout, int stretch)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:31:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

mailcommon

Skip menu "mailcommon"
  • 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
  • pimprint

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