summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-11-07 17:25:42 +0900
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-11-07 18:07:10 +0900
commit460aa4c1bdee64f25e1c846ac9a6182e4e8e9820 (patch)
tree0e651be7983f0728dff52c963448dd5ac7982b58
parentf2035bcd797cab0b6be180b160bca3e768ccb652 (diff)
downloadsubsurface-460aa4c1bdee64f25e1c846ac9a6182e4e8e9820.tar.gz
Include the cylinder information in a dive added with "Add Dive"
We only copied the samples, but not the related cylinder data. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.c11
-rw-r--r--dive.h1
-rw-r--r--qt-ui/diveplanner.cpp5
3 files changed, 15 insertions, 2 deletions
diff --git a/dive.c b/dive.c
index 4bf5f2742..030dfa410 100644
--- a/dive.c
+++ b/dive.c
@@ -195,7 +195,16 @@ struct dive *alloc_dive(void)
return dive;
}
-void copy_samples(struct dive* s, struct dive* d)
+void copy_cylinders(struct dive *s, struct dive *d)
+{
+ int i;
+ if (!s || !d)
+ return;
+ for (i = 0; i < MAX_CYLINDERS; i++)
+ d->cylinder[i] = s->cylinder[i];
+}
+
+void copy_samples(struct dive *s, struct dive *d)
{
/* instead of carefully copying them one by one and calling add_sample
* over and over again, let's just copy the whole blob */
diff --git a/dive.h b/dive.h
index 151ba524a..e199f7878 100644
--- a/dive.h
+++ b/dive.h
@@ -653,6 +653,7 @@ extern unsigned int dc_airtemp(struct divecomputer *dc);
extern struct dive *merge_dives(struct dive *a, struct dive *b, int offset, bool prefer_downloaded);
extern struct dive *try_to_merge(struct dive *a, struct dive *b, bool prefer_downloaded);
extern void renumber_dives(int nr);
+extern void copy_cylinders(struct dive *s, struct dive *d);
extern void copy_samples(struct dive *s, struct dive *d);
extern void add_gas_switch_event(struct dive *dive, struct divecomputer *dc, int time, int idx);
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 169158987..39db8f431 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -437,6 +437,7 @@ void DivePlannerPointsModel::loadFromDive(dive* d)
}
Q_FOREACH(const sample &s, backupSamples){
+ // we need to use the correct gas
plannerModel->addStop(s.depth.mm, s.time.seconds, tr("Air"), 0);
}
}
@@ -1190,8 +1191,10 @@ void DivePlannerPointsModel::createTemporaryPlan()
tempDive = NULL;
const char *errorString = NULL;
plan(&diveplan, &cache, &tempDive, isPlanner(), &errorString);
- if (mode == ADD)
+ if (mode == ADD) {
copy_samples(tempDive, current_dive);
+ copy_cylinders(tempDive, current_dive);
+ }
#if DEBUG_PLAN
dump_plan(&diveplan);
#endif