summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp42
1 files changed, 17 insertions, 25 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();
}
}