Desktop: Fix Gas Editing for Manually Added Dives.

- show the correct gasmix in the profile;
- make gases available for gas switches in the profile after they have
  been added;
- persist gas changes;
- add air as a default gas when adding a dive.

This still has problems when undoing a gas switch - instead of
completely removing the gas switch it is just moved to the next point in the
profile.

Signed-off-by: Michael Keller <github@ike.ch>
This commit is contained in:
Michael Keller 2024-05-25 19:03:39 +12:00
parent 9243921cbb
commit f65afaf5d2
13 changed files with 121 additions and 54 deletions

View file

@ -206,20 +206,8 @@ void DivePlannerPointsModel::setupCylinders()
return; // We have at least one cylinder
}
}
if (!empty_string(prefs.default_cylinder)) {
cylinder_t cyl = empty_cylinder;
fill_default_cylinder(d, &cyl);
cyl.start = cyl.type.workingpressure;
add_cylinder(&d->cylinders, 0, cyl);
} else {
cylinder_t cyl = empty_cylinder;
// roughly an AL80
cyl.type.description = copy_qstring(tr("unknown"));
cyl.type.size.mliter = 11100;
cyl.type.workingpressure.mbar = 207000;
add_cylinder(&d->cylinders, 0, cyl);
}
reset_cylinders(d, false);
add_default_cylinder(d);
cylinders.updateDive(d, dcNr);
}
@ -1288,7 +1276,7 @@ void DivePlannerPointsModel::computeVariationsDone(QString variations)
emit calculatedPlanNotes(QString(d->notes));
}
void DivePlannerPointsModel::createPlan(bool replanCopy)
void DivePlannerPointsModel::createPlan(bool saveAsNew)
{
// Ok, so, here the diveplan creates a dive
deco_state_cache cache;
@ -1350,7 +1338,7 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
#endif // !SUBSURFACE_TESTING
} else {
copy_events_until(current_dive, d, dcNr, preserved_until.seconds);
if (replanCopy) {
if (saveAsNew) {
// we were planning an old dive and save as a new dive
d->id = dive_getUniqID(); // Things will break horribly if we create dives with the same id.
#if !defined(SUBSURFACE_TESTING)