diff options
author | Joseph W. Joshua <joejoshw@gmail.com> | 2014-06-11 11:47:25 +0300 |
---|---|---|
committer | Thiago Macieira <thiago@macieira.org> | 2014-08-13 10:48:14 -0700 |
commit | 8ccf2e8f1d05fb34854ce5f5de935d523484e163 (patch) | |
tree | 875be8317c39ef3e4aae1c1cebe99e2bbed8401b | |
parent | 09ec8a44e5c48b6b6a2e4ebb1253fd3cd94154ae (diff) | |
download | subsurface-8ccf2e8f1d05fb34854ce5f5de935d523484e163.tar.gz |
Change ConfigureDiveComputerDialog to use tabbed interface
Changes the dive computer configuration dialog to use a
tabbed interface. This will make it easier to add new
dive computer models to the interface.
Signed-off-by: Joseph W. Joshua <joejoshw@gmail.com>
Signed-off-by: Thiago Macieira <thiago@macieira.org>
-rw-r--r-- | qt-ui/configuredivecomputerdialog.cpp | 108 | ||||
-rw-r--r-- | qt-ui/configuredivecomputerdialog.h | 19 | ||||
-rw-r--r-- | qt-ui/configuredivecomputerdialog.ui | 612 |
3 files changed, 349 insertions, 390 deletions
diff --git a/qt-ui/configuredivecomputerdialog.cpp b/qt-ui/configuredivecomputerdialog.cpp index c50306f1a..d9cee9229 100644 --- a/qt-ui/configuredivecomputerdialog.cpp +++ b/qt-ui/configuredivecomputerdialog.cpp @@ -32,8 +32,6 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ConfigureDiveComputerDialog), config(0), - vendorModel(0), - productModel(0), deviceDetails(0) { ui->setupUi(this); @@ -45,24 +43,14 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) : connect (config, SIGNAL(readFinished()), this, SLOT(deviceReadFinished())); connect (config, SIGNAL(deviceDetailsChanged(DeviceDetails*)), this, SLOT(deviceDetailsReceived(DeviceDetails*))); + connect (ui->retrieveDetails, SIGNAL(clicked()), this, SLOT(readSettings())); + memset(&device_data, 0, sizeof(device_data)); fill_computer_list(); - - vendorModel = new QStringListModel(vendorList); - ui->vendor->setModel(vendorModel); - if (default_dive_computer_vendor) { - ui->vendor->setCurrentIndex(ui->vendor->findText(default_dive_computer_vendor)); - productModel = new QStringListModel(productList[default_dive_computer_vendor]); - ui->product->setModel(productModel); - if (default_dive_computer_product) - ui->product->setCurrentIndex(ui->product->findText(default_dive_computer_product)); - } if (default_dive_computer_device) ui->device->setEditText(default_dive_computer_device); - memset(&device_data, 0, sizeof(device_data)); - - connect (ui->retrieveDetails, SIGNAL(clicked()), this, SLOT(readSettings())); + on_tabWidget_currentChanged(0); } ConfigureDiveComputerDialog::~ConfigureDiveComputerDialog() @@ -70,6 +58,22 @@ ConfigureDiveComputerDialog::~ConfigureDiveComputerDialog() delete ui; } + +static void fillDeviceList(const char *name, void *data) +{ + QComboBox *comboBox = (QComboBox *)data; + comboBox->addItem(name); +} + +void ConfigureDiveComputerDialog::fill_device_list(int dc_type) +{ + int deviceIndex; + ui->device->clear(); + deviceIndex = enumerate_devices(fillDeviceList, ui->device, dc_type); + if (deviceIndex >= 0) + ui->device->setCurrentIndex(deviceIndex); +} + void ConfigureDiveComputerDialog::fill_computer_list() { dc_iterator_t *iterator = NULL; @@ -77,7 +81,6 @@ void ConfigureDiveComputerDialog::fill_computer_list() struct mydescriptor *mydescriptor; - QStringList computer; dc_descriptor_iterator(&iterator); while (dc_iterator_next(iterator, &descriptor) == DC_STATUS_SUCCESS) { const char *vendor = dc_descriptor_get_vendor(descriptor); @@ -110,21 +113,6 @@ void ConfigureDiveComputerDialog::fill_computer_list() qSort(vendorList); } -static void fillDeviceList(const char *name, void *data) -{ - QComboBox *comboBox = (QComboBox *)data; - comboBox->addItem(name); -} - -void ConfigureDiveComputerDialog::fill_device_list(int dc_type) -{ - int deviceIndex; - ui->device->clear(); - deviceIndex = enumerate_devices(fillDeviceList, ui->device, dc_type); - if (deviceIndex >= 0) - ui->device->setCurrentIndex(deviceIndex); -} - void ConfigureDiveComputerDialog::populateDeviceDetails() { deviceDetails->setCustomText(ui->customTextLlineEdit->text()); @@ -140,36 +128,6 @@ void ConfigureDiveComputerDialog::populateDeviceDetails() deviceDetails->setSyncTime(ui->dateTimeSyncCheckBox->isChecked()); } -void ConfigureDiveComputerDialog::on_vendor_currentIndexChanged(const QString &vendor) -{ - int dcType = DC_TYPE_SERIAL; - QAbstractItemModel *currentModel = ui->product->model(); - if (!currentModel) - return; - - productModel = new QStringListModel(productList[vendor]); - ui->product->setModel(productModel); - - if (vendor == QString("Uemis")) - dcType = DC_TYPE_UEMIS; - fill_device_list(dcType); -} - -void ConfigureDiveComputerDialog::on_product_currentIndexChanged(const QString &product) -{ - dc_descriptor_t *descriptor = NULL; - descriptor = descriptorLookup[ui->vendor->currentText() + product]; - - // 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 ConfigureDiveComputerDialog::readSettings() { ui->statusLabel->clear(); @@ -192,13 +150,12 @@ void ConfigureDiveComputerDialog::configError(QString err) void ConfigureDiveComputerDialog::getDeviceData() { device_data.devname = strdup(ui->device->currentText().toUtf8().data()); - device_data.vendor = strdup(ui->vendor->currentText().toUtf8().data()); - device_data.product = strdup(ui->product->currentText().toUtf8().data()); + device_data.vendor = strdup(selected_vendor.toUtf8().data()); + device_data.product = strdup(selected_product.toUtf8().data()); - device_data.descriptor = descriptorLookup[ui->vendor->currentText() + ui->product->currentText()]; + device_data.descriptor = descriptorLookup[selected_vendor + selected_product]; device_data.deviceid = device_data.diveid = 0; - set_default_dive_computer(device_data.vendor, device_data.product); set_default_dive_computer_device(device_data.devname); } @@ -248,8 +205,8 @@ void ConfigureDiveComputerDialog::on_backupButton_clicked() QFileInfo fi(filename); filename = fi.absolutePath().append(QDir::separator()).append("Backup.xml"); QString backupPath = QFileDialog::getSaveFileName(this, tr("Backup Dive Computer Settings"), - filename, tr("Backup files (*.xml)") - ); + filename, tr("Backup files (*.xml)") + ); if (!backupPath.isEmpty()) { populateDeviceDetails(); getDeviceData(); @@ -293,3 +250,20 @@ void ConfigureDiveComputerDialog::on_restoreBackupButton_clicked() } } } + +void ConfigureDiveComputerDialog::on_tabWidget_currentChanged(int index) +{ + switch (index) { + case 0: + selected_vendor = "Heinrichs Weikamp"; + selected_product = "OSTC 3"; + break; + } + + int dcType = DC_TYPE_SERIAL; + + + if (selected_vendor == QString("Uemis")) + dcType = DC_TYPE_UEMIS; + fill_device_list(dcType); +} diff --git a/qt-ui/configuredivecomputerdialog.h b/qt-ui/configuredivecomputerdialog.h index ee1eb4c99..de068c609 100644 --- a/qt-ui/configuredivecomputerdialog.h +++ b/qt-ui/configuredivecomputerdialog.h @@ -19,10 +19,6 @@ public: ~ConfigureDiveComputerDialog(); private slots: - void on_vendor_currentIndexChanged(const QString &vendor); - - void on_product_currentIndexChanged(const QString &product); - void readSettings(); void configMessage(QString msg); void configError(QString err); @@ -35,24 +31,27 @@ private slots: void on_restoreBackupButton_clicked(); + void on_tabWidget_currentChanged(int index); + private: Ui::ConfigureDiveComputerDialog *ui; + QStringList vendorList; + QHash<QString, QStringList> productList; + ConfigureDiveComputer *config; device_data_t device_data; void getDeviceData(); - QStringList vendorList; - QHash<QString, QStringList> productList; QHash<QString, dc_descriptor_t *> descriptorLookup; - - QStringListModel *vendorModel; - QStringListModel *productModel; - void fill_computer_list(); void fill_device_list(int dc_type); + void fill_computer_list(); DeviceDetails *deviceDetails; void populateDeviceDetails(); + + QString selected_vendor; + QString selected_product; }; #endif // CONFIGUREDIVECOMPUTERDIALOG_H diff --git a/qt-ui/configuredivecomputerdialog.ui b/qt-ui/configuredivecomputerdialog.ui index e117db644..22bd9b563 100644 --- a/qt-ui/configuredivecomputerdialog.ui +++ b/qt-ui/configuredivecomputerdialog.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>629</width> - <height>496</height> + <width>594</width> + <height>509</height> </rect> </property> <property name="windowTitle"> @@ -15,30 +15,6 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Vendor</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Dive Computer</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QComboBox" name="vendor"/> - </item> - <item row="1" column="1"> - <widget class="QComboBox" name="product"/> - </item> - </layout> - </item> - <item> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label_3"> @@ -113,317 +89,327 @@ </layout> </item> <item> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="2" column="0"> - <widget class="QLabel" name="label_5"> - <property name="text"> - <string>Custom Text:</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_12"> - <property name="text"> - <string>Sampling Rate:</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Brightness:</string> - </property> - </widget> - </item> - <item row="5" column="2"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>Salinity (0-5%):</string> - </property> - </widget> - </item> - <item row="7" column="0" colspan="3"> - <widget class="QCheckBox" name="dateTimeSyncCheckBox"> - <property name="text"> - <string>Sync dive computer time with PC</string> - </property> - </widget> - </item> - <item row="5" column="3"> - <widget class="QSpinBox" name="salinitySpinBox"> - <property name="suffix"> - <string>%</string> - </property> - <property name="maximum"> - <number>5</number> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QSpinBox" name="lastDecoSpinBox"> - <property name="suffix"> - <string> m</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="serialNoLineEdit"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_10"> - <property name="text"> - <string>Last Deco:</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>Serial No.</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QLabel" name="label_6"> - <property name="text"> - <string>Language:</string> - </property> - </widget> - </item> - <item row="4" column="3"> - <widget class="QComboBox" name="unitsComboBox"> - <item> - <property name="text"> - <string>m/°C</string> - </property> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>HW OSTC 3</string> + </attribute> + <layout class="QGridLayout" name="gridLayout"> + <item row="3" column="1"> + <widget class="QSpinBox" name="lastDecoSpinBox"> + <property name="suffix"> + <string> m</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>ft/°F</string> - </property> + <item row="7" column="0" colspan="4"> + <widget class="QCheckBox" name="dateTimeSyncCheckBox"> + <property name="text"> + <string>Sync dive computer time with PC</string> + </property> + </widget> </item> - </widget> - </item> - <item row="3" column="3"> - <widget class="QComboBox" name="brightnessComboBox"> - <item> - <property name="text"> - <string>Eco</string> - </property> + <item row="4" column="2"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Units:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>Medium</string> - </property> + <item row="5" column="2"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>Salinity (0-5%):</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>High</string> - </property> + <item row="2" column="2"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Language:</string> + </property> + </widget> </item> - </widget> - </item> - <item row="4" column="1"> - <widget class="QComboBox" name="dateFormatComboBox"> - <item> - <property name="text"> - <string>MMDDYY</string> - </property> + <item row="2" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Custom Text:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>DDMMYY</string> - </property> + <item row="2" column="1"> + <widget class="QLineEdit" name="customTextLlineEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> </item> - <item> - <property name="text"> - <string>YYMMDD</string> - </property> + <item row="4" column="0"> + <widget class="QLabel" name="label_9"> + <property name="text"> + <string>Date Format:</string> + </property> + </widget> </item> - </widget> - </item> - <item row="2" column="3"> - <widget class="QComboBox" name="languageComboBox"> - <item> - <property name="text"> - <string>English</string> - </property> + <item row="6" column="2"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Compass Gain:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>German</string> - </property> + <item row="1" column="1"> + <widget class="QLineEdit" name="firmwareVersionLineEdit"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text"> - <string>French</string> - </property> + <item row="3" column="0"> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>Last Deco:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>Italian</string> - </property> + <item row="8" column="0" colspan="4"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> </item> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="firmwareVersionLineEdit"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_9"> - <property name="text"> - <string>Date Format:</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Firmware Version:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="customTextLlineEdit"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>1</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>Units:</string> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QComboBox" name="samplingRateComboBox"> - <item> - <property name="text"> - <string>2s</string> - </property> + <item row="0" column="1"> + <widget class="QLineEdit" name="serialNoLineEdit"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> </item> - <item> - <property name="text"> - <string>10s</string> - </property> + <item row="6" column="1"> + <widget class="QComboBox" name="diveModeColour"> + <item> + <property name="text"> + <string>Standard</string> + </property> + </item> + <item> + <property name="text"> + <string>Red</string> + </property> + </item> + <item> + <property name="text"> + <string>Green</string> + </property> + </item> + <item> + <property name="text"> + <string>Blue</string> + </property> + </item> + </widget> </item> - </widget> - </item> - <item row="6" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Dive Mode Colour:</string> - </property> - </widget> - </item> - <item row="6" column="1"> - <widget class="QComboBox" name="diveModeColour"> - <item> - <property name="text"> - <string>Standard</string> - </property> + <item row="4" column="1"> + <widget class="QComboBox" name="dateFormatComboBox"> + <item> + <property name="text"> + <string>MMDDYY</string> + </property> + </item> + <item> + <property name="text"> + <string>DDMMYY</string> + </property> + </item> + <item> + <property name="text"> + <string>YYMMDD</string> + </property> + </item> + </widget> </item> - <item> - <property name="text"> - <string>Red</string> - </property> + <item row="4" column="3"> + <widget class="QComboBox" name="unitsComboBox"> + <item> + <property name="text"> + <string>m/°C</string> + </property> + </item> + <item> + <property name="text"> + <string>ft/°F</string> + </property> + </item> + </widget> </item> - <item> - <property name="text"> - <string>Green</string> - </property> + <item row="2" column="3"> + <widget class="QComboBox" name="languageComboBox"> + <item> + <property name="text"> + <string>English</string> + </property> + </item> + <item> + <property name="text"> + <string>German</string> + </property> + </item> + <item> + <property name="text"> + <string>French</string> + </property> + </item> + <item> + <property name="text"> + <string>Italian</string> + </property> + </item> + </widget> </item> - <item> - <property name="text"> - <string>Blue</string> - </property> + <item row="3" column="2"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Brightness:</string> + </property> + </widget> </item> - </widget> - </item> - <item row="6" column="2"> - <widget class="QLabel" name="label_15"> - <property name="text"> - <string>Compass Gain:</string> - </property> - </widget> - </item> - <item row="6" column="3"> - <widget class="QComboBox" name="compassGainComboBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>1</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <item> - <property name="text"> - <string>230LSB/Gauss</string> - </property> + <item row="0" column="0"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Serial No.</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>330LSB/Gauss</string> - </property> + <item row="6" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Dive Mode Colour:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>390LSB/Gauss</string> - </property> + <item row="5" column="0"> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>Sampling Rate:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>440LSB/Gauss</string> - </property> + <item row="3" column="3"> + <widget class="QComboBox" name="brightnessComboBox"> + <item> + <property name="text"> + <string>Eco</string> + </property> + </item> + <item> + <property name="text"> + <string>Medium</string> + </property> + </item> + <item> + <property name="text"> + <string>High</string> + </property> + </item> + </widget> </item> - <item> - <property name="text"> - <string>660LSB/Gauss</string> - </property> + <item row="5" column="1"> + <widget class="QComboBox" name="samplingRateComboBox"> + <item> + <property name="text"> + <string>2s</string> + </property> + </item> + <item> + <property name="text"> + <string>10s</string> + </property> + </item> + </widget> </item> - <item> - <property name="text"> - <string>820LSB/Gauss</string> - </property> + <item row="1" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Firmware Version:</string> + </property> + </widget> </item> - <item> - <property name="text"> - <string>1090LSB/Gauss</string> - </property> + <item row="5" column="3"> + <widget class="QSpinBox" name="salinitySpinBox"> + <property name="suffix"> + <string>%</string> + </property> + <property name="maximum"> + <number>5</number> + </property> + </widget> </item> - <item> - <property name="text"> - <string>1370LSB/Gauss</string> - </property> + <item row="6" column="3"> + <widget class="QComboBox" name="compassGainComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>230LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>330LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>390LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>440LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>660LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>820LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>1090LSB/Gauss</string> + </property> + </item> + <item> + <property name="text"> + <string>1370LSB/Gauss</string> + </property> + </item> + </widget> </item> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> + </layout> + </widget> + </widget> </item> <item> <widget class="QLabel" name="errorLabel"> @@ -469,13 +455,13 @@ </layout> </widget> <tabstops> - <tabstop>vendor</tabstop> - <tabstop>product</tabstop> <tabstop>device</tabstop> <tabstop>search</tabstop> <tabstop>retrieveDetails</tabstop> + <tabstop>saveSettingsPushButton</tabstop> <tabstop>backupButton</tabstop> <tabstop>restoreBackupButton</tabstop> + <tabstop>tabWidget</tabstop> <tabstop>serialNoLineEdit</tabstop> <tabstop>firmwareVersionLineEdit</tabstop> <tabstop>customTextLlineEdit</tabstop> |