diff options
author | Stefan Fuchs <sfuchs@gmx.de> | 2017-10-02 11:17:10 +0200 |
---|---|---|
committer | Robert C. Helling <helling@atdotde.de> | 2017-10-18 23:19:13 +0200 |
commit | 4158a4c7de3701f9e03cd226ab26b6437a47f33e (patch) | |
tree | b289320d08d3eeef4c4fc9fdadb848876d8a3660 /core/plannernotes.c | |
parent | 59845c13438f1d72f500eeebed90f6929b822fa5 (diff) | |
download | subsurface-4158a4c7de3701f9e03cd226ab26b6437a47f33e.tar.gz |
init_deco correctly identify previous dives and report overlapping dives
When changing the date/time of a dive in the planner the dive may end
up in a totaly new position in respect to date/time of other dives in
dive list table. It can be moved to the past or the future before or after
other existing dives. It also could overlap with an existing dive.
This change enables identification of a new "virtual" dive list position
and based on this starts looking for previous dives.
Then it (as before the change) does init the deco calculation with any
applicable previous dive and surface interval.
If some of these applicable dives overlap it returns a neg. surface time
which is then used in the planner notes to prohibit display of results.
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
Diffstat (limited to 'core/plannernotes.c')
-rw-r--r-- | core/plannernotes.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/core/plannernotes.c b/core/plannernotes.c index ffbf0b1cb..131820a5b 100644 --- a/core/plannernotes.c +++ b/core/plannernotes.c @@ -85,20 +85,29 @@ void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_d len = show_disclaimer ? snprintf(buffer, sz_buffer, "<div><b>%s</b><br></div>", disclaimer) : 0; - if (diveplan->surface_interval > 60) { - len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s (%s) %s %d:%02d) %s %s<br>", + if (diveplan->surface_interval < 0) { + len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s (%s) %s<br>", translate("gettextFromC", "Subsurface"), subsurface_canonical_version(), - translate("gettextFromC", "dive plan</b> (surface interval "), - FRACTION(diveplan->surface_interval / 60, 60), - translate("gettextFromC", "created on"), - get_current_date()); - } else { + translate("gettextFromC", "dive plan</b> (Overlapping dives detected)")); + dive->notes = strdup(buffer); + free((void *)buffer); + free((void *)temp); + return; + } else if (diveplan->surface_interval >= 48 * 60 *60) { len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s (%s) %s %s</b><br>", translate("gettextFromC", "Subsurface"), subsurface_canonical_version(), translate("gettextFromC", "dive plan</b> created on"), get_current_date()); + } else { + len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s (%s) %s %d:%02d) %s %s<br>", + translate("gettextFromC", "Subsurface"), + subsurface_canonical_version(), + translate("gettextFromC", "dive plan</b> (surface interval "), + FRACTION(diveplan->surface_interval / 60, 60), + translate("gettextFromC", "created on"), + get_current_date()); } if (prefs.display_variations) |