20 #ifndef ENTITYTREEMODELPRIVATE_H
21 #define ENTITYTREEMODELPRIVATE_H
23 #include <akonadi/item.h>
27 #include <akonadi/collectionfetchjob.h>
28 #include <akonadi/itemfetchscope.h>
29 #include <akonadi/mimetypechecker.h>
31 #include "entitytreemodel.h"
33 #include "akonadiprivate_export.h"
80 void init( ChangeRecorder *monitor );
83 void fetchItems(
const Collection &collection );
84 void collectionsFetched(
const Akonadi::Collection::List& );
85 void firstCollectionsFetched(
const Akonadi::Collection::List& );
86 void collectionListFetched(
const Akonadi::Collection::List& );
87 void itemsFetched( KJob* );
88 void itemsFetched(
const Akonadi::Item::List &items );
89 void itemsFetched(
const Collection::Id collectionId,
const Akonadi::Item::List &items );
91 void monitoredCollectionAdded(
const Akonadi::Collection&,
const Akonadi::Collection& );
92 void monitoredCollectionRemoved(
const Akonadi::Collection& );
93 void monitoredCollectionChanged(
const Akonadi::Collection& );
94 void monitoredCollectionStatisticsChanged( Akonadi::Collection::Id,
const Akonadi::CollectionStatistics& );
95 void monitoredCollectionMoved(
const Akonadi::Collection&,
const Akonadi::Collection&,
const Akonadi::Collection& );
97 void collectionSubscribed(
const Akonadi::Collection&,
const Akonadi::Collection& );
98 void monitoredCollectionUnsubscribed(
const Akonadi::Collection& );
100 void monitoredItemAdded(
const Akonadi::Item&,
const Akonadi::Collection& );
101 void monitoredItemRemoved(
const Akonadi::Item& );
102 void monitoredItemChanged(
const Akonadi::Item&,
const QSet<QByteArray>& );
103 void monitoredItemMoved(
const Akonadi::Item&,
const Akonadi::Collection&,
const Akonadi::Collection& );
105 void monitoredItemLinked(
const Akonadi::Item&,
const Akonadi::Collection& );
106 void monitoredItemUnlinked(
const Akonadi::Item&,
const Akonadi::Collection& );
108 void monitoredMimeTypeChanged(
const QString &mimeType,
bool monitored );
109 void monitoredCollectionsChanged(
const Akonadi::Collection &collection,
bool monitored );
110 void monitoredItemsChanged(
const Akonadi::Item &item,
bool monitored );
111 void monitoredResourcesChanged(
const QByteArray &resource,
bool monitored );
119 QStringList childCollectionNames(
const Collection &collection )
const;
124 void retrieveAncestors(
const Akonadi::Collection& collection );
125 void ancestorsFetched(
const Akonadi::Collection::List& collectionList );
126 void insertCollection(
const Akonadi::Collection &collection,
const Akonadi::Collection& parent );
127 void insertPendingCollection(
const Akonadi::Collection &collection,
const Akonadi::Collection& parent, QMutableListIterator<Collection> &it );
129 void beginResetModel();
130 void endResetModel();
140 void changeFetchState(
const Collection &parent );
141 void agentInstanceAdvancedStatusChanged(
const QString&,
const QVariantMap& );
144 QHash<Collection::Id, Collection> m_collections;
145 QHash<Entity::Id, Item> m_items;
146 QHash<Collection::Id, QList<Node*> > m_childEntities;
147 QSet<Collection::Id> m_populatedCols;
148 QSet<Collection::Id> m_collectionsWithoutItems;
150 QVector<Entity::Id> m_pendingCutItems;
151 QVector<Entity::Id> m_pendingCutCollections;
152 mutable QSet<Collection::Id> m_pendingCollectionRetrieveJobs;
154 ChangeRecorder *m_monitor;
157 QString m_rootCollectionDisplayName;
158 QStringList m_mimeTypeFilter;
162 bool m_includeUnsubscribed;
163 bool m_includeStatistics;
164 bool m_showRootCollection;
165 QHash<Collection::Id, uint> m_collectionSyncProgress;
177 void startFirstListJob();
179 void serverStarted();
181 void monitoredItemsRetrieved( KJob* job );
182 void firstFetchJobDone( KJob *job );
183 void rootFetchJobDone( KJob *job );
184 void fetchJobDone( KJob *job );
185 void updateJobDone( KJob *job );
186 void pasteJobDone( KJob *job );
191 template<Node::Type Type>
192 int indexOf(
const QList<Node*> &nodes,
Entity::Id id )
const
195 foreach (
const Node *node, nodes ) {
196 if ( node->id ==
id && node->type == Type )
211 return "FetchCollectionId";
218 void fetchTopLevelCollections() const;
219 void topLevelCollectionsFetched( const Akonadi::Collection::List& collectionList );
224 bool isHidden( const
Entity &entity, Node::Type type ) const;
227 bool isHidden( const T &entity ) const;
229 bool m_showSystemEntities;
231 void ref( Collection::Id
id );
232 void deref( Collection::Id
id );
237 bool shouldPurge( Collection::Id
id );
242 void purgeItems( Collection::Id
id );
251 QList<Node*>::iterator removeItems( QList<Node*>::iterator it, QList<Node*>::iterator end,
252 int *pos, const Collection &col );
261 QList<Node*>::iterator skipCollections( QList<Node*>::iterator it, QList<Node*>::iterator end,
int *pos );
266 void dataChanged( const QModelIndex &top, const QModelIndex &bottom );
271 QModelIndex indexForCollection( const Collection &collection ) const;
276 QModelIndexList indexesForItem( const Item &item ) const;
281 Collection collectionForId( Collection::Id
id ) const;
286 Item itemForId( Item::Id
id ) const;
288 bool canFetchMore( const QModelIndex & parent ) const;