Measures CSV import - allow values in sexagesimal format

Initial use case is sleep_time from HRV4Training
[publish binaries]
This commit is contained in:
Ale Martinez
2020-12-14 18:33:47 -03:00
parent afb69d8edb
commit d5b09a4c9c

View File

@@ -170,7 +170,18 @@ MeasuresCsvImport::getMeasures(MeasuresGroup *measuresGroup, QString &error, QDa
} else {
for (int k=0; k<fieldCount; k++)
if (measuresGroup->getFieldHeaders(k).contains(h)) {
m.values[k] = i.toDouble(&ok);
if (i.contains(":")) {
// sexagesimal format
double f = 1.0;
foreach (QString s, i.split(":")) {
m.values[k] += s.toDouble(&ok) / f;
if (!ok) break;
f *= 60;
}
} else {
// decimal format
m.values[k] = i.toDouble(&ok);
}
if (!ok) {
error = tr("Invalid '%1' - in line %2")
.arg(measuresGroup->getFieldHeaders(k).join("/"))