summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/csvimportdialog.cpp102
-rw-r--r--qt-ui/csvimportdialog.h48
-rw-r--r--qt-ui/csvimportdialog.ui253
-rw-r--r--qt-ui/mainwindow.cpp15
-rw-r--r--qt-ui/mainwindow.h2
-rw-r--r--qt-ui/mainwindow.ui8
-rw-r--r--qt-ui/subsurfacewebservices.cpp2
7 files changed, 429 insertions, 1 deletions
diff --git a/qt-ui/csvimportdialog.cpp b/qt-ui/csvimportdialog.cpp
new file mode 100644
index 000000000..5ae4036f5
--- /dev/null
+++ b/qt-ui/csvimportdialog.cpp
@@ -0,0 +1,102 @@
+#include <QtDebug>
+#include <QFileDialog>
+#include "csvimportdialog.h"
+#include "mainwindow.h"
+#include "ui_csvimportdialog.h"
+
+const CSVImportDialog::CSVAppConfig CSVImportDialog::CSVApps[CSVAPPS] = {
+ {"", },
+ {"APD Log Viewer", 0, 1, 15, "Tab"},
+ {"XP5", 0, 1, 9, "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->knownImports->setCurrentIndex(1);
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+}
+
+CSVImportDialog::~CSVImportDialog()
+{
+ delete ui;
+}
+
+void CSVImportDialog::on_buttonBox_accepted()
+{
+ char *error = NULL;
+
+ parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value(), ui->CSVDepth->value(), ui->CSVTemperature->value(), &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)"));
+ ui->CSVFile->setText(filename);
+ if (filename.isEmpty())
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+ else
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
+}
+
+void CSVImportDialog::on_knownImports_currentIndexChanged(int index)
+{
+ if (index == 0)
+ return;
+
+ ui->CSVTime->blockSignals(true);
+ ui->CSVDepth->blockSignals(true);
+ ui->CSVTemperature->blockSignals(true);
+ ui->CSVTime->setValue(CSVApps[index].time);
+ ui->CSVDepth->setValue(CSVApps[index].depth);
+ ui->CSVTemperature->setValue(CSVApps[index].temperature);
+ ui->CSVTime->blockSignals(false);
+ ui->CSVDepth->blockSignals(false);
+ ui->CSVTemperature->blockSignals(false);
+}
+
+void CSVImportDialog::on_CSVTime_valueChanged(int arg1)
+{
+ unknownImports();
+}
+
+void CSVImportDialog::on_CSVDepth_valueChanged(int arg1)
+{
+ unknownImports();
+}
+
+void CSVImportDialog::on_CSVTemperature_valueChanged(int arg1)
+{
+ unknownImports();
+}
+
+void CSVImportDialog::unknownImports()
+{
+ ui->knownImports->setCurrentIndex(0);
+}
+
+void CSVImportDialog::on_CSVFile_textEdited()
+{
+ if (ui->CSVFile->text().isEmpty())
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+ else
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
+}
diff --git a/qt-ui/csvimportdialog.h b/qt-ui/csvimportdialog.h
new file mode 100644
index 000000000..057533018
--- /dev/null
+++ b/qt-ui/csvimportdialog.h
@@ -0,0 +1,48 @@
+#ifndef CSVIMPORTDIALOG_H
+#define CSVIMPORTDIALOG_H
+
+#include <QDialog>
+#include <QModelIndex>
+#include "../dive.h"
+#include "../divelist.h"
+
+namespace Ui {
+class CSVImportDialog;
+}
+
+class CSVImportDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit CSVImportDialog(QWidget *parent = 0);
+ ~CSVImportDialog();
+
+private slots:
+ void on_buttonBox_accepted();
+ void on_CSVFileSelector_clicked();
+ void on_knownImports_currentIndexChanged(int index);
+ void on_CSVTime_valueChanged(int arg1);
+ void on_CSVDepth_valueChanged(int arg1);
+ void on_CSVTemperature_valueChanged(int arg1);
+ void on_CSVFile_textEdited();
+
+private:
+ void unknownImports();
+
+ bool selector;
+ Ui::CSVImportDialog *ui;
+
+ struct CSVAppConfig {
+ QString name;
+ int time;
+ int depth;
+ int temperature;
+ QString separator;
+ };
+
+#define CSVAPPS 4
+ static const CSVAppConfig CSVApps[CSVAPPS];
+};
+
+#endif // CSVIMPORTDIALOG_H
diff --git a/qt-ui/csvimportdialog.ui b/qt-ui/csvimportdialog.ui
new file mode 100644
index 000000000..ec5002baf
--- /dev/null
+++ b/qt-ui/csvimportdialog.ui
@@ -0,0 +1,253 @@
+<?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>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>240</y>
+ <width>341</width>
+ <height>32</height>
+ </rect>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>10</y>
+ <width>331</width>
+ <height>71</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Import File (CSV)</string>
+ </property>
+ <widget class="QLineEdit" name="CSVFile">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>30</y>
+ <width>291</width>
+ <height>29</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QToolButton" name="CSVFileSelector">
+ <property name="geometry">
+ <rect>
+ <x>300</x>
+ <y>30</y>
+ <width>25</width>
+ <height>27</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="geometry">
+ <rect>
+ <x>200</x>
+ <y>80</y>
+ <width>121</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Field Separator</string>
+ </property>
+ <widget class="QComboBox" name="CSVSeparator">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>30</y>
+ <width>111</width>
+ <height>29</height>
+ </rect>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>80</y>
+ <width>151</width>
+ <height>151</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Field Configuration</string>
+ </property>
+ <widget class="QSpinBox" name="CSVTime">
+ <property name="geometry">
+ <rect>
+ <x>60</x>
+ <y>30</y>
+ <width>56</width>
+ <height>29</height>
+ </rect>
+ </property>
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ <widget class="QSpinBox" name="CSVDepth">
+ <property name="geometry">
+ <rect>
+ <x>60</x>
+ <y>70</y>
+ <width>56</width>
+ <height>29</height>
+ </rect>
+ </property>
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="QSpinBox" name="CSVTemperature">
+ <property name="geometry">
+ <rect>
+ <x>60</x>
+ <y>110</y>
+ <width>56</width>
+ <height>29</height>
+ </rect>
+ </property>
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>15</number>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>30</y>
+ <width>41</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Time</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_2">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>70</y>
+ <width>51</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Depth</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_3">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>110</y>
+ <width>41</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Temp</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_4">
+ <property name="geometry">
+ <rect>
+ <x>200</x>
+ <y>159</y>
+ <width>181</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Pre-configured imports</string>
+ </property>
+ <widget class="QComboBox" name="knownImports">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>30</y>
+ <width>161</width>
+ <height>29</height>
+ </rect>
+ </property>
+ <property name="currentIndex">
+ <number>-1</number>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>CSVImportDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>CSVImportDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 247cfdf2f..3b56134c1 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -34,6 +34,7 @@
#include "diveplanner.h"
#include "about.h"
#include "printdialog.h"
+#include "csvimportdialog.h"
static MainWindow* instance = 0;
@@ -801,3 +802,17 @@ void MainWindow::loadFiles(const QStringList fileNames)
WSInfoModel *wsim = WSInfoModel::instance();
wsim->updateInfo();
}
+
+void MainWindow::on_actionImportCSV_triggered()
+{
+ CSVImportDialog *csvImport = new(CSVImportDialog);
+ csvImport->show();
+ process_dives(TRUE, FALSE);
+
+ ui.InfoWidget->reload();
+ ui.globe->reload();
+ ui.ListWidget->reload(DiveTripModel::TREE);
+ ui.ListWidget->setFocus();
+ WSInfoModel *wsim = WSInfoModel::instance();
+ wsim->updateInfo();
+}
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index 0319c7b28..5dfae3e98 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -99,6 +99,8 @@ private slots:
void current_dive_changed(int divenr);
void initialUiSetup();
+ void on_actionImportCSV_triggered();
+
protected:
void closeEvent(QCloseEvent *);
diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui
index 63dded7f8..8a108118e 100644
--- a/qt-ui/mainwindow.ui
+++ b/qt-ui/mainwindow.ui
@@ -183,6 +183,7 @@
<addaction name="actionClose"/>
<addaction name="separator"/>
<addaction name="actionImport"/>
+ <addaction name="actionImportCSV"/>
<addaction name="actionExportUDDF"/>
<addaction name="separator"/>
<addaction name="actionPrint"/>
@@ -441,6 +442,13 @@
<string>Dive Planner</string>
</property>
</action>
+ <action name="actionImportCSV">
+ <property name="text">
+ <string>Import CSV</string>
+ </property>
+ <property name="toolTip">
+ </property>
+ </action>
</widget>
<customwidgets>
<customwidget>
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp
index 2a560efdd..f2b1b88cc 100644
--- a/qt-ui/subsurfacewebservices.cpp
+++ b/qt-ui/subsurfacewebservices.cpp
@@ -47,7 +47,7 @@ void SubsurfaceWebServices::buttonClicked(QAbstractButton* button)
case QDialogButtonBox::ApplyRole:{
clear_table(&gps_location_table);
QByteArray url = tr("Webservice").toLocal8Bit();
- parse_xml_buffer(url.data(), downloadedData.data(), downloadedData.length(), &gps_location_table, NULL);
+ parse_xml_buffer(url.data(), downloadedData.data(), downloadedData.length(), &gps_location_table, NULL, NULL);
/* now merge the data in the gps_location table into the dive_table */
if (merge_locations_into_dives()) {