]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodelrolesupdater.h
Allow showing Nepomuk metadata inside views
[dolphin.git] / src / kitemviews / kfileitemmodelrolesupdater.h
index 065f069c84184e05e51c01000520ba65830a5960..47255b03fe3ef08991d58c462f760866da8d8944 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef KFILEITEMMODELROLESUPDATER_H
 #define KFILEITEMMODELROLESUPDATER_H
 
+#include <config-nepomuk.h>
 #include <libdolphin_export.h>
 
 #include <KFileItem>
@@ -123,9 +124,15 @@ private slots:
      */
     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
@@ -143,8 +150,8 @@ private:
     void startPreviewJob(const KFileItemList& items);
 
     bool hasPendingRoles() const;
+    void resolvePendingRoles();
     void resetPendingRoles();
-    void triggerPendingRolesResolving(int count);
     void sortAndResolveAllRoles();
     void sortAndResolvePendingRoles();
 
@@ -157,7 +164,10 @@ private:
 
     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().
@@ -188,7 +198,20 @@ private:
     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