summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-30 17:58:59 +0900
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-30 18:02:29 +0900
commitf32e86eb32ee3697f255d01a61f6aa2e1cff5a8b (patch)
tree4f3db6fbaef45d931fb9dfda0286d445da2f9102
parentae2c132a267932892d5c3f7965517194d38d962a (diff)
downloadsubsurface-f32e86eb32ee3697f255d01a61f6aa2e1cff5a8b.tar.gz
Hook up the Download dialog
The download already worked, but we didn't display the new dives. This introduces a new slot for MainWindow that updates what is displayed in Subsurface after files were imported. With this change we can successfully download ONCE - but when trying to download a second dive the dialog doesn't appear to get refreshed the right way - the OK button doesn't appear to work anymore (Cancel however does). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp24
-rw-r--r--qt-ui/downloadfromdivecomputer.h6
-rw-r--r--qt-ui/mainwindow.cpp12
-rw-r--r--qt-ui/mainwindow.h1
4 files changed, 38 insertions, 5 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index 9411ddd88..c1d74fb3a 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -4,6 +4,8 @@
#include "../libdivecomputer.h"
#include "../helpers.h"
#include "../display.h"
+#include "../divelist.h"
+#include "mainwindow.h"
#include <cstdlib>
#include <QThread>
#include <QDebug>
@@ -32,6 +34,12 @@ namespace DownloadFromDcGlobal{
const char *err_string;
};
+DownloadFromDCWidget *DownloadFromDCWidget::instance()
+{
+ static DownloadFromDCWidget *dialog = new DownloadFromDCWidget();
+ return dialog;
+}
+
DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) :
QDialog(parent, f), ui(new Ui::DownloadFromDiveComputer), thread(0), downloading(false)
{
@@ -54,6 +62,12 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) :
ui->device->setText(default_dive_computer_device);
}
+void DownloadFromDCWidget::runDialog()
+{
+ ui->progressBar->hide();
+ show();
+}
+
void DownloadFromDCWidget::on_vendor_currentIndexChanged(const QString& vendor)
{
QAbstractItemModel *currentModel = ui->product->model();
@@ -151,13 +165,20 @@ void DownloadFromDCWidget::on_ok_clicked()
downloading = true;
}
+bool DownloadFromDCWidget::preferDownloaded()
+{
+ return ui->preferDownloaded->isChecked();
+}
+
DownloadThread::DownloadThread(device_data_t* data): data(data)
{
}
void DownloadThread::run()
{
+ DownloadFromDCWidget *dfdcw = DownloadFromDCWidget::instance();
do_libdivecomputer_import(data);
+ process_dives(TRUE, dfdcw->preferDownloaded());
}
InterfaceThread::InterfaceThread(QObject* parent, device_data_t* data): QThread(parent), data(data)
@@ -167,7 +188,8 @@ InterfaceThread::InterfaceThread(QObject* parent, device_data_t* data): QThread(
void InterfaceThread::run()
{
DownloadThread *download = new DownloadThread(data);
-
+ MainWindow *w = mainWindow();
+ connect(download, SIGNAL(finished()), w, SLOT(refreshDisplay()));
download->start();
while (download->isRunning()) {
msleep(200);
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index fdc730753..27e64c96f 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -38,11 +38,11 @@ class DownloadFromDCWidget : public QDialog{
Q_OBJECT
public:
explicit DownloadFromDCWidget(QWidget* parent = 0, Qt::WindowFlags f = 0);
-
+ static DownloadFromDCWidget *instance();
public slots:
void on_ok_clicked();
void on_cancel_clicked();
-
+ void runDialog();
void on_vendor_currentIndexChanged(const QString& vendor);
private:
Ui::DownloadFromDiveComputer *ui;
@@ -57,6 +57,8 @@ private:
QStringListModel *vendorModel;
QStringListModel *productModel;
void fill_computer_list();
+public:
+ bool preferDownloaded();
};
#endif
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 8c600ea19..14958b50f 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -52,6 +52,14 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow())
instance = this;
}
+// this gets called after we download dives from a divecomputer
+void MainWindow::refreshDisplay()
+{
+ if (!selected_dive)
+ current_dive_changed(dive_table.nr - 1);
+ ui->ListWidget->reload();
+}
+
void MainWindow::current_dive_changed(int divenr)
{
select_dive(divenr);
@@ -162,8 +170,8 @@ void MainWindow::on_actionQuit_triggered()
void MainWindow::on_actionDownloadDC_triggered()
{
- DownloadFromDCWidget* downloadWidget = new DownloadFromDCWidget();
- downloadWidget->show();
+ DownloadFromDCWidget* downloadWidget = DownloadFromDCWidget::instance();
+ downloadWidget->runDialog();
}
void MainWindow::on_actionDownloadWeb_triggered()
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index 2366617c6..36b174284 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -87,6 +87,7 @@ protected:
public Q_SLOTS:
void readSettings();
+ void refreshDisplay();
private:
Ui::MainWindow *ui;