From 302f6adb79681da3fe53336f1e4c7525f46fd47d Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 20 Jul 2018 20:26:06 +0200 Subject: Undo: implement rudimentary support for undo of dive-splitting For this, the core functionality of the split_dive() and split_dive_at_time() functions were split out into new split_dive_dont_insert() and split_dive_at_time_dont_insert(), which do not add the new dives to the log. Thus, the undo-command can take ownership of these dives, without having to remove them first. The split-dive functionality is temporarily made desktop-only until mobile also supports "UndoObjects". Signed-off-by: Berthold Stoeger --- desktop-widgets/undocommands.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'desktop-widgets/undocommands.h') diff --git a/desktop-widgets/undocommands.h b/desktop-widgets/undocommands.h index 4c4073454..c30ae5fae 100644 --- a/desktop-widgets/undocommands.h +++ b/desktop-widgets/undocommands.h @@ -227,4 +227,23 @@ private: std::vector tripsToAdd; }; +class UndoSplitDives : public QUndoCommand { +public: + // If time is < 0, split at first surface interval + UndoSplitDives(dive *d, duration_t time); +private: + void undo() override; + void redo() override; + + // For redo + // For each dive to split, we remove one from and put two dives into the backend + dive *diveToSplit; + DiveToAdd splitDives[2]; + + // For undo + // For each dive to unsplit, we remove two dives from and add one into the backend + DiveToAdd unsplitDive; + dive *divesToUnsplit[2]; +}; + #endif // UNDOCOMMANDS_H -- cgit v1.2.3-70-g09d2