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()