This copies peaces from the downloadfromdivecomputer dialog into the
configuredivecomputerdialog and connects them to be able to create a
logfile form the configuration of the divecomputer.

Signed-off-by: Anton Lundin <[email protected]>
---
 qt-ui/configuredivecomputerdialog.cpp | 25 +++++++++++++++++++++++++
 qt-ui/configuredivecomputerdialog.h   |  4 ++++
 qt-ui/configuredivecomputerdialog.ui  | 14 ++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/qt-ui/configuredivecomputerdialog.cpp 
b/qt-ui/configuredivecomputerdialog.cpp
index 172a1a4..c1d36a1 100644
--- a/qt-ui/configuredivecomputerdialog.cpp
+++ b/qt-ui/configuredivecomputerdialog.cpp
@@ -124,6 +124,9 @@ 
ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) : QDia
                this, SLOT(deviceDetailsReceived(DeviceDetails *)));
        connect(ui.retrieveDetails, SIGNAL(clicked()), this, 
SLOT(readSettings()));
        connect(ui.resetButton, SIGNAL(clicked()), this, SLOT(resetSettings()));
+       ui.chooseLogFile->setEnabled(ui.logToFile->isChecked());
+       connect(ui.chooseLogFile, SIGNAL(clicked()), this, SLOT(pickLogFile()));
+       connect(ui.logToFile, SIGNAL(stateChanged(int)), this, 
SLOT(checkLogFile(int)));
 
        memset(&device_data, 0, sizeof(device_data));
        fill_computer_list();
@@ -1117,3 +1120,25 @@ void 
ConfigureDiveComputerDialog::on_DiveComputerList_currentRowChanged(int curr
                dcType = DC_TYPE_UEMIS;
        fill_device_list(dcType);
 }
+
+void ConfigureDiveComputerDialog::checkLogFile(int state)
+{
+       ui.chooseLogFile->setEnabled(state == Qt::Checked);
+       device_data.libdc_log = (state == Qt::Checked);
+       if (state == Qt::Checked && logFile.isEmpty()) {
+               pickLogFile();
+       }
+}
+
+void ConfigureDiveComputerDialog::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()) {
+               free(logfile_name);
+               logfile_name = strdup(logFile.toUtf8().data());
+       }
+}
diff --git a/qt-ui/configuredivecomputerdialog.h 
b/qt-ui/configuredivecomputerdialog.h
index b2e4ff6..e41479f 100644
--- a/qt-ui/configuredivecomputerdialog.h
+++ b/qt-ui/configuredivecomputerdialog.h
@@ -58,6 +58,8 @@ public:
 
 private
 slots:
+       void checkLogFile(int state);
+       void pickLogFile();
        void readSettings();
        void resetSettings();
        void configMessage(QString msg);
@@ -78,6 +80,8 @@ slots:
 private:
        Ui::ConfigureDiveComputerDialog ui;
 
+       QString logFile;
+
        QStringList vendorList;
        QHash<QString, QStringList> productList;
 
diff --git a/qt-ui/configuredivecomputerdialog.ui 
b/qt-ui/configuredivecomputerdialog.ui
index 99d0743..22450f2 100644
--- a/qt-ui/configuredivecomputerdialog.ui
+++ b/qt-ui/configuredivecomputerdialog.ui
@@ -129,6 +129,20 @@
       </spacer>
      </item>
      <item>
+      <widget class="QCheckBox" name="logToFile">
+       <property name="text">
+        <string>Save libdivecomputer logfile</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="chooseLogFile">
+       <property name="text">
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QPushButton" name="cancel">
        <property name="text">
         <string>Cancel</string>
-- 
2.1.4

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to