mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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:
parent
9243921cbb
commit
f65afaf5d2
13 changed files with 121 additions and 54 deletions
|
@ -503,12 +503,38 @@ cylinder_t create_new_cylinder(const struct dive *d)
|
|||
cylinder_t cyl = empty_cylinder;
|
||||
fill_default_cylinder(d, &cyl);
|
||||
cyl.start = cyl.type.workingpressure;
|
||||
cyl.manually_added = true;
|
||||
cyl.cylinder_use = OC_GAS;
|
||||
return cyl;
|
||||
}
|
||||
|
||||
static bool show_cylinder(const struct dive *d, int i)
|
||||
cylinder_t create_new_manual_cylinder(const struct dive *d)
|
||||
{
|
||||
cylinder_t cyl = create_new_cylinder(d);
|
||||
cyl.manually_added = true;
|
||||
return cyl;
|
||||
}
|
||||
|
||||
void add_default_cylinder(struct dive *d)
|
||||
{
|
||||
// Only add if there are no cylinders yet
|
||||
if (d->cylinders.nr > 0)
|
||||
return;
|
||||
|
||||
cylinder_t cyl;
|
||||
if (!empty_string(prefs.default_cylinder)) {
|
||||
cyl = create_new_cylinder(d);
|
||||
} else {
|
||||
cyl = empty_cylinder;
|
||||
// roughly an AL80
|
||||
cyl.type.description = strdup(translate("gettextFromC", "unknown"));
|
||||
cyl.type.size.mliter = 11100;
|
||||
cyl.type.workingpressure.mbar = 207000;
|
||||
}
|
||||
add_cylinder(&d->cylinders, 0, cyl);
|
||||
reset_cylinders(d, false);
|
||||
}
|
||||
|
||||
static bool show_cylinder(const struct dive *d, int i)
|
||||
{
|
||||
if (is_cylinder_used(d, i))
|
||||
return true;
|
||||
|
|
|
@ -93,7 +93,8 @@ extern void reset_cylinders(struct dive *dive, bool track_gas);
|
|||
extern int gas_volume(const cylinder_t *cyl, pressure_t p); /* Volume in mliter of a cylinder at pressure 'p' */
|
||||
extern int find_best_gasmix_match(struct gasmix mix, const struct cylinder_table *cylinders);
|
||||
extern void fill_default_cylinder(const struct dive *dive, cylinder_t *cyl); /* dive is needed to fill out MOD, which depends on salinity. */
|
||||
extern cylinder_t create_new_cylinder(const struct dive *dive); /* dive is needed to fill out MOD, which depends on salinity. */
|
||||
extern cylinder_t create_new_manual_cylinder(const struct dive *dive); /* dive is needed to fill out MOD, which depends on salinity. */
|
||||
extern void add_default_cylinder(struct dive *dive);
|
||||
extern int first_hidden_cylinder(const struct dive *d);
|
||||
#ifdef DEBUG_CYL
|
||||
extern void dump_cylinders(struct dive *dive, bool verbose);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue