summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/command_divelist.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-12-23 23:45:12 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-01-09 20:58:04 -0800
commit82c47bdd794c05e51c73afda14b8bfc95f6694e1 (patch)
treee1852b32d8d5370710076da6fe54959b1b6cf4c0 /desktop-widgets/command_divelist.h
parent0249e125898134d3f6d4a2a8972f3eeb30c02803 (diff)
downloadsubsurface-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.h20
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);