mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
planner: remove displayed_dive from DivePlannerModel
To remove global state, make the dive that DivePlannerModel works on a member variable. Pass the dive in createSimpleDive() and loadFromDive(). Moreover, this should pave the way to more fine-grained undo in the planner. Ultimately, the planner should not be modal. Attention: for now, the dive must still be displayed_dive, because of the convoluted way in which the profile and the planner work on the same dive. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
e419ebf55a
commit
1ec0790d50
4 changed files with 72 additions and 63 deletions
|
@ -545,7 +545,7 @@ void PlannerWidgets::planDive()
|
|||
dc_number = 0;
|
||||
|
||||
// create a simple starting dive, using the first gas from the just copied cylinders
|
||||
DivePlannerPointsModel::instance()->createSimpleDive();
|
||||
DivePlannerPointsModel::instance()->createSimpleDive(&displayed_dive);
|
||||
|
||||
// plan the dive in the same mode as the currently selected one
|
||||
if (current_dive) {
|
||||
|
@ -563,17 +563,20 @@ void PlannerWidgets::planDive()
|
|||
|
||||
void PlannerWidgets::replanDive()
|
||||
{
|
||||
if (!current_dive)
|
||||
return;
|
||||
copy_dive(current_dive, &displayed_dive); // Planning works on a copy of the dive (for now).
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(&displayed_dive);
|
||||
|
||||
MainWindow::instance()->graphics->setPlanState();
|
||||
|
||||
plannerWidget.setReplanButton(true);
|
||||
plannerWidget.setupStartTime(timestampToDateTime(current_dive->when));
|
||||
if (current_dive->surface_pressure.mbar)
|
||||
plannerWidget.setSurfacePressure(current_dive->surface_pressure.mbar);
|
||||
if (current_dive->salinity)
|
||||
plannerWidget.setSalinity(current_dive->salinity);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(current_dive);
|
||||
plannerWidget.setupStartTime(timestampToDateTime(displayed_dive.when));
|
||||
if (displayed_dive.surface_pressure.mbar)
|
||||
plannerWidget.setSurfacePressure(displayed_dive.surface_pressure.mbar);
|
||||
if (displayed_dive.salinity)
|
||||
plannerWidget.setSalinity(displayed_dive.salinity);
|
||||
reset_cylinders(&displayed_dive, true);
|
||||
DivePlannerPointsModel::instance()->cylindersModel()->updateDive(&displayed_dive);
|
||||
}
|
||||
|
|
|
@ -1514,10 +1514,11 @@ void MainWindow::editCurrentDive()
|
|||
return;
|
||||
|
||||
disableShortcuts();
|
||||
copy_dive(current_dive, &displayed_dive); // Work on a copy of the dive
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
|
||||
graphics->setAddState();
|
||||
setApplicationState(ApplicationState::EditDive);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(current_dive);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(&displayed_dive);
|
||||
mainTab->enableEdition();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue