[PATCH 5/5] Wire gui for diagnostic logs from dc configuration

Anton Lundin glance at acc.umu.se
Wed May 27 12:19:13 PDT 2015


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 <glance at acc.umu.se>
---
 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



More information about the subsurface mailing list