This patch disables/enables the DC device node based on what type of transport the selected DC uses. According to Jef, libdivecomputer uses the device node only if the serial transport is being used. For USB and IrDA, direct communication with the device is used and so the field is not relevant.
Benjamin
From 508e3696dd38c66be806a9cf97a57b0f6ad49fd4 Mon Sep 17 00:00:00 2001 From: Benjamin Fogel <nyst...@gmail.com> Date: Fri, 27 Dec 2013 12:42:49 +0200 Subject: [PATCH] Disable DC device node if it is not used. The only time the device node field is used is if the selected DC uses a serial transport type. IrDA and USB type transports do not use the device node. Signed-off-by: Benjamin Fogel <nyst...@gmail.com> --- qt-ui/downloadfromdivecomputer.cpp | 17 +++++++++++++++++ qt-ui/downloadfromdivecomputer.h | 1 + 2 files changed, 18 insertions(+) diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp index 57415fa..b7eb520 100644 --- a/qt-ui/downloadfromdivecomputer.cpp +++ b/qt-ui/downloadfromdivecomputer.cpp @@ -70,6 +70,7 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) : if (default_dive_computer_product) ui.product->setCurrentIndex(ui.product->findText(default_dive_computer_product)); } + connect(ui.product, SIGNAL(currentIndexChanged(int)), this, SLOT(on_product_currentIndexChanged()), Qt::UniqueConnection); if (default_dive_computer_device) ui.device->setEditText(default_dive_computer_device); @@ -168,6 +169,22 @@ void DownloadFromDCWidget::on_vendor_currentIndexChanged(const QString& vendor) //currentModel->deleteLater(); } +void DownloadFromDCWidget::on_product_currentIndexChanged() +{ + // Set up the DC descriptor + dc_descriptor_t *descriptor = NULL; + descriptor = descriptorLookup[ui.vendor->currentText() + ui.product->currentText()]; + + // call dc_descriptor_get_transport to see if the dc_transport_t is DC_TRANSPORT_SERIAL + if (dc_descriptor_get_transport(descriptor) == DC_TRANSPORT_SERIAL) { + // if the dc_transport_t is DC_TRANSPORT_SERIAL, then enable the device node box. + ui.device->setEnabled(true); + } else { + // otherwise disable the device node box + ui.device->setEnabled(false); + } +} + void DownloadFromDCWidget::fill_computer_list() { dc_iterator_t *iterator = NULL; diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h index 943a1aa..cb02cfc 100644 --- a/qt-ui/downloadfromdivecomputer.h +++ b/qt-ui/downloadfromdivecomputer.h @@ -40,6 +40,7 @@ public slots: void on_ok_clicked(); void on_cancel_clicked(); void on_vendor_currentIndexChanged(const QString& vendor); + void on_product_currentIndexChanged(); void onDownloadThreadFinished(); void updateProgressBar(); -- 1.8.4.2
_______________________________________________ subsurface mailing list subsurface@hohndel.org http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface