summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-12-19 09:21:21 +0100
committerArno <arno@disconnect.de>2017-12-19 09:24:57 +0100
commit4b828d497a5c0b99a5ce34a3f9a607ddd7e7d1d7 (patch)
treedb63628cc26a06fec5a0275212ef91e2863a6436 /filewidget.cpp
parent444876f36473d7e0d5577e519145193dd43ad1e4 (diff)
downloadShemovCleaner-4b828d497a5c0b99a5ce34a3f9a607ddd7e7d1d7.tar.gz
ShemovCleaner-4b828d497a5c0b99a5ce34a3f9a607ddd7e7d1d7.tar.bz2
ShemovCleaner-4b828d497a5c0b99a5ce34a3f9a607ddd7e7d1d7.zip
Use QDirIterator in FileWidget
According to the documentation it should be faster, but it also has its drawbacks. We can't use the progressbar any more, because we don't know how many files we're going to get. Show the number of files in the statusMessage instead, and show the total size of analyzed files in GB when we're done.
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index ba8f617..7cb884b 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -31,6 +31,7 @@
#include <QApplication>
#include <QContextMenuEvent>
#include <QSignalMapper>
+#include <QDirIterator>
#include "filewidget.h"
#include "filesorter.h"
@@ -229,17 +230,14 @@ void FileWidget::gatherData(){
QSettings s;
QStringList copyDirs = s.value("copydirs").toStringList();
QStringList copyDirFiles;
- foreach(auto d, copyDirs){
- QDir copyDir(d);
- foreach(auto cfi, copyDir.entryInfoList()){
- if(cfi.isFile()){
- copyDirFiles << cfi.fileName();
- }
+ for(const QString &d : copyDirs){
+ QDirIterator it(d, QDir::Files | QDir::NoDotAndDotDot);
+ while(it.hasNext()){
+ it.next();
+ copyDirFiles << it.fileName();
}
}
- QDir d(mDir->text());
- QFileInfoList fl = d.entryInfoList(QStringList() << "*", QDir::Files | QDir::Dirs | QDir::NoDot, QDir::Name | QDir::DirsFirst);
mFileView->setSortingEnabled(false);
mModel->clear();
QStandardItem *root = mModel->invisibleRootItem();
@@ -250,15 +248,15 @@ void FileWidget::gatherData(){
QMimeDatabase db;
qApp->setOverrideCursor(Qt::BusyCursor);
- QString gatherMsg(tr("Gathering data: %1"));
- mProgressBar->reset();
- mProgressBar->setMinimum(0);
- mProgressBar->setMaximum(fl.count() - 1);
- int count = 0;
+ QString gatherMsg(tr("Gathering data: %1 (%2)"));
+ int count = 1;
+ qint64 totalSize = 0;
qApp->processEvents();
- foreach(QFileInfo fi, fl){
- emit statusMessage(gatherMsg.arg(fi.fileName()));
+ QDirIterator it(mDir->text(), QDir::Files | QDir::Dirs | QDir::NoDot);
+ while(it.hasNext()){
+ QFileInfo fi = it.next();
+ emit statusMessage(gatherMsg.arg(fi.fileName()).arg(QString::number(count)));
QMimeType mime = db.mimeTypeForFile(fi);
QList<QStandardItem*> fData;
FileAttrs attr = NotPresent;
@@ -331,6 +329,8 @@ void FileWidget::gatherData(){
fData[CopiedColumn]->setText(QChar(0x2640));
fData[CopiedColumn]->setForeground(redBrush);
}
+ ++count;
+ totalSize += sizemb;
}
fData[DurationColumn]->setText(duration);
fData[DurationColumn]->setData(seconds, SecondsRole);
@@ -345,14 +345,13 @@ void FileWidget::gatherData(){
fData[i]->setData(md5, MD5SumRole);
}
root->appendRow(fData);
- ++count;
- mProgressBar->setValue(count);
}
mFileView->setSortingEnabled(true);
readHeaderData();
qApp->restoreOverrideCursor();
selectFirst();
- emit statusMessage(QString(tr("Gathering data... DONE!")));
+ double totalSizeGB = totalSize / 1024 / 1024 / 1024.0;
+ emit statusMessage(QString(tr("Analyzed %1 file(s) / (%2 GB)").arg(QString::number(count)).arg(QString::number(totalSizeGB, 'f', 2))));
emit freeSpaceChanged(mDir->text());
}