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 <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Miika Turkia 2014-01-07 22:01:28 +02:00 committed by Dirk Hohndel
parent 58f6a01a22
commit 88fdf1b138
4 changed files with 46 additions and 155 deletions

View file

@ -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);
}

View file

@ -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 {

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>515</width>
<height>440</height>
<height>370</height>
</rect>
</property>
<property name="windowTitle">
@ -33,7 +33,7 @@
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string>Import Dive Log File</string>
<string>Import CSV Dive Log Files</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@ -45,82 +45,15 @@
<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>
<string>CSV options</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>
<y>10</y>
<width>281</width>
<height>65</height>
</rect>
@ -138,7 +71,7 @@
<property name="geometry">
<rect>
<x>210</x>
<y>159</y>
<y>80</y>
<width>281</width>
<height>65</height>
</rect>
@ -165,8 +98,8 @@
<widget class="QGroupBox" name="groupBox_3">
<property name="geometry">
<rect>
<x>16</x>
<y>88</y>
<x>10</x>
<y>10</y>
<width>185</width>
<height>246</height>
</rect>
@ -183,14 +116,14 @@
<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="minimum">
<number>1</number>
</property>
<property name="value">
<number>0</number>
<number>1</number>
</property>
</widget>
</item>
@ -206,12 +139,12 @@
</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>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item row="1" column="0">
@ -223,14 +156,14 @@
</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="minimum">
<number>1</number>
</property>
<property name="value">
<number>0</number>
<number>1</number>
</property>
</widget>
</item>
@ -274,14 +207,14 @@
</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="minimum">
<number>1</number>
</property>
<property name="value">
<number>0</number>
<number>1</number>
</property>
</widget>
</item>

View file

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