summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/downloadfromdivecomputer.cpp
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/downloadfromdivecomputer.cpp
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/downloadfromdivecomputer.cpp')
-rw-r--r--desktop-widgets/downloadfromdivecomputer.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/desktop-widgets/downloadfromdivecomputer.cpp b/desktop-widgets/downloadfromdivecomputer.cpp
index 547c740c8..ff703d98e 100644
--- a/desktop-widgets/downloadfromdivecomputer.cpp
+++ b/desktop-widgets/downloadfromdivecomputer.cpp
@@ -521,25 +521,12 @@ void DownloadFromDCWidget::on_ok_clicked()
}
if (table->nr > 0) {
- MainWindow::instance()->diveList->unselectDives();
- // remember the last downloaded dive (on most dive computers this will be the chronologically
- // first new dive) and select it again after processing all the dives
- int uniqId = table->dives[table->nr - 1]->id;
- add_imported_dives(table, trips, preferDownloaded(), true, false);
- Command::clear();
- // after add_imported_dives does any merging or resorting needed, we need
- // to recreate the model for the dive list so we can select the newest dive
- MainWindow::instance()->recreateDiveList();
- int idx = get_idx_by_uniq_id(uniqId);
- // this shouldn't be necessary - but there are reports that somehow existing dives stay selected
- // (but not visible as selected)
- MainWindow::instance()->diveList->unselectDives();
- MainWindow::instance()->diveList->selectDive(idx, true);
+ auto data = thread.data();
+ Command::importDives(table, trips, preferDownloaded(), true, false, data->devName());
}
- if (ostcFirmwareCheck && currentState == DONE) {
+ if (ostcFirmwareCheck && currentState == DONE)
ostcFirmwareCheck->checkLatest(this, thread.data()->internalData());
- }
accept();
}