refactored deck editor UI key shortcuts

The global shortcuts were removed in favor of key events
which are only triggered when a widget has focus. This is
necessary to allow different widgets to react differently
to the 'enter' key. The current key configuration is:
search edit focused:
  * left/right: decrease/increase card count for selected database card
  * enter: add selected card to deck
  * ctrl-enter: add selected card to deck sideboard
  * ctrl-left/right: decrease/increase card count in sideboard for selected card

database focused: the same as with search edit.

deckview focused:
  * left/right: decrease/increase card count for selected deckview card
  * enter: increase count for selected deckview card
  * delete/backspace: delete selected card from deck
This commit is contained in:
sylvanbasilisk 2014-03-24 21:03:26 +00:00
parent f6e9676c75
commit 2b7ea0c983
9 changed files with 212 additions and 30 deletions

View file

@ -0,0 +1,49 @@
#include "keysignals.h"
#include <QKeyEvent>
bool KeySignals::eventFilter(QObject * /*object*/, QEvent *event) {
QKeyEvent *kevent;
if(event->type() != QEvent::KeyPress)
return false;
kevent = static_cast<QKeyEvent *>(event);
switch(kevent->key()) {
case Qt::Key_Return:
case Qt::Key_Enter:
if(kevent->modifiers() & Qt::ControlModifier)
emit onCtrlEnter();
else
emit onEnter();
break;
case Qt::Key_Right:
if(kevent->modifiers() & Qt::ControlModifier)
emit onCtrlRight();
else
emit onRight();
if(!filterLROn)
return false;
break;
case Qt::Key_Left:
if(kevent->modifiers() & Qt::ControlModifier)
emit onCtrlLeft();
else
emit onLeft();
if(!filterLROn)
return false;
break;
case Qt::Key_Delete:
case Qt::Key_Backspace:
emit onDelete();
if(!filterDeleteOn)
return false;
break;
default:
return false;
}
return true;
}