]> Some of my projects - localmylist.git/commitdiff
Skip known files during DirectoryScanTask by default
authorAPTX <marek321@gmail.com>
Thu, 14 Jun 2012 16:54:59 +0000 (18:54 +0200)
committerAPTX <marek321@gmail.com>
Thu, 14 Jun 2012 16:54:59 +0000 (18:54 +0200)
localmylist/directoryscantask.cpp
localmylist/directoryscantask.h

index 95c0fcaab23e97a691e02c275ff08952a29f5c15..d402013ef053d5355a37468b416c92c2bae946bc 100644 (file)
@@ -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));
                        }
                }
index cd010a0e367e9060cd2c3e6fb3dc09f4ea45c28a..1af0e1fa6e71b0864a20cb8c1d94c30023e2b0d2 100644 (file)
@@ -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<QPair<QDir, int > > stack;
 };