summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/configuredivecomputerdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/configuredivecomputerdialog.h')
-rw-r--r--desktop-widgets/configuredivecomputerdialog.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/desktop-widgets/configuredivecomputerdialog.h b/desktop-widgets/configuredivecomputerdialog.h
new file mode 100644
index 000000000..9ad30ac67
--- /dev/null
+++ b/desktop-widgets/configuredivecomputerdialog.h
@@ -0,0 +1,149 @@
+#ifndef CONFIGUREDIVECOMPUTERDIALOG_H
+#define CONFIGUREDIVECOMPUTERDIALOG_H
+
+#include <QDialog>
+#include <QStringListModel>
+#include "ui_configuredivecomputerdialog.h"
+#include "subsurface-core/libdivecomputer.h"
+#include "configuredivecomputer.h"
+#include <QStyledItemDelegate>
+#include <QNetworkAccessManager>
+#ifdef BT_SUPPORT
+#include "btdeviceselectiondialog.h"
+#endif
+
+class GasSpinBoxItemDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+
+public:
+ enum column_type {
+ PERCENT,
+ DEPTH,
+ SETPOINT,
+ };
+
+ GasSpinBoxItemDelegate(QObject *parent = 0, column_type type = PERCENT);
+ ~GasSpinBoxItemDelegate();
+
+ virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+ virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;
+ virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
+
+private:
+ column_type type;
+};
+
+class GasTypeComboBoxItemDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+
+public:
+ enum computer_type {
+ OSTC3,
+ OSTC,
+ };
+
+ GasTypeComboBoxItemDelegate(QObject *parent = 0, computer_type type = OSTC3);
+ ~GasTypeComboBoxItemDelegate();
+
+ virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+ virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;
+ virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
+
+private:
+ computer_type type;
+};
+
+class ConfigureDiveComputerDialog : public QDialog {
+ Q_OBJECT
+
+public:
+ explicit ConfigureDiveComputerDialog(QWidget *parent = 0);
+ ~ConfigureDiveComputerDialog();
+
+protected:
+ void closeEvent(QCloseEvent *event);
+
+private
+slots:
+ void checkLogFile(int state);
+ void pickLogFile();
+ void readSettings();
+ void resetSettings();
+ void configMessage(QString msg);
+ void configError(QString err);
+ void on_cancel_clicked();
+ void on_saveSettingsPushButton_clicked();
+ void deviceDetailsReceived(DeviceDetails *newDeviceDetails);
+ void reloadValues();
+ void on_backupButton_clicked();
+
+ void on_restoreBackupButton_clicked();
+
+
+ void on_updateFirmwareButton_clicked();
+
+ void on_DiveComputerList_currentRowChanged(int currentRow);
+
+ void dc_open();
+ void dc_close();
+
+#ifdef BT_SUPPORT
+ void bluetoothSelectionDialogIsFinished(int result);
+ void selectRemoteBluetoothDevice();
+#endif
+
+private:
+ Ui::ConfigureDiveComputerDialog ui;
+
+ QString logFile;
+
+ QStringList vendorList;
+ QHash<QString, QStringList> productList;
+
+ ConfigureDiveComputer *config;
+ device_data_t device_data;
+ void getDeviceData();
+
+ QHash<QString, dc_descriptor_t *> descriptorLookup;
+ void fill_device_list(int dc_type);
+ void fill_computer_list();
+
+ DeviceDetails *deviceDetails;
+ void populateDeviceDetails();
+ void populateDeviceDetailsOSTC3();
+ void populateDeviceDetailsOSTC();
+ void populateDeviceDetailsSuuntoVyper();
+ void reloadValuesOSTC3();
+ void reloadValuesOSTC();
+ void reloadValuesSuuntoVyper();
+
+ QString selected_vendor;
+ QString selected_product;
+ bool fw_upgrade_possible;
+
+#ifdef BT_SUPPORT
+ BtDeviceSelectionDialog *btDeviceSelectionDialog;
+#endif
+};
+
+class OstcFirmwareCheck : QObject {
+ Q_OBJECT
+public:
+ explicit OstcFirmwareCheck(QString product);
+ void checkLatest(QWidget *parent, device_data_t *data);
+public
+slots:
+ void parseOstcFwVersion(QNetworkReply *reply);
+ void saveOstcFirmware(QNetworkReply *reply);
+
+private:
+ void upgradeFirmware();
+ device_data_t devData;
+ QString latestFirmwareAvailable;
+ QString latestFirmwareHexFile;
+ QString storeFirmware;
+ QWidget *parent;
+ QNetworkAccessManager manager;
+};
+
+#endif // CONFIGUREDIVECOMPUTERDIALOG_H