summaryrefslogtreecommitdiffstats
path: root/smdirwatcher.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-04-06 07:19:55 +0200
committerArno <am@disconnect.de>2013-04-06 07:19:55 +0200
commit3956fb84ccc26d5ba3be1814192b0c377adfbad0 (patch)
treeb120bc942235f542797d4c4de8a69cfaf8df4eba /smdirwatcher.cpp
parent511d1f9cd61586336014c55e32f67872e5e4ee10 (diff)
downloadSheMov-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.cpp39
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;
}