diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-01-07 08:13:23 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-01-07 08:13:23 -0800 |
commit | 85ed689dc0d6ab07386153151f6ac232adb91a8f (patch) | |
tree | 6dc5946cb20487e6e3ffca1cc6b439064480a1ab | |
parent | d281ad84fdce7990a09402c212885c7268ad8bd9 (diff) | |
download | subsurface-85ed689dc0d6ab07386153151f6ac232adb91a8f.tar.gz |
Support relative times in diveplanner input "on the fly" mode
This had gotten lost when updating the profile on the fly.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | gtk-gui.c | 2 | ||||
-rw-r--r-- | planner.c | 8 |
3 files changed, 8 insertions, 4 deletions
@@ -597,7 +597,7 @@ struct diveplan { extern void test_planner(void); void plan(struct diveplan *diveplan, char **cache_datap, struct dive **divep); void plan_add_segment(struct diveplan *diveplan, int duration, int depth, int o2, int he); -void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration); +void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel); void add_depth_to_nth_dp(struct diveplan *diveplan, int idx, int depth); void add_gas_to_nth_dp(struct diveplan *diveplan, int idx, int o2, int he); void free_dps(struct divedatapoint *dp); @@ -1395,7 +1395,7 @@ static gboolean duration_focus_out_cb(GtkWidget *entry, GdkEvent * event, gpoint durationtext = strdup(gtk_entry_get_text(GTK_ENTRY(entry))); if (validate_time(durationtext, &duration, &is_rel)) { - add_duration_to_nth_dp(&diveplan, idx, duration); + add_duration_to_nth_dp(&diveplan, idx, duration, is_rel); show_planned_dive(); } else { /* we need to instead change the color of the input field or something */ @@ -179,9 +179,13 @@ struct divedatapoint *get_nth_dp(struct diveplan *diveplan, int idx) return dp; } -void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration) +void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel) { - struct divedatapoint *dp = get_nth_dp(diveplan, idx); + struct divedatapoint *pdp, *dp = get_nth_dp(diveplan, idx); + if (idx > 0 && is_rel) { + pdp = get_nth_dp(diveplan, idx - 1); + duration += pdp->time; + } dp->time = duration; } |