diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-05-20 21:55:56 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-05-20 21:55:56 -0700 |
commit | 246fbd0333c53f55b7ff7e8165b4435163a8f350 (patch) | |
tree | 52a03908c9bf270d41826a0189bade9db80ca265 | |
parent | f4acbb02e489672b6ee56e5bcf37b651039abb77 (diff) | |
download | subsurface-246fbd0333c53f55b7ff7e8165b4435163a8f350.tar.gz |
Implement rudimentary divecomputer download
Small changes to the names of elements the divecomputer download UI and
very simplistic first stab at populating the device_data_t structure.
This is lacking lots of things
- it should remember the last vendor / product used
- it should figure out which device (mount point) to offer
- it needs proper error handling
But it's a step in the right direction.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/downloadfromdivecomputer.cpp | 22 | ||||
-rw-r--r-- | qt-ui/downloadfromdivecomputer.h | 6 | ||||
-rw-r--r-- | qt-ui/downloadfromdivecomputer.ui | 4 |
3 files changed, 22 insertions, 10 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp index 2a1d7f566..e621096ff 100644 --- a/qt-ui/downloadfromdivecomputer.cpp +++ b/qt-ui/downloadfromdivecomputer.cpp @@ -41,17 +41,17 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) : vendorModel = new QStringListModel(vendorList); ui->vendor->setModel(vendorModel); - ui->diveComputerName->setModel(0); + ui->product->setModel(0); } void DownloadFromDCWidget::on_vendor_currentIndexChanged(const QString& vendor) { - QAbstractItemModel *currentModel = ui->diveComputerName->model(); + QAbstractItemModel *currentModel = ui->product->model(); if (!currentModel) return; productModel = new QStringListModel(productList[vendor]); - ui->diveComputerName->setModel(productModel); + ui->product->setModel(productModel); // Memleak - but deleting gives me a crash. //currentModel->deleteLater(); @@ -62,8 +62,6 @@ void DownloadFromDCWidget::fill_computer_list() dc_iterator_t *iterator = NULL; dc_descriptor_t *descriptor = NULL; struct mydescriptor *mydescriptor; - struct vendor *dcl; - struct product *pl; QStringList computer; dc_descriptor_iterator(&iterator); @@ -76,6 +74,8 @@ void DownloadFromDCWidget::fill_computer_list() if( !productList[vendor].contains( product )) productList[vendor].push_back( product ); + + descriptorLookup[QString(vendor) + QString(product)] = descriptor; } dc_iterator_free(iterator); @@ -96,6 +96,8 @@ void DownloadFromDCWidget::fill_computer_list() if( !productList["Uemis"].contains( "Zurich" )) productList["Uemis"].push_back( "Zurich" ); + + descriptorLookup[QString("UemisZurich")] = (dc_descriptor_t *)mydescriptor; } void DownloadFromDCWidget::on_cancel_clicked() @@ -121,8 +123,14 @@ void DownloadFromDCWidget::on_ok_clicked() thread->deleteLater(); } - device_data_t data; - // still need to fill the data info here. + data.devname = strdup(ui->device->text().toUtf8().data()); + data.vendor = strdup(ui->vendor->currentText().toUtf8().data()); + data.product = strdup(ui->product->currentText().toUtf8().data()); + data.descriptor = descriptorLookup[ui->vendor->currentText() + ui->product->currentText()]; + data.force_download = ui->forceDownload->isChecked(); + // still needs to be implemented + // set_default_dive_computer(data.vendor, data.product); + thread = new InterfaceThread(this, &data); connect(thread, SIGNAL(updateInterface(int)), ui->progressBar, SLOT(setValue(int)), Qt::QueuedConnection); // Qt::QueuedConnection == threadsafe. diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h index eefcc4d29..eccea8ac7 100644 --- a/qt-ui/downloadfromdivecomputer.h +++ b/qt-ui/downloadfromdivecomputer.h @@ -4,6 +4,8 @@ #include <QDialog> #include <QThread> #include <QHash> +#include <QMap> +#include "../libdivecomputer.h" namespace Ui{ class DownloadFromDiveComputer; @@ -49,10 +51,12 @@ private: QStringList vendorList; QHash<QString, QStringList> productList; + QMap<QString, dc_descriptor_t *> descriptorLookup; + device_data_t data; QStringListModel *vendorModel; QStringListModel *productModel; void fill_computer_list(); }; -#endif
\ No newline at end of file +#endif diff --git a/qt-ui/downloadfromdivecomputer.ui b/qt-ui/downloadfromdivecomputer.ui index 924b886aa..4b46a6e43 100644 --- a/qt-ui/downloadfromdivecomputer.ui +++ b/qt-ui/downloadfromdivecomputer.ui @@ -32,7 +32,7 @@ <widget class="QComboBox" name="vendor"/> </item> <item row="1" column="1" colspan="2"> - <widget class="QComboBox" name="diveComputerName"/> + <widget class="QComboBox" name="product"/> </item> <item row="2" column="0" colspan="3"> <widget class="QLabel" name="label_3"> @@ -42,7 +42,7 @@ </widget> </item> <item row="3" column="0" colspan="2"> - <widget class="QLineEdit" name="mountPoint"/> + <widget class="QLineEdit" name="device"/> </item> <item row="3" column="2"> <widget class="QToolButton" name="search"> |