diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-03-02 21:48:53 +0100 |
---|---|---|
committer | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-07 00:13:35 +0200 |
commit | c4c3e62ab0b3abed940ca16009b47b3dab61f068 (patch) | |
tree | f23c3ea26bd6c85341ec5298459b666fdb8dd3c0 | |
parent | dee7fd9f308caae16045038b67dedd604a4d0ac2 (diff) | |
download | subsurface-c4c3e62ab0b3abed940ca16009b47b3dab61f068.tar.gz |
profile: use lambda for addDivemodeSwitch calls
The data was transported via the action in a most complicated way:
The text was backtranslated. Simply use a lambda - perhaps hard to
read, but much simpler to follow and less brittle.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | profile-widget/profilewidget2.cpp | 19 | ||||
-rw-r--r-- | profile-widget/profilewidget2.h | 2 |
2 files changed, 6 insertions, 15 deletions
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 43ebf0777..ebc760cac 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1472,22 +1472,19 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event) if (divemode != OC) { QAction *action = new QAction(&m); action->setText(gettextFromC::tr(divemode_text_ui[OC])); - connect(action, SIGNAL(triggered(bool)), this, SLOT(addDivemodeSwitch())); - action->setData(event->globalPos()); + connect(action, &QAction::triggered, [this, seconds](){ addDivemodeSwitch(seconds, OC); }); changeMode->addAction(action); } if (divemode != CCR) { QAction *action = new QAction(&m); action->setText(gettextFromC::tr(divemode_text_ui[CCR])); - connect(action, SIGNAL(triggered(bool)), this, SLOT(addDivemodeSwitch())); - action->setData(event->globalPos()); + connect(action, &QAction::triggered, [this, seconds](){ addDivemodeSwitch(seconds, CCR); }); changeMode->addAction(action); } if (divemode != PSCR) { QAction *action = new QAction(&m); action->setText(gettextFromC::tr(divemode_text_ui[PSCR])); - connect(action, SIGNAL(triggered(bool)), this, SLOT(addDivemodeSwitch())); - action->setData(event->globalPos()); + connect(action, &QAction::triggered, [this, seconds](){ addDivemodeSwitch(seconds, PSCR); }); changeMode->addAction(action); } @@ -1646,15 +1643,9 @@ void ProfileWidget2::addBookmark() replot(); } -void ProfileWidget2::addDivemodeSwitch() +void ProfileWidget2::addDivemodeSwitch(int seconds, int divemode) { - int i; - QAction *action = qobject_cast<QAction *>(sender()); - QPointF scenePos = mapToScene(mapFromGlobal(action->data().toPoint())); - for (i = 0; i < NUM_DIVEMODE; i++) - if (gettextFromC::tr(divemode_text_ui[i]) == action->text()) - add_event(current_dc, lrint(timeAxis->valueAt(scenePos)), SAMPLE_EVENT_BOOKMARK, 0, i, - QT_TRANSLATE_NOOP("gettextFromC", "modechange")); + add_event(current_dc, seconds, SAMPLE_EVENT_BOOKMARK, 0, divemode, QT_TRANSLATE_NOOP("gettextFromC", "modechange")); invalidate_dive_cache(current_dive); mark_divelist_changed(true); replot(); diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h index ebaa52696..4d47cb622 100644 --- a/profile-widget/profilewidget2.h +++ b/profile-widget/profilewidget2.h @@ -118,7 +118,6 @@ slots: // Necessary to call from QAction's signals. void addSetpointChange(); void splitDive(); void addBookmark(); - void addDivemodeSwitch(); void hideEvents(); void unhideEvents(); void removeEvent(); @@ -175,6 +174,7 @@ private: const double *thresholdSettingsMin, const double *thresholdSettingsMax); void clearPictures(); void plotPicturesInternal(const struct dive *d, bool synchronous); + void addDivemodeSwitch(int seconds, int divemode); private: DivePlotDataModel *dataModel; int zoomLevel; |