From 88fdf1b138afaead559456d1734eae88b4778f83 Mon Sep 17 00:00:00 2001 From: Miika Turkia Date: Tue, 7 Jan 2014 22:01:28 +0200 Subject: Show import dialog only when needed for CSV config We do not need any import dialog when importing normal XML based divelogs. With this they are imported directly after file selection dialog. However, when CSV files are detected in the import list, the configuration dialog is displayed and applied for them. (CSV files are detected by file extension.) Signed-off-by: Miika Turkia Signed-off-by: Dirk Hohndel --- qt-ui/divelogimportdialog.cpp | 60 ++--------------------- qt-ui/divelogimportdialog.h | 8 +-- qt-ui/divelogimportdialog.ui | 111 +++++++++--------------------------------- qt-ui/mainwindow.cpp | 22 +++++++-- 4 files changed, 46 insertions(+), 155 deletions(-) (limited to 'qt-ui') 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() -- cgit v1.2.3-70-g09d2