From 8c5c9d7947ce1bf2f1d0227f070dbc1f367cd505 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 29 Sep 2021 07:53:26 +0200 Subject: [PATCH] Cleanup: extract preference functionality from StringUtils to PreferenceHelper. Part of #963. --- .../opentracks/settings/PreferenceHelper.java | 90 ++++++++++++------- .../opentracks/settings/SettingsActivity.java | 12 +-- .../opentracks/util/StringUtils.java | 28 ------ 3 files changed, 66 insertions(+), 64 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java index 5741fae5c..8a57a8840 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java @@ -1,6 +1,8 @@ package de.dennisguse.opentracks.settings; -import android.content.Context; +import android.content.res.Resources; + +import java.time.Duration; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -8,24 +10,24 @@ import de.dennisguse.opentracks.util.UnitConversions; final class PreferenceHelper { - static String[] getMinRecordingIntervalEntries(Context context) { - String[] entryValues = context.getResources().getStringArray(R.array.min_recording_interval_values); + static String[] getMinRecordingIntervalEntries(Resources resources) { + String[] entryValues = resources.getStringArray(R.array.min_recording_interval_values); String[] entries = new String[entryValues.length]; for (int i = 0; i < entryValues.length; i++) { int value = Integer.parseInt(entryValues[i]); if (value == PreferencesUtils.getMinRecordingIntervalDefault().getSeconds()) { - entries[i] = context.getString(R.string.value_smallest_recommended); + entries[i] = resources.getString(R.string.value_smallest_recommended); } else { - entries[i] = value < 60 ? context.getString(R.string.value_integer_second, value) : context.getString(R.string.value_integer_minute, value / 60); + entries[i] = value < 60 ? resources.getString(R.string.value_integer_second, value) : resources.getString(R.string.value_integer_minute, value / 60); } } return entries; } - static String[] getRecordingDistanceIntervalEntries(Context context, boolean metricUnits) { - String[] entryValues = context.getResources().getStringArray(R.array.recording_distance_interval_values); + static String[] getRecordingDistanceIntervalEntries(Resources resources, boolean metricUnits) { + String[] entryValues = resources.getStringArray(R.array.recording_distance_interval_values); String[] entries = new String[entryValues.length]; final int recordingDistanceIntervalDefault = (int) PreferencesUtils.getRecordingDistanceIntervalDefault().toM(); @@ -34,17 +36,17 @@ final class PreferenceHelper { int value = Integer.parseInt(entryValues[i]); String displayValue; if (metricUnits) { - displayValue = context.getString(R.string.value_integer_meter, value); + displayValue = resources.getString(R.string.value_integer_meter, value); if (value == recordingDistanceIntervalDefault) { - entries[i] = context.getString(R.string.value_integer_meter_recommended, value); + entries[i] = resources.getString(R.string.value_integer_meter_recommended, value); } else { entries[i] = displayValue; } } else { int feet = (int) (value * UnitConversions.M_TO_FT); - displayValue = context.getString(R.string.value_integer_feet, feet); + displayValue = resources.getString(R.string.value_integer_feet, feet); if (value == recordingDistanceIntervalDefault) { - entries[i] = context.getString(R.string.value_integer_feet_recommended, feet); + entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet); } else { entries[i] = displayValue; } @@ -54,27 +56,27 @@ final class PreferenceHelper { return entries; } - static String[] getMaxRecordingDistanceEntries(Context context, boolean metricUnits) { - String[] entryValues = context.getResources().getStringArray(R.array.max_recording_distance_values); + static String[] getMaxRecordingDistanceEntries(Resources resources, boolean metricUnits) { + String[] entryValues = resources.getStringArray(R.array.max_recording_distance_values); String[] entries = new String[entryValues.length]; - final int maxRecordingDistanceDefault = Integer.parseInt(context.getResources().getString(R.string.max_recording_distance_default)); + final int maxRecordingDistanceDefault = Integer.parseInt(resources.getString(R.string.max_recording_distance_default)); for (int i = 0; i < entryValues.length; i++) { int value = Integer.parseInt(entryValues[i]); String displayValue; if (metricUnits) { - displayValue = context.getString(R.string.value_integer_meter, value); + displayValue = resources.getString(R.string.value_integer_meter, value); if (value == maxRecordingDistanceDefault) { - entries[i] = context.getString(R.string.value_integer_meter_recommended, value); + entries[i] = resources.getString(R.string.value_integer_meter_recommended, value); } else { entries[i] = displayValue; } } else { int feet = (int) (value * UnitConversions.M_TO_FT); - displayValue = context.getString(R.string.value_integer_feet, feet); + displayValue = resources.getString(R.string.value_integer_feet, feet); if (value == maxRecordingDistanceDefault) { - entries[i] = context.getString(R.string.value_integer_feet_recommended, feet); + entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet); } else { entries[i] = displayValue; } @@ -84,36 +86,36 @@ final class PreferenceHelper { return entries; } - static String[] getRecordingGpsAccuracyEntries(Context context, boolean metricUnits) { - String[] entryValues = context.getResources().getStringArray(R.array.recording_gps_accuracy_values); + static String[] getRecordingGpsAccuracyEntries(Resources resources, boolean metricUnits) { + String[] entryValues = resources.getStringArray(R.array.recording_gps_accuracy_values); String[] entries = new String[entryValues.length]; - final int recordingGPSAccuracyDefault = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default)); - final int recordingGPSAccuracyExcellent = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_excellent)); - final int recordingGPSAccuracyPoor = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_poor)); + final int recordingGPSAccuracyDefault = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default)); + final int recordingGPSAccuracyExcellent = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_excellent)); + final int recordingGPSAccuracyPoor = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_poor)); for (int i = 0; i < entryValues.length; i++) { int value = Integer.parseInt(entryValues[i]); String displayValue; if (metricUnits) { - displayValue = context.getString(R.string.value_integer_meter, value); + displayValue = resources.getString(R.string.value_integer_meter, value); if (value == recordingGPSAccuracyDefault) { - entries[i] = context.getString(R.string.value_integer_meter_recommended, value); + entries[i] = resources.getString(R.string.value_integer_meter_recommended, value); } else if (value == recordingGPSAccuracyExcellent) { - entries[i] = context.getString(R.string.value_integer_meter_excellent_gps, value); + entries[i] = resources.getString(R.string.value_integer_meter_excellent_gps, value); } else if (value == recordingGPSAccuracyPoor) { - entries[i] = context.getString(R.string.value_integer_meter_poor_gps, value); + entries[i] = resources.getString(R.string.value_integer_meter_poor_gps, value); } else { entries[i] = displayValue; } } else { int feet = (int) (value * UnitConversions.M_TO_FT); - displayValue = context.getString(R.string.value_integer_feet, feet); + displayValue = resources.getString(R.string.value_integer_feet, feet); if (value == recordingGPSAccuracyDefault) { - entries[i] = context.getString(R.string.value_integer_feet_recommended, feet); + entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet); } else if (value == recordingGPSAccuracyExcellent) { - entries[i] = context.getString(R.string.value_integer_feet_excellent_gps, feet); + entries[i] = resources.getString(R.string.value_integer_feet_excellent_gps, feet); } else { entries[i] = displayValue; } @@ -122,4 +124,32 @@ final class PreferenceHelper { return entries; } + + static String[] getAnnouncementFrequency(Resources resources) { + String[] values = resources.getStringArray(R.array.voice_announcement_frequency_values); + String[] options = new String[values.length]; + 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 { + int value = Integer.parseInt(values[i]); + options[i] = resources.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes()); + } + } + return options; + } + + static String[] getAnnouncementDistance(Resources resources, boolean metricUnits) { + String[] values = resources.getStringArray(R.array.voice_announcement_distance_values); + String[] options = new String[values.length]; + 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 { + int value = Integer.parseInt(values[i]); + options[i] = resources.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, value); + } + } + return options; + } } diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java index 19ca80ee9..47724a306 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java @@ -279,22 +279,22 @@ public class SettingsActivity extends AbstractActivity implements ChooseActivity boolean metricUnits = PreferencesUtils.isMetricUnits(); ListPreference voiceFrequency = findPreference(getString(R.string.voice_announcement_frequency_key)); - voiceFrequency.setEntries(StringUtils.getAnnouncementFrequency(getActivity())); + voiceFrequency.setEntries(PreferenceHelper.getAnnouncementFrequency(getActivity().getResources())); ListPreference voiceDistance = findPreference(getString(R.string.voice_announcement_distance_key)); - voiceDistance.setEntries(StringUtils.getAnnouncementDistance(getActivity(), metricUnits)); + voiceDistance.setEntries(PreferenceHelper.getAnnouncementDistance(getActivity().getResources(), metricUnits)); ListPreference minRecordingInterval = findPreference(getString(R.string.min_recording_interval_key)); - minRecordingInterval.setEntries(PreferenceHelper.getMinRecordingIntervalEntries(getActivity())); + minRecordingInterval.setEntries(PreferenceHelper.getMinRecordingIntervalEntries(getActivity().getResources())); ListPreference recordingDistanceInterval = findPreference(getString(R.string.recording_distance_interval_key)); - recordingDistanceInterval.setEntries(PreferenceHelper.getRecordingDistanceIntervalEntries(getActivity(), metricUnits)); + recordingDistanceInterval.setEntries(PreferenceHelper.getRecordingDistanceIntervalEntries(getActivity().getResources(), metricUnits)); ListPreference maxRecordingDistance = findPreference(getString(R.string.max_recording_distance_key)); - maxRecordingDistance.setEntries(PreferenceHelper.getMaxRecordingDistanceEntries(getActivity(), metricUnits)); + maxRecordingDistance.setEntries(PreferenceHelper.getMaxRecordingDistanceEntries(getActivity().getResources(), metricUnits)); ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key)); - recordingGpsAccuracy.setEntries(PreferenceHelper.getRecordingGpsAccuracyEntries(getActivity(), metricUnits)); + recordingGpsAccuracy.setEntries(PreferenceHelper.getRecordingGpsAccuracyEntries(getActivity().getResources(), metricUnits)); ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key)); String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options); diff --git a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java index 34026c07f..c254db463 100644 --- a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java @@ -292,34 +292,6 @@ public class StringUtils { } } - public static String[] getAnnouncementFrequency(Context context) { - String[] values = context.getResources().getStringArray(R.array.voice_announcement_frequency_values); - String[] options = new String[values.length]; - for (int i = 0; i < values.length; i++) { - if (context.getString(R.string.announcement_off).equals(values[i])) { - options[i] = context.getString(R.string.value_off); - } else { - int value = Integer.parseInt(values[i]); - options[i] = context.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes()); - } - } - return options; - } - - public static String[] getAnnouncementDistance(Context context, boolean metricUnits) { - String[] values = context.getResources().getStringArray(R.array.voice_announcement_distance_values); - String[] options = new String[values.length]; - for (int i = 0; i < values.length; i++) { - if (context.getString(R.string.announcement_off).equals(values[i])) { - options[i] = context.getString(R.string.value_off); - } else { - int value = Integer.parseInt(values[i]); - options[i] = context.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, value); - } - } - return options; - } - /** * @return the formatted altitude_m (or null) and it's unit as {@link Pair} */