summaryrefslogtreecommitdiffstats
path: root/commands/command_event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'commands/command_event.cpp')
-rw-r--r--commands/command_event.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/commands/command_event.cpp b/commands/command_event.cpp
new file mode 100644
index 000000000..ea35402e4
--- /dev/null
+++ b/commands/command_event.cpp
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "command_event.h"
+#include "core/dive.h"
+#include "core/subsurface-qt/divelistnotifier.h"
+#include "core/libdivecomputer.h"
+
+namespace Command {
+
+AddEventBase::AddEventBase(struct dive *dIn, int dcNrIn, struct event *ev) :
+ d(dIn), dcNr(dcNrIn), eventToAdd(ev)
+{
+}
+
+bool AddEventBase::workToBeDone()
+{
+ return true;
+}
+
+void AddEventBase::redo()
+{
+ struct divecomputer *dc = get_dive_dc(d, dcNr);
+ eventToRemove = eventToAdd.get();
+ add_event_to_dc(dc, eventToAdd.release()); // return ownership to backend
+ invalidate_dive_cache(d);
+}
+
+void AddEventBase::undo()
+{
+ struct divecomputer *dc = get_dive_dc(d, dcNr);
+ remove_event_from_dc(dc, eventToRemove);
+ eventToAdd.reset(eventToRemove); // take ownership of event
+ eventToRemove = nullptr;
+ invalidate_dive_cache(d);
+}
+
+AddEventBookmark::AddEventBookmark(struct dive *d, int dcNr, int seconds) :
+ AddEventBase(d, dcNr, create_event(seconds, SAMPLE_EVENT_BOOKMARK, 0, 0, "bookmark"))
+{
+ setText(tr("Add bookmark"));
+}
+
+} // namespace Command