summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-04 05:05:04 +0200
committerArno <arno@disconnect.de>2016-09-04 05:05:04 +0200
commit23a23ef364ee13cba413a3bd904ec4391838abbf (patch)
treeb36dac8eea0e4074f09831d16361337b541e389a
parente047ecc96b8873d4e293793a67a33027af291efa (diff)
downloadShemovCleaner-23a23ef364ee13cba413a3bd904ec4391838abbf.tar.gz
ShemovCleaner-23a23ef364ee13cba413a3bd904ec4391838abbf.tar.bz2
ShemovCleaner-23a23ef364ee13cba413a3bd904ec4391838abbf.zip
Navigate by keyboard
* Enter -> itemDoubleClicked * CTRL-S -> filter * CTRL-D -> select directory * CTRL-F -> focus files
-rw-r--r--filewidget.cpp33
-rw-r--r--filewidget.h5
-rw-r--r--shemovcleaner.cpp1
3 files changed, 38 insertions, 1 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index ef4e0ad..478ab26 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -23,6 +23,7 @@
#include <QJsonDocument>
#include <QItemSelectionModel>
#include <QGroupBox>
+#include <QKeyEvent>
#include "filewidget.h"
#include "filesorter.h"
@@ -59,7 +60,7 @@ void FileWidget::setupGui(){
connect(mFilter, SIGNAL(returnPressed()), this, SLOT(filter()));
QPushButton *searchBtn = new QPushButton(tr("Filter"));
connect(searchBtn, SIGNAL(clicked()), this, SLOT(filter()));
- QPushButton *clearBtn = new QPushButton(tr("Clear"));
+ QPushButton *clearBtn = new QPushButton(tr("&Clear"));
connect(clearBtn, SIGNAL(clicked()), this, SLOT(clearFilter()));
QGroupBox *filterGB = new QGroupBox(tr("Filter"));
QHBoxLayout *filterGBL = new QHBoxLayout;
@@ -102,6 +103,7 @@ void FileWidget::setupGui(){
setLayout(mainLayout);
connect(mFileView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(fileSelectionChanged(QItemSelection,QItemSelection)));
+ mFileView->setFocus();
}
void FileWidget::selectDir(){
@@ -280,3 +282,32 @@ void FileWidget::itemDoubleClicked(const QModelIndex &idx){
}
}
}
+
+void FileWidget::keyPressEvent(QKeyEvent *e){
+ if(e->key() == Qt::Key_S && (e->modifiers() & Qt::ControlModifier)){
+ mFilter->setFocus();
+ mFilter->selectAll();
+ e->accept();
+ return;
+ }
+ if(e->key() == Qt::Key_D && (e->modifiers() & Qt::ControlModifier)){
+ mDir->setFocus();
+ mDir->selectAll();
+ e->accept();
+ return;
+ }
+ if(e->key() == Qt::Key_F && (e->modifiers() & Qt::ControlModifier)){
+ mFileView->setFocus();
+ e->accept();
+ return;
+ }
+ if(mFileView->hasFocus()){
+ if(e->key() == Qt::Key_Return){
+ QModelIndex idx = mFileView->selectionModel()->selectedRows(NameColumn).at(0);
+ itemDoubleClicked(idx);
+ e->accept();
+ return;
+ }
+ }
+ QWidget::keyPressEvent(e);
+}
diff --git a/filewidget.h b/filewidget.h
index 99c8d3d..6b84b2d 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -11,6 +11,7 @@ class QStandardItemModel;
class QTreeView;
class VideoSorter;
class FileDisplay;
+class QKeyEvent;
class FileWidget : public QWidget {
Q_OBJECT
@@ -20,6 +21,7 @@ class FileWidget : public QWidget {
enum { ColumnCount = 5 };
enum Columns { IconColumn = 0, NameColumn = 1, MimeColumn = 2, DurationColumn = 3, Md5Column = 4 };
explicit FileWidget(QWidget *parent = 0);
+ QTreeView *fileView() { return mFileView; }
~FileWidget();
signals:
@@ -37,6 +39,9 @@ class FileWidget : public QWidget {
void clearFilter();
void itemDoubleClicked(const QModelIndex &idx);
+ protected:
+ virtual void keyPressEvent(QKeyEvent *e);
+
private:
void setupGui();
int md5Count(const QString &md5);
diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp
index f5d74ad..e7c6d07 100644
--- a/shemovcleaner.cpp
+++ b/shemovcleaner.cpp
@@ -71,6 +71,7 @@ void ShemovCleaner::tabChanged(int idx){
setDuration("00:00:00");
}else if(idx == Videos){
mFileTab->fileSelectionChanged(QItemSelection(), QItemSelection());
+ mFileTab->fileView()->setFocus();
}
}