diff options
Diffstat (limited to 'qt-ui/downloadfromdivecomputer.cpp')
-rw-r--r-- | qt-ui/downloadfromdivecomputer.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp index 8be4e6cbb..385f39755 100644 --- a/qt-ui/downloadfromdivecomputer.cpp +++ b/qt-ui/downloadfromdivecomputer.cpp @@ -10,11 +10,8 @@ namespace DownloadFromDcGlobal{ const char *err_string; }; -extern const char *progress_bar_text; -extern double progress_bar_fraction; - DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) : - QDialog(parent, f), ui(new Ui::DownloadFromDiveComputer), thread(0) + QDialog(parent, f), ui(new Ui::DownloadFromDiveComputer), thread(0), downloading(false) { ui->setupUi(this); ui->progressBar->hide(); @@ -24,11 +21,19 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) : void DownloadFromDCWidget::on_cancel_clicked() { + import_thread_cancelled = true; + if(thread){ + thread->wait(); + thread->deleteLater(); + thread = 0; + } close(); } void DownloadFromDCWidget::on_ok_clicked() { + if (downloading) + return; ui->progressBar->setValue(0); ui->progressBar->show(); @@ -40,9 +45,13 @@ void DownloadFromDCWidget::on_ok_clicked() device_data_t data; // still need to fill the data info here. thread = new InterfaceThread(this, &data); - connect(thread, SIGNAL(updateInterface(int)), ui->progressBar, SLOT(setValue(int)), Qt::QueuedConnection); // Qt::QueuedConnection == threadsafe. - connect(thread, SIGNAL(updateInterface(int)), this, SLOT(setValue(int)), Qt::QueuedConnection); // Qt::QueuedConnection == threadsafe. + connect(thread, SIGNAL(updateInterface(int)), + ui->progressBar, SLOT(setValue(int)), Qt::QueuedConnection); // Qt::QueuedConnection == threadsafe. + + connect(thread, SIGNAL(finished()), this, SLOT(close())); + thread->start(); + downloading = true; } DownloadThread::DownloadThread(device_data_t* data): data(data) @@ -52,12 +61,10 @@ DownloadThread::DownloadThread(device_data_t* data): data(data) void DownloadThread::run() { do_libdivecomputer_import(data); - qDebug() << "Download thread started"; } InterfaceThread::InterfaceThread(QObject* parent, device_data_t* data): QThread(parent), data(data) { - } void InterfaceThread::run() @@ -65,9 +72,9 @@ void InterfaceThread::run() DownloadThread *download = new DownloadThread(data); download->start(); - while(download->isRunning()){ + while(download->isRunning()){ msleep(200); - updateInterface(progress_bar_fraction *100); - } + updateInterface(progress_bar_fraction *100); + } updateInterface(100); } |