]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodelrolesupdater.cpp
Places Panel: Show drop indicator
[dolphin.git] / src / kitemviews / kfileitemmodelrolesupdater.cpp
index 632df676d427ee1fd7a34e643e0bfe2121421aea..bbb01247d1082d4841cd419818b82969ab6e6f46 100644 (file)
 #include "kfileitemmodelrolesupdater.h"
 
 #include "kfileitemmodel.h"
-#include "kpixmapmodifier_p.h"
 
 #include <KConfig>
 #include <KConfigGroup>
 #include <KDebug>
 #include <KFileItem>
 #include <KGlobal>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
+
+#include "private/kpixmapmodifier.h"
+
+#include <QApplication>
 #include <QPainter>
 #include <QPixmap>
 #include <QElapsedTimer>
 #include <QTimer>
 
 #ifdef HAVE_NEPOMUK
-    #include "knepomukrolesprovider_p.h"
-    #include "knepomukresourcewatcher_p.h"
+    #include "private/knepomukrolesprovider.h"
+    #include "private/nepomuk/resourcewatcher.h"
 #endif
 
 // Required includes for subItemsCount():
@@ -69,7 +73,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO
     m_previewShown(false),
     m_enlargeSmallPreviews(true),
     m_clearPreviews(false),
-    m_sortProgress(-1),
+    m_sortingProgress(-1),
     m_model(model),
     m_iconSize(),
     m_firstVisibleIndex(0),
@@ -319,6 +323,7 @@ void KFileItemModelRolesUpdater::slotItemsRemoved(const KItemRangeList& itemRang
         // Don't let the ResourceWatcher watch for removed items
         if (m_model->count() == 0) {
             m_nepomukResourceWatcher->setResources(QList<Nepomuk::Resource>());
+            m_nepomukResourceWatcher->stop();
             m_nepomukUriItems.clear();
         } else {
             QList<Nepomuk::Resource> newResources;
@@ -333,6 +338,10 @@ void KFileItemModelRolesUpdater::slotItemsRemoved(const KItemRangeList& itemRang
                 }
             }
             m_nepomukResourceWatcher->setResources(newResources);
+            if (newResources.isEmpty()) {
+                Q_ASSERT(m_nepomukUriItems.isEmpty());
+                m_nepomukResourceWatcher->stop();
+            }
         }
     }
 #endif
@@ -653,6 +662,9 @@ void KFileItemModelRolesUpdater::startPreviewJob(const KFileItemList& items)
     }
     KIO::PreviewJob* job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins);
     job->setIgnoreMaximumSize(items.first().isLocalFile());
+    if (job->ui()) {
+        job->ui()->setWindow(qApp->activeWindow());
+    }
 
     connect(job,  SIGNAL(gotPreview(KFileItem,QPixmap)),
             this, SLOT(slotGotPreview(KFileItem,QPixmap)));
@@ -849,7 +861,7 @@ void KFileItemModelRolesUpdater::sortAndResolvePendingRoles()
 
 void KFileItemModelRolesUpdater::applySortProgressToModel()
 {
-    if (m_sortProgress < 0) {
+    if (m_sortingProgress < 0) {
         return;
     }
 
@@ -861,7 +873,7 @@ void KFileItemModelRolesUpdater::applySortProgressToModel()
     if (resolvedCount > 0) {
         m_model->emitSortProgress(resolvedCount);
         if (resolvedCount == m_model->count()) {
-            m_sortProgress = -1;
+            m_sortingProgress = -1;
         }
     }
 }
@@ -877,11 +889,11 @@ void KFileItemModelRolesUpdater::updateSortProgress()
                               ? hasUnknownMimeTypes()
                               : m_resolvableRoles.contains(sortRole);
 
-    if (m_sortProgress >= 0) {
+    if (m_sortingProgress >= 0) {
         // Mark the current sorting as finished
         m_model->emitSortProgress(m_model->count());
     }
-    m_sortProgress = showProgress ? 0 : -1;
+    m_sortingProgress = showProgress ? 0 : -1;
 }
 
 bool KFileItemModelRolesUpdater::hasUnknownMimeTypes() const
@@ -970,7 +982,7 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
 #ifdef HAVE_NEPOMUK
     if (m_nepomukResourceWatcher) {
         const KNepomukRolesProvider& rolesProvider = KNepomukRolesProvider::instance();
-        Nepomuk::Resource resource(item.url());
+        Nepomuk::Resource resource(item.nepomukUri());
         QHashIterator<QByteArray, QVariant> it(rolesProvider.roleValues(resource, m_roles));
         while (it.hasNext()) {
             it.next();
@@ -985,11 +997,11 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
             uri = resource.resourceUri();
         }
         if (!uri.isEmpty() && !m_nepomukUriItems.contains(uri)) {
-            // TODO: Calling stop()/start() is a workaround until
-            // ResourceWatcher has been fixed.
-            m_nepomukResourceWatcher->stop();
             m_nepomukResourceWatcher->addResource(resource);
-            m_nepomukResourceWatcher->start();
+
+            if (m_nepomukUriItems.isEmpty()) {
+                m_nepomukResourceWatcher->start();
+            }
 
             m_nepomukUriItems.insert(uri, item.url());
         }
@@ -1038,7 +1050,7 @@ KFileItemList KFileItemModelRolesUpdater::sortedItems(const QSet<KFileItem>& ite
 int KFileItemModelRolesUpdater::subItemsCount(const QString& path) const
 {
     const bool countHiddenFiles = m_model->showHiddenFiles();
-    const bool showFoldersOnly  = m_model->showFoldersOnly();
+    const bool showFoldersOnly  = m_model->showDirectoriesOnly();
 
 #ifdef Q_WS_WIN
     QDir dir(path);