From 601861ef5e05b88b9721cde5b49d16b5b00caa50 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 27 Feb 2021 22:24:33 +0100 Subject: planner: split DivePlannerPointsModel::removePoints() in two Split the function in one external version, that updates the dive profile and cylinders and one internal version, that does no recalculations. In the latter case, the caller is responsible for updating the dive. Thus, the recalculation flag-clearing can be removed from removeDeco(). Signed-off-by: Berthold Stoeger --- qt-models/diveplannermodel.cpp | 15 ++++++++++----- qt-models/diveplannermodel.h | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp index c8da6e6a7..7019472c7 100644 --- a/qt-models/diveplannermodel.cpp +++ b/qt-models/diveplannermodel.cpp @@ -28,7 +28,7 @@ CylindersModel *DivePlannerPointsModel::cylindersModel() return &cylinders; } -void DivePlannerPointsModel::removeSelectedPoints(const QVector &rows) +void DivePlannerPointsModel::removePoints(const QVector &rows) { if (!rows.count()) return; @@ -40,6 +40,12 @@ void DivePlannerPointsModel::removeSelectedPoints(const QVector &rows) divepoints.erase(divepoints.begin() + v2[i]); endRemoveRows(); } +} + +void DivePlannerPointsModel::removeSelectedPoints(const QVector &rows) +{ + removePoints(rows); + updateDiveProfile(); emitDataChanged(); cylinders.updateTrashIcon(); @@ -225,13 +231,12 @@ bool DivePlannerPointsModel::updateMaxDepth() void DivePlannerPointsModel::removeDeco() { - bool oldrec = std::exchange(recalc, false); QVector computedPoints; - for (int i = 0; i < rowCount(); i++) + for (int i = 0; i < rowCount(); i++) { if (!at(i).entered) computedPoints.push_back(i); - removeSelectedPoints(computedPoints); - recalc = oldrec; + } + removePoints(computedPoints); } void DivePlannerPointsModel::addCylinder_clicked() diff --git a/qt-models/diveplannermodel.h b/qt-models/diveplannermodel.h index b1f37d70d..f0ec195e6 100644 --- a/qt-models/diveplannermodel.h +++ b/qt-models/diveplannermodel.h @@ -115,6 +115,7 @@ private: explicit DivePlannerPointsModel(QObject *parent = 0); void clear(); int addStop(int millimeters, int seconds, int cylinderid_in, int ccpoint, bool entered, enum divemode_t); + void removePoints(const QVector &rows); void setupStartTime(); void setupCylinders(); int lastEnteredPoint() const; -- cgit v1.2.3-70-g09d2