From 94633d2156c62da917aa6b1a6d5d839fd9656522 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Mon, 25 Jan 2021 14:38:57 +0100 Subject: profile: connect to DivePointsPlannerModel in separate function The connection to the DivePointsPlannerModel was done in two distinct functions: setAddState() and setPlanState(), which means that these could easily get out-of-sync. Factor this out into a single function. Signed-off-by: Berthold Stoeger --- profile-widget/profilewidget2.cpp | 29 +++++++++++++++-------------- profile-widget/profilewidget2.h | 1 + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index f5ed95db0..91fc6f8b2 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1264,6 +1264,17 @@ void ProfileWidget2::setToolTipVisibile(bool visible) toolTipItem->setVisible(visible); } +void ProfileWidget2::connectPlannerModel() +{ + DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); + connect(plannerModel, &DivePlannerPointsModel::dataChanged, this, &ProfileWidget2::replot); + connect(plannerModel, &DivePlannerPointsModel::cylinderModelEdited, this, &ProfileWidget2::replot); + connect(plannerModel, &DivePlannerPointsModel::modelReset, this, &ProfileWidget2::pointsReset); + connect(plannerModel, &DivePlannerPointsModel::rowsInserted, this, &ProfileWidget2::pointInserted); + connect(plannerModel, &DivePlannerPointsModel::rowsRemoved, this, &ProfileWidget2::pointsRemoved); + connect(plannerModel, &DivePlannerPointsModel::rowsMoved, this, &ProfileWidget2::pointsMoved); +} + void ProfileWidget2::setAddState() { if (currentState == ADD) @@ -1283,13 +1294,8 @@ void ProfileWidget2::setAddState() actionsForKeys[Qt::Key_Escape]->setShortcut(Qt::Key_Escape); actionsForKeys[Qt::Key_Delete]->setShortcut(Qt::Key_Delete); - DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); - connect(plannerModel, &DivePlannerPointsModel::dataChanged, this, &ProfileWidget2::replot); - connect(plannerModel, &DivePlannerPointsModel::cylinderModelEdited, this, &ProfileWidget2::replot); - connect(plannerModel, &DivePlannerPointsModel::modelReset, this, &ProfileWidget2::pointsReset); - connect(plannerModel, &DivePlannerPointsModel::rowsInserted, this, &ProfileWidget2::pointInserted); - connect(plannerModel, &DivePlannerPointsModel::rowsRemoved, this, &ProfileWidget2::pointsRemoved); - connect(plannerModel, &DivePlannerPointsModel::rowsMoved, this, &ProfileWidget2::pointsMoved); + connectPlannerModel(); + /* show the same stuff that the profile shows. */ currentState = ADD; /* enable the add state. */ diveCeiling->setVisible(true); @@ -1316,13 +1322,8 @@ void ProfileWidget2::setPlanState() actionsForKeys[Qt::Key_Escape]->setShortcut(Qt::Key_Escape); actionsForKeys[Qt::Key_Delete]->setShortcut(Qt::Key_Delete); - DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); - connect(plannerModel, &DivePlannerPointsModel::dataChanged, this, &ProfileWidget2::replot); - connect(plannerModel, &DivePlannerPointsModel::cylinderModelEdited, this, &ProfileWidget2::replot); - connect(plannerModel, &DivePlannerPointsModel::modelReset, this, &ProfileWidget2::pointsReset); - connect(plannerModel, &DivePlannerPointsModel::rowsInserted, this, &ProfileWidget2::pointInserted); - connect(plannerModel, &DivePlannerPointsModel::rowsRemoved, this, &ProfileWidget2::pointsRemoved); - connect(plannerModel, &DivePlannerPointsModel::rowsMoved, this, &ProfileWidget2::pointsMoved); + connectPlannerModel(); + /* show the same stuff that the profile shows. */ currentState = PLAN; /* enable the add state. */ diveCeiling->setVisible(true); diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h index 51cf2f28c..0a584bca4 100644 --- a/profile-widget/profilewidget2.h +++ b/profile-widget/profilewidget2.h @@ -256,6 +256,7 @@ private: std::vector> handles; int handleIndex(const DiveHandler *h) const; #ifndef SUBSURFACE_MOBILE + void connectPlannerModel(); void repositionDiveHandlers(); int fixHandlerIndex(DiveHandler *activeHandler); DiveHandler *createHandle(); -- cgit v1.2.3-70-g09d2