diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2021-01-11 16:52:02 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-01-11 09:31:36 -0800 |
commit | 1a0f6f53ede1a945c9964fc9de73780a94cd8217 (patch) | |
tree | acb1ecf31435dc335d187680161eb6acd008c1b4 /commands/command_event.cpp | |
parent | cd32c280ae063e143faebf9c5cf497e6dce3abb7 (diff) | |
download | subsurface-1a0f6f53ede1a945c9964fc9de73780a94cd8217.tar.gz |
undo: set dive mode to CCR in undo command, not profile code
When setting a CCR setpoint, the profile code(!) would turn
the dive into a CCR dive. Not only should the display layer
not alter dives, this also means that the action is not
undoable.
Move that to the appropriate undo command, where it makes
more sense, but obviously also makes things more complicated.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_event.cpp')
-rw-r--r-- | commands/command_event.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/commands/command_event.cpp b/commands/command_event.cpp index 5c71aaebd..4e29b452c 100644 --- a/commands/command_event.cpp +++ b/commands/command_event.cpp @@ -74,11 +74,24 @@ AddEventDivemodeSwitch::AddEventDivemodeSwitch(struct dive *d, int dcNr, int sec } AddEventSetpointChange::AddEventSetpointChange(struct dive *d, int dcNr, int seconds, pressure_t pO2) : - AddEventBase(d, dcNr, create_event(seconds, SAMPLE_EVENT_PO2, 0, pO2.mbar, QT_TRANSLATE_NOOP("gettextFromC", "SP change"))) + AddEventBase(d, dcNr, create_event(seconds, SAMPLE_EVENT_PO2, 0, pO2.mbar, QT_TRANSLATE_NOOP("gettextFromC", "SP change"))), + divemode(CCR) { setText(Command::Base::tr("Add set point change")); // TODO: format pO2 value in bar or psi. } +void AddEventSetpointChange::undoit() +{ + AddEventBase::undoit(); + std::swap(get_dive_dc(d, dcNr)->divemode, divemode); +} + +void AddEventSetpointChange::redoit() +{ + AddEventBase::redoit(); + std::swap(get_dive_dc(d, dcNr)->divemode, divemode); +} + RenameEvent::RenameEvent(struct dive *d, int dcNr, struct event *ev, const char *name) : EventBase(d, dcNr), eventToAdd(clone_event_rename(ev, name)), eventToRemove(ev) |