From d3bb2ef51c113319ea56e4377e126afdb5cbc9ea Mon Sep 17 00:00:00 2001 From: Sean Rhea Date: Sat, 2 Jan 2010 11:37:09 -0500 Subject: [PATCH] support arbitrary ride metrics in manual ride files --- src/ManualRideFile.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/ManualRideFile.cpp b/src/ManualRideFile.cpp index edbc49a35..adbca7100 100644 --- a/src/ManualRideFile.cpp +++ b/src/ManualRideFile.cpp @@ -17,6 +17,7 @@ */ #include "ManualRideFile.h" +#include "RideMetric.h" #include "Units.h" #include #include @@ -52,6 +53,7 @@ RideFile *ManualFileReader::openRideFile(QFile &file, QStringList &errors) const return NULL; } int lineno = 1; + QStringList columnNames; QTextStream is(&file); RideFile *rideFile = new RideFile(); while (!is.atEnd()) { @@ -88,6 +90,7 @@ RideFile *ManualFileReader::openRideFile(QFile &file, QStringList &errors) const file.close(); return NULL; } + columnNames = line.split(","); ++lineno; continue; } @@ -107,6 +110,17 @@ RideFile *ManualFileReader::openRideFile(QFile &file, QStringList &errors) const km *= KM_PER_MILE; kph *= KM_PER_MILE; } + const RideMetricFactory &factory = RideMetricFactory::instance(); + for (int i = 6; i < fields.size(); ++i) { + if (factory.haveMetric(columnNames[i])) { + QMap map; + map.insert("value", QString("%1").arg(fields[i])); + rideFile->metricOverrides.insert(columnNames[i], map); + } + else { + errors << QObject::tr("Unknown ride metric \"%1\".").arg(columnNames[i]); + } + } cad = nm = 0.0; interval = 0;