diff options
-rw-r--r-- | qt-ui/downloadfromdivecomputer.cpp | 9 | ||||
-rw-r--r-- | uemis-downloader.c | 9 | ||||
-rw-r--r-- | uemis.h | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp index d4deff268..5f0487e8c 100644 --- a/qt-ui/downloadfromdivecomputer.cpp +++ b/qt-ui/downloadfromdivecomputer.cpp @@ -3,6 +3,7 @@ #include "mainwindow.h" #include "divelistview.h" #include "display.h" +#include "uemis.h" #include <QTimer> #include <QFileDialog> @@ -284,6 +285,14 @@ void DownloadFromDCWidget::on_downloadCancelRetryButton_clicked() diveImportedModel->clearTable(); clear_table(&downloadTable); } + if (ui.vendor->currentText() == "Uemis") { + if (currentState == ERROR && downloadTable.nr > 0) + // let the uemis code know how far we've gotten + uemis_set_max_diveid_from_dialog(downloadTable.dives[downloadTable.nr - 1]->dc.diveid); + else + // fresh download, so only look at what's in the dive_table + uemis_set_max_diveid_from_dialog(0); + } updateState(DOWNLOADING); // you cannot cancel the dialog, just the download diff --git a/uemis-downloader.c b/uemis-downloader.c index 8f3549c97..7fae71f26 100644 --- a/uemis-downloader.c +++ b/uemis-downloader.c @@ -816,6 +816,13 @@ static bool process_raw_buffer(device_data_t *devdata, uint32_t deviceid, char * return true; } +static int max_diveid_from_dialog; + +void uemis_set_max_diveid_from_dialog(int diveid) +{ + max_diveid_from_dialog = diveid; +} + static char *uemis_get_divenr(char *deviceidstr) { uint32_t deviceid, maxdiveid = 0; @@ -833,7 +840,7 @@ static char *uemis_get_divenr(char *deviceidstr) maxdiveid = dc->diveid; } } - snprintf(divenr, 10, "%d", maxdiveid); + snprintf(divenr, 10, "%d", maxdiveid > max_diveid_from_dialog ? maxdiveid : max_diveid_from_dialog); return strdup(divenr); } @@ -16,6 +16,7 @@ void uemis_parse_divelog_binary(char *base64, void *divep); int uemis_get_weight_unit(int diveid); void uemis_mark_divelocation(int diveid, int divespot, uint32_t dive_site_uuid); void uemis_set_divelocation(int divespot, char *text, double longitude, double latitude); +void uemis_set_max_diveid_from_dialog(int diveid); typedef struct { |