From bab562fb465534fbb73a8263d18af625bf7b2baa Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Wed, 29 Jun 2016 20:00:42 -0300 Subject: [PATCH] Deprecated BestIntervalDialog Added Specification parameter to AddIntervalDialog::findPeaks So it can be used as a more general replacement for BestIntervalDialog::findBests and findBestsKPH --- .../Gui => deprecated}/BestIntervalDialog.cpp | 0 {src/Gui => deprecated}/BestIntervalDialog.h | 0 src/Core/RideItem.cpp | 10 ++--- src/Gui/AddIntervalDialog.cpp | 37 ++++++++++--------- src/Gui/AddIntervalDialog.h | 2 +- src/Metrics/PeakPace.cpp | 10 ++--- src/Metrics/PeakPower.cpp | 10 ++--- src/Metrics/WattsPerKilogram.cpp | 7 ++-- src/src.pro | 4 +- 9 files changed, 41 insertions(+), 39 deletions(-) rename {src/Gui => deprecated}/BestIntervalDialog.cpp (100%) rename {src/Gui => deprecated}/BestIntervalDialog.h (100%) diff --git a/src/Gui/BestIntervalDialog.cpp b/deprecated/BestIntervalDialog.cpp similarity index 100% rename from src/Gui/BestIntervalDialog.cpp rename to deprecated/BestIntervalDialog.cpp diff --git a/src/Gui/BestIntervalDialog.h b/deprecated/BestIntervalDialog.h similarity index 100% rename from src/Gui/BestIntervalDialog.h rename to deprecated/BestIntervalDialog.h diff --git a/src/Core/RideItem.cpp b/src/Core/RideItem.cpp index 5f4a03d28..ccaa7a40a 100644 --- a/src/Core/RideItem.cpp +++ b/src/Core/RideItem.cpp @@ -29,7 +29,7 @@ #include "PaceZones.h" #include "Settings.h" #include "Colors.h" // for ColorEngine -#include "BestIntervalDialog.h" // till we fixup ridefilecache to have offsets +#include "AddIntervalDialog.h" // till we fixup ridefilecache to have offsets #include "TimeUtils.h" // time_to_string() #include "WPrime.h" // for matches @@ -844,8 +844,8 @@ RideItem::updateIntervals() for(int i=0; durations[i] != 0; i++) { // go hunting for best peak - QList results; - BestIntervalDialog::findBests(f, Specification(), durations[i], 1, results); + QList results; + AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::watts, RideFile::original, durations[i], 1, results, "", ""); // did we get one ? if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) { @@ -878,8 +878,8 @@ RideItem::updateIntervals() for(int i=0; durations[i] != 0; i++) { // go hunting for best peak - QList results; - BestIntervalDialog::findBestsKPH(f, Specification(), durations[i], 1, results); + QList results; + AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::kph, RideFile::original, durations[i], 1, results, "", ""); // did we get one ? if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) { diff --git a/src/Gui/AddIntervalDialog.cpp b/src/Gui/AddIntervalDialog.cpp index a5d0cc1b4..d911cc957 100644 --- a/src/Gui/AddIntervalDialog.cpp +++ b/src/Gui/AddIntervalDialog.cpp @@ -530,16 +530,16 @@ AddIntervalDialog::createClicked() } if (methodPeakPower->isChecked()) { - findPeaks(context, byTime, ride, RideFile::watts, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Power",""); + findPeaks(context, byTime, ride, Specification(), RideFile::watts, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Power",""); } else if (methodPeakSpeed->isChecked()) { - findPeaks(context, byTime, ride, RideFile::kph, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Speed",""); + findPeaks(context, byTime, ride, Specification(), RideFile::kph, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Speed",""); } else if (methodPeakPace->isChecked()) { - findPeaks(context, byTime, ride, RideFile::kph, RideFile::pace, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Pace", ""); + findPeaks(context, byTime, ride, Specification(), RideFile::kph, RideFile::pace, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Pace", ""); } else if (methodHeartRate->isChecked()) { - findPeaks(context, byTime, ride, RideFile::hr, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak HR", ""); + findPeaks(context, byTime, ride, Specification(), RideFile::hr, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak HR", ""); } } @@ -827,21 +827,21 @@ AddIntervalDialog::findPeakPowerStandard(Context *context, const RideFile *ride, { QString prefix = tr("Peak"); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 5, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 10, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 20, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 30, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 60, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 120, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 300, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 600, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 1200, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 1800, 1, results, prefix, ""); - findPeaks(context, true, ride, RideFile::watts, RideFile::original, 3600, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 5, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 10, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 20, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 30, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 60, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 120, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 300, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 600, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1200, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1800, 1, results, prefix, ""); + findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 3600, 1, results, prefix, ""); } void -AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ride, +AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ride, Specification spec, RideFile::SeriesType series, RideFile::Conversion conversion, double windowSize, int maxIntervals, QList &results, QString prefixe, QString overideName) { @@ -857,7 +857,10 @@ AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ri if (!typeTime && windowSize > ride->dataPoints().last()->km*1000) return; // We're looking for intervals with durations in [windowSizeSecs, windowSizeSecs + secsDelta). - foreach (const RideFilePoint *point, ride->dataPoints()) { + RideFileIterator it(const_cast(ride), spec); + while (it.hasNext()) { + struct RideFilePoint *point = it.next(); + // Discard points until interval duration is < windowSizeSecs + secsDelta. while ((typeTime && !window.empty() && intervalDuration(window.first(), point, ride) >= windowSize + secsDelta) || (!typeTime && window.length()>1 && intervalDistance(window.at(1), point, ride) >= windowSize)) { diff --git a/src/Gui/AddIntervalDialog.h b/src/Gui/AddIntervalDialog.h index 73fbbfccc..b36a3e041 100644 --- a/src/Gui/AddIntervalDialog.h +++ b/src/Gui/AddIntervalDialog.h @@ -52,7 +52,7 @@ class AddIntervalDialog : public QDialog static void findPeakPowerStandard(Context *context, const RideFile *ride, QList &results); - static void findPeaks(Context *context, bool typeTime, const RideFile *ride, RideFile::SeriesType series, + static void findPeaks(Context *context, bool typeTime, const RideFile *ride, Specification spec, RideFile::SeriesType series, RideFile::Conversion conversion, double windowSizeSecs, int maxIntervals, QList &results, QString prefixe, QString overideName); diff --git a/src/Metrics/PeakPace.cpp b/src/Metrics/PeakPace.cpp index 7a7605030..83eba9ab3 100644 --- a/src/Metrics/PeakPace.cpp +++ b/src/Metrics/PeakPace.cpp @@ -18,7 +18,7 @@ */ #include "RideMetric.h" -#include "BestIntervalDialog.h" +#include "AddIntervalDialog.h" #include "RideItem.h" #include "Context.h" #include "Athlete.h" @@ -64,8 +64,8 @@ class PeakPace : public RideMetric { return; } - QList results; - BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results); + QList results; + AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::kph, RideFile::original, secs, 1, results, "", ""); if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 36) pace = 60.0 / results.first().avg; else pace = 0.0; @@ -377,8 +377,8 @@ class PeakPaceSwim : public RideMetric { return; } - QList results; - BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results); + QList results; + AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::kph, RideFile::original, secs, 1, results, "", ""); if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 9) pace = 6.0 / results.first().avg; else pace = 0.0; setValue(pace); diff --git a/src/Metrics/PeakPower.cpp b/src/Metrics/PeakPower.cpp index 5e143abe0..a64b9fbbb 100644 --- a/src/Metrics/PeakPower.cpp +++ b/src/Metrics/PeakPower.cpp @@ -18,7 +18,7 @@ #include "RideMetric.h" #include "RideItem.h" -#include "BestIntervalDialog.h" +#include "AddIntervalDialog.h" #include "Context.h" #include "Athlete.h" #include "Specification.h" @@ -287,8 +287,8 @@ class PeakPower : public RideMetric { return; } - QList results; - BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results); + QList results; + AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", ""); if (results.count() > 0 && results.first().avg < 3000) watts = results.first().avg; else watts = 0.0; @@ -593,8 +593,8 @@ class PeakPowerHr : public RideMetric { } // find peak power interval - QList results; - BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results); + QList results; + AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", ""); // work out average hr during that interval if (results.count() > 0) { diff --git a/src/Metrics/WattsPerKilogram.cpp b/src/Metrics/WattsPerKilogram.cpp index cee10f2e0..e6b2f18e6 100644 --- a/src/Metrics/WattsPerKilogram.cpp +++ b/src/Metrics/WattsPerKilogram.cpp @@ -17,7 +17,7 @@ */ #include "RideMetric.h" -#include "BestIntervalDialog.h" +#include "AddIntervalDialog.h" #include "RideItem.h" #include "Zones.h" #include "Context.h" @@ -88,9 +88,8 @@ class PeakWPK : public RideMetric { } weight = item->ride()->getWeight(); - //weight = ride->getTag("Weight", appsettings->cvalue(GC_WEIGHT, "75.0").toString()).toDouble(); // default to 75kg - QList results; - BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results); + QList results; + AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", ""); if (results.count() > 0 && results.first().avg < 3000) wpk = results.first().avg / weight; else wpk = 0.0; setValue(wpk); diff --git a/src/src.pro b/src/src.pro index e735f8454..043390b2c 100644 --- a/src/src.pro +++ b/src/src.pro @@ -661,7 +661,7 @@ HEADERS += Gui/AboutDialog.h Gui/AddIntervalDialog.h Gui/AnalysisSidebar.h Gui/C Gui/GcWindowRegistry.h Gui/GenerateHeatMapDialog.h Gui/GProgressDialog.h Gui/HelpWhatsThis.h Gui/HelpWindow.h \ Gui/IntervalTreeView.h Gui/LTMSidebar.h Gui/MainWindow.h Gui/NewCyclistDialog.h Gui/Pages.h Gui/RideNavigator.h Gui/RideNavigatorProxy.h \ Gui/SaveDialogs.h Gui/SearchBox.h Gui/SearchFilterBox.h Gui/SolveCPDialog.h Gui/Tab.h Gui/TabView.h Gui/ToolsRhoEstimator.h \ - Gui/Views.h Gui/BatchExportDialog.h Gui/DownloadRideDialog.h Gui/ManualRideDialog.h Gui/BestIntervalDialog.h \ + Gui/Views.h Gui/BatchExportDialog.h Gui/DownloadRideDialog.h Gui/ManualRideDialog.h \ Gui/MergeActivityWizard.h Gui/RideImportWizard.h Gui/SplitActivityWizard.h Gui/SolverDisplay.h # metrics and models @@ -744,7 +744,7 @@ SOURCES += Gui/AboutDialog.cpp Gui/AddIntervalDialog.cpp Gui/AnalysisSidebar.cpp Gui/GcWindowRegistry.cpp Gui/GenerateHeatMapDialog.cpp Gui/GProgressDialog.cpp Gui/HelpWhatsThis.cpp Gui/HelpWindow.cpp \ Gui/IntervalTreeView.cpp Gui/LTMSidebar.cpp Gui/MainWindow.cpp Gui/NewCyclistDialog.cpp Gui/Pages.cpp Gui/RideNavigator.cpp Gui/SaveDialogs.cpp \ Gui/SearchBox.cpp Gui/SearchFilterBox.cpp Gui/SolveCPDialog.cpp Gui/Tab.cpp Gui/TabView.cpp Gui/ToolsRhoEstimator.cpp Gui/Views.cpp \ - Gui/BatchExportDialog.cpp Gui/DownloadRideDialog.cpp Gui/ManualRideDialog.cpp Gui/BestIntervalDialog.cpp Gui/EditUserMetricDialog.cpp \ + Gui/BatchExportDialog.cpp Gui/DownloadRideDialog.cpp Gui/ManualRideDialog.cpp Gui/EditUserMetricDialog.cpp \ Gui/MergeActivityWizard.cpp Gui/RideImportWizard.cpp Gui/SplitActivityWizard.cpp Gui/SolverDisplay.cpp ## Models and Metrics