[PATCH 1/2] Attempt to detect date format on CSV import

Miika Turkia miika.turkia at gmail.com
Sun Jan 31 04:37:57 PST 2016


This tries to detect the date format when initially reading a CSV file
for importing.

Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
 desktop-widgets/divelogimportdialog.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/desktop-widgets/divelogimportdialog.cpp b/desktop-widgets/divelogimportdialog.cpp
index 5747f36..c99810a 100644
--- a/desktop-widgets/divelogimportdialog.cpp
+++ b/desktop-widgets/divelogimportdialog.cpp
@@ -493,8 +493,14 @@ void DiveLogImportDialog::loadFileContents(int value, whatChanged triggeredBy)
 		}
 	}
 	if (triggeredBy == INITIAL || (triggeredBy == KNOWNTYPES && value == MANUAL) || triggeredBy == SEPARATOR) {
+		int count = -1;
+		QString line = f.readLine().trimmed();
+		QStringList columns;
+		if (line.length() > 0)
+			columns = line.split(separator);
 		// now try and guess the columns
 		Q_FOREACH (QString columnText, currColumns) {
+			count++;
 			/*
 			 * We have to skip the conversion of 2 to ₂ for APD Log
 			 * viewer as that would mess up the sensor numbering. We
@@ -513,6 +519,15 @@ void DiveLogImportDialog::loadFileContents(int value, whatChanged triggeredBy)
 				provider->removeRow(idx);
 				headers.append(foundHeading);
 				matchedSome = true;
+				if (foundHeading == QString::fromLatin1("Date") && columns.count() >= count) {
+					QString date = columns.at(count);
+					if (date.contains('-')) {
+						ui->DateFormat->setCurrentText("yyyy-mm-dd");
+
+					} else if (date.contains('/')) {
+						ui->DateFormat->setCurrentText("mm/dd/yyyy");
+					}
+				}
 			} else {
 				headers.append("");
 			}
-- 
2.5.0



More information about the subsurface mailing list