From 5682d4ed6d6ae359d7fca3aab25d02f6dcc9155b Mon Sep 17 00:00:00 2001 From: Sean Rhea Date: Sat, 12 Dec 2009 17:15:31 -0500 Subject: [PATCH] add combo to switch PM plot between BS and DP --- src/PerformanceManagerWindow.cpp | 18 +++++++++++++++--- src/PerformanceManagerWindow.h | 2 ++ src/StressCalculator.cpp | 6 ++++-- src/StressCalculator.h | 2 +- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/PerformanceManagerWindow.cpp b/src/PerformanceManagerWindow.cpp index 520984623..8fc5e8845 100644 --- a/src/PerformanceManagerWindow.cpp +++ b/src/PerformanceManagerWindow.cpp @@ -47,6 +47,12 @@ PerformanceManagerWindow::PerformanceManagerWindow(MainWindow *mainWindow) : PMPickerLayout->addWidget(PMDayLabel); PMPickerLayout->addWidget(PMDayValue); + metricCombo = new QComboBox(this); + metricCombo->addItem(tr("Use BikeScore"), "skiba_bike_score"); + metricCombo->addItem(tr("Use DanielsPoints"), "daniels_points"); + metric = metricCombo->itemData(metricCombo->currentIndex()).toString(); + PMPickerLayout->addWidget(metricCombo); + // date range QHBoxLayout *dateRangeLayout = new QHBoxLayout; PMdateRangefrom = new QLineEdit("0"); @@ -85,7 +91,8 @@ PerformanceManagerWindow::PerformanceManagerWindow(MainWindow *mainWindow) : connect(PMpicker, SIGNAL(moved(const QPoint &)), SLOT(PMpickerMoved(const QPoint &))); - + connect(metricCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(replot())); } PerformanceManagerWindow::~PerformanceManagerWindow() @@ -128,8 +135,10 @@ void PerformanceManagerWindow::replot() QDateTime endTime = std::max(lastRideItem->dateTime, now.currentDateTime()); newdays = firstRideItem->dateTime.daysTo(endTime); + QString newMetric = metricCombo->itemData(metricCombo->currentIndex()).toString(); + + if (newdays != days || allRides->childCount() != count || newMetric != metric) { - if (newdays != days || allRides->childCount() != count ) { // days in allRides changed, so recalculate stress // bool firstrun = false; @@ -154,7 +163,7 @@ void PerformanceManagerWindow::replot() (settings->value(GC_STS_DAYS,7)).toInt(), (settings->value(GC_LTS_DAYS,42)).toInt()); - sc->calculateStress(this,home.absolutePath(),allRides); + sc->calculateStress(this,home.absolutePath(),allRides,newMetric); perfplot->setStressCalculator(sc); @@ -190,7 +199,10 @@ void PerformanceManagerWindow::replot() PMrightSlider->setValue(endIndex); } + + perfplot->resize(PMleftSlider->value(),PMrightSlider->value()); days = newdays; + metric = newMetric; count = allRides->childCount(); } perfplot->plot(); diff --git a/src/PerformanceManagerWindow.h b/src/PerformanceManagerWindow.h index 1b7975bb8..244154210 100644 --- a/src/PerformanceManagerWindow.h +++ b/src/PerformanceManagerWindow.h @@ -56,6 +56,7 @@ class PerformanceManagerWindow : public QWidget protected: int days, count; + QString metric; StressCalculator *sc; MainWindow *mainWindow; @@ -67,6 +68,7 @@ class PerformanceManagerWindow : public QWidget QwtPlotPicker *PMpicker; QLineEdit *PMdateRangefrom, *PMdateRangeto; QSlider *PMleftSlider, *PMrightSlider; + QComboBox *metricCombo; boost::shared_ptr settings; void setPMSliderDates(); diff --git a/src/StressCalculator.cpp b/src/StressCalculator.cpp index 417f44a87..dcd72d94e 100644 --- a/src/StressCalculator.cpp +++ b/src/StressCalculator.cpp @@ -58,7 +58,8 @@ double StressCalculator::min(void) { void StressCalculator::calculateStress(QWidget *mw, - QString homePath, const QTreeWidgetItem * rides) + QString homePath, const QTreeWidgetItem * rides, + const QString &metric) { QSharedPointer progress; int endingOffset = 0; @@ -74,6 +75,7 @@ void StressCalculator::calculateStress(QWidget *mw, const QString bs_name = "skiba_bike_score"; const QString dp_name = "daniels_points"; + assert(metric == bs_name || metric == dp_name); if (cacheFile.exists() && cacheFile.size() > 0) { if (cacheFile.open(QIODevice::ReadOnly | QIODevice::Text)) { @@ -159,7 +161,7 @@ void StressCalculator::calculateStress(QWidget *mw, item->freeMemory(); } - addRideData(bs,item->dateTime); + addRideData(metric == bs_name ? bs : dp,item->dateTime); // check progress diff --git a/src/StressCalculator.h b/src/StressCalculator.h index 0ff8a5154..4525bbe47 100644 --- a/src/StressCalculator.h +++ b/src/StressCalculator.h @@ -51,7 +51,7 @@ class StressCalculator:public QObject { int shortTermDays, int longTermDays); void calculateStress(QWidget *mw, QString homePath, - const QTreeWidgetItem * rides); + const QTreeWidgetItem * rides, const QString &metric); // x axes: double *getSTSvalues() { return stsvalues.data(); }