diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-07-04 12:30:05 -0300 |
---|---|---|
committer | Tomaz Canabrava <tcanabrava@kde.org> | 2013-07-04 12:30:05 -0300 |
commit | bb33be4117fa1f5e753d07ac530c3d378d4f0dd0 (patch) | |
tree | 4369e14e38650453a6eaec23444214b8d1744161 /qt-ui/diveplanner.cpp | |
parent | 52fd769efb1678d64d2a09b0b022e0484bf2d1b8 (diff) | |
download | subsurface-bb33be4117fa1f5e753d07ac530c3d378d4f0dd0.tar.gz |
Added the left / right shortcuts for moving the handlers around in time.
Added the left / right shortcuts for moving the handlers around in time,
this also made me wonder why we have the 'previous dc' on the menu, it
got actually to broke my code on the shortcuts for the planner because
they are active everytime - should they be active only when the profile's
visible or they serve any other purpose?
If they serve only for the profile, I'll get them out of the menu and
put them in their proper place - the profile view.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Diffstat (limited to 'qt-ui/diveplanner.cpp')
-rw-r--r-- | qt-ui/diveplanner.cpp | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index 083ddcfe8..f9420be2c 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -129,7 +129,7 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent) #define ADD_ACTION( SHORTCUT, Slot ) \ action = new QAction(this); \ action->setShortcut( SHORTCUT ); \ - action->setShortcutContext(Qt::ApplicationShortcut); \ + action->setShortcutContext(Qt::WindowShortcut); \ addAction(action); \ connect(action, SIGNAL(triggered(bool)), this, SLOT( Slot )) @@ -137,6 +137,8 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent) ADD_ACTION(Qt::Key_Delete, keyDeleteAction()); ADD_ACTION(Qt::Key_Up, keyUpAction()); ADD_ACTION(Qt::Key_Down, keyDownAction()); + ADD_ACTION(Qt::Key_Left, keyLeftAction()); + ADD_ACTION(Qt::Key_Right, keyRightAction()); #undef ADD_ACTION setRenderHint(QPainter::Antialiasing); @@ -174,6 +176,58 @@ void DivePlannerGraphics::keyUpAction() createDecoStops(); } +void DivePlannerGraphics::keyLeftAction() +{ + Q_FOREACH(QGraphicsItem *i, scene()->selectedItems()){ + if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler*>(i)){ + if (handler->sec / 60 <= 0) + continue; + + // don't overlap positions. + // maybe this is a good place for a 'goto'? + double xpos = timeLine->posAtValue((handler->sec - 60) / 60); + bool nextStep = false; + Q_FOREACH(DiveHandler *h, handles){ + if (h->pos().x() == xpos){ + nextStep = true; + break; + } + } + if(nextStep) + continue; + + handler->sec -= 60; + handler->setPos(xpos, handler->pos().y()); + } + } + createDecoStops(); +} + +void DivePlannerGraphics::keyRightAction() +{ + Q_FOREACH(QGraphicsItem *i, scene()->selectedItems()){ + if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler*>(i)){ + if (handler->sec / 60 >= timeLine->maximum()) + continue; + + // don't overlap positions. + // maybe this is a good place for a 'goto'? + double xpos = timeLine->posAtValue((handler->sec + 60) / 60); + bool nextStep = false; + Q_FOREACH(DiveHandler *h, handles){ + if (h->pos().x() == xpos){ + nextStep = true; + break; + } + } + if(nextStep) + continue; + + handler->sec += 60; + handler->setPos(xpos, handler->pos().y()); + } + } createDecoStops(); +} void DivePlannerGraphics::keyDeleteAction() { @@ -438,6 +492,7 @@ void DivePlannerGraphics::mousePressEvent(QMouseEvent* event) { if (event->modifiers()){ QGraphicsView::mousePressEvent(event); + return; } QPointF mappedPos = mapToScene(event->pos()); @@ -448,6 +503,7 @@ void DivePlannerGraphics::mousePressEvent(QMouseEvent* event) originalHandlerPos = activeDraggedHandler->pos(); } } + QGraphicsView::mousePressEvent(event); } void DivePlannerGraphics::mouseReleaseEvent(QMouseEvent* event) |