summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index daef87437..70ec28a5b 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -87,7 +87,12 @@ void DownloadFromDCWidget::runDialog()
void DownloadFromDCWidget::updateProgressBar()
{
- ui.progressBar->setValue(progress_bar_fraction *100);
+ if (*progress_bar_text != '\0') {
+ ui.progressBar->setFormat(progress_bar_text);
+ } else {
+ ui.progressBar->setFormat("%p%");
+ ui.progressBar->setValue(progress_bar_fraction *100);
+ }
}
void DownloadFromDCWidget::updateState(states state)
@@ -126,19 +131,30 @@ void DownloadFromDCWidget::updateState(states state)
markChildrenAsEnabled();
}
- // DOWNLOAD is finally done, close the dialog and go back to the main window
+ // DOWNLOAD is finally done, but we don't know if there was an error as libdivecomputer doesn't pass
+ // that information on to us
+ // so check the progressBar text and if no error was reported, close the dialog and go back to the main window
+ // otherwise treat this as if the download was cancelled
else if (currentState == DOWNLOADING && state == DONE) {
timer->stop();
- ui.progressBar->setValue(100);
- markChildrenAsEnabled();
- ui.ok->setText(tr("OK"));
- accept();
+ if (QString(progress_bar_text).contains("error", Qt::CaseInsensitive)) {
+ updateProgressBar();
+ markChildrenAsEnabled();
+ progress_bar_text = "";
+ ui.ok->setText(tr("Retry"));
+ } else {
+ ui.progressBar->setValue(100);
+ markChildrenAsEnabled();
+ ui.ok->setText(tr("OK"));
+ accept();
+ }
}
// DOWNLOAD is started.
else if (state == DOWNLOADING) {
timer->start();
ui.progressBar->setValue(0);
+ updateProgressBar();
ui.progressBar->show();
markChildrenAsDisabled();
}