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>
This commit is contained in:
Dirk Hohndel 2013-01-07 08:13:23 -08:00
parent d281ad84fd
commit 85ed689dc0
3 changed files with 8 additions and 4 deletions

2
dive.h
View file

@ -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);

View file

@ -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 */

View file

@ -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;
}