From 79932ec6a919dfb9f4134a64bd720eb4da6c781a Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Fri, 25 Aug 2023 23:28:25 +0200 Subject: [PATCH] Idle: move idle into TrackStatistics. --- .../opentracks/stats/TrackStatistics.java | 13 +++++++++++++ .../opentracks/stats/TrackStatisticsUpdater.java | 10 +++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java index 644dd6d4d..41fa6d8e7 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java @@ -61,6 +61,8 @@ public class TrackStatistics { // The average heart rate seen on this track private HeartRate avgHeartRate = null; + private boolean isIdle; + public TrackStatistics() { reset(); } @@ -81,6 +83,7 @@ public TrackStatistics(TrackStatistics other) { totalAltitudeGain_m = other.totalAltitudeGain_m; totalAltitudeLoss_m = other.totalAltitudeLoss_m; avgHeartRate = other.avgHeartRate; + isIdle = other.isIdle; } @VisibleForTesting @@ -168,6 +171,8 @@ public void reset() { setMaxSpeed(Speed.zero()); setTotalAltitudeGain(null); setTotalAltitudeLoss(null); + + isIdle = false; } public void reset(Instant startTime) { @@ -248,6 +253,14 @@ public Duration getStoppedTime() { return totalTime.minus(movingTime); } + public boolean isIdle() { + return isIdle; + } + + public void setIdle(boolean idle) { + isIdle = idle; + } + public boolean hasAverageHeartRate() { return avgHeartRate != null; } diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java index 93b5efa52..31dc37936 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java @@ -49,8 +49,6 @@ public class TrackStatisticsUpdater { // Current segment's last trackPoint private TrackPoint lastTrackPoint; - private boolean idle; - public TrackStatisticsUpdater() { this(new TrackStatistics()); } @@ -72,7 +70,6 @@ public TrackStatisticsUpdater(TrackStatisticsUpdater toCopy) { this.trackStatistics = new TrackStatistics(toCopy.trackStatistics); this.lastTrackPoint = toCopy.lastTrackPoint; - this.idle = toCopy.idle; resetAverageHeartRate(); } @@ -140,18 +137,18 @@ public void addTrackPoint(TrackPoint trackPoint) { movingDistance = trackPoint.distanceToPrevious(lastTrackPoint); } if (movingDistance != null) { - idle = false; + currentSegment.setIdle(false); currentSegment.addTotalDistance(movingDistance); } - if (!idle && !trackPoint.isSegmentManualStart()) { + if (!currentSegment.isIdle() && !trackPoint.isSegmentManualStart()) { if (lastTrackPoint != null) { currentSegment.addMovingTime(trackPoint, lastTrackPoint); } } if (trackPoint.getType() == TrackPoint.Type.IDLE) { - idle = true; + currentSegment.setIdle(true); } if (trackPoint.hasSpeed()) { @@ -174,7 +171,6 @@ private void reset(TrackPoint trackPoint) { currentSegment.reset(trackPoint.getTime()); lastTrackPoint = null; - idle = false; resetAverageHeartRate(); }