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

mailcommon

  • sources
  • kde-4.12
  • kdepim
  • mailcommon
  • folderdialog
checkedcollectionwidget.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 
19 #include "checkedcollectionwidget.h"
20 #include <Akonadi/RecursiveCollectionFilterProxyModel>
21 #include <Akonadi/CollectionFilterProxyModel>
22 
23 #include <Akonadi/ChangeRecorder>
24 #include <Akonadi/EntityTreeModel>
25 #include <Akonadi/EntityRightsFilterModel>
26 #include <KMime/Message>
27 #include <KRecursiveFilterProxyModel>
28 
29 #include <KCheckableProxyModel>
30 #include <KLineEdit>
31 #include <KLocale>
32 
33 #include <QVBoxLayout>
34 #include <QTreeView>
35 
36 using namespace MailCommon;
37 
38 CheckedCollectionWidget::CheckedCollectionWidget(QWidget *parent)
39  : QWidget(parent)
40 {
41  QVBoxLayout *vbox = new QVBoxLayout;
42  vbox->setMargin(0);
43  setLayout(vbox);
44 
45  // Create a new change recorder.
46  Akonadi::ChangeRecorder *changeRecorder = new Akonadi::ChangeRecorder( this );
47  changeRecorder->setMimeTypeMonitored( KMime::Message::mimeType() );
48 
49  mEntityTreeModel = new Akonadi::EntityTreeModel( changeRecorder, this );
50  // Set the model to show only collections, not items.
51  mEntityTreeModel->setItemPopulationStrategy( Akonadi::EntityTreeModel::NoItemPopulation );
52 
53  Akonadi::CollectionFilterProxyModel *mimeTypeProxy = new Akonadi::CollectionFilterProxyModel( this );
54  mimeTypeProxy->setExcludeVirtualCollections( true );
55  mimeTypeProxy->addMimeTypeFilters( QStringList() << KMime::Message::mimeType() );
56  mimeTypeProxy->setSourceModel( mEntityTreeModel );
57 
58  // Create the Check proxy model.
59  mSelectionModel = new QItemSelectionModel( mimeTypeProxy );
60  mCheckProxy = new KCheckableProxyModel( this );
61  mCheckProxy->setSelectionModel( mSelectionModel );
62  mCheckProxy->setSourceModel( mimeTypeProxy );
63 
64  mCollectionFilter = new KRecursiveFilterProxyModel(this);
65  mCollectionFilter->setSourceModel(mCheckProxy);
66  mCollectionFilter->setDynamicSortFilter(true);
67  mCollectionFilter->setFilterCaseSensitivity(Qt::CaseInsensitive);
68 
69  KLineEdit *searchLine = new KLineEdit(this);
70  searchLine->setPlaceholderText(i18n("Search..."));
71  searchLine->setClearButtonShown(true);
72  connect(searchLine, SIGNAL(textChanged(QString)),
73  this, SLOT(slotSetCollectionFilter(QString)));
74 
75  vbox->addWidget(searchLine);
76 
77  mFolderView = new QTreeView;
78  mFolderView->setEditTriggers(QAbstractItemView::NoEditTriggers);
79  mFolderView->setAlternatingRowColors(true);
80  mFolderView->setModel(mCollectionFilter);
81 
82  vbox->addWidget(mFolderView);
83 }
84 
85 CheckedCollectionWidget::~CheckedCollectionWidget()
86 {
87 }
88 
89 Akonadi::EntityTreeModel *CheckedCollectionWidget::entityTreeModel() const
90 {
91  return mEntityTreeModel;
92 }
93 
94 QTreeView *CheckedCollectionWidget::folderTreeView() const
95 {
96  return mFolderView;
97 }
98 
99 QItemSelectionModel *CheckedCollectionWidget::selectionModel() const
100 {
101  return mSelectionModel;
102 }
103 
104 KCheckableProxyModel *CheckedCollectionWidget::checkableProxy() const
105 {
106  return mCheckProxy;
107 }
108 
109 void CheckedCollectionWidget::slotSetCollectionFilter(const QString &filter)
110 {
111  mCollectionFilter->setFilterWildcard(filter);
112  mFolderView->expandAll();
113 }
114 
115 #include "checkedcollectionwidget.moc"
QWidget
MailCommon::CheckedCollectionWidget::CheckedCollectionWidget
CheckedCollectionWidget(QWidget *parent=0)
Definition: checkedcollectionwidget.cpp:38
MailCommon::CheckedCollectionWidget::folderTreeView
QTreeView * folderTreeView() const
Definition: checkedcollectionwidget.cpp:94
MailCommon::CheckedCollectionWidget::selectionModel
QItemSelectionModel * selectionModel() const
Definition: checkedcollectionwidget.cpp:99
MailCommon::CheckedCollectionWidget::~CheckedCollectionWidget
~CheckedCollectionWidget()
Definition: checkedcollectionwidget.cpp:85
checkedcollectionwidget.h
MailCommon::CheckedCollectionWidget::entityTreeModel
Akonadi::EntityTreeModel * entityTreeModel() const
Definition: checkedcollectionwidget.cpp:89
MailCommon::CheckedCollectionWidget::checkableProxy
KCheckableProxyModel * checkableProxy() const
Definition: checkedcollectionwidget.cpp:104
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:14 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

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