summaryrefslogtreecommitdiffstats
path: root/commands/command_edit.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-03-27 21:09:59 +0100
committerGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-07 00:13:35 +0200
commit2eeb5f4fc2d6da8a8c8950f0b479b7cb2055af07 (patch)
tree8992165c39f4926e2d5896e0549d3fc7ba9aa42c /commands/command_edit.h
parent4e8a838f746d7319b97b56a209651a65655aca7f (diff)
downloadsubsurface-2eeb5f4fc2d6da8a8c8950f0b479b7cb2055af07.tar.gz
undo: more fine-grained editing of cylinder
Don't overwrite the full cylinder when editing a single field. Implement three "modes": editing of type, pressure and gasmix. Don't consider individual fields, because some of them are related. E.g. you can change the gasmix by setting the MOD. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_edit.h')
-rw-r--r--commands/command_edit.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/commands/command_edit.h b/commands/command_edit.h
index d7c31f7f2..ab842a13c 100644
--- a/commands/command_edit.h
+++ b/commands/command_edit.h
@@ -5,6 +5,7 @@
#define COMMAND_EDIT_H
#include "command_base.h"
+#include "command.h" // for EditCylinderType
#include "core/subsurface-qt/divelistnotifier.h"
#include <QVector>
@@ -406,10 +407,16 @@ private:
void redo() override;
};
+// Instead of implementing an undo command for every single field in a cylinder,
+// we only have one and pass an edit "type". We either edit the type, pressure
+// or gasmix fields. This has mostly historical reasons rooted in the way the
+// CylindersModel code works. The model works for undo and also in the planner
+// without undo. Having a single undo-command simplifies the code there.
class EditCylinder : public EditCylinderBase {
public:
- EditCylinder(int index, cylinder_t cyl, bool currentDiveOnly); // Clones cylinder
+ EditCylinder(int index, cylinder_t cyl, EditCylinderType type, bool currentDiveOnly); // Clones cylinder
private:
+ EditCylinderType type;
void undo() override;
void redo() override;
};