summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-12-24 16:26:00 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-12-24 16:26:00 -0800
commitd42cc5a40c419fc3350a19eaf9e1154bc0433ca3 (patch)
tree135be41fefa4f41a6394e52f87a9470103a1831f /qt-ui
parent4de739b935f7795e78333863d92f070e52b2f385 (diff)
downloadsubsurface-d42cc5a40c419fc3350a19eaf9e1154bc0433ca3.tar.gz
Enable libdivecomputer log or dump from the UI
Pick filenames for these functions as they are selected. Use the windows-safe fopen function. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp49
-rw-r--r--qt-ui/downloadfromdivecomputer.h7
-rw-r--r--qt-ui/downloadfromdivecomputer.ui66
3 files changed, 100 insertions, 22 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index e1d761e85..d8983e9aa 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -10,6 +10,7 @@
#include <QDebug>
#include <QStringListModel>
#include <QTimer>
+#include <QFileDialog>
#include <QMessageBox>
struct product {
@@ -43,7 +44,7 @@ DownloadFromDCWidget *DownloadFromDCWidget::instance()
}
DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) :
- QDialog(parent, f), thread(0), timer(new QTimer(this)),
+ QDialog(parent, f), thread(0), timer(new QTimer(this)),
currentState(INITIAL)
{
ui.setupUi(this);
@@ -54,6 +55,12 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget* parent, Qt::WindowFlags f) :
fill_device_list();
fill_computer_list();
+ ui.chooseDumpFile->setEnabled(ui.dumpToFile->isChecked());
+ connect(ui.chooseDumpFile, SIGNAL(clicked()), this, SLOT(pickDumpFile()));
+ connect(ui.dumpToFile, SIGNAL(stateChanged(int)), this, SLOT(checkDumpFile(int)));
+ ui.chooseLogFile->setEnabled(ui.logToFile->isChecked());
+ connect(ui.chooseLogFile, SIGNAL(clicked()), this, SLOT(pickLogFile()));
+ connect(ui.logToFile, SIGNAL(stateChanged(int)), this, SLOT(checkLogFile(int)));
vendorModel = new QStringListModel(vendorList);
ui.vendor->setModel(vendorModel);
if (default_dive_computer_vendor) {
@@ -248,6 +255,46 @@ bool DownloadFromDCWidget::preferDownloaded()
return ui.preferDownloaded->isChecked();
}
+void DownloadFromDCWidget::checkLogFile(int state)
+{
+ ui.chooseLogFile->setEnabled(state == Qt::Checked);
+ data.libdc_log = (state == Qt::Checked);
+ if (state == Qt::Checked && logFile.isEmpty()) {
+ pickLogFile();
+ }
+}
+
+void DownloadFromDCWidget::pickLogFile()
+{
+ QString filename = existing_filename ? : prefs.default_filename;
+ QFileInfo fi(filename);
+ filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log");
+ logFile = QFileDialog::getSaveFileName(this, tr("Choose file for divecomputer download logfile"),
+ filename, tr("Log files (*.log)"));
+ if (!logFile.isEmpty())
+ logfile_name = strdup(logFile.toUtf8().data());
+}
+
+void DownloadFromDCWidget::checkDumpFile(int state)
+{
+ ui.chooseDumpFile->setEnabled(state == Qt::Checked);
+ data.libdc_dump = (state == Qt::Checked);
+ if (state == Qt::Checked && dumpFile.isEmpty()) {
+ pickDumpFile();
+ }
+}
+
+void DownloadFromDCWidget::pickDumpFile()
+{
+ QString filename = existing_filename ? : prefs.default_filename;
+ QFileInfo fi(filename);
+ filename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin");
+ dumpFile = QFileDialog::getSaveFileName(this, tr("Choose file for divecomputer binary dump file"),
+ filename, tr("Dump files (*.bin)"));
+ if (!dumpFile.isEmpty())
+ dumpfile_name = strdup(dumpFile.toUtf8().data());
+}
+
void DownloadFromDCWidget::reject()
{
// we don't want the download window being able to close
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index 725dc787f..cb09a9f6d 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -44,6 +44,10 @@ public slots:
void onDownloadThreadFinished();
void updateProgressBar();
void runDialog();
+ void checkLogFile(int state);
+ void checkDumpFile(int state);
+ void pickDumpFile();
+ void pickLogFile();
private:
void markChildrenAsDisabled();
@@ -63,7 +67,8 @@ private:
QStringListModel *productModel;
void fill_computer_list();
void fill_device_list();
-
+ QString logFile;
+ QString dumpFile;
QTimer *timer;
public:
diff --git a/qt-ui/downloadfromdivecomputer.ui b/qt-ui/downloadfromdivecomputer.ui
index 05abd0e40..333ce783c 100644
--- a/qt-ui/downloadfromdivecomputer.ui
+++ b/qt-ui/downloadfromdivecomputer.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>331</width>
- <height>241</height>
+ <height>314</height>
</rect>
</property>
<property name="windowTitle">
@@ -19,6 +19,20 @@
</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
+ <item row="2" column="0" colspan="3">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Device or Mount Point</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QComboBox" name="device">
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
@@ -39,20 +53,6 @@
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="product"/>
</item>
- <item row="2" column="0" colspan="3">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Device or Mount Point</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2">
- <widget class="QComboBox" name="device">
- <property name="editable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
<item row="3" column="2">
<widget class="QToolButton" name="search">
<property name="text">
@@ -74,7 +74,7 @@
</property>
</widget>
</item>
- <item row="6" column="0" colspan="3">
+ <item row="8" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
@@ -105,17 +105,43 @@
</item>
</layout>
</item>
- <item row="7" column="0" colspan="3">
+ <item row="9" column="0" colspan="3">
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>24</number>
</property>
</widget>
</item>
+ <item row="6" column="0" colspan="2">
+ <widget class="QCheckBox" name="logToFile">
+ <property name="text">
+ <string>Save libdivecomputer logfile</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0" colspan="2">
+ <widget class="QCheckBox" name="dumpToFile">
+ <property name="text">
+ <string>Save libdivecomputer dumpfile</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="2">
+ <widget class="QToolButton" name="chooseLogFile">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="2">
+ <widget class="QToolButton" name="chooseDumpFile">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
- <resources>
- <include location="../subsurface.qrc"/>
- </resources>
+ <resources/>
<connections/>
</ui>