summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp60
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());