Git commit 120e06124cfda36ae520d3e9d6b436298e3c5c8e by Sergio Martins. Committed on 23/12/2012 at 20:19. Pushed by smartins into branch 'master'. Filter out items from the KCheckableProxyModel. There's no point in having items with checkboxes. M +12 -10 akonadi/calendar/etmcalendar.cpp M +2 -0 akonadi/calendar/etmcalendar_p.h http://commits.kde.org/kdepimlibs/120e06124cfda36ae520d3e9d6b436298e3c5c8e diff --git a/akonadi/calendar/etmcalendar.cpp b/akonadi/calendar/etmcalenda= r.cpp index c3e27fc..b39f7b2 100644 --- a/akonadi/calendar/etmcalendar.cpp +++ b/akonadi/calendar/etmcalendar.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include = @@ -100,27 +101,28 @@ void ETMCalendarPrivate::init() = void ETMCalendarPrivate::setupFilteredETM() { - // Our calendar tree must be sorted. - QSortFilterProxyModel *sortFilterProxy =3D new QSortFilterProxyModel( th= is ); - sortFilterProxy->setObjectName( "Sort" ); - sortFilterProxy->setDynamicSortFilter( true ); - sortFilterProxy->setSortCaseSensitivity( Qt::CaseInsensitive ); - sortFilterProxy->setSourceModel( mETM ); - // We're only interested in the CollectionTitle column KColumnFilterProxyModel *columnFilterProxy =3D new KColumnFilterProxyMod= el( this ); - columnFilterProxy->setSourceModel( sortFilterProxy ); + columnFilterProxy->setSourceModel( mETM ); columnFilterProxy->setVisibleColumn( CalendarModel::CollectionTitle ); columnFilterProxy->setObjectName( "Remove columns" ); = + mCollectionProxyModel =3D new Akonadi::CollectionFilterProxyModel( this = ); + mCollectionProxyModel->setObjectName( "Only show collections" ); + mCollectionProxyModel->setDynamicSortFilter( true ); + mCollectionProxyModel->addMimeTypeFilter( QString::fromLatin1( "text/cal= endar" ) ); + mCollectionProxyModel->setExcludeVirtualCollections( true ); + mCollectionProxyModel->setSortCaseSensitivity( Qt::CaseInsensitive ); + mCollectionProxyModel->setSourceModel( columnFilterProxy ); + // Keep track of selected items. - QItemSelectionModel* selectionModel =3D new QItemSelectionModel( columnF= ilterProxy ); + QItemSelectionModel* selectionModel =3D new QItemSelectionModel( mCollec= tionProxyModel ); selectionModel->setObjectName( "Calendar Selection Model" ); = // Make item selection work by means of checkboxes. mCheckableProxyModel =3D new KCheckableProxyModel( this ); mCheckableProxyModel->setSelectionModel( selectionModel ); - mCheckableProxyModel->setSourceModel( columnFilterProxy ); + mCheckableProxyModel->setSourceModel( mCollectionProxyModel ); mCheckableProxyModel->setObjectName( "Add checkboxes" ); = KSelectionProxyModel* selectionProxy =3D new KSelectionProxyModel( selec= tionModel, /**parent=3D*/this ); diff --git a/akonadi/calendar/etmcalendar_p.h b/akonadi/calendar/etmcalenda= r_p.h index ad141b6..17afccc 100644 --- a/akonadi/calendar/etmcalendar_p.h +++ b/akonadi/calendar/etmcalendar_p.h @@ -34,6 +34,7 @@ namespace Akonadi { = class EntityTreeModel; class EntityMimeTypeFilterModel; +class CollectionFilterProxyModel; = class ETMCalendarPrivate : public CalendarBasePrivate { @@ -82,6 +83,7 @@ public: // akonadi id to collections QHash mCollectionMap; KCheckableProxyModel *mCheckableProxyModel; + Akonadi::CollectionFilterProxyModel *mCollectionProxyModel; private: ETMCalendar *const q; };