From 726d08c2f71920acd8e5cc9b2d6850d1249466aa Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Wed, 17 Jul 2019 15:49:45 +0200 Subject: Undo: make editing of dive number undoable When pressing F2 in the dive list, the number can be edited. Make this action undoable by implementing a EditNumber command. This command is differs from the other undo commands, as not the currently selected dives are changed. This means that the EditCommand needs an alternative constructor taking a single dive. This constructor was implemented in the base class so that all edit commands can now be called with a single dive. Signed-off-by: Berthold Stoeger --- desktop-widgets/command_edit.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'desktop-widgets/command_edit.h') diff --git a/desktop-widgets/command_edit.h b/desktop-widgets/command_edit.h index d23860283..0ba3d1a14 100644 --- a/desktop-widgets/command_edit.h +++ b/desktop-widgets/command_edit.h @@ -29,6 +29,7 @@ namespace Command { class EditDivesBase : public Base { protected: EditDivesBase(bool currentDiveOnly); + EditDivesBase(dive *d); std::vector dives; // Dives to be edited. // On undo, we set the selection and current dive at the time of the operation. @@ -50,6 +51,7 @@ protected: public: EditBase(T newValue, bool currentDiveOnly); + EditBase(T newValue, dive *d); protected: // Get and set functions to be overriden by sub-classes. @@ -174,6 +176,15 @@ public: DiveField fieldId() const override; }; +class EditNumber : public EditBase { +public: + using EditBase::EditBase; // Use constructor of base class. + void set(struct dive *d, int number) const override; + int data(struct dive *d) const override; + QString fieldName() const override; + DiveField fieldId() const override; +}; + // Fields that work with tag-lists (tags, buddies, divemasters) work differently and therefore // have their own base class. In this case, it's not a template, as all these lists are base // on strings. -- cgit v1.2.3-70-g09d2