diff options
-rw-r--r-- | filesystemwidget.cpp | 11 | ||||
-rw-r--r-- | smdirmodel.cpp | 11 | ||||
-rw-r--r-- | smdirmodel.h | 9 |
3 files changed, 29 insertions, 2 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 619944a..0e6e591 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -260,7 +260,11 @@ void FilesystemWidget::goBack(){ } void FilesystemWidget::deleteFiles(){ + qApp->setOverrideCursor(Qt::WaitCursor); TimerHandler h(mFileModel->refreshTimer()); + WatcherHandler wh(mFileModel->watcher()); + qApp->processEvents(); + qApp->restoreOverrideCursor(); QModelIndexList selected = mFileView->selectionModel()->selectedRows(); if(selected.isEmpty()){ return; @@ -270,8 +274,11 @@ void FilesystemWidget::deleteFiles(){ int retval = QMessageBox::question(this, tr("Question"), message, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ foreach(QModelIndex idx, selected){ - QFileInfo fi(idx.data(SmDirModel::FullPathRole).toString()); - deleteRecursive(fi); + QModelIndex real = mFileProxy->mapToSource(idx); + if(real.isValid()){ + QFileInfo fi(real.data(SmDirModel::FullPathRole).toString()); + deleteRecursive(fi); + } } } } diff --git a/smdirmodel.cpp b/smdirmodel.cpp index 32bc241..b9394d8 100644 --- a/smdirmodel.cpp +++ b/smdirmodel.cpp @@ -215,3 +215,14 @@ TimerHandler::~TimerHandler(){ mTimer->start(); } } + +WatcherHandler::WatcherHandler(SmDirWatcher *watcher) : mWatcher(watcher){ + mWatcher->quit(); + mWatcher->wait(); + mWatcher->blockSignals(true); +} + +WatcherHandler::~WatcherHandler(){ + mWatcher->blockSignals(false); + mWatcher->start(); +} diff --git a/smdirmodel.h b/smdirmodel.h index a775553..f8e647b 100644 --- a/smdirmodel.h +++ b/smdirmodel.h @@ -71,4 +71,13 @@ class TimerHandler { QTimer *mTimer; }; +class WatcherHandler { + public: + WatcherHandler(SmDirWatcher *watcher); + ~WatcherHandler(); + + private: + SmDirWatcher *mWatcher; +}; + #endif // SMDIRMODEL_H |