diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-12-23 23:45:12 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-01-09 20:58:04 -0800 |
commit | 82c47bdd794c05e51c73afda14b8bfc95f6694e1 (patch) | |
tree | e1852b32d8d5370710076da6fe54959b1b6cf4c0 /desktop-widgets/command_divelist.h | |
parent | 0249e125898134d3f6d4a2a8972f3eeb30c02803 (diff) | |
download | subsurface-82c47bdd794c05e51c73afda14b8bfc95f6694e1.tar.gz |
Undo: make dive-import undoable
On desktop, replace all add_imported_dives() calls by a new undo-command.
This was rather straight forward, as all the preparation work was done
in previous commits.
By using an undo-command, a full UI-reset can be avoided, making the UI
react smoother.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_divelist.h')
-rw-r--r-- | desktop-widgets/command_divelist.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/desktop-widgets/command_divelist.h b/desktop-widgets/command_divelist.h index 77116c302..8cf8986e3 100644 --- a/desktop-widgets/command_divelist.h +++ b/desktop-widgets/command_divelist.h @@ -104,6 +104,26 @@ private: dive * currentDive; }; +class ImportDives : public DiveListBase { +public: + // Note: dives and trips are consumed - after the call they will be empty. + ImportDives(struct dive_table *dives, struct trip_table *trips, + bool prefer_imported, bool downloaded, bool merge_all_trips, + const QString &source); +private: + void undoit() override; + void redoit() override; + bool workToBeDone() override; + + // For redo and undo + DivesAndTripsToAdd divesToAdd; + std::vector<dive *> divesToRemove; + + // For undo + std::vector<dive *> selection; + dive * currentDive; +}; + class DeleteDive : public DiveListBase { public: DeleteDive(const QVector<dive *> &divesToDelete); |