summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-12-18 16:55:04 +0100
committerArno <arno@disconnect.de>2017-12-18 16:55:04 +0100
commit868a73530a00d0b58477ecff7cc658fcaec92c7a (patch)
treeefe99d19b46c778a87450ee5732e1aefe122369b
parent8e9007ba62af82e1d6256251c2f99303661f6199 (diff)
downloadShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.tar.gz
ShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.tar.bz2
ShemovCleaner-868a73530a00d0b58477ecff7cc658fcaec92c7a.zip
Use QT for deleting directories
QDir has a function removeRecursively(). Use that instead of a homebrew implementation. Don't gatherData() after that, just remove the deleted items from the view.
-rw-r--r--filewidget.cpp42
-rw-r--r--filewidget.h1
2 files changed, 17 insertions, 26 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();
}
}
diff --git a/filewidget.h b/filewidget.h
index d48aa80..458d3eb 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -86,7 +86,6 @@ class FileWidget : public QWidget {
void writeHeaderData();
void readSettings();
void writeSettings();
- void deleteRecursive(const QFileInfo &start);
void cutOrCopy();
QAction *createSeparator();
QLineEdit *mDir;