diff options
author | Arno <am@disconnect.de> | 2013-04-06 07:19:55 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-04-06 07:19:55 +0200 |
commit | 3956fb84ccc26d5ba3be1814192b0c377adfbad0 (patch) | |
tree | b120bc942235f542797d4c4de8a69cfaf8df4eba /smdirwatcher.cpp | |
parent | 511d1f9cd61586336014c55e32f67872e5e4ee10 (diff) | |
download | SheMov-3956fb84ccc26d5ba3be1814192b0c377adfbad0.tar.gz SheMov-3956fb84ccc26d5ba3be1814192b0c377adfbad0.tar.bz2 SheMov-3956fb84ccc26d5ba3be1814192b0c377adfbad0.zip |
SmDirModel: check if file already is in database
Indicate if we already have a file by coloring the filename darkGreen
when browsing the filesystem.
Diffstat (limited to 'smdirwatcher.cpp')
-rw-r--r-- | smdirwatcher.cpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp index 2db94d9..09aead4 100644 --- a/smdirwatcher.cpp +++ b/smdirwatcher.cpp @@ -95,7 +95,14 @@ void SmDirWatcher::run(){ } } -SmDataColletor::SmDataColletor(const int numFields, QObject *parent) : QThread(parent), mSemFree(0), mSemUsed(0), mDataQueue(0), mNumFields(numFields) {} +SmDataColletor::SmDataColletor(const int numFields, QObject *parent) : QThread(parent), mSemFree(0), mSemUsed(0), mDataQueue(0), mNumFields(numFields), mCheckForPresent(true) { + QSqlDatabase db = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), "collectordb"); + db.open(); + mPicPresentQ = new QSqlQuery(db); + mPicPresentQ->prepare("SELECT COUNT(cmd5sum) FROM pics WHERE cmd5sum = :md5"); + mMovPresentQ = new QSqlQuery(db); + mMovPresentQ->prepare("SELECT COUNT(cmd5sum) FROM files WHERE cmd5sum = :md5"); +} void SmDataColletor::init(QSemaphore *set, QSemaphore *get, QQueue<QPair<QString, SmDirWatcher::DWEvent> > *data){ mSemFree = set; @@ -103,6 +110,11 @@ void SmDataColletor::init(QSemaphore *set, QSemaphore *get, QQueue<QPair<QString mDataQueue = data; } +void SmDataColletor::setCheckForPresent(bool present){ + QMutexLocker l(&mCheckForPresentMx); + mCheckForPresent = present; +} + void SmDataColletor::run(){ forever { mSemUsed->acquire(); @@ -135,7 +147,7 @@ SmTreeItem * SmDataColletor::populate(const QString &dir){ return retval; } -const QList<QVariant> SmDataColletor::fileData(const QFileInfo &fi) const{ +const QList<QVariant> SmDataColletor::fileData(const QFileInfo &fi){ QList<QVariant> data; data << fi.fileName() << fi.size(); QString mime = Helper::mimeType(fi.absoluteFilePath()); @@ -150,5 +162,28 @@ const QList<QVariant> SmDataColletor::fileData(const QFileInfo &fi) const{ } data << Helper::md5Sum(fi.absoluteFilePath()); data << si << fi.absoluteFilePath(); + data << 0; + mCheckForPresentMx.lock(); + bool p = mCheckForPresent; + mCheckForPresentMx.unlock(); + if(p){ + QSqlQuery *curQuery = 0; + if(mime.startsWith("video")){ + curQuery = mMovPresentQ; + } + if(mime.startsWith("image")){ + curQuery = mPicPresentQ; + } + if(curQuery){ + curQuery->bindValue(":md5", data.at(4)); + if(curQuery->exec()){ + QVariant res; + while(curQuery->next()){ + res = curQuery->value(0); + } + data[8] = res; + } + } + } return data; } |