From 5e54cb8fda2cd4d4547ac9611f9b99a37a5264ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C3=A1n=20Gin=C3=A9s?= Date: Sun, 24 Apr 2022 18:59:10 +0200 Subject: [PATCH] Bugfixed: intervals dropdown shows incorrect unit when metric units is selected. Fixes #1201. --- .../ui/intervals/IntervalsFragment.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalsFragment.java b/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalsFragment.java index fab801eb5..ae731d595 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalsFragment.java +++ b/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalsFragment.java @@ -133,15 +133,11 @@ public class IntervalsFragment extends Fragment { updateIntervals(metricUnits, IntervalStatisticsModel.IntervalOption.values()[position]); //TODO This duplicates the intervalAdapter code - IntervalStatisticsModel.IntervalOption option = selectedInterval != null ? selectedInterval : IntervalStatisticsModel.IntervalOption.DEFAULT; - String stringValue = formatter.formatDistance(option.getDistance(metricUnits), metricUnits); - viewBinding.intervalsDropdown.setText(stringValue, false); + setIntervalsDropdownText(); }); //TODO This duplicates the intervalAdapter code - IntervalStatisticsModel.IntervalOption option = selectedInterval != null ? selectedInterval : IntervalStatisticsModel.IntervalOption.DEFAULT; - String stringValue = formatter.formatDistance(option.getDistance(metricUnits), metricUnits); - viewBinding.intervalsDropdown.setText(stringValue, false); + setIntervalsDropdownText(); } @Override @@ -196,6 +192,18 @@ public class IntervalsFragment extends Fragment { viewBinding.intervalRate.setText(isReportSpeed ? getString(R.string.stats_speed) : getString(R.string.stats_pace)); LiveData> liveData = viewModel.getIntervalStats(trackId, metricUnits, selectedInterval); liveData.observe(getActivity(), intervalList -> adapter.swapData(intervalList, metricUnits, isReportSpeed)); + + setIntervalsDropdownText(); + } + + private void setIntervalsDropdownText() { + DistanceFormatter formatter = DistanceFormatter.Builder() + .setDecimalCount(0) + .build(getContext()); + + IntervalStatisticsModel.IntervalOption option = selectedInterval != null ? selectedInterval : IntervalStatisticsModel.IntervalOption.DEFAULT; + String stringValue = formatter.formatDistance(option.getDistance(metricUnits), metricUnits); + viewBinding.intervalsDropdown.setText(stringValue, false); } private synchronized void updateIntervals(boolean metricUnits, IntervalStatisticsModel.IntervalOption selectedInterval) {