summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/planner.h1
-rw-r--r--core/plannernotes.c13
-rw-r--r--qt-models/diveplannermodel.cpp23
3 files changed, 28 insertions, 9 deletions
diff --git a/core/planner.h b/core/planner.h
index 404fbe3fc..156d39983 100644
--- a/core/planner.h
+++ b/core/planner.h
@@ -50,6 +50,7 @@ extern int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, du
extern int get_gasidx(struct dive *dive, struct gasmix mix);
extern bool diveplan_empty(struct diveplan *diveplan);
extern void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_disclaimer, int error);
+extern const char *get_planner_disclaimer();
extern void free_dps(struct diveplan *diveplan);
extern struct dive *planned_dive;
diff --git a/core/plannernotes.c b/core/plannernotes.c
index 96c79f9ba..6714d360a 100644
--- a/core/plannernotes.c
+++ b/core/plannernotes.c
@@ -74,6 +74,14 @@ static void add_icd_entry(struct membuffer *b, struct icd_data *icdvalues, bool
ambientpressure_mbar * -icdvalues->dHe / 5e6f, translate("gettextFromC", "bar"));
}
+const char *get_planner_disclaimer()
+{
+ return translate("gettextFromC", "DISCLAIMER / WARNING: THIS IMPLEMENTATION OF THE %s "
+ "ALGORITHM AND A DIVE PLANNER IMPLEMENTATION BASED ON THAT HAS "
+ "RECEIVED ONLY A LIMITED AMOUNT OF TESTING. WE STRONGLY RECOMMEND NOT TO "
+ "PLAN DIVES SIMPLY BASED ON THE RESULTS GIVEN HERE.");
+}
+
void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_disclaimer, int error)
{
struct membuffer buf = { 0 };
@@ -116,10 +124,7 @@ void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_d
if (show_disclaimer) {
put_string(&buf, "<div><b>");
- put_format(&buf, translate("gettextFromC", "DISCLAIMER / WARNING: THIS IMPLEMENTATION OF THE %s "
- "ALGORITHM AND A DIVE PLANNER IMPLEMENTATION BASED ON THAT HAS "
- "RECEIVED ONLY A LIMITED AMOUNT OF TESTING. WE STRONGLY RECOMMEND NOT TO "
- "PLAN DIVES SIMPLY BASED ON THE RESULTS GIVEN HERE."), deco);
+ put_format(&buf, get_planner_disclaimer(), deco);
put_string(&buf, "</b><br></div>");
}
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index c2bbdf084..b77534819 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -1127,11 +1127,24 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
QTextDocument notesDocument;
notesDocument.setHtml(current_dive->notes);
QString oldnotes(notesDocument.toPlainText());
- int disclaimerPosition = oldnotes.indexOf(disclaimer);
- if (disclaimerPosition == 0)
- oldnotes.clear();
- else if (disclaimerPosition >= 1)
- oldnotes.truncate(disclaimerPosition-1);
+ QString disclaimer = get_planner_disclaimer();
+ int disclaimerMid = disclaimer.indexOf("%s");
+ QString disclaimerBegin, disclaimerEnd;
+ if (disclaimerMid >= 0) {
+ disclaimerBegin = disclaimer.left(disclaimerMid);
+ disclaimerEnd = disclaimer.mid(disclaimerMid + 2);
+ } else {
+ disclaimerBegin = disclaimer;
+ }
+ int disclaimerPositionStart = oldnotes.indexOf(disclaimerBegin);
+ if (disclaimerPositionStart >= 0) {
+ if (oldnotes.indexOf(disclaimerEnd, disclaimerPositionStart) >= 0) {
+ // We found a disclaimer according to the current locale.
+ // Remove the disclaimer and anything after the disclaimer, because
+ // that's supposedly the old planner notes.
+ oldnotes = oldnotes.left(disclaimerPositionStart);
+ }
+ }
// Deal with line breaks
oldnotes.replace("\n", "<br>");
oldnotes.append(displayed_dive.notes);