diff options
Diffstat (limited to 'fswidget.cpp')
-rw-r--r-- | fswidget.cpp | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index 0fa5e75..f11c93d 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -221,6 +221,7 @@ void FSWidget::gatherData(const QString &curDir){ Qt::SortOrder so = mProxy->sortOrder(); mQueryCount = 0; int fileCount = 0; + QStringList dups; QElapsedTimer timer; timer.start(); emit message(tr("Gathering data...")); @@ -247,6 +248,10 @@ void FSWidget::gatherData(const QString &curDir){ filesNameQ.prepare("SELECT COUNT(*) FROM files WHERE tfilename = :arg"); QSqlQuery originNameQ(db); originNameQ.prepare("SELECT COUNT(*) FROM files WHERE tfilename LIKE :arg"); + QSqlQuery picsNameQ(db); + picsNameQ.prepare("SELECT tfilename, cmd5sum FROM pics WHERE tfilename = :arg"); + QSqlQuery picsMd5Q(db); + picsMd5Q.prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :arg"); QDirIterator it(curDir, QDir::Files); mFileView->setUpdatesEnabled(false); @@ -276,24 +281,42 @@ void FSWidget::gatherData(const QString &curDir){ QString likeArg = QString("%1%%").arg(fi.completeBaseName()); //do this goto dance to execute as few queries as possible - if(queryCount(filesMd5Q, md5) > 0){ - currentBrush = greenBrush; - presenceStr = tr("Files: MD5"); - goto ci; - } - if(queryCount(originMd5Q, md5)){ - currentBrush = blueBrush; - presenceStr = tr("Origin: MD5"); - goto ci; - } - if(queryCount(filesNameQ, fi.fileName())){ - currentBrush = greenBrush; - presenceStr = tr("Files: Name"); - goto ci; - } - if(queryCount(originNameQ, likeArg)){ - currentBrush = blueBrush; - presenceStr = tr("Origin: Name"); + if(mimeName.startsWith("video")){ + if(queryCount(filesMd5Q, md5) > 0){ + currentBrush = greenBrush; + presenceStr = tr("Files: MD5"); + goto ci; + } + if(queryCount(originMd5Q, md5)){ + currentBrush = blueBrush; + presenceStr = tr("Origin: MD5"); + goto ci; + } + if(queryCount(filesNameQ, fi.fileName())){ + currentBrush = greenBrush; + presenceStr = tr("Files: Name"); + goto ci; + } + if(queryCount(originNameQ, likeArg)){ + currentBrush = blueBrush; + presenceStr = tr("Origin: Name"); + goto ci; + } + }else if(mimeName.startsWith("image")){ + if(queryCount(picsMd5Q, md5) > 0){ + currentBrush = greenBrush; + presenceStr = tr("Pics: MD5"); + goto ci; + } + picsNameQ.bindValue(":arg", fi.fileName()); + picsNameQ.exec(); + while(picsNameQ.next()){ + dups << picsNameQ.value(1).toString(); + } + if(!dups.isEmpty()){ + currentBrush = blueBrush; + presenceStr = QString(tr("Pics: Name")).arg(QString::number(dups.count())); + } } ci: @@ -306,6 +329,7 @@ void FSWidget::gatherData(const QString &curDir){ item->setData(fi.size(), SizeRole); item->setData(seconds, DurationRole); item->setData(mimeType.name(), MimeRole); + item->setData(dups, DupDataRole); items << item; } items[0]->setText(fi.fileName()); |