From d42cc5a40c419fc3350a19eaf9e1154bc0433ca3 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 24 Dec 2013 16:26:00 -0800 Subject: 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 --- qt-ui/downloadfromdivecomputer.cpp | 49 +++++++++++++++++++++++++++- qt-ui/downloadfromdivecomputer.h | 7 +++- qt-ui/downloadfromdivecomputer.ui | 66 ++++++++++++++++++++++++++------------ 3 files changed, 100 insertions(+), 22 deletions(-) (limited to 'qt-ui') 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 #include #include +#include #include 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 @@ 0 0 331 - 241 + 314 @@ -19,6 +19,20 @@ + + + + Device or Mount Point + + + + + + + true + + + @@ -39,20 +53,6 @@ - - - - Device or Mount Point - - - - - - - true - - - @@ -74,7 +74,7 @@ - + @@ -105,17 +105,43 @@ - + 24 + + + + Save libdivecomputer logfile + + + + + + + Save libdivecomputer dumpfile + + + + + + + ... + + + + + + + ... + + + - - - + -- cgit v1.2.3-70-g09d2