aboutsummaryrefslogtreecommitdiffstats
path: root/commands/command_event.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-03-04 18:25:47 +0100
committerGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-07 00:13:35 +0200
commit3d511b069f5e2c659ed5af039485b1c72c348b8a (patch)
treec02a1a171ca1cee4b1c7553c07cbcc8e98a92329 /commands/command_event.cpp
parentab8e317b28672cc19fd04e994b9adf9b63f0c603 (diff)
downloadsubsurface-3d511b069f5e2c659ed5af039485b1c72c348b8a.tar.gz
undo: add event removal undo command
This was a trivial copy & past of the event-adding undo command with a switch of the undo() and redo() actions. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_event.cpp')
-rw-r--r--commands/command_event.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/commands/command_event.cpp b/commands/command_event.cpp
index 1114182aa..e32edfc41 100644
--- a/commands/command_event.cpp
+++ b/commands/command_event.cpp
@@ -97,4 +97,30 @@ void RenameEvent::undoit()
redoit();
}
+RemoveEvent::RemoveEvent(struct dive *d, int dcNr, struct event *ev) : EventBase(d, dcNr),
+ eventToRemove(ev)
+{
+ setText(tr("Remove %1 event").arg(ev->name));
+}
+
+bool RemoveEvent::workToBeDone()
+{
+ return true;
+}
+
+void RemoveEvent::redoit()
+{
+ struct divecomputer *dc = get_dive_dc(d, dcNr);
+ remove_event_from_dc(dc, eventToRemove);
+ eventToAdd.reset(eventToRemove); // take ownership of event
+ eventToRemove = nullptr;
+}
+
+void RemoveEvent::undoit()
+{
+ struct divecomputer *dc = get_dive_dc(d, dcNr);
+ eventToRemove = eventToAdd.get();
+ add_event_to_dc(dc, eventToAdd.release()); // return ownership to backend
+}
+
} // namespace Command