diff options
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 42 |
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(); } } |