diff --git a/qt-ui/divelogimportdialog.cpp b/qt-ui/divelogimportdialog.cpp
index 129dbd9d0..e5814795d 100644
--- a/qt-ui/divelogimportdialog.cpp
+++ b/qt-ui/divelogimportdialog.cpp
@@ -11,12 +11,13 @@ const DiveLogImportDialog::CSVAppConfig DiveLogImportDialog::CSVApps[CSVAPPS] =
{NULL,}
};
-DiveLogImportDialog::DiveLogImportDialog(QWidget *parent) :
+DiveLogImportDialog::DiveLogImportDialog(QStringList *fn, QWidget *parent) :
QDialog(parent),
selector(true),
ui(new Ui::DiveLogImportDialog)
{
ui->setupUi(this);
+ fileNames = *fn;
for (int i = 0; !CSVApps[i].name.isNull(); ++i)
ui->knownImports->addItem(CSVApps[i].name);
@@ -24,7 +25,6 @@ DiveLogImportDialog::DiveLogImportDialog(QWidget *parent) :
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)));
@@ -48,30 +48,8 @@ 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,
+ for (int i = 0; i < fileNames.size(); ++i) {
+ parse_csv_file(fileNames[i].toUtf8().data(), ui->CSVTime->value() - 1,
ui->CSVDepth->value() - 1, VALUE_IF_CHECKED(CSVTemperature),
VALUE_IF_CHECKED(CSVpo2),
VALUE_IF_CHECKED(CSVcns),
@@ -89,13 +67,6 @@ void DiveLogImportDialog::on_buttonBox_accepted()
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);\
@@ -134,26 +105,3 @@ 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
index 9ecf32410..d8cedab6a 100644
--- a/qt-ui/divelogimportdialog.h
+++ b/qt-ui/divelogimportdialog.h
@@ -15,24 +15,20 @@ class DiveLogImportDialog : public QDialog
Q_OBJECT
public:
- explicit DiveLogImportDialog(QWidget *parent = 0);
+ explicit DiveLogImportDialog(QStringList *fn, 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;
+ QStringList fileNames;
Ui::DiveLogImportDialog *ui;
struct CSVAppConfig {
diff --git a/qt-ui/divelogimportdialog.ui b/qt-ui/divelogimportdialog.ui
index ac2315636..36f62de54 100644
--- a/qt-ui/divelogimportdialog.ui
+++ b/qt-ui/divelogimportdialog.ui
@@ -7,7 +7,7 @@
0
0
515
- 440
+ 370
@@ -33,7 +33,7 @@
QFrame::NoFrame
- Import Dive Log File
+ Import CSV Dive Log Files
Qt::AlignCenter
@@ -45,82 +45,15 @@
0
-
-
- DiveLog
-
-
-
-
- 10
- 10
- 441
- 65
-
-
-
-
- 0
- 0
-
-
-
- Import File
-
-
- -
-
-
- -
-
-
- ...
-
-
-
-
-
-
- CSV
+ CSV options
-
-
-
- 10
- 10
- 441
- 65
-
-
-
-
- 0
- 0
-
-
-
- Import File
-
-
- -
-
-
- -
-
-
- ...
-
-
-
-
-
210
- 88
+ 10
281
65
@@ -138,7 +71,7 @@
210
- 159
+ 80
281
65
@@ -165,8 +98,8 @@
- 16
- 88
+ 10
+ 10
185
246
@@ -183,14 +116,14 @@
-
-
- 1
-
false
+
+ 1
+
- 0
+ 1
@@ -206,12 +139,12 @@
-
-
- 1
-
false
+
+ 1
+
-
@@ -223,14 +156,14 @@
-
-
- 1
-
false
+
+ 1
+
- 0
+ 1
@@ -274,14 +207,14 @@
-
-
- 1
-
false
+
+ 1
+
- 0
+ 1
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index c6e05faa4..cf97ca1f0 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -857,10 +857,24 @@ void MainWindow::loadFiles(const QStringList fileNames)
void MainWindow::on_actionImportDiveLog_triggered()
{
- DiveLogImportDialog *diveLogImport = new DiveLogImportDialog();
- diveLogImport->show();
- process_dives(TRUE, FALSE);
- refreshDisplay();
+ QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Dive Log File"), lastUsedDir(), tr("Dive Log Files (*.xml *.uddf *.udcf *.csv *.jlb *.dld *.sde *.db);;XML Files (*.xml);;UDDF/UDCF Files(*.uddf *.udcf);;JDiveLog Files(*.jlb);;Suunto Files(*.sde *.db);;CSV Files(*.csv);;All Files(*)"));
+
+ if (fileNames.isEmpty())
+ return;
+ updateLastUsedDir(QFileInfo(fileNames[0]).dir().path());
+
+ QStringList logFiles = fileNames.filter( QRegExp("^.*\\.(?!csv)", Qt::CaseInsensitive) ) ;
+ QStringList csvFiles = fileNames.filter(".csv", Qt::CaseInsensitive);
+ if (logFiles.size()) {
+ importFiles(logFiles);
+ }
+
+ if (csvFiles.size()) {
+ DiveLogImportDialog *diveLogImport = new DiveLogImportDialog(&csvFiles);
+ diveLogImport->show();
+ process_dives(TRUE, FALSE);
+ refreshDisplay();
+ }
}
void MainWindow::editCurrentDive()