Added sanity checking to ignore missing metrics

There is a possibility that ride metrics may become unavailable yet
remain requested by QSettings (stored in
~/Library/Preferences/org.goldencheetah.GoldenCheetah.plist on OS X).

This patch ignores any metrics listed in the preferences yet are not
supported by the running version of Golden Cheetah.
This commit is contained in:
Robert Carlsen
2010-01-28 22:53:17 -05:00
committed by Sean Rhea
parent 5cd621f800
commit 9147369c41
2 changed files with 3 additions and 0 deletions

View File

@@ -32,6 +32,7 @@ RideMetric::computeMetrics(const RideFile *ride, const Zones *zones,
QHash<QString,RideMetric*> done;
while (!todo.isEmpty()) {
QString symbol = todo.takeFirst();
if (!factory.haveMetric(symbol)) continue;
const QVector<QString> &deps = factory.dependencies(symbol);
bool ready = true;
foreach (QString dep, deps) {

View File

@@ -198,6 +198,7 @@ RideSummaryWindow::htmlSummary() const
summary += "<td align=\"center\" valign=\"bottom\">Interval Name</td>";
foreach (QString symbol, intervalMetrics) {
RideMetricPtr m = metrics.value(symbol);
if (!m) continue;
summary += "<td align=\"center\" valign=\"bottom\">" + m->name();
if (m->units(metricUnits) == "seconds")
; // don't do anything
@@ -219,6 +220,7 @@ RideSummaryWindow::htmlSummary() const
summary += "<td align=\"center\">" + interval.name + "</td>";
foreach (QString symbol, intervalMetrics) {
RideMetricPtr m = metrics.value(symbol);
if (!m) continue;
QString s("<td align=\"center\">%1</td>");
if (m->units(metricUnits) == "seconds")
summary += s.arg(time_to_string(m->value(metricUnits)));