Refactoring: DistanceFormatter handles metricUnits.

This commit is contained in:
Dennis Guse
2022-04-23 20:26:08 +02:00
parent a57b5cd6ee
commit 16f238f34b
11 changed files with 70 additions and 31 deletions
@@ -17,34 +17,34 @@ public class GpsSettingsFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings_gps);
boolean metricUnits = PreferencesUtils.isMetricUnits();
final DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setMetricUnits(metricUnits)
.build(getContext());
findPreference(getString(R.string.recording_distance_interval_key))
.setSummaryProvider(
preference -> {
boolean metricUnits = PreferencesUtils.isMetricUnits();
Distance distance = PreferencesUtils.getRecordingDistanceInterval();
return getString(R.string.settings_recording_location_frequency_summary, formatter.formatDistance(distance, metricUnits));
return getString(R.string.settings_recording_location_frequency_summary, formatter.formatDistance(distance));
}
);
findPreference(getString(R.string.max_recording_distance_key))
.setSummaryProvider(
preference -> {
boolean metricUnits = PreferencesUtils.isMetricUnits();
Distance distance = PreferencesUtils.getMaxRecordingDistance();
return getString(R.string.settings_recording_max_recording_distance_summary, formatter.formatDistance(distance, metricUnits));
return getString(R.string.settings_recording_max_recording_distance_summary, formatter.formatDistance(distance));
}
);
findPreference(getString(R.string.recording_gps_accuracy_key))
.setSummaryProvider(
preference -> {
boolean metricUnits = PreferencesUtils.isMetricUnits();
Distance distance = PreferencesUtils.getThresholdHorizontalAccuracy();
return getString(R.string.settings_recording_min_required_accuracy_summary, formatter.formatDistance(distance, metricUnits));
return getString(R.string.settings_recording_min_required_accuracy_summary, formatter.formatDistance(distance));
}
);
@@ -310,13 +310,14 @@ public class PreferencesUtils {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setMetricUnits(metricUnits)
.build(resources);
for (int i = 0; i < values.length; i++) {
if (resources.getString(R.string.announcement_off).equals(values[i])) {
options[i] = resources.getString(R.string.value_off);
} else {
Distance distance = Distance.one(metricUnits).multipliedBy(Double.parseDouble(values[i]));
options[i] = formatter.formatDistance(distance, metricUnits);
options[i] = formatter.formatDistance(distance);
}
}
return options;
@@ -356,13 +357,14 @@ public class PreferencesUtils {
boolean metricUnits = isMetricUnits();
DistanceFormatter formatter = DistanceFormatter.Builder()
.setMetricUnits(metricUnits)
.setDecimalCount(0)
.build(resources);
for (int i = 0; i < entryValues.length; i++) {
int value = Integer.parseInt(entryValues[i]);
Distance distance = Distance.of(1).multipliedBy(value);
String displayValue = formatter.formatDistance(distance, metricUnits);
String displayValue = formatter.formatDistance(distance);
if (metricUnits) {
if (value == recordingDistanceIntervalDefault) {
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
@@ -395,12 +397,13 @@ public class PreferencesUtils {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setMetricUnits(metricUnits)
.build(resources);
for (int i = 0; i < entryValues.length; i++) {
int value = Integer.parseInt(entryValues[i]);
Distance distance = Distance.of(1).multipliedBy(value);
String displayValue = formatter.formatDistance(distance, metricUnits);
String displayValue = formatter.formatDistance(distance);
if (metricUnits) {
if (value == maxRecordingDistanceDefault) {
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
@@ -461,13 +464,14 @@ public class PreferencesUtils {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setMetricUnits(metricUnits)
.build(resources);
for (int i = 0; i < entryValues.length; i++) {
int value = Integer.parseInt(entryValues[i]);
Distance distance = Distance.of(1).multipliedBy(value);
String displayValue = formatter.formatDistance(distance, metricUnits);
String displayValue = formatter.formatDistance(distance);
if (metricUnits) {
if (value == recordingGPSAccuracyDefault) {
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);