diff options
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 35 |
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()); } |