TrackPoint is now a record.

This commit is contained in:
Dennis Guse
2025-12-23 22:58:33 +01:00
committed by Dennis Guse
parent 42ae582cd8
commit 015352c989
48 changed files with 1851 additions and 1310 deletions
@@ -84,11 +84,11 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
SensorDataSet sensorDataSet = data.sensorDataSet();
final TrackPoint latestTrackPoint = data.latestTrackPoint();
if (sensorDataSet != null && sensorDataSet.getSpeed() != null) {
valueAndUnit = localSpeedFormatter.getSpeedParts(sensorDataSet.getSpeed().first);
getBinding().statsDescriptionMain.setText(sensorDataSet.getSpeed().second);
if (sensorDataSet != null && sensorDataSet.speed() != null) {
valueAndUnit = localSpeedFormatter.getSpeedParts(sensorDataSet.speed().data());
getBinding().statsDescriptionMain.setText(sensorDataSet.speed().sensorNameOrAddress());
} else {
Speed speed = latestTrackPoint != null && latestTrackPoint.hasSpeed() ? latestTrackPoint.getSpeed() : null;
Speed speed = latestTrackPoint != null && latestTrackPoint.position().hasSpeed() ? latestTrackPoint.position().speed() : null;
valueAndUnit = localSpeedFormatter.getSpeedParts(speed);
String title = reportSpeed ? getContext().getString(R.string.stats_speed) : getContext().getString(R.string.stats_pace);
@@ -249,8 +249,8 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
@Override
public void onChanged(UnitSystem unitSystem, RecordingData data) {
TrackPoint latestTrackPoint = data.latestTrackPoint();
Float altitude = latestTrackPoint != null && latestTrackPoint.hasAltitude() ? (float) latestTrackPoint.getAltitude().toM() : null;
String altitudeReference = latestTrackPoint != null && latestTrackPoint.hasAltitude() ? getContext().getString(latestTrackPoint.getAltitude().getLabelId()) : null;
Float altitude = latestTrackPoint != null && latestTrackPoint.position().hasAltitude() ? (float) latestTrackPoint.position().altitude().toM() : null;
String altitudeReference = latestTrackPoint != null && latestTrackPoint.position().hasAltitude() ? getContext().getString(latestTrackPoint.position().altitude().getLabelId()) : null;
Pair<String, String> valueAndUnit = StringUtils.getAltitudeParts(getContext(), altitude, unitSystem);
getBinding().statsValue.setText(valueAndUnit.first);
@@ -294,8 +294,8 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
public void onChanged(UnitSystem unitSystem, RecordingData data) {
TrackPoint latestTrackPoint = data.latestTrackPoint();
String value;
if (latestTrackPoint != null && latestTrackPoint.hasLocation()) {
value = StringUtils.formatCoordinate(getContext(), latestTrackPoint.getPosition());
if (latestTrackPoint != null && latestTrackPoint.position().hasLocation()) {
value = StringUtils.formatCoordinate(getContext(), latestTrackPoint.position());
} else {
value = getContext().getString(R.string.value_unknown);
}
@@ -3,10 +3,7 @@ package de.dennisguse.opentracks.viewmodels;
import android.util.Pair;
import android.view.LayoutInflater;
import java.time.Instant;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.models.HeartRate;
import de.dennisguse.opentracks.data.models.HeartRateZones;
import de.dennisguse.opentracks.databinding.StatsSensorItemBinding;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet;
@@ -37,10 +34,9 @@ public abstract class SensorStatisticsViewHolder extends StatisticViewHolder<Sta
String sensorName = getContext().getString(R.string.value_unknown);
Pair<String, String> valueAndUnit;
Pair<HeartRate, String> heartRate;
if (sensorDataSet != null && (heartRate = sensorDataSet.getHeartRate()) != null) {
valueAndUnit = StringUtils.getHeartRateParts(getContext(), heartRate.first);
sensorName = heartRate.second;
if (sensorDataSet != null && sensorDataSet.heartRate() != null) {
valueAndUnit = StringUtils.getHeartRateParts(getContext(), sensorDataSet.heartRate().data());
sensorName = sensorDataSet.heartRate().sensorNameOrAddress();
} else {
valueAndUnit = StringUtils.getHeartRateParts(getContext(), null);
}
@@ -48,8 +44,8 @@ public abstract class SensorStatisticsViewHolder extends StatisticViewHolder<Sta
//TODO Loads preference every time
HeartRateZones zones = PreferencesUtils.getHeartRateZones();
int textColor;
if (sensorDataSet != null && (heartRate = sensorDataSet.getHeartRate()) != null) {
textColor = zones.getTextColorForZone(getContext(), heartRate.first);
if (sensorDataSet != null && sensorDataSet.heartRate() != null) {
textColor = zones.getTextColorForZone(getContext(), sensorDataSet.heartRate().data());
} else {
textColor = zones.getTextColorForZone(getContext(), null);
}
@@ -72,9 +68,9 @@ public abstract class SensorStatisticsViewHolder extends StatisticViewHolder<Sta
String sensorName = getContext().getString(R.string.value_unknown);
Pair<String, String> valueAndUnit;
if (sensorDataSet != null && sensorDataSet.getCadence() != null) {
valueAndUnit = StringUtils.getCadenceParts(getContext(), sensorDataSet.getCadence().first);
sensorName = sensorDataSet.getCadence().second;
if (sensorDataSet != null && sensorDataSet.cadence() != null) {
valueAndUnit = StringUtils.getCadenceParts(getContext(), sensorDataSet.cadence().data());
sensorName = sensorDataSet.cadence().sensorNameOrAddress();
} else {
valueAndUnit = StringUtils.getCadenceParts(getContext(), null);
}
@@ -95,9 +91,9 @@ public abstract class SensorStatisticsViewHolder extends StatisticViewHolder<Sta
String sensorName = getContext().getString(R.string.value_unknown);
Pair<String, String> valueAndUnit;
if (sensorDataSet != null && sensorDataSet.getCyclingPower() != null) {
valueAndUnit = StringUtils.getPowerParts(getContext(), sensorDataSet.getCyclingPower().getAggregatedValue(Instant.now())); //TODO Use MonotonicClock
sensorName = sensorDataSet.getCyclingPower().getSensorNameOrAddress();
if (sensorDataSet != null && sensorDataSet.power() != null) {
valueAndUnit = StringUtils.getPowerParts(getContext(), sensorDataSet.power().data());
sensorName = sensorDataSet.power().sensorNameOrAddress();
} else {
valueAndUnit = StringUtils.getCadenceParts(getContext(), null);
}