summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-06-06 10:47:15 +0200
committerArno <arno@disconnect.de>2015-06-06 10:47:15 +0200
commit41e54bc5bded308687ad090afef9e5737edbe9b3 (patch)
treea5868d8ec8a551459c5ebdac9d155e70a4affdcc
parent2b6a35559cc330fe0356a961e3283a11abc3442f (diff)
downloadSheMov-41e54bc5bded308687ad090afef9e5737edbe9b3.tar.gz
SheMov-41e54bc5bded308687ad090afef9e5737edbe9b3.tar.bz2
SheMov-41e54bc5bded308687ad090afef9e5737edbe9b3.zip
Navigate NewPicsDialog by keyboard
MappingView: * Key_Right: add mapping * Ctrl-Key_Right: shift focus to ResultView * Delete: clear all mappings ResultView: * Key_Left: remove mapping * Ctrl-Key_Left: shift focus to MappingView
-rw-r--r--mappingtreewidget.cpp71
-rw-r--r--mappingtreewidget.h23
-rw-r--r--pictureswidget.cpp1
3 files changed, 68 insertions, 27 deletions
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp
index ab9b844..dcebb02 100644
--- a/mappingtreewidget.cpp
+++ b/mappingtreewidget.cpp
@@ -208,15 +208,6 @@ void MappingTreeWidget::deleteType(){
}
}
-void MappingTreeWidget::selectPath(const QList<int> &data, bool reverse){
- QModelIndex pathIdx = mModel->indexFromParentPath(data, reverse);
- if(!pathIdx.isValid()){
- return;
- }
- QModelIndex real = mProxy->mapFromSource(pathIdx);
- mTree->setCurrentIndex(real);
-}
-
void MappingTreeWidget::hideEvent(QHideEvent *event){
QString type = mTypeBox->currentText();
if(!type.isEmpty()){
@@ -283,11 +274,38 @@ void MappingTreeView::contextMenuEvent(QContextMenuEvent *e){
ctxMenu.exec(e->globalPos());
}
+void MappingTreeView::keyPressEvent(QKeyEvent *e){
+ if(e->key() == Qt::Key_Right && (e->modifiers() & Qt::ControlModifier)){
+ clearFocus();
+ emit shiftFocus();
+ return;
+ }
+ if(e->key() == Qt::Key_Right){
+ emit addMapping();
+ }
+ if(e->key() == Qt::Key_Delete){
+ emit clearMappings();
+ }
+ SmTreeView::keyPressEvent(e);
+}
+
MappingTreeResultView::MappingTreeResultView(QWidget *parent) : SmTreeView(parent) {
setAlternatingRowColors(true);
setPalette(qApp->palette());
}
+void MappingTreeResultView::keyPressEvent(QKeyEvent *e){
+ if(e->key() == Qt::Key_Left && (e->modifiers() & Qt::ControlModifier)){
+ clearFocus();
+ emit shiftFocus();
+ return;
+ }
+ if(e->key() == Qt::Key_Left){
+ emit removeMapping();
+ }
+ SmTreeView::keyPressEvent(e);
+}
+
MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){
//the views
mMappingTree = new MappingTreeWidget;
@@ -298,13 +316,19 @@ MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){
mMappingResult->setColumnHidden(1, true);
mMappingResult->setColumnHidden(2, true);
mMappingResult->setColumnHidden(3, true);
- connect(mMappingResult->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(resultMappingChanged(QModelIndex,QModelIndex)));
+ connect(mMappingTree->mappingTreeView(), SIGNAL(addMapping()), this, SLOT(addMapping()));
+ connect(mMappingTree->mappingTreeView(), SIGNAL(clearMappings()), this, SLOT(clearMapping()));
+ connect(mMappingTree->mappingTreeView(), SIGNAL(shiftFocus()), this, SLOT(shiftFocusResult()));
+ connect(mMappingResult, SIGNAL(shiftFocus()), this, SLOT(shiftFocusMappings()));
+ connect(mMappingResult, SIGNAL(removeMapping()), this, SLOT(removeMapping()));
//buttons
mAddMapping = new QPushButton(tr(">>"));
connect(mAddMapping, SIGNAL(clicked()), this, SLOT(addMapping()));
mRemoveMapping = new QPushButton(tr("<<"));
connect(mRemoveMapping, SIGNAL(clicked()), this, SLOT(removeMapping()));
+ mClearMapping = new QPushButton(tr("&Clear"));
+ connect(mClearMapping, SIGNAL(clicked()), this, SLOT(clearMapping()));
//layout
QHBoxLayout *mainLayout = new QHBoxLayout;
@@ -313,16 +337,19 @@ MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){
buttonLayout->addStretch();
buttonLayout->addWidget(mAddMapping);
buttonLayout->addWidget(mRemoveMapping);
+ buttonLayout->addWidget(mClearMapping);
buttonLayout->addStretch();
mainLayout->addLayout(buttonLayout);
mainLayout->addWidget(mMappingResult);
setLayout(mainLayout);
+ mMappingTree->mappingTreeView()->setFocus();
}
void MappingEditWidget::addMapping(){
MappingData selected = mMappingTree->selectedItem();
mResultModel->addItem(selected);
mMappingResult->expandAll();
+ mMappingTree->mappingTreeView()->setFocus();
}
void MappingEditWidget::removeMapping(){
@@ -335,6 +362,12 @@ void MappingEditWidget::removeMapping(){
mResultModel->removeItem(firstIdx);
}
mMappingResult->expandAll();
+ mMappingTree->mappingTreeView()->setFocus();
+}
+
+void MappingEditWidget::clearMapping(){
+ mResultModel->clearData();
+ mMappingTree->mappingTreeView()->setFocus();
}
void MappingEditWidget::setMappings(const QList<MappingData> &mappings){
@@ -352,18 +385,12 @@ void MappingEditWidget::expandAllResults(){
mMappingResult->expandAll();
}
-void MappingEditWidget::resultMappingChanged(const QModelIndex &cur, const QModelIndex &prev){
- Q_UNUSED(prev);
- if(!cur.isValid()){
- return;
- }
- QModelIndex idx = cur;
- QList<int> path;
- while(idx.isValid()){
- path << idx.data(MappingTreeResultModel::MappingIdRole).toInt();
- idx = idx.parent();
- }
- mMappingTree->selectPath(path, false);
+void MappingEditWidget::shiftFocusResult(){
+ mMappingResult->setFocus();
+}
+
+void MappingEditWidget::shiftFocusMappings(){
+ mMappingTree->mappingTreeView()->setFocus();
}
MappingInputDialog::MappingInputDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
diff --git a/mappingtreewidget.h b/mappingtreewidget.h
index b1647b5..24e50ab 100644
--- a/mappingtreewidget.h
+++ b/mappingtreewidget.h
@@ -30,13 +30,13 @@ class MappingTreeWidget : public QWidget {
public:
explicit MappingTreeWidget(QWidget *parent = 0);
MappingData selectedItem() const;
+ MappingTreeView *mappingTreeView() const { return mTree; }
public slots:
void addChild();
void addType();
void deleteChild();
void deleteType();
- void selectPath(const QList<int> &data, bool reverse = true);
protected:
virtual void hideEvent(QHideEvent *event);
@@ -73,14 +73,28 @@ class MappingTreeView : public SmTreeView {
public:
MappingTreeView(QWidget *parent = 0);
+ signals:
+ void addMapping();
+ void removeMapping();
+ void clearMappings();
+ void shiftFocus();
+
protected:
virtual void contextMenuEvent(QContextMenuEvent *e);
+ virtual void keyPressEvent(QKeyEvent *e);
};
class MappingTreeResultView : public SmTreeView {
Q_OBJECT
public:
explicit MappingTreeResultView(QWidget *parent = 0);
+
+ signals:
+ void shiftFocus();
+ void removeMapping();
+
+ protected:
+ virtual void keyPressEvent(QKeyEvent *e);
};
class MappingEditWidget : public QWidget {
@@ -92,11 +106,11 @@ class MappingEditWidget : public QWidget {
public slots:
void addMapping();
void removeMapping();
+ void clearMapping();
void setMappings(const QList<MappingData> &mappings);
void expandAllResults();
-
- private slots:
- void resultMappingChanged(const QModelIndex &cur, const QModelIndex &prev);
+ void shiftFocusResult();
+ void shiftFocusMappings();
private:
MappingTreeWidget *mMappingTree;
@@ -104,6 +118,7 @@ class MappingEditWidget : public QWidget {
MappingTreeResultModel *mResultModel;
QPushButton *mAddMapping;
QPushButton *mRemoveMapping;
+ QPushButton *mClearMapping;
};
class MappingInputDialog : public QDialog {
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index c23af06..d27d801 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -84,7 +84,6 @@ void PicturesWidget::readSettings(){
for(int i = 0; i < ps.count(); ++i){
path << ps.at(i).toInt();
}
- mMappingTree->selectPath(path);
mPictureView->readHeaderConfig();
}