planner: move clearing of model into loadFromDive() function

Both loadFromDive() callers were clearing the model before
calling loadFromDive(). Move the clearing into that function
since it makes no sense to load into a non-cleared model.

Apparently this changes the way that no-cylinder dives are
treated and the code in ProfileWidget2::repositionDiveHandlers()
must now explicitly check for that condition.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-25 21:45:29 +01:00 committed by Dirk Hohndel
parent 02ef58a48b
commit e419ebf55a
5 changed files with 8 additions and 6 deletions

View file

@ -563,7 +563,6 @@ void PlannerWidgets::planDive()
void PlannerWidgets::replanDive()
{
DivePlannerPointsModel::instance()->clear();
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN);
MainWindow::instance()->graphics->setPlanState();

View file

@ -1514,7 +1514,6 @@ void MainWindow::editCurrentDive()
return;
disableShortcuts();
DivePlannerPointsModel::instance()->clear();
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
graphics->setAddState();
setApplicationState(ApplicationState::EditDive);

View file

@ -1792,7 +1792,10 @@ void ProfileWidget2::repositionDiveHandlers()
QLineF line(p1, p2);
QPointF pos = line.pointAt(0.5);
gases[i]->setPos(pos);
gases[i]->setText(get_gas_string(get_cylinder(&displayed_dive, datapoint.cylinderid)->gasmix));
if (datapoint.cylinderid >= 0 && datapoint.cylinderid < displayed_dive.cylinders.nr)
gases[i]->setText(get_gas_string(get_cylinder(&displayed_dive, datapoint.cylinderid)->gasmix));
else
gases[i]->setText(QString());
gases[i]->setVisible(datapoint.entered &&
(i == 0 || gases[i]->text() != gases[i-1]->text()));
}

View file

@ -106,9 +106,10 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
duration_t lasttime = { 0 };
duration_t lastrecordedtime = {};
duration_t newtime = {};
clear();
free_dps(&diveplan);
if (mode != PLAN)
clear();
diveplan.when = d->when;
// is this a "new" dive where we marked manually entered samples?
// if yes then the first sample should be marked

View file

@ -40,7 +40,6 @@ public:
void setPlanMode(Mode mode);
bool isPlanner() const;
void createSimpleDive();
void clear();
Mode currentMode() const;
bool setRecalc(bool recalc);
bool recalcQ() const;
@ -119,6 +118,7 @@ signals:
private:
explicit DivePlannerPointsModel(QObject *parent = 0);
void clear();
void setupStartTime();
void setupCylinders();
int lastEnteredPoint() const;