aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-25 14:38:57 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-04-02 13:53:23 -0700
commit94633d2156c62da917aa6b1a6d5d839fd9656522 (patch)
treeca8c26564240801ab4d68e9b093b640fbead6e20
parentdee1fea683a887bd117d1532a9c6377ecdc01f30 (diff)
downloadsubsurface-94633d2156c62da917aa6b1a6d5d839fd9656522.tar.gz
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 <bstoeger@mail.tuwien.ac.at>
-rw-r--r--profile-widget/profilewidget2.cpp29
-rw-r--r--profile-widget/profilewidget2.h1
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<std::unique_ptr<DiveHandler>> handles;
int handleIndex(const DiveHandler *h) const;
#ifndef SUBSURFACE_MOBILE
+ void connectPlannerModel();
void repositionDiveHandlers();
int fixHandlerIndex(DiveHandler *activeHandler);
DiveHandler *createHandle();