22 #include <QGraphicsLinearLayout>
24 #include <KConfigDialog>
26 #include <akonadi/changerecorder.h>
27 #include <akonadi/collection.h>
28 #include <akonadi/collectionfilterproxymodel.h>
29 #include <akonadi/entitydisplayattribute.h>
30 #include <akonadi/entitytreemodel.h>
31 #include <akonadi/entityrightsfiltermodel.h>
32 #include <akonadi/itemmodel.h>
33 #include <akonadi/itemfetchscope.h>
34 #include <akonadi/session.h>
36 #include <Akonadi/Notes/NoteUtils>
38 #include "../kjotsmodel.h"
41 using namespace Akonadi;
46 : PopupApplet(parent, args)
49 setHasConfigurationInterface(
true );
53 setGraphicsWidget( m_treeView );
55 setBackgroundHints( DefaultBackground );
58 void AkonotesListApplet::setupModel( Collection::Id
id )
62 scope.fetchFullPayload(
true );
63 scope.fetchAttribute< EntityDisplayAttribute >();
65 ChangeRecorder *monitor =
new ChangeRecorder(
this );
66 monitor->fetchCollection(
true );
67 monitor->setItemFetchScope( scope );
69 monitor->setCollectionMonitored( Collection(
id ) );
70 monitor->setMimeTypeMonitored( Akonadi::NoteUtils::noteMimeType() );
73 model->setCollectionFetchStrategy( EntityTreeModel::FetchNoCollections );
75 m_treeView->setModel( model );
80 KConfigGroup cg = config();
81 Collection::Id rootCollectionId = cg.readEntry(
"rootCollection", -1);
83 if ( rootCollectionId < 0 )
85 setConfigurationRequired(
true, i18n(
"This widget needs to be configured.") );
89 setupModel( rootCollectionId );
97 configDialog->addPage(widget, i18n(
"Selected Collection"),
QLatin1String(
"view-media-visualization"));
99 ui.treeView->header()->hide();
102 Akonadi::ChangeRecorder *monitor =
new Akonadi::ChangeRecorder(
this );
103 monitor->fetchCollection(
true );
104 monitor->setMimeTypeMonitored( Akonadi::NoteUtils::noteMimeType(),
true );
105 monitor->setCollectionMonitored( Akonadi::Collection::root() );
108 model->setItemPopulationStrategy( EntityTreeModel::NoItemPopulation );
110 CollectionFilterProxyModel *mimeTypeFilterModel =
new CollectionFilterProxyModel(
this );
111 mimeTypeFilterModel->addMimeTypeFilter( Akonadi::NoteUtils::noteMimeType() );
112 mimeTypeFilterModel->setSourceModel( model );
114 EntityRightsFilterModel *rightsFilterModel =
new EntityRightsFilterModel(
this );
115 rightsFilterModel->setSourceModel( mimeTypeFilterModel );
117 ui.treeView->setModel(rightsFilterModel);
119 connect(configDialog, SIGNAL(applyClicked()),
this, SLOT(configAccepted()));
120 connect(configDialog, SIGNAL(okClicked()),
this, SLOT(configAccepted()));
125 KConfigGroup cg = config();
127 QModelIndexList rows = ui.treeView->selectionModel()->selectedRows();
129 if ( rows.isEmpty() )
132 Q_ASSERT( rows.size() == 1 );
134 Collection col = rows.at( 0 ).data( EntityTreeModel::CollectionRole ).value<Collection>();
136 cg.writeEntry(
"rootCollection", col.id() );
138 setupModel( col.id() );
140 setConfigurationRequired(
false );
142 emit configNeedsSaving();
void createConfigurationInterface(KConfigDialog *parent)
Provides a plasma-themed Akonadi::EntityTreeView.