From 7b730602c6ac92c561c5ccb6a0dbf725a70fa963 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 6 Oct 2019 20:54:25 +0200 Subject: Undo: implement ReplanDive command Implement an undo command that overwrites the dive-computers and cylinders of the current dive with a given dive. This will be used when replanning a dive. Signed-off-by: Berthold Stoeger --- desktop-widgets/command_edit.h | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'desktop-widgets/command_edit.h') diff --git a/desktop-widgets/command_edit.h b/desktop-widgets/command_edit.h index 0ba3d1a14..ebce0bf1b 100644 --- a/desktop-widgets/command_edit.h +++ b/desktop-widgets/command_edit.h @@ -254,7 +254,7 @@ struct PasteState { void swap(dive_components what); // Exchange values here and in dive }; -class PasteDives : public Base { +class PasteDives : public Base { dive_components what; std::vector dives; std::vector ownedDiveSites; @@ -267,6 +267,27 @@ private: bool workToBeDone() override; }; +class ReplanDive : public Base { + dive *d; + + // Exchange these data with current dive + timestamp_t when; + depth_t maxdepth, meandepth; + cylinder_t cylinders[MAX_CYLINDERS]; + struct divecomputer dc; + char *notes; + pressure_t surface_pressure; + duration_t duration; + int salinity; +public: + ReplanDive(dive *source); // Dive computer(s) and cylinders(s) of the source dive will be reset! + ~ReplanDive(); +private: + void undo() override; + void redo() override; + bool workToBeDone() override; +}; + } // namespace Command #endif -- cgit v1.2.3-70-g09d2