From 4931a95e4a0fc45f875531fcbd69856aec5fb636 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 4 Sep 2016 12:34:45 +0200 Subject: Delete directories recursively --- filewidget.cpp | 25 +++++++++++++++++++++++-- filewidget.h | 2 ++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/filewidget.cpp b/filewidget.cpp index 2d6acac..a7c1137 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -248,6 +248,27 @@ 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()); + } +} + void FileWidget::filter(){ mProxy->setFilterRegExp(mFilter->text()); mProxy->setFilterKeyColumn(NameColumn); @@ -334,8 +355,8 @@ void FileWidget::deleteFiles(){ int retval = QMessageBox::question(this, tr("Delete files..."), msg); if(retval == QMessageBox::Yes){ foreach(QModelIndex idx, selFiles){ - QString fp = idx.data(FullPathRole).toString(); - QFile::remove(fp); + QFileInfo fi(idx.data(FullPathRole).toString()); + deleteRecursive(fi); } gatherData(); } diff --git a/filewidget.h b/filewidget.h index 0eb4185..26e02a8 100644 --- a/filewidget.h +++ b/filewidget.h @@ -7,6 +7,7 @@ #include #include #include +#include class QLineEdit; class QStandardItemModel; @@ -59,6 +60,7 @@ class FileWidget : public QWidget { void writeHeaderData(); void readSettings(); void writeSettings(); + void deleteRecursive(const QFileInfo &start); QLineEdit *mDir; QLineEdit *mFilter; QStandardItemModel *mModel; -- cgit v1.2.3-70-g09d2