diff options
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/diveplanner.cpp | 22 | ||||
-rw-r--r-- | qt-ui/diveplanner.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index 8c3d45c63..c243c1528 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -769,6 +769,27 @@ void DivePlannerPointsModel::clear() CylindersModel::instance()->clear(); } +void DivePlannerPointsModel::addDecoToModel() +{ + struct divedatapoint *dp; + + bool oldRecalc = plannerModel->setRecalc(false); + plannerModel->removeDeco(); + + unsigned int lastdepth = 0; + for (dp = diveplan.dp; dp != NULL; dp = dp->next) { + if (dp->time == 0) // magic entry for available tank + continue; + if (!dp->entered) { + if (dp->depth) { + if (dp->depth == lastdepth || dp->o2 != dp->next->o2 || dp->he != dp->next->he) + plannerModel->addStop(dp->depth, dp->time, dp->next->o2, dp->next->he, 0, false); + lastdepth = dp->depth; + } + } + } + plannerModel->setRecalc(oldRecalc); +} void DivePlannerPointsModel::createTemporaryPlan() { @@ -809,6 +830,7 @@ void DivePlannerPointsModel::createTemporaryPlan() #endif if (plannerModel->recalcQ()) { plan(&diveplan, &cache, &tempDive, stagingDive, isPlanner()); + addDecoToModel(); if (mode == ADD || mode == PLAN) { // copy the samples and events, but don't overwrite the cylinders copy_samples(tempDive, current_dive); diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h index a281b7634..7cc4265bd 100644 --- a/qt-ui/diveplanner.h +++ b/qt-ui/diveplanner.h @@ -99,6 +99,7 @@ private: QVector<sample> backupSamples; // For editing added dives. struct dive *stagingDive; QVector<QPair<int, int> > oldGases; + void addDecoToModel(); }; class DiveHandler : public QObject, public QGraphicsEllipseItem { |