X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/de3e2ae40f626c1368dfd40bace54ef3e7815833..405dd624fb:/src/kitemviews/private/kdirectorycontentscounter.cpp diff --git a/src/kitemviews/private/kdirectorycontentscounter.cpp b/src/kitemviews/private/kdirectorycontentscounter.cpp index cd448e233..bd204fe8e 100644 --- a/src/kitemviews/private/kdirectorycontentscounter.cpp +++ b/src/kitemviews/private/kdirectorycontentscounter.cpp @@ -19,20 +19,20 @@ ***************************************************************************/ #include "kdirectorycontentscounter.h" - -#include "kdirectorycontentscounterworker.h" -#include +#include "kitemviews/kfileitemmodel.h" #include + +#include #include KDirectoryContentsCounter::KDirectoryContentsCounter(KFileItemModel* model, QObject* parent) : QObject(parent), m_model(model), m_queue(), - m_worker(0), + m_worker(nullptr), m_workerIsBusy(false), - m_dirWatcher(0), + m_dirWatcher(nullptr), m_watchedDirs() { connect(m_model, &KFileItemModel::itemsRemoved, @@ -70,7 +70,7 @@ KDirectoryContentsCounter::~KDirectoryContentsCounter() m_workerThread->quit(); m_workerThread->wait(); delete m_workerThread; - m_workerThread = 0; + m_workerThread = nullptr; // The worker thread has finished running now, so it's safe to delete // m_worker. deleteLater() would not work at all because the event loop @@ -86,9 +86,11 @@ void KDirectoryContentsCounter::addDirectory(const QString& path) int KDirectoryContentsCounter::countDirectoryContentsSynchronously(const QString& path) { - if (!m_dirWatcher->contains(path)) { - m_dirWatcher->addDir(path); - m_watchedDirs.insert(path); + const QString resolvedPath = QFileInfo(path).canonicalFilePath(); + + if (!m_dirWatcher->contains(resolvedPath)) { + m_dirWatcher->addDir(resolvedPath); + m_watchedDirs.insert(resolvedPath); } KDirectoryContentsCounterWorker::Options options; @@ -108,9 +110,11 @@ void KDirectoryContentsCounter::slotResult(const QString& path, int count) { m_workerIsBusy = false; - if (!m_dirWatcher->contains(path)) { - m_dirWatcher->addDir(path); - m_watchedDirs.insert(path); + const QString resolvedPath = QFileInfo(path).canonicalFilePath(); + + if (!m_dirWatcher->contains(resolvedPath)) { + m_dirWatcher->addDir(resolvedPath); + m_watchedDirs.insert(resolvedPath); } if (!m_queue.isEmpty()) { @@ -122,7 +126,7 @@ void KDirectoryContentsCounter::slotResult(const QString& path, int count) void KDirectoryContentsCounter::slotDirWatchDirty(const QString& path) { - const int index = m_model->index(KUrl(path)); + const int index = m_model->index(QUrl::fromLocalFile(path)); if (index >= 0) { if (!m_model->fileItem(index).isDir()) { // If INotify is used, KDirWatch issues the dirty() signal @@ -151,7 +155,7 @@ void KDirectoryContentsCounter::slotItemsRemoved() QMutableSetIterator it(m_watchedDirs); while (it.hasNext()) { const QString& path = it.next(); - if (m_model->index(KUrl(path)) < 0) { + if (m_model->index(QUrl::fromLocalFile(path)) < 0) { m_dirWatcher->removeDir(path); it.remove(); } @@ -180,5 +184,5 @@ void KDirectoryContentsCounter::startWorker(const QString& path) } } -QThread* KDirectoryContentsCounter::m_workerThread = 0; -int KDirectoryContentsCounter::m_workersCount = 0; \ No newline at end of file +QThread* KDirectoryContentsCounter::m_workerThread = nullptr; +int KDirectoryContentsCounter::m_workersCount = 0;