summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
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();
}