summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp17
-rw-r--r--qt-ui/downloadfromdivecomputer.h1
2 files changed, 15 insertions, 3 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index 95582efa3..db46b3b72 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -237,6 +237,9 @@ void DownloadFromDCWidget::on_ok_clicked()
MainWindow *w = mainWindow();
connect(thread, SIGNAL(finished()), w, SLOT(refreshDisplay()));
+ // before we start, remember where the dive_table ended
+ previousLast = dive_table.nr;
+
thread->start();
}
@@ -262,10 +265,18 @@ void DownloadFromDCWidget::onDownloadThreadFinished()
updateState(ERROR);
// I'm not sure if we should really call process_dives even
- // if there's an error or a cancelation
- process_dives(TRUE, preferDownloaded());
- } else
+ // if there's an error
+ if (import_thread_cancelled) {
+ // walk backwards so we don't keep moving the dives
+ // down in the dive_table
+ for (int i = dive_table.nr - 1; i >= previousLast; i--)
+ delete_single_dive(i);
+ } else {
+ process_dives(TRUE, preferDownloaded());
+ }
+ } else {
updateState(CANCELLED);
+ }
}
void DownloadFromDCWidget::markChildrenAsDisabled()
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index 2e6165635..2c411cfc9 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -59,6 +59,7 @@ private:
QHash<QString, QStringList> productList;
QMap<QString, dc_descriptor_t *> descriptorLookup;
device_data_t data;
+ int previousLast;
QStringListModel *vendorModel;
QStringListModel *productModel;