#ifndef KFILEITEMMODELROLESUPDATER_H
#define KFILEITEMMODELROLESUPDATER_H
+#include <config-nepomuk.h>
#include <libdolphin_export.h>
#include <KFileItem>
*/
void slotPreviewJobFinished(KJob* job);
- void resolvePendingRoles();
void resolveNextPendingRoles();
+ /**
+ * Resolves items that have not been resolved yet after the change has been
+ * notified by slotItemsChanged(). Is invoked if the m_changedItemsTimer
+ * exceeds.
+ */
+ void resolveChangedItems();
+
private:
/**
* Updates the roles for the given item ranges. The roles for the currently
void startPreviewJob(const KFileItemList& items);
bool hasPendingRoles() const;
+ void resolvePendingRoles();
void resetPendingRoles();
- void triggerPendingRolesResolving(int count);
void sortAndResolveAllRoles();
void sortAndResolvePendingRoles();
KFileItemList sortedItems(const QSet<KFileItem>& items) const;
- static int subDirectoriesCount(const QString& path);
+ /**
+ * @return The number of items of the path \a path.
+ */
+ int subItemsCount(const QString& path) const;
private:
// Property for setPaused()/isPaused().
QSet<KFileItem> m_pendingInvisibleItems;
QList<KJob*> m_previewJobs;
- QTimer* m_resolvePendingRolesTimer;
+ // When downloading or copying large files, the slot slotItemsChanged()
+ // will be called periodically within a quite short delay. To prevent
+ // a high CPU-load by generating e.g. previews for each notification, the update
+ // will be postponed until no file change has been done within a longer period
+ // of time.
+ QTimer* m_changedItemsTimer;
+ QSet<KFileItem> m_changedItems;
+
+#ifdef HAVE_NEPOMUK
+ // True if roles must be resolved with the help of Nepomuk inside
+ // KFileItemModelRolesUpdater::rolesData().
+ bool m_resolveNepomukRoles;
+#endif
+
};
#endif