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 <[email protected]> --- 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 _______________________________________________ subsurface mailing list [email protected] http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
