diff options
-rw-r--r-- | filewidget.cpp | 33 | ||||
-rw-r--r-- | filewidget.h | 1 |
2 files changed, 26 insertions, 8 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index 5727e88..ac75d48 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -24,6 +24,7 @@ #include <QItemSelectionModel> #include <QGroupBox> #include <QKeyEvent> +#include <QMessageBox> #include "filewidget.h" #include "filesorter.h" @@ -293,31 +294,47 @@ void FileWidget::cd(const QString &to){ gatherData(); } +void FileWidget::deleteFiles(){ + QModelIndexList selFiles = mFileView->selectionModel()->selectedRows(NameColumn); + 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){ + QString fp = idx.data(FullPathRole).toString(); + QFile::remove(fp); + } + gatherData(); + } +} + void FileWidget::keyPressEvent(QKeyEvent *e){ if(e->key() == Qt::Key_S && (e->modifiers() & Qt::ControlModifier)){ mFilter->setFocus(); mFilter->selectAll(); - e->accept(); - return; + goto exit; } if(e->key() == Qt::Key_D && (e->modifiers() & Qt::ControlModifier)){ mDir->setFocus(); mDir->selectAll(); - e->accept(); - return; + goto exit; } if(e->key() == Qt::Key_F && (e->modifiers() & Qt::ControlModifier)){ mFileView->setFocus(); - e->accept(); - return; + goto exit; } if(mFileView->hasFocus()){ if(e->key() == Qt::Key_Return){ QModelIndex idx = mFileView->selectionModel()->selectedRows(NameColumn).at(0); itemSelected(idx); - e->accept(); - return; + goto exit; + } + if(e->key() == Qt::Key_Delete){ + deleteFiles(); + goto exit; } } QWidget::keyPressEvent(e); + + exit: + e->accept(); } diff --git a/filewidget.h b/filewidget.h index db9799f..d16f307 100644 --- a/filewidget.h +++ b/filewidget.h @@ -32,6 +32,7 @@ class FileWidget : public QWidget { public slots: void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void cd(const QString &to); + void deleteFiles(); private slots: void gatherData(); |