[PATCH 02/12] Detect pipe as field separator in CSV import

Miika Turkia miika.turkia at gmail.com
Sun Apr 24 11:11:15 PDT 2016


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

diff --git a/desktop-widgets/divelogimportdialog.cpp b/desktop-widgets/divelogimportdialog.cpp
index 757cad5..f53d734 100644
--- a/desktop-widgets/divelogimportdialog.cpp
+++ b/desktop-widgets/divelogimportdialog.cpp
@@ -347,7 +347,7 @@ DiveLogImportDialog::DiveLogImportDialog(QStringList fn, QWidget *parent) : QDia
 	for (int i = 0; !CSVApps[i].name.isNull(); ++i)
 		ui->knownImports->addItem(CSVApps[i].name);
 
-	ui->CSVSeparator->addItems( QStringList() << tr("Tab") << "," << ";");
+	ui->CSVSeparator->addItems( QStringList() << tr("Tab") << "," << ";" << "|");
 
 	loadFileContents(-1, INITIAL);
 
@@ -487,11 +487,14 @@ void DiveLogImportDialog::loadFileContents(int value, whatChanged triggeredBy)
 		int tabs = firstLine.count('\t');
 		int commas = firstLine.count(',');
 		int semis = firstLine.count(';');
-		if (tabs > commas && tabs > semis)
+		int pipes = firstLine.count('|');
+		if (tabs > commas && tabs > semis && tabs > pipes)
 			separator = "\t";
-		else if (commas > tabs && commas > semis)
+		else if (commas > tabs && commas > semis && commas > pipes)
 			separator = ",";
-		else if (semis > tabs && semis > commas)
+		else if (pipes > tabs && pipes > commas && pipes > semis)
+			separator = "|";
+		else if (semis > tabs && semis > commas && semis > pipes)
 			separator = ";";
 		if (ui->CSVSeparator->currentText() != separator) {
 			blockSignals(true);
-- 
2.5.0



More information about the subsurface mailing list