diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2014-12-27 08:31:51 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-12-27 08:31:51 -0800 |
commit | 52084c80f7f03f8e8066bc7ccf9f747a38cbd60c (patch) | |
tree | f077e98775f53876ef8c6954f7625b5673c6a7a3 /qt-ui | |
parent | 9f95f3ce18a1c25b0407335f472987c64940153d (diff) | |
download | subsurface-52084c80f7f03f8e8066bc7ccf9f747a38cbd60c.tar.gz |
Move OSTC firmware check around a bit
This rearranges the code so we can call it from the download dialog and
tell the user if there is a newer version of the firmware available.
This needs a proper dialog and needs to be hooked up so that the user can
accept the suggestion and go directly to the firmware update code.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/configuredivecomputerdialog.cpp | 22 | ||||
-rw-r--r-- | qt-ui/configuredivecomputerdialog.h | 16 | ||||
-rw-r--r-- | qt-ui/downloadfromdivecomputer.cpp | 21 | ||||
-rw-r--r-- | qt-ui/downloadfromdivecomputer.h | 4 |
4 files changed, 49 insertions, 14 deletions
diff --git a/qt-ui/configuredivecomputerdialog.cpp b/qt-ui/configuredivecomputerdialog.cpp index 4acbf90e3..546032e63 100644 --- a/qt-ui/configuredivecomputerdialog.cpp +++ b/qt-ui/configuredivecomputerdialog.cpp @@ -187,16 +187,32 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) : } settings.endGroup(); settings.endGroup(); +} +OstcFirmwareCheck::OstcFirmwareCheck() +{ hwVersionPage.mainFrame()->load(QUrl("http://www.heinrichsweikamp.com/?id=162")); - connect(&hwVersionPage, SIGNAL(loadFinished(bool)), this, SLOT(findVersion())); + connect(&hwVersionPage, SIGNAL(loadFinished(bool)), this, SLOT(parseOstcFwVersion())); } -void ConfigureDiveComputerDialog::findVersion() +void OstcFirmwareCheck::parseOstcFwVersion() { QWebElement parse = hwVersionPage.mainFrame()->documentElement(); QWebElement result = parse.findFirst("div[id=content_firmware_headline_typ0]"); - qDebug() << "Version" << result.toPlainText(); + latestFirmwareAvailable = result.toPlainText().trimmed(); + qDebug() << "Latest OSTC 3 Version" << latestFirmwareAvailable; +} + +void OstcFirmwareCheck::checkLatest(uint32_t firmwareOnDevice) +{ + // for now libdivecomputer gives us the firmware on device undecoded as integer + // for the OSTC that means highbyte.lowbyte is the version number + QString firmware; + firmware = QString("%1.%2").arg(firmwareOnDevice / 256). arg(firmwareOnDevice % 256); + if (!latestFirmwareAvailable.isEmpty() && latestFirmwareAvailable != firmware) { + qDebug() << "you should update your firmware: you have" << firmware << + "but the latest stable version is" << latestFirmwareAvailable; + } } ConfigureDiveComputerDialog::~ConfigureDiveComputerDialog() diff --git a/qt-ui/configuredivecomputerdialog.h b/qt-ui/configuredivecomputerdialog.h index 99f1e9c32..fa43592c2 100644 --- a/qt-ui/configuredivecomputerdialog.h +++ b/qt-ui/configuredivecomputerdialog.h @@ -74,8 +74,6 @@ private slots: void on_updateFirmwareButton_clicked(); void on_DiveComputerList_currentRowChanged(int currentRow); - void findVersion(); - private: Ui::ConfigureDiveComputerDialog ui; @@ -102,8 +100,20 @@ private: QString selected_vendor; QString selected_product; - QWebPage hwVersionPage; +}; +class OstcFirmwareCheck : QObject +{ + Q_OBJECT +public: + explicit OstcFirmwareCheck(); + void checkLatest(uint32_t firmwareOnDevice); +public +slots: + void parseOstcFwVersion(); +private: + QWebPage hwVersionPage; + QString latestFirmwareAvailable; }; #endif // CONFIGUREDIVECOMPUTERDIALOG_H diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp index 112d10586..b270def5b 100644 --- a/qt-ui/downloadfromdivecomputer.cpp +++ b/qt-ui/downloadfromdivecomputer.cpp @@ -1,11 +1,11 @@ #include "downloadfromdivecomputer.h" -#include "../divecomputer.h" -#include "../libdivecomputer.h" -#include "../helpers.h" -#include "../display.h" -#include "../divelist.h" - +#include "divecomputer.h" +#include "libdivecomputer.h" +#include "helpers.h" +#include "display.h" +#include "divelist.h" #include "mainwindow.h" + #include <cstdlib> #include <QThread> #include <QDebug> @@ -46,7 +46,8 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) : productModel(0), timer(new QTimer(this)), dumpWarningShown(false), - currentState(INITIAL) + currentState(INITIAL), + ostcFirmwareCheck(0) { ui.setupUi(this); ui.progressBar->hide(); @@ -302,6 +303,9 @@ void DownloadFromDCWidget::on_ok_clicked() previousLast = dive_table.nr; thread->start(); + + if (ui.product->currentText() == "OSTC 3" || ui.product->currentText() == "OSTC sport") + ostcFirmwareCheck = new OstcFirmwareCheck(); } bool DownloadFromDCWidget::preferDownloaded() @@ -397,6 +401,9 @@ void DownloadFromDCWidget::onDownloadThreadFinished() // (but not visible as selected) MainWindow::instance()->dive_list()->unselectDives(); MainWindow::instance()->dive_list()->selectDive(idx, true); + QString dcName = data.devname; + if (ostcFirmwareCheck) + ostcFirmwareCheck->checkLatest(data.libdc_firmware); } } else if (currentState == CANCELLING || currentState == CANCELLED) { if (import_thread_cancelled) { diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h index 394766c07..dcb568c9e 100644 --- a/qt-ui/downloadfromdivecomputer.h +++ b/qt-ui/downloadfromdivecomputer.h @@ -6,7 +6,8 @@ #include <QHash> #include <QMap> -#include "../libdivecomputer.h" +#include "libdivecomputer.h" +#include "configuredivecomputerdialog.h" #include "ui_downloadfromdivecomputer.h" class QStringListModel; @@ -75,6 +76,7 @@ private: QString dumpFile; QTimer *timer; bool dumpWarningShown; + OstcFirmwareCheck *ostcFirmwareCheck; public: bool preferDownloaded(); |