summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2015-05-09 21:55:59 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-05-11 07:57:09 -0700
commit698b2b133fb43cfa2c28f7639662f3d787627c30 (patch)
tree2583da7e9a7f19e67793e1f261f70457e0ed2c65
parent3edec7c97dac71f288d65fd0e86fc14c69649d9d (diff)
downloadsubsurface-698b2b133fb43cfa2c28f7639662f3d787627c30.tar.gz
Only add disclaimer and runtime table if we added deco to replanne dive
As a side effect this changes the signature of plan(): Before it returned an int that was supposed to be possibly an error but we never bothered to check it. So now it's bool indicating if the planner did add stops. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.h2
-rw-r--r--planner.c12
-rw-r--r--qt-ui/diveplanner.cpp5
3 files changed, 12 insertions, 7 deletions
diff --git a/dive.h b/dive.h
index 625f650aa..9a26892e6 100644
--- a/dive.h
+++ b/dive.h
@@ -819,7 +819,7 @@ struct divedatapoint *create_dp(int time_incr, int depth, struct gasmix gasmix,
#if DEBUG_PLAN
void dump_plan(struct diveplan *diveplan);
#endif
-int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer);
+bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer);
void delete_single_dive(int idx);
struct event *get_next_event(struct event *event, const char *name);
diff --git a/planner.c b/planner.c
index af1db5079..ed7687ec9 100644
--- a/planner.c
+++ b/planner.c
@@ -853,7 +853,9 @@ bool enough_gas(int current_cylinder)
return true;
}
-int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer)
+// Work out the stops. Return value is if there were any mandatory stops.
+
+bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer)
{
struct sample *sample;
int po2;
@@ -876,6 +878,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
int breaktime = -1;
int breakcylinder = 0;
int error = 0;
+ bool decodive = false;
set_gf(diveplan->gflow, diveplan->gfhigh, prefs.gf_low_at_maxdepth);
if (!diveplan->surface_pressure)
@@ -912,7 +915,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
transitiontime = depth / 75; /* this still needs to be made configurable */
plan_add_segment(diveplan, transitiontime, 0, gas, po2, false);
create_dive_from_plan(diveplan, is_planner);
- return(error);
+ return(false);
}
tissue_tolerance = tissue_at_end(&displayed_dive, cached_datap);
@@ -992,7 +995,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
free(stoplevels);
free(gaschanges);
- return(error);
+ return(false);
}
if (best_first_ascend_cylinder != current_cylinder) {
@@ -1056,6 +1059,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
break; /* We did not hit the ceiling */
/* Add a minute of deco time and then try again */
+ decodive = true;
if (!stopping) {
/* The last segment was an ascend segment.
* Add a waypoint for start of this deco stop */
@@ -1116,7 +1120,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
free(stoplevels);
free(gaschanges);
- return error;
+ return decodive;
}
/*
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index aacca8e8f..a5fc512cb 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -1310,7 +1310,7 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
plannerModel->setRecalc(oldRecalc);
//TODO: C-based function here?
- plan(&diveplan, &cache, isPlanner(), true);
+ bool did_deco = plan(&diveplan, &cache, isPlanner(), true);
if (!current_dive || displayed_dive.id != current_dive->id) {
// we were planning a new dive, not re-planning an existing on
record_dive(clone_dive(&displayed_dive));
@@ -1331,7 +1331,8 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
QString oldnotes(current_dive->notes);
if (oldnotes.indexOf(QString(disclaimer)) >= 0)
oldnotes.truncate(oldnotes.indexOf(QString(disclaimer)));
- oldnotes.append(displayed_dive.notes);
+ if (did_deco)
+ oldnotes.append(displayed_dive.notes);
displayed_dive.notes = strdup(oldnotes.toUtf8().data());
}
copy_dive(&displayed_dive, current_dive);