From e46cb2f8007e4767beef8b43a51e2824010875e8 Mon Sep 17 00:00:00 2001 From: Willem Ferguson Date: Sat, 7 Apr 2018 20:39:41 +0200 Subject: Create divemode switches using profile context menu Allow the manual creation of divemode switch events using the profile context menu. Signed-off-by: Willem Ferguson --- profile-widget/profilewidget2.cpp | 36 ++++++++++++++++++++++++++++++++++++ profile-widget/profilewidget2.h | 3 +++ 2 files changed, 39 insertions(+) diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 62aa36114..3b61cee2f 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1413,6 +1413,12 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event) setpointAction->setData(event->globalPos()); QAction *action = m.addAction(tr("Add bookmark"), this, SLOT(addBookmark())); action->setData(event->globalPos()); + QAction *OCAction = m.addAction(tr("Add OC switch"), this, SLOT(addOCSwitch())); + OCAction->setData(event->globalPos()); + QAction *CCRAction = m.addAction(tr("Add CCR switch"), this, SLOT(addCCRSwitch())); + CCRAction->setData(event->globalPos()); + QAction *PSCRAction = m.addAction(tr("Add PSCR switch"), this, SLOT(addPSCRSwitch())); + PSCRAction->setData(event->globalPos()); if (same_string(current_dc->model, "manually added dive")) m.addAction(tr("Edit the profile"), this, SIGNAL(editCurrentDive())); @@ -1574,6 +1580,36 @@ void ProfileWidget2::addBookmark() replot(); } +void ProfileWidget2::addOCSwitch() +{ + QAction *action = qobject_cast(sender()); + QPointF scenePos = mapToScene(mapFromGlobal(action->data().toPoint())); + add_event(current_dc, lrint(timeAxis->valueAt(scenePos)), 8, 0, 0, "modechange"); + invalidate_dive_cache(current_dive); + mark_divelist_changed(true); + replot(); +} + +void ProfileWidget2::addCCRSwitch() +{ + QAction *action = qobject_cast(sender()); + QPointF scenePos = mapToScene(mapFromGlobal(action->data().toPoint())); + add_event(current_dc, lrint(timeAxis->valueAt(scenePos)), 8, 0, 1, "modechange"); + invalidate_dive_cache(current_dive); + mark_divelist_changed(true); + replot(); +} + +void ProfileWidget2::addPSCRSwitch() +{ + QAction *action = qobject_cast(sender()); + QPointF scenePos = mapToScene(mapFromGlobal(action->data().toPoint())); + add_event(current_dc, lrint(timeAxis->valueAt(scenePos)), 8, 0, 2, "modechange"); + invalidate_dive_cache(current_dive); + mark_divelist_changed(true); + replot(); +} + void ProfileWidget2::addSetpointChange() { QAction *action = qobject_cast(sender()); diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h index 0e44424ee..65a7d99c5 100644 --- a/profile-widget/profilewidget2.h +++ b/profile-widget/profilewidget2.h @@ -115,6 +115,9 @@ slots: // Necessary to call from QAction's signals. void changeGas(); void addSetpointChange(); void addBookmark(); + void addOCSwitch(); + void addCCRSwitch(); + void addPSCRSwitch(); void hideEvents(); void unhideEvents(); void removeEvent(); -- cgit v1.2.3-70-g09d2