From 5eccd73a306298616da122ba4e653d4c8f391df8 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Thu, 21 Nov 2013 23:48:41 +0100 Subject: [PATCH] Add optional support for cns import from csv files Signed-off-by: Anton Lundin Signed-off-by: Dirk Hohndel --- dive.h | 2 +- file.c | 10 +++++++--- qt-ui/csvimportdialog.cpp | 8 ++++++-- qt-ui/csvimportdialog.h | 1 + qt-ui/csvimportdialog.ui | 25 +++++++++++++++++++++++++ xslt/csv2xml.xslt | 12 ++++++++++++ 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/dive.h b/dive.h index 924bab7f3..d6490fdf7 100644 --- a/dive.h +++ b/dive.h @@ -626,7 +626,7 @@ extern void set_filename(const char *filename, bool force); extern int parse_dm4_buffer(const char *url, const char *buf, int size, struct dive_table *table, char **error); extern void parse_file(const char *filename, char **error); -extern void parse_csv_file(const char *filename, int time, int depth, int temp, int po2f, char **error); +extern void parse_csv_file(const char *filename, int time, int depth, int temp, int po2f, int cnsf, char **error); extern void save_dives(const char *filename); extern void save_dives_logic(const char *filename, bool select_only); diff --git a/file.c b/file.c index e985dbb83..47bc1d5b3 100644 --- a/file.c +++ b/file.c @@ -327,21 +327,22 @@ void parse_file(const char *filename, char **error) #define MAXCOLDIGITS 3 #define MAXCOLS 100 -void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int po2f, char **error) +void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int po2f, int cnsf, char **error) { struct memblock mem; int pnr=0; - char *params[13]; + char *params[15]; char timebuf[MAXCOLDIGITS]; char depthbuf[MAXCOLDIGITS]; char tempbuf[MAXCOLDIGITS]; char po2buf[MAXCOLDIGITS]; + char cnsbuf[MAXCOLDIGITS]; time_t now; struct tm *timep; char curdate[9]; char curtime[6]; - if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS) { + if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS || cnsf >= MAXCOLS) { int len = strlen(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d")) + MAXCOLDIGITS; *error = malloc(len); snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS); @@ -352,6 +353,7 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int snprintf(depthbuf, MAXCOLDIGITS, "%d", depthf); snprintf(tempbuf, MAXCOLDIGITS, "%d", tempf); snprintf(po2buf, MAXCOLDIGITS, "%d", po2f); + snprintf(cnsbuf, MAXCOLDIGITS, "%d", cnsf); time(&now); timep = localtime(&now); strftime(curdate, sizeof(curdate), "%Y%m%d", timep); @@ -368,6 +370,8 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int params[pnr++] = tempbuf; params[pnr++] = "po2Field"; params[pnr++] = po2buf; + params[pnr++] = "cnsField"; + params[pnr++] = cnsbuf; params[pnr++] = "date"; params[pnr++] = curdate; params[pnr++] = "time"; diff --git a/qt-ui/csvimportdialog.cpp b/qt-ui/csvimportdialog.cpp index 8a213e055..281aa66f6 100644 --- a/qt-ui/csvimportdialog.cpp +++ b/qt-ui/csvimportdialog.cpp @@ -6,8 +6,8 @@ const CSVImportDialog::CSVAppConfig CSVImportDialog::CSVApps[CSVAPPS] = { {"", }, - {"APD Log Viewer", 0, 1, 15, 6, "Tab"}, - {"XP5", 0, 1, 9, -1, "Tab"}, + {"APD Log Viewer", 0, 1, 15, 6, 17, "Tab"}, + {"XP5", 0, 1, 9, -1, -1, "Tab"}, {NULL,} }; @@ -31,6 +31,8 @@ CSVImportDialog::CSVImportDialog(QWidget *parent) : connect(ui->temperatureCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); connect(ui->CSVpo2, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int))); connect(ui->po2CheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); + connect(ui->CSVcns, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int))); + connect(ui->cnsCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); } CSVImportDialog::~CSVImportDialog() @@ -46,6 +48,7 @@ void CSVImportDialog::on_buttonBox_accepted() parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value(), ui->CSVDepth->value(), VALUE_IF_CHECKED(CSVTemperature), VALUE_IF_CHECKED(CSVpo2), + VALUE_IF_CHECKED(CSVcns), &error); if (error != NULL) { @@ -88,6 +91,7 @@ void CSVImportDialog::on_knownImports_currentIndexChanged(int index) ui->CSVDepth->blockSignals(false); SET_VALUE_AND_CHECKBOX(CSVTemperature, temperatureCheckBox, CSVApps[index].temperature); SET_VALUE_AND_CHECKBOX(CSVpo2, po2CheckBox, CSVApps[index].po2); + SET_VALUE_AND_CHECKBOX(CSVcns, cnsCheckBox, CSVApps[index].cns); } void CSVImportDialog::unknownImports(bool arg1) diff --git a/qt-ui/csvimportdialog.h b/qt-ui/csvimportdialog.h index b76882744..ec2f02347 100644 --- a/qt-ui/csvimportdialog.h +++ b/qt-ui/csvimportdialog.h @@ -38,6 +38,7 @@ private: int depth; int temperature; int po2; + int cns; QString separator; }; diff --git a/qt-ui/csvimportdialog.ui b/qt-ui/csvimportdialog.ui index fe70a075c..3b1167066 100644 --- a/qt-ui/csvimportdialog.ui +++ b/qt-ui/csvimportdialog.ui @@ -166,6 +166,23 @@ + + + + false + + + 0 + + + + + + + Cns + + + label label_2 @@ -175,6 +192,8 @@ CSVTemperature po2CheckBox CSVpo2 + cnsCheckBox + CSVcns @@ -249,5 +268,11 @@ CSVpo2 setEnabled(bool) + + cnsCheckBox + clicked(bool) + CSVcns + setEnabled(bool) + diff --git a/xslt/csv2xml.xslt b/xslt/csv2xml.xslt index 6a72ffa17..382bb2be6 100644 --- a/xslt/csv2xml.xslt +++ b/xslt/csv2xml.xslt @@ -6,6 +6,7 @@ + @@ -117,6 +118,17 @@ + + + + + + + + + + +