summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-04 12:34:45 +0200
committerArno <arno@disconnect.de>2016-09-04 12:34:45 +0200
commit4931a95e4a0fc45f875531fcbd69856aec5fb636 (patch)
tree88ee9a572829d75d6d65c9d8bc69febaff584ba5 /filewidget.cpp
parentda7af051e0e4c296ded3b6c7dd3d3beb20055c60 (diff)
downloadShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.tar.gz
ShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.tar.bz2
ShemovCleaner-4931a95e4a0fc45f875531fcbd69856aec5fb636.zip
Delete directories recursively
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp25
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();
}