diff options
author | Arno <arno@disconnect.de> | 2017-12-18 16:55:04 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-12-18 16:55:04 +0100 |
commit | 868a73530a00d0b58477ecff7cc658fcaec92c7a (patch) | |
tree | efe99d19b46c778a87450ee5732e1aefe122369b | |
parent | 8e9007ba62af82e1d6256251c2f99303661f6199 (diff) | |
download | ShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.tar.gz ShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.tar.bz2 ShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.zip |
Use QT for deleting directories
QDir has a function removeRecursively(). Use that instead of a homebrew
implementation. Don't gatherData() after that, just remove the deleted
items from the view.
-rw-r--r-- | filewidget.cpp | 42 | ||||
-rw-r--r-- | filewidget.h | 1 |
2 files changed, 17 insertions, 26 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index 2ae9538..e192bf4 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -401,27 +401,6 @@ void FileWidget::writeSettings(){ s.setValue("video/searchdir", mDir->text()); } -void FileWidget::deleteRecursive(const QFileInfo &start){ - QString msg = QString(tr("Removed %1")); - if(start.isDir()){ - QDir curDir(start.absoluteFilePath()); - foreach(QFileInfo fi, curDir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)){ - if(fi.isDir()){ - deleteRecursive(fi); - }else{ - QFile::remove(fi.absoluteFilePath()); - emit statusMessage(msg.arg(fi.absoluteFilePath())); - } - } - QDir dir = start.absoluteDir(); - dir.rmdir(start.fileName()); - emit statusMessage(msg.arg(start.absoluteFilePath())); - }else{ - QFile::remove(start.absoluteFilePath()); - emit statusMessage(start.absoluteFilePath()); - } -} - QAction *FileWidget::createSeparator(){ QAction *retval = new QAction(this); retval->setSeparator(true); @@ -672,11 +651,24 @@ void FileWidget::deleteFiles(){ const QString msg = QString(tr("Really delete %1 file(s)?")).arg(QString::number(selFiles.count())); int retval = QMessageBox::question(this, tr("Delete files..."), msg); if(retval == QMessageBox::Yes){ - foreach(QModelIndex idx, selFiles){ - QFileInfo fi(idx.data(FullPathRole).toString()); - deleteRecursive(fi); + QStringList removed; + for(const QModelIndex& idx : selFiles){ + QString path = idx.data(FullPathRole).toString(); + QFileInfo fi(path); + if(fi.isDir()){ + QDir d(fi.absoluteFilePath()); + d.removeRecursively(); + }else{ + QFile::remove(path); + } + removed << idx.data().toString(); + } + for(const QString& f : removed){ + QList<QStandardItem*> res = mModel->findItems(f, Qt::MatchExactly, NameColumn); + if(!res.isEmpty()){ + mModel->removeRow(res.at(0)->row()); + } } - gatherData(); } } diff --git a/filewidget.h b/filewidget.h index d48aa80..458d3eb 100644 --- a/filewidget.h +++ b/filewidget.h @@ -86,7 +86,6 @@ class FileWidget : public QWidget { void writeHeaderData(); void readSettings(); void writeSettings(); - void deleteRecursive(const QFileInfo &start); void cutOrCopy(); QAction *createSeparator(); QLineEdit *mDir; |