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

kjots

  • sources
  • kde-4.14
  • kdepim
  • kjots
kjotssortproxymodel.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KJots.
3 
4  Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>
5 
6  This library is free software; you can redistribute it and/or modify it
7  under the terms of the GNU Library General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or (at your
9  option) any later version.
10 
11  This library is distributed in the hope that it will be useful, but WITHOUT
12  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14  License for more details.
15 
16  You should have received a copy of the GNU Library General Public License
17  along with this library; see the file COPYING.LIB. If not, write to the
18  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19  02110-1301, USA.
20 */
21 
22 #include "kjotssortproxymodel.h"
23 #include <Akonadi/EntityTreeModel>
24 #include <KMime/KMimeMessage>
25 
26 
27 KJotsSortProxyModel::KJotsSortProxyModel( QObject* parent )
28  : QSortFilterProxyModel( parent )
29 {
30  setDynamicSortFilter(true);
31 }
32 
33 KJotsSortProxyModel::~KJotsSortProxyModel()
34 {
35 
36 }
37 
38 bool KJotsSortProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) const
39 {
40  const Akonadi::Collection::Id colId = left.data( Akonadi::EntityTreeModel::ParentCollectionRole ).value<Akonadi::Collection>().id();
41 
42  if ( colId < 0 || m_alphaSorted.contains( colId ) || !m_dateTimeSorted.contains( colId ) )
43  return QSortFilterProxyModel::lessThan( left, right );
44 
45  const Akonadi::Item leftItem = left.data( Akonadi::EntityTreeModel::ItemRole ).value<Akonadi::Item>();
46  const Akonadi::Item rightItem = right.data( Akonadi::EntityTreeModel::ItemRole ).value<Akonadi::Item>();
47 
48  if ( !leftItem.isValid() || !rightItem.isValid() )
49  return true;
50 
51  const KMime::Message::Ptr leftNote = leftItem.payload<KMime::Message::Ptr>();
52  const KMime::Message::Ptr rightNote = rightItem.payload<KMime::Message::Ptr>();
53 
54  return leftNote->date()->dateTime() < rightNote->date()->dateTime();
55 }
56 
57 Akonadi::Collection::Id KJotsSortProxyModel::collectionId( const QModelIndex& parent ) const
58 {
59  const QModelIndex childIndex = index( 0, 0, parent );
60  if ( !childIndex.isValid() )
61  return -1;
62 
63  const Akonadi::Collection collection = childIndex.data( Akonadi::EntityTreeModel::ParentCollectionRole ).value<Akonadi::Collection>();
64 
65  if ( !collection.isValid() )
66  return -1;
67 
68  return collection.id();
69 }
70 
71 void KJotsSortProxyModel::sortChildrenAlphabetically( const QModelIndex& parent )
72 {
73  const Akonadi::Collection::Id id = collectionId( parent );
74  if ( id < 0 )
75  return;
76 
77  m_dateTimeSorted.remove( id );
78  m_alphaSorted.insert( id );
79  invalidate();
80 }
81 
82 void KJotsSortProxyModel::sortChildrenByCreationTime( const QModelIndex& parent )
83 {
84  const Akonadi::Collection::Id id = collectionId( parent );
85  if ( id < 0 )
86  return;
87 
88  m_alphaSorted.remove( id );
89  m_dateTimeSorted.insert( id );
90  invalidate();
91 }
92 
QSortFilterProxyModel::index
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
QSortFilterProxyModel::invalidate
void invalidate()
QSortFilterProxyModel::lessThan
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const
QModelIndex
kjotssortproxymodel.h
KJotsSortProxyModel::lessThan
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const
Definition: kjotssortproxymodel.cpp:38
QVariant::value
T value() const
KJotsSortProxyModel::KJotsSortProxyModel
KJotsSortProxyModel(QObject *parent=0)
Definition: kjotssortproxymodel.cpp:27
QSet::insert
const_iterator insert(const T &value)
QModelIndex::isValid
bool isValid() const
QObject
QSortFilterProxyModel::setDynamicSortFilter
void setDynamicSortFilter(bool enable)
QSortFilterProxyModel
QSet::contains
bool contains(const T &value) const
KJotsSortProxyModel::sortChildrenAlphabetically
void sortChildrenAlphabetically(const QModelIndex &parent)
Definition: kjotssortproxymodel.cpp:71
QSet::remove
bool remove(const T &value)
KJotsSortProxyModel::sortChildrenByCreationTime
void sortChildrenByCreationTime(const QModelIndex &parent)
Definition: kjotssortproxymodel.cpp:82
QModelIndex::data
QVariant data(int role) const
KJotsSortProxyModel::~KJotsSortProxyModel
~KJotsSortProxyModel()
Definition: kjotssortproxymodel.cpp:33
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:12 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kjots

Skip menu "kjots"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

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