From: APTX Date: Thu, 14 Jun 2012 16:54:59 +0000 (+0200) Subject: Skip known files during DirectoryScanTask by default X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=8a420ae5f84036650c281722dcf15d2dbd302728;p=localmylist.git Skip known files during DirectoryScanTask by default --- diff --git a/localmylist/directoryscantask.cpp b/localmylist/directoryscantask.cpp index 95c0fca..d402013 100644 --- a/localmylist/directoryscantask.cpp +++ b/localmylist/directoryscantask.cpp @@ -8,7 +8,7 @@ namespace LocalMyList { DirectoryScanTask::DirectoryScanTask(QObject *parent) : - AbstractTask(parent) + AbstractTask(parent), m_skipKnownFiles(true) { } @@ -17,6 +17,11 @@ QDir DirectoryScanTask::directory() const return m_directory; } +bool DirectoryScanTask::skipKnownFiles() const +{ + return m_skipKnownFiles; +} + QString DirectoryScanTask::taskSubject() const { return m_directory.canonicalPath(); @@ -33,6 +38,11 @@ void DirectoryScanTask::setDirectory(QDir directory) m_directory = directory; } +void DirectoryScanTask::setSkipKnownFiles(bool skip) +{ + m_skipKnownFiles = skip; +} + void DirectoryScanTask::start() { stack.push(qMakePair(m_directory, 0)); @@ -74,6 +84,14 @@ void DirectoryScanTask::workUnit() // qDebug() << "Queueing FILE " << entry.fileName(); if (!entry.size()) continue; + + if (m_skipKnownFiles) + { + File f = db->getFileByPath(entry.canonicalFilePath()); + if (f.fid) + continue; + } + QMetaObject::invokeMethod(MyList::instance(), "addFile", Qt::QueuedConnection, Q_ARG(QFileInfo, entry)); } } diff --git a/localmylist/directoryscantask.h b/localmylist/directoryscantask.h index cd010a0..1af0e1f 100644 --- a/localmylist/directoryscantask.h +++ b/localmylist/directoryscantask.h @@ -18,6 +18,7 @@ public: explicit DirectoryScanTask(QObject *parent = 0); QDir directory() const; + bool skipKnownFiles() const; QString taskSubject() const; bool canUseThreads() const; @@ -26,11 +27,13 @@ public slots: void start(); void setDirectory(QDir directory); + void setSkipKnownFiles(bool skip); protected: void workUnit(); QDir m_directory; + bool m_skipKnownFiles; QStack > stack; };