diff options
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | planner.c | 12 | ||||
-rw-r--r-- | qt-ui/diveplanner.cpp | 5 |
3 files changed, 12 insertions, 7 deletions
@@ -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); @@ -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); |