[PATCH 2/3] Refactoring import to DiveLogImportDialog
Miika Turkia
miika.turkia at gmail.com
Sun Dec 29 08:11:20 UTC 2013
Changing the import stuff to DiveLogImport. Now we should have one
import function/dialog for importing divelogs instead of multiple menu
entries.
Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
qt-ui/csvimportdialog.cpp | 159 ---------------
qt-ui/csvimportdialog.h | 10 +-
qt-ui/csvimportdialog.ui | 459 ------------------------------------------
qt-ui/divelogimportdialog.cpp | 159 +++++++++++++++
qt-ui/divelogimportdialog.h | 53 +++++
qt-ui/divelogimportdialog.ui | 459 ++++++++++++++++++++++++++++++++++++++++++
qt-ui/mainwindow.cpp | 17 +-
qt-ui/mainwindow.h | 3 +-
qt-ui/mainwindow.ui | 23 +--
subsurface.pro | 6 +-
10 files changed, 691 insertions(+), 657 deletions(-)
delete mode 100644 qt-ui/csvimportdialog.cpp
delete mode 100644 qt-ui/csvimportdialog.ui
create mode 100644 qt-ui/divelogimportdialog.cpp
create mode 100644 qt-ui/divelogimportdialog.h
create mode 100644 qt-ui/divelogimportdialog.ui
diff --git a/qt-ui/csvimportdialog.cpp b/qt-ui/csvimportdialog.cpp
deleted file mode 100644
index 8ddf760..0000000
--- a/qt-ui/csvimportdialog.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <QtDebug>
-#include <QFileDialog>
-#include "csvimportdialog.h"
-#include "mainwindow.h"
-#include "ui_csvimportdialog.h"
-
-const CSVImportDialog::CSVAppConfig CSVImportDialog::CSVApps[CSVAPPS] = {
- {"", },
- {"APD Log Viewer", 1, 2, 16, 7, 18, 19, "Tab"},
- {"XP5", 1, 2, 10, -1, -1, -1, "Tab"},
- {NULL,}
-};
-
-CSVImportDialog::CSVImportDialog(QWidget *parent) :
- QDialog(parent),
- selector(true),
- ui(new Ui::CSVImportDialog)
-{
- ui->setupUi(this);
-
- for (int i = 0; !CSVApps[i].name.isNull(); ++i)
- ui->knownImports->addItem(CSVApps[i].name);
-
- ui->CSVSeparator->addItem("Tab");
- ui->CSVSeparator->addItem(",");
- ui->knownImports->setCurrentIndex(1);
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
-
- connect(ui->CSVDepth, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->CSVTime, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->CSVTemperature, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->temperatureCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
- connect(ui->CSVpo2, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->po2CheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
- connect(ui->CSVcns, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->cnsCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
- connect(ui->CSVstopdepth, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
- connect(ui->stopdepthCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
-}
-
-CSVImportDialog::~CSVImportDialog()
-{
- delete ui;
-}
-
-#define VALUE_IF_CHECKED(x) (ui->x->isEnabled() ? ui->x->value() - 1: -1)
-void CSVImportDialog::on_buttonBox_accepted()
-{
- char *error = NULL;
-
- if (ui->tabWidget->currentIndex() == 0) {
- QStringList fileNames = ui->DiveLogFile->text().split(";");
-
- /*
- if (ui->ImportAdvanced->isChecked()) {
- for (int i = 0; i < fileNames.size(); ++i) {
- parse_xml_file_units(fileNames.at(i).toUtf8().data(),
- ui->XMLImportFormat->currentIndex(), ui->XMLImportUnits->currentIndex(),
- &error);
- }
- if (error != NULL) {
-
- mainWindow()->showError(error);
- free(error);
- error = NULL;
- }
- } else {
- */
- mainWindow()->importFiles(fileNames);
- return;
- //}
-
- } else {
- parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value() - 1,
- ui->CSVDepth->value() - 1, VALUE_IF_CHECKED(CSVTemperature),
- VALUE_IF_CHECKED(CSVpo2),
- VALUE_IF_CHECKED(CSVcns),
- VALUE_IF_CHECKED(CSVstopdepth),
- ui->CSVSeparator->currentIndex(),
- &error);
- if (error != NULL) {
- mainWindow()->showError(error);
- free(error);
- error = NULL;
- }
- }
- process_dives(TRUE, FALSE);
-
- mainWindow()->refreshDisplay();
-}
-
-void CSVImportDialog::on_CSVFileSelector_clicked()
-{
- QString filename = QFileDialog::getOpenFileName(this, tr("Open CSV Log File"), ".", tr("CSV Files (*.csv);;All Files(*)"));
- ui->CSVFile->setText(filename);
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!filename.isEmpty());
-}
-
-#define SET_VALUE_AND_CHECKBOX(CSV, BOX, VAL) ({\
- ui->CSV->blockSignals(true);\
- ui->CSV->setValue(VAL);\
- ui->CSV->setEnabled(VAL >= 0);\
- ui->BOX->setChecked(VAL >= 0);\
- ui->CSV->blockSignals(false);\
- })
-void CSVImportDialog::on_knownImports_currentIndexChanged(int index)
-{
- if (index == 0)
- return;
-
- ui->CSVTime->blockSignals(true);
- ui->CSVDepth->blockSignals(true);
- ui->CSVTime->setValue(CSVApps[index].time);
- ui->CSVDepth->setValue(CSVApps[index].depth);
- ui->CSVTime->blockSignals(false);
- ui->CSVDepth->blockSignals(false);
- SET_VALUE_AND_CHECKBOX(CSVTemperature, temperatureCheckBox, CSVApps[index].temperature);
- SET_VALUE_AND_CHECKBOX(CSVpo2, po2CheckBox, CSVApps[index].po2);
- SET_VALUE_AND_CHECKBOX(CSVcns, cnsCheckBox, CSVApps[index].cns);
- SET_VALUE_AND_CHECKBOX(CSVstopdepth, stopdepthCheckBox, CSVApps[index].stopdepth);
-}
-
-void CSVImportDialog::unknownImports(bool arg1)
-{
- unknownImports();
-}
-
-void CSVImportDialog::unknownImports(int arg1)
-{
- unknownImports();
-}
-
-void CSVImportDialog::unknownImports()
-{
- ui->knownImports->setCurrentIndex(0);
-}
-
-void CSVImportDialog::on_CSVFile_textEdited()
-{
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->CSVFile->text().isEmpty());
-}
-
-void CSVImportDialog::on_DiveLogFileSelector_clicked()
-{
- QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Dive Log File"), ".", tr("XML Files (*.xml);;UDDF/UDCF Files(*.uddf *.udcf);;All Files(*)"));
- ui->DiveLogFile->setText(fileNames.join(";"));
- if (fileNames.size())
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
- else
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
-}
-
-void CSVImportDialog::on_DiveLogFile_editingFinished()
-{
- if (ui->DiveLogFile->text().size())
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
- else
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
-}
diff --git a/qt-ui/csvimportdialog.h b/qt-ui/csvimportdialog.h
index 90dd2ac..f062d49 100644
--- a/qt-ui/csvimportdialog.h
+++ b/qt-ui/csvimportdialog.h
@@ -7,16 +7,16 @@
#include "../divelist.h"
namespace Ui {
-class CSVImportDialog;
+class DiveLogImportDialog;
}
-class CSVImportDialog : public QDialog
+class DiveLogImportDialog : public QDialog
{
Q_OBJECT
public:
- explicit CSVImportDialog(QWidget *parent = 0);
- ~CSVImportDialog();
+ explicit DiveLogImportDialog(QWidget *parent = 0);
+ ~DiveLogImportDialog();
private slots:
void on_buttonBox_accepted();
@@ -33,7 +33,7 @@ private:
void unknownImports();
bool selector;
- Ui::CSVImportDialog *ui;
+ Ui::DiveLogImportDialog *ui;
struct CSVAppConfig {
QString name;
diff --git a/qt-ui/csvimportdialog.ui b/qt-ui/csvimportdialog.ui
deleted file mode 100644
index 68e95d0..0000000
--- a/qt-ui/csvimportdialog.ui
+++ /dev/null
@@ -1,459 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>CSVImportDialog</class>
- <widget class="QDialog" name="CSVImportDialog">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>515</width>
- <height>440</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Import CSV file</string>
- </property>
- <property name="windowIcon">
- <iconset>
- <normalon>:/subsurface-icon</normalon>
- </iconset>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLabel" name="label_3">
- <property name="font">
- <font>
- <family>Droid Sans [unknown]</family>
- <pointsize>14</pointsize>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="text">
- <string>Import Dive Log File</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QTabWidget" name="tabWidget">
- <property name="currentIndex">
- <number>0</number>
- </property>
- <widget class="QWidget" name="tab_2">
- <attribute name="title">
- <string>DiveLog</string>
- </attribute>
- <widget class="QGroupBox" name="groupBox_8">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>441</width>
- <height>65</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Import File</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_8">
- <item>
- <widget class="QLineEdit" name="DiveLogFile"/>
- </item>
- <item>
- <widget class="QToolButton" name="DiveLogFileSelector">
- <property name="text">
- <string>...</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <widget class="QWidget" name="tab">
- <attribute name="title">
- <string>CSV</string>
- </attribute>
- <widget class="QGroupBox" name="groupBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>441</width>
- <height>65</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Import File</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLineEdit" name="CSVFile"/>
- </item>
- <item>
- <widget class="QToolButton" name="CSVFileSelector">
- <property name="text">
- <string>...</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="geometry">
- <rect>
- <x>210</x>
- <y>88</y>
- <width>281</width>
- <height>65</height>
- </rect>
- </property>
- <property name="title">
- <string>Field Separator</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QComboBox" name="CSVSeparator"/>
- </item>
- </layout>
- </widget>
- <widget class="QGroupBox" name="groupBox_4">
- <property name="geometry">
- <rect>
- <x>210</x>
- <y>159</y>
- <width>281</width>
- <height>65</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Pre-configured imports</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QComboBox" name="knownImports">
- <property name="currentIndex">
- <number>-1</number>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QGroupBox" name="groupBox_3">
- <property name="geometry">
- <rect>
- <x>16</x>
- <y>88</y>
- <width>185</width>
- <height>246</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Field Configuration</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="3" column="1">
- <widget class="QSpinBox" name="CSVpo2">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QSpinBox" name="CSVDepth">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="value">
- <number>2</number>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QSpinBox" name="CSVTemperature">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Depth</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QSpinBox" name="CSVstopdepth">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="stopdepthCheckBox">
- <property name="text">
- <string>Stopdepth</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QCheckBox" name="po2CheckBox">
- <property name="text">
- <string>PO2</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Time</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="temperatureCheckBox">
- <property name="text">
- <string>Temp</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="CSVTime">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="value">
- <number>1</number>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QSpinBox" name="CSVcns">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QCheckBox" name="cnsCheckBox">
- <property name="text">
- <string>Cns</string>
- </property>
- </widget>
- </item>
- </layout>
- <zorder>label</zorder>
- <zorder>label_2</zorder>
- <zorder>CSVTime</zorder>
- <zorder>CSVDepth</zorder>
- <zorder>temperatureCheckBox</zorder>
- <zorder>CSVTemperature</zorder>
- <zorder>po2CheckBox</zorder>
- <zorder>CSVpo2</zorder>
- <zorder>cnsCheckBox</zorder>
- <zorder>CSVcns</zorder>
- <zorder>stopdepthCheckBox</zorder>
- <zorder>CSVstopdepth</zorder>
- </widget>
- </widget>
- </widget>
- </item>
- <item>
- <widget class="QWidget" name="horizontalWidget" native="true">
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QWidget" name="verticalWidget" native="true">
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>CSVImportDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>310</x>
- <y>286</y>
- </hint>
- <hint type="destinationlabel">
- <x>215</x>
- <y>164</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>CSVImportDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>310</x>
- <y>286</y>
- </hint>
- <hint type="destinationlabel">
- <x>215</x>
- <y>164</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>temperatureCheckBox</sender>
- <signal>clicked(bool)</signal>
- <receiver>CSVTemperature</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>77</x>
- <y>191</y>
- </hint>
- <hint type="destinationlabel">
- <x>161</x>
- <y>191</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>po2CheckBox</sender>
- <signal>clicked(bool)</signal>
- <receiver>CSVpo2</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>77</x>
- <y>223</y>
- </hint>
- <hint type="destinationlabel">
- <x>161</x>
- <y>223</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>cnsCheckBox</sender>
- <signal>clicked(bool)</signal>
- <receiver>CSVcns</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>77</x>
- <y>255</y>
- </hint>
- <hint type="destinationlabel">
- <x>161</x>
- <y>255</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>stopdepthCheckBox</sender>
- <signal>clicked(bool)</signal>
- <receiver>CSVstopdepth</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>77</x>
- <y>287</y>
- </hint>
- <hint type="destinationlabel">
- <x>161</x>
- <y>287</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/qt-ui/divelogimportdialog.cpp b/qt-ui/divelogimportdialog.cpp
new file mode 100644
index 0000000..129dbd9
--- /dev/null
+++ b/qt-ui/divelogimportdialog.cpp
@@ -0,0 +1,159 @@
+#include <QtDebug>
+#include <QFileDialog>
+#include "divelogimportdialog.h"
+#include "mainwindow.h"
+#include "ui_divelogimportdialog.h"
+
+const DiveLogImportDialog::CSVAppConfig DiveLogImportDialog::CSVApps[CSVAPPS] = {
+ {"", },
+ {"APD Log Viewer", 1, 2, 16, 7, 18, 19, "Tab"},
+ {"XP5", 1, 2, 10, -1, -1, -1, "Tab"},
+ {NULL,}
+};
+
+DiveLogImportDialog::DiveLogImportDialog(QWidget *parent) :
+ QDialog(parent),
+ selector(true),
+ ui(new Ui::DiveLogImportDialog)
+{
+ ui->setupUi(this);
+
+ for (int i = 0; !CSVApps[i].name.isNull(); ++i)
+ ui->knownImports->addItem(CSVApps[i].name);
+
+ ui->CSVSeparator->addItem("Tab");
+ ui->CSVSeparator->addItem(",");
+ ui->knownImports->setCurrentIndex(1);
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+
+ connect(ui->CSVDepth, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->CSVTime, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->CSVTemperature, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->temperatureCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
+ connect(ui->CSVpo2, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->po2CheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
+ connect(ui->CSVcns, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->cnsCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
+ connect(ui->CSVstopdepth, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+ connect(ui->stopdepthCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
+}
+
+DiveLogImportDialog::~DiveLogImportDialog()
+{
+ delete ui;
+}
+
+#define VALUE_IF_CHECKED(x) (ui->x->isEnabled() ? ui->x->value() - 1: -1)
+void DiveLogImportDialog::on_buttonBox_accepted()
+{
+ char *error = NULL;
+
+ if (ui->tabWidget->currentIndex() == 0) {
+ QStringList fileNames = ui->DiveLogFile->text().split(";");
+
+ /*
+ if (ui->ImportAdvanced->isChecked()) {
+ for (int i = 0; i < fileNames.size(); ++i) {
+ parse_xml_file_units(fileNames.at(i).toUtf8().data(),
+ ui->XMLImportFormat->currentIndex(), ui->XMLImportUnits->currentIndex(),
+ &error);
+ }
+ if (error != NULL) {
+
+ mainWindow()->showError(error);
+ free(error);
+ error = NULL;
+ }
+ } else {
+ */
+ mainWindow()->importFiles(fileNames);
+ return;
+ //}
+
+ } else {
+ parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value() - 1,
+ ui->CSVDepth->value() - 1, VALUE_IF_CHECKED(CSVTemperature),
+ VALUE_IF_CHECKED(CSVpo2),
+ VALUE_IF_CHECKED(CSVcns),
+ VALUE_IF_CHECKED(CSVstopdepth),
+ ui->CSVSeparator->currentIndex(),
+ &error);
+ if (error != NULL) {
+ mainWindow()->showError(error);
+ free(error);
+ error = NULL;
+ }
+ }
+ process_dives(TRUE, FALSE);
+
+ mainWindow()->refreshDisplay();
+}
+
+void DiveLogImportDialog::on_CSVFileSelector_clicked()
+{
+ QString filename = QFileDialog::getOpenFileName(this, tr("Open CSV Log File"), ".", tr("CSV Files (*.csv);;All Files(*)"));
+ ui->CSVFile->setText(filename);
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!filename.isEmpty());
+}
+
+#define SET_VALUE_AND_CHECKBOX(CSV, BOX, VAL) ({\
+ ui->CSV->blockSignals(true);\
+ ui->CSV->setValue(VAL);\
+ ui->CSV->setEnabled(VAL >= 0);\
+ ui->BOX->setChecked(VAL >= 0);\
+ ui->CSV->blockSignals(false);\
+ })
+void DiveLogImportDialog::on_knownImports_currentIndexChanged(int index)
+{
+ if (index == 0)
+ return;
+
+ ui->CSVTime->blockSignals(true);
+ ui->CSVDepth->blockSignals(true);
+ ui->CSVTime->setValue(CSVApps[index].time);
+ ui->CSVDepth->setValue(CSVApps[index].depth);
+ ui->CSVTime->blockSignals(false);
+ ui->CSVDepth->blockSignals(false);
+ SET_VALUE_AND_CHECKBOX(CSVTemperature, temperatureCheckBox, CSVApps[index].temperature);
+ SET_VALUE_AND_CHECKBOX(CSVpo2, po2CheckBox, CSVApps[index].po2);
+ SET_VALUE_AND_CHECKBOX(CSVcns, cnsCheckBox, CSVApps[index].cns);
+ SET_VALUE_AND_CHECKBOX(CSVstopdepth, stopdepthCheckBox, CSVApps[index].stopdepth);
+}
+
+void DiveLogImportDialog::unknownImports(bool arg1)
+{
+ unknownImports();
+}
+
+void DiveLogImportDialog::unknownImports(int arg1)
+{
+ unknownImports();
+}
+
+void DiveLogImportDialog::unknownImports()
+{
+ ui->knownImports->setCurrentIndex(0);
+}
+
+void DiveLogImportDialog::on_CSVFile_textEdited()
+{
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->CSVFile->text().isEmpty());
+}
+
+void DiveLogImportDialog::on_DiveLogFileSelector_clicked()
+{
+ QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Dive Log File"), ".", tr("XML Files (*.xml);;UDDF/UDCF Files(*.uddf *.udcf);;All Files(*)"));
+ ui->DiveLogFile->setText(fileNames.join(";"));
+ if (fileNames.size())
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
+ else
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+}
+
+void DiveLogImportDialog::on_DiveLogFile_editingFinished()
+{
+ if (ui->DiveLogFile->text().size())
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
+ else
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+}
diff --git a/qt-ui/divelogimportdialog.h b/qt-ui/divelogimportdialog.h
new file mode 100644
index 0000000..9ecf324
--- /dev/null
+++ b/qt-ui/divelogimportdialog.h
@@ -0,0 +1,53 @@
+#ifndef DIVELOGIMPORTDIALOG_H
+#define DIVELOGIMPORTDIALOG_H
+
+#include <QDialog>
+#include <QModelIndex>
+#include "../dive.h"
+#include "../divelist.h"
+
+namespace Ui {
+class DiveLogImportDialog;
+}
+
+class DiveLogImportDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit DiveLogImportDialog(QWidget *parent = 0);
+ ~DiveLogImportDialog();
+
+private slots:
+ void on_buttonBox_accepted();
+ void on_CSVFileSelector_clicked();
+ void on_knownImports_currentIndexChanged(int index);
+ void on_CSVFile_textEdited();
+ void unknownImports(int);
+ void unknownImports(bool);
+
+ void on_DiveLogFileSelector_clicked();
+ void on_DiveLogFile_editingFinished();
+
+private:
+ void unknownImports();
+
+ bool selector;
+ Ui::DiveLogImportDialog *ui;
+
+ struct CSVAppConfig {
+ QString name;
+ int time;
+ int depth;
+ int temperature;
+ int po2;
+ int cns;
+ int stopdepth;
+ QString separator;
+ };
+
+#define CSVAPPS 4
+ static const CSVAppConfig CSVApps[CSVAPPS];
+};
+
+#endif // DIVELOGIMPORTDIALOG_H
diff --git a/qt-ui/divelogimportdialog.ui b/qt-ui/divelogimportdialog.ui
new file mode 100644
index 0000000..ac23156
--- /dev/null
+++ b/qt-ui/divelogimportdialog.ui
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DiveLogImportDialog</class>
+ <widget class="QDialog" name="DiveLogImportDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>515</width>
+ <height>440</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Import dive log file</string>
+ </property>
+ <property name="windowIcon">
+ <iconset>
+ <normalon>:/subsurface-icon</normalon>
+ </iconset>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="font">
+ <font>
+ <family>Droid Sans [unknown]</family>
+ <pointsize>14</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string>Import Dive Log File</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>DiveLog</string>
+ </attribute>
+ <widget class="QGroupBox" name="groupBox_8">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>441</width>
+ <height>65</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Import File</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <item>
+ <widget class="QLineEdit" name="DiveLogFile"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="DiveLogFileSelector">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>CSV</string>
+ </attribute>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>441</width>
+ <height>65</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Import File</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="CSVFile"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="CSVFileSelector">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="geometry">
+ <rect>
+ <x>210</x>
+ <y>88</y>
+ <width>281</width>
+ <height>65</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Field Separator</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QComboBox" name="CSVSeparator"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_4">
+ <property name="geometry">
+ <rect>
+ <x>210</x>
+ <y>159</y>
+ <width>281</width>
+ <height>65</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Pre-configured imports</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QComboBox" name="knownImports">
+ <property name="currentIndex">
+ <number>-1</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="geometry">
+ <rect>
+ <x>16</x>
+ <y>88</y>
+ <width>185</width>
+ <height>246</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Field Configuration</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="CSVpo2">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="CSVDepth">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>2</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="CSVTemperature">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Depth</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QSpinBox" name="CSVstopdepth">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="stopdepthCheckBox">
+ <property name="text">
+ <string>Stopdepth</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="po2CheckBox">
+ <property name="text">
+ <string>PO2</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Time</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="temperatureCheckBox">
+ <property name="text">
+ <string>Temp</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="CSVTime">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSpinBox" name="CSVcns">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="cnsCheckBox">
+ <property name="text">
+ <string>Cns</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ <zorder>label</zorder>
+ <zorder>label_2</zorder>
+ <zorder>CSVTime</zorder>
+ <zorder>CSVDepth</zorder>
+ <zorder>temperatureCheckBox</zorder>
+ <zorder>CSVTemperature</zorder>
+ <zorder>po2CheckBox</zorder>
+ <zorder>CSVpo2</zorder>
+ <zorder>cnsCheckBox</zorder>
+ <zorder>CSVcns</zorder>
+ <zorder>stopdepthCheckBox</zorder>
+ <zorder>CSVstopdepth</zorder>
+ </widget>
+ </widget>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="horizontalWidget" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QWidget" name="verticalWidget" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>DiveLogImportDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>310</x>
+ <y>286</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>215</x>
+ <y>164</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>DiveLogImportDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>310</x>
+ <y>286</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>215</x>
+ <y>164</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>temperatureCheckBox</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>CSVTemperature</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>77</x>
+ <y>191</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>161</x>
+ <y>191</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>po2CheckBox</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>CSVpo2</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>77</x>
+ <y>223</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>161</x>
+ <y>223</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>cnsCheckBox</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>CSVcns</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>77</x>
+ <y>255</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>161</x>
+ <y>255</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>stopdepthCheckBox</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>CSVstopdepth</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>77</x>
+ <y>287</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>161</x>
+ <y>287</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index ad52c7d..c6e05fa 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -35,7 +35,7 @@
#include "diveplanner.h"
#include "about.h"
#include "printdialog.h"
-#include "csvimportdialog.h"
+#include "divelogimportdialog.h"
static MainWindow* instance = 0;
@@ -167,15 +167,6 @@ void MainWindow::on_actionClose_triggered()
clear_events();
}
-void MainWindow::on_actionImport_triggered()
-{
- QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Import Files"), lastUsedDir(), filter());
- if (!fileNames.size())
- return; // no selection
- updateLastUsedDir(QFileInfo(fileNames.at(0)).dir().path());
- importFiles(fileNames);
-}
-
QString MainWindow::lastUsedDir()
{
QSettings settings;
@@ -864,10 +855,10 @@ void MainWindow::loadFiles(const QStringList fileNames)
ui.actionAutoGroup->setChecked(autogroup);
}
-void MainWindow::on_actionImportCSV_triggered()
+void MainWindow::on_actionImportDiveLog_triggered()
{
- CSVImportDialog *csvImport = new CSVImportDialog();
- csvImport->show();
+ DiveLogImportDialog *diveLogImport = new DiveLogImportDialog();
+ diveLogImport->show();
process_dives(TRUE, FALSE);
refreshDisplay();
}
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index d4e10e8..83672ea 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -62,7 +62,6 @@ private slots:
void on_actionSave_triggered();
void on_actionSaveAs_triggered();
void on_actionClose_triggered();
- void on_actionImport_triggered();
void on_actionExportUDDF_triggered();
void on_actionPrint_triggered();
void on_actionPreferences_triggered();
@@ -102,7 +101,7 @@ private slots:
void current_dive_changed(int divenr);
void initialUiSetup();
- void on_actionImportCSV_triggered();
+ void on_actionImportDiveLog_triggered();
void linkClickedSlot(QUrl url);
protected:
diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui
index 60aa787..85896de 100644
--- a/qt-ui/mainwindow.ui
+++ b/qt-ui/mainwindow.ui
@@ -197,8 +197,7 @@
<string>&Import</string>
</property>
<addaction name="actionDownloadDC"/>
- <addaction name="actionImport"/>
- <addaction name="actionImportCSV"/>
+ <addaction name="actionImportDiveLog"/>
<addaction name="actionDownloadWeb"/>
<addaction name="actionDivelogs_de"/>
</widget>
@@ -264,17 +263,6 @@
<string>Ctrl+W</string>
</property>
</action>
- <action name="actionImport">
- <property name="text">
- <string>Import Files</string>
- </property>
- <property name="toolTip">
- <string>Import Files</string>
- </property>
- <property name="shortcut">
- <string>Ctrl+I</string>
- </property>
- </action>
<action name="actionExportUDDF">
<property name="text">
<string>Export &UDDF</string>
@@ -461,12 +449,15 @@
<string>Ctrl+L</string>
</property>
</action>
- <action name="actionImportCSV">
+ <action name="actionImportDiveLog">
<property name="text">
- <string>Import CSV</string>
+ <string>Import Files</string>
</property>
<property name="toolTip">
- <string>Import CS&V</string>
+ <string>Import Files</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+I</string>
</property>
</action>
<action name="actionDivelogs_de">
diff --git a/subsurface.pro b/subsurface.pro
index ad5af30..d883362 100644
--- a/subsurface.pro
+++ b/subsurface.pro
@@ -54,7 +54,7 @@ HEADERS = \
subsurfacestartup.h \
uemis.h \
webservice.h \
- qt-ui/csvimportdialog.h \
+ qt-ui/divelogimportdialog.h \
qt-ui/tagwidget.h \
qt-ui/groupedlineedit.h
@@ -102,7 +102,7 @@ SOURCES = \
time.c \
uemis.c \
uemis-downloader.c \
- qt-ui/csvimportdialog.cpp \
+ qt-ui/divelogimportdialog.cpp \
qt-ui/tagwidget.cpp \
qt-ui/groupedlineedit.cpp
@@ -123,7 +123,7 @@ FORMS = \
qt-ui/shifttimes.ui \
qt-ui/webservices.ui \
qt-ui/tableview.ui \
- qt-ui/csvimportdialog.ui
+ qt-ui/divelogimportdialog.ui
RESOURCES = subsurface.qrc
--
1.8.3.2
More information about the subsurface
mailing list