aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.h4
-rw-r--r--planner.c3
-rw-r--r--qt-ui/diveplanner.cpp8
3 files changed, 13 insertions, 2 deletions
diff --git a/dive.h b/dive.h
index fd7959f00..3c32ee8b2 100644
--- a/dive.h
+++ b/dive.h
@@ -163,7 +163,9 @@ struct sample // BASE TYPE BYTES UNITS RANGE DE
uint8_t cns; // uint8_t 1 % (0-255 %) cns% accumulated
uint8_t heartbeat; // uint8_t 1 beats/m (0-255) heart rate measurement
bool in_deco; // bool 1 y/n y/n this sample is part of deco
-}; // Total size of structure: 48 bytes, excluding padding at end
+ bool manually_entered; // bool 1 y/n y/n this sample was entered by the user,
+ // not calculated when planning a dive
+}; // Total size of structure: 53 bytes, excluding padding at end
struct divetag {
/*
diff --git a/planner.c b/planner.c
index 5bc171afc..ec053c880 100644
--- a/planner.c
+++ b/planner.c
@@ -278,6 +278,7 @@ static void create_dive_from_plan(struct diveplan *diveplan, bool track_gas)
sample->po2.mbar = dp->po2;
if (track_gas && cyl->type.workingpressure.mbar)
sample->cylinderpressure.mbar = cyl->end.mbar;
+ sample->manually_entered = true;
finish_sample(dc);
while (dp) {
struct gasmix gasmix = dp->gasmix;
@@ -316,6 +317,7 @@ static void create_dive_from_plan(struct diveplan *diveplan, bool track_gas)
sample[-1].po2.mbar = po2;
sample->time.seconds = lasttime + 1;
sample->depth.mm = lastdepth;
+ sample->manually_entered = dp->entered;
if (track_gas && cyl->type.workingpressure.mbar)
sample->cylinderpressure.mbar = cyl->sample_end.mbar;
finish_sample(dc);
@@ -329,6 +331,7 @@ static void create_dive_from_plan(struct diveplan *diveplan, bool track_gas)
sample->po2.mbar = po2;
sample->time.seconds = lasttime = time;
sample->depth.mm = lastdepth = depth;
+ sample->manually_entered = dp->entered;
if (track_gas) {
update_cylinder_pressure(&displayed_dive, sample[-1].depth.mm, depth, time - sample[-1].time.seconds,
dp->entered ? diveplan->bottomsac : diveplan->decosac, cyl, !dp->entered);
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 8775196b7..8e5229a26 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -111,10 +111,16 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
CylindersModel::instance()->updateDive();
duration_t lasttime = {};
struct gasmix gas;
+ free_dps(&diveplan);
diveplan.when = d->when;
+ // is this a "new" dive where we marked manually entered samples?
+ // if yes then the first sample should be marked
+ // if it is we only add the manually entered samples as waypoints to the diveplan
+ // otherwise we have to add all of them
+ bool hasMarkedSamples = d->dc.sample[0].manually_entered;
for (int i = 0; i < d->dc.samples - 1; i++) {
const sample &s = d->dc.sample[i];
- if (s.time.seconds == 0)
+ if (s.time.seconds == 0 || (hasMarkedSamples && !s.manually_entered))
continue;
get_gas_at_time(d, &d->dc, lasttime, &gas);
plannerModel->addStop(s.depth.mm, s.time.seconds, &gas, 0, true);