diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2011-11-13 15:29:07 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2011-11-13 15:29:07 -0200 |
commit | 97a1dd68306de17aa73be092d2bcf174e8158f62 (patch) | |
tree | 9639e9cf950a7c1d5ffbc51107b734675d254a77 | |
parent | 5c2fca262043992783551eceebc81c1f589b185b (diff) | |
download | subsurface-97a1dd68306de17aa73be092d2bcf174e8158f62.tar.gz |
Make sure SAC and OTU get recalculated after cylinder info was changed
Also fixed minor coding style issues (prevent useless code from being
executed).
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | divelist.c | 11 | ||||
-rw-r--r-- | divelist.h | 2 | ||||
-rw-r--r-- | equipment.c | 13 |
3 files changed, 18 insertions, 8 deletions
diff --git a/divelist.c b/divelist.c index eb8f23143..bf853ec0e 100644 --- a/divelist.c +++ b/divelist.c @@ -335,6 +335,14 @@ static int calculate_sac(struct dive *dive) return sac * 1000; } +void update_cylinder_related_info(struct dive *dive) +{ + if(dive != NULL) { + dive->sac = calculate_sac(dive); + dive->otu = calculate_otu(dive); + } +} + static void get_string(char **str, const char *s) { int len; @@ -452,8 +460,7 @@ static void fill_dive_list(void) for (i = 0; i < dive_table.nr; i++) { struct dive *dive = dive_table.dives[i]; - dive->otu = calculate_otu(dive); - dive->sac = calculate_sac(dive); + update_cylinder_related_info(dive); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, DIVE_INDEX, i, diff --git a/divelist.h b/divelist.h index 2635b7541..c170941db 100644 --- a/divelist.h +++ b/divelist.h @@ -7,7 +7,7 @@ extern void dive_list_update_dives(void); extern void update_dive_list_col_visibility(void); extern void update_dive_list_units(void); extern void flush_divelist(struct dive *); - +extern void update_cylinder_related_info(struct dive *); extern void mark_divelist_changed(int); extern int unsaved_changes(void); #endif diff --git a/equipment.c b/equipment.c index 19abbe672..dbe1f0f13 100644 --- a/equipment.c +++ b/equipment.c @@ -416,12 +416,14 @@ static void record_cylinder_changes(cylinder_t *cyl, struct cylinder_widget *cyl desc = gtk_combo_box_get_active_text(box); volume = gtk_spin_button_get_value(cylinder->size); pressure = gtk_spin_button_get_value(cylinder->pressure); - start = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->start)); - end = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->end)); - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->pressure_button))) + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->pressure_button))) { + start = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->start)); + end = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->end)); + } else start = end = 0; - o2 = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->o2))*10 + 0.5; - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->gasmix_button))) + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->gasmix_button))) + o2 = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->o2))*10 + 0.5; + else o2 = 0; fill_cylinder_info(cylinder, cyl, desc, volume, pressure, start, end, o2); } @@ -643,6 +645,7 @@ static int edit_cylinder_dialog(int index, cylinder_t *cyl) record_cylinder_changes(cyl, &cylinder); dive->cylinder[index] = *cyl; mark_divelist_changed(TRUE); + update_cylinder_related_info(dive); flush_divelist(dive); } |