summaryrefslogtreecommitdiffstats
path: root/core/equipment.c
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-11-08 22:47:38 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-12-05 10:14:25 -0800
commit72c6b838662f1fb79a806ac2264c7215efa0aa67 (patch)
tree8b10fe7ad548a62ed428347c8a35882ee291b41a /core/equipment.c
parent029c9ccf020fdb73c148da489e0e7b1acd3ca149 (diff)
downloadsubsurface-72c6b838662f1fb79a806ac2264c7215efa0aa67.tar.gz
Undo: make weight editing undoable
Implement the EditWeight undo command. Since there is common code (storage of the old weight), this creates a common base class for RemoveWeight and EditWeight. The model calls directly into the undo command, which is somewhat unfortunate as it feels like a layering violation. It's the easy thing to do for now. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/equipment.c')
-rw-r--r--core/equipment.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/core/equipment.c b/core/equipment.c
index e7ac327fd..07e468c1c 100644
--- a/core/equipment.c
+++ b/core/equipment.c
@@ -288,6 +288,15 @@ void remove_weightsystem(struct dive *dive, int idx)
remove_from_weightsystem_table(&dive->weightsystems, idx);
}
+// ws is cloned.
+void set_weightsystem(struct dive *dive, int idx, weightsystem_t ws)
+{
+ if (idx < 0 || idx >= dive->weightsystems.nr)
+ return;
+ free_weightsystem(dive->weightsystems.weightsystems[idx]);
+ dive->weightsystems.weightsystems[idx] = clone_weightsystem(ws);
+}
+
/* when planning a dive we need to make sure that all cylinders have a sane depth assigned
* and if we are tracking gas consumption the pressures need to be reset to start = end = workingpressure */
void reset_cylinders(struct dive *dive, bool track_gas)