diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-03-12 22:35:43 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-04-12 18:19:07 +0300 |
commit | 8e1f736d2b608784e1ea942ec8579d2361691c43 (patch) | |
tree | c6c9c60d112e95158a69b692a1ca32b0923a39d3 /desktop-widgets/command_divesite.h | |
parent | e99c4c90592c9dba17d5cbb9a99d0bf458fb53d2 (diff) | |
download | subsurface-8e1f736d2b608784e1ea942ec8579d2361691c43.tar.gz |
Undo: make dive site removal undoable
Create a new undo-command for deleting dive sites. If there are dives
associated with that site, the dives will be removed. The frontend
is not yet updated in such a case, as that infrastructure is in a
different PR.
Connect the trashcan icon of the dive site table to the undo command.
Currently, this code is in the dive site model, which makes little
sense, but is how the TableView class works. We might want to change
that when cylinder and weight editing are made undoable.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_divesite.h')
-rw-r--r-- | desktop-widgets/command_divesite.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/desktop-widgets/command_divesite.h b/desktop-widgets/command_divesite.h new file mode 100644 index 000000000..9c4f93058 --- /dev/null +++ b/desktop-widgets/command_divesite.h @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0 +// Note: this header file is used by the undo-machinery and should not be included elsewhere. + +#ifndef COMMAND_DIVESITE_H +#define COMMAND_DIVESITE_H + +#include "command_base.h" + +#include <QVector> + +// We put everything in a namespace, so that we can shorten names without polluting the global namespace +namespace Command { + +class DeleteDiveSites : public Base { +public: + DeleteDiveSites(const QVector<dive_site *> &sites); +private: + bool workToBeDone() override; + + // For redo + std::vector<dive_site *> sitesToRemove; + + // For undo + std::vector<OwningDiveSitePtr> sitesToAdd; + void undo() override; + void redo() override; +}; + +} // namespace Command + +#endif // COMMAND_DIVESITE_H |