diff options
author | Arno <arno@disconnect.de> | 2016-09-04 12:34:45 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-09-04 12:34:45 +0200 |
commit | 4931a95e4a0fc45f875531fcbd69856aec5fb636 (patch) | |
tree | 88ee9a572829d75d6d65c9d8bc69febaff584ba5 /filewidget.cpp | |
parent | da7af051e0e4c296ded3b6c7dd3d3beb20055c60 (diff) | |
download | ShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.tar.gz ShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.tar.bz2 ShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.zip |
Delete directories recursively
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 25 |
1 files changed, 23 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(); } |