diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-03-04 17:35:02 +0100 |
---|---|---|
committer | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-07 00:13:35 +0200 |
commit | f9fe6d759f33c36f1c0c0d20a591f6517fc9071f (patch) | |
tree | db068ff9743b8f30b03cd1d73439bef5c0cc6873 /commands/command_event.h | |
parent | 1971cfad547792ba961f804605ccb12780e17de0 (diff) | |
download | subsurface-f9fe6d759f33c36f1c0c0d20a591f6517fc9071f.tar.gz |
undo: split out EventBase class
All event-based commands will work on a dive computer and
need to replot the profile, etc. Therefore, in analogy to
the dive-list commands create a base class with two virtual
functions undoit() and redoit() that must be defined in the
derived classes that do the actual work.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_event.h')
-rw-r--r-- | commands/command_event.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/commands/command_event.h b/commands/command_event.h index 8cceaeb25..a674e258b 100644 --- a/commands/command_event.h +++ b/commands/command_event.h @@ -16,19 +16,28 @@ namespace Command { // Therefore, the undo commands work on events as they do with dives: using // owning pointers. See comments in command_base.h -class AddEventBase : public Base { -public: - AddEventBase(struct dive *d, int dcNr, struct event *ev); // Takes ownership of event! -private: - bool workToBeDone() override; +class EventBase : public Base { +protected: + EventBase(struct dive *d, int dcNr); void undo() override; void redo() override; + virtual void redoit() = 0; + virtual void undoit() = 0; // Note: we store dive and the divecomputer-number instead of a pointer to the divecomputer. // Since one divecomputer is integrated into the dive structure, pointers to divecomputers // are probably not stable. struct dive *d; int dcNr; +}; + +class AddEventBase : public EventBase { +public: + AddEventBase(struct dive *d, int dcNr, struct event *ev); // Takes ownership of event! +private: + bool workToBeDone() override; + void undoit() override; + void redoit() override; OwningEventPtr eventToAdd; // for redo event *eventToRemove; // for undo |