forked from upstream-mirrors/OpenTracks
Cleanup: extract preference functionality from StringUtils to PreferenceHelper.
Part of #963.
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package de.dennisguse.opentracks.settings;
|
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.R;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
@@ -8,24 +10,24 @@ import de.dennisguse.opentracks.util.UnitConversions;
|
|||||||
|
|
||||||
final class PreferenceHelper {
|
final class PreferenceHelper {
|
||||||
|
|
||||||
static String[] getMinRecordingIntervalEntries(Context context) {
|
static String[] getMinRecordingIntervalEntries(Resources resources) {
|
||||||
String[] entryValues = context.getResources().getStringArray(R.array.min_recording_interval_values);
|
String[] entryValues = resources.getStringArray(R.array.min_recording_interval_values);
|
||||||
String[] entries = new String[entryValues.length];
|
String[] entries = new String[entryValues.length];
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
|
|
||||||
if (value == PreferencesUtils.getMinRecordingIntervalDefault().getSeconds()) {
|
if (value == PreferencesUtils.getMinRecordingIntervalDefault().getSeconds()) {
|
||||||
entries[i] = context.getString(R.string.value_smallest_recommended);
|
entries[i] = resources.getString(R.string.value_smallest_recommended);
|
||||||
} else {
|
} 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;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
static String[] getRecordingDistanceIntervalEntries(Context context, boolean metricUnits) {
|
static String[] getRecordingDistanceIntervalEntries(Resources resources, boolean metricUnits) {
|
||||||
String[] entryValues = context.getResources().getStringArray(R.array.recording_distance_interval_values);
|
String[] entryValues = resources.getStringArray(R.array.recording_distance_interval_values);
|
||||||
String[] entries = new String[entryValues.length];
|
String[] entries = new String[entryValues.length];
|
||||||
|
|
||||||
final int recordingDistanceIntervalDefault = (int) PreferencesUtils.getRecordingDistanceIntervalDefault().toM();
|
final int recordingDistanceIntervalDefault = (int) PreferencesUtils.getRecordingDistanceIntervalDefault().toM();
|
||||||
@@ -34,17 +36,17 @@ final class PreferenceHelper {
|
|||||||
int value = Integer.parseInt(entryValues[i]);
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
String displayValue;
|
String displayValue;
|
||||||
if (metricUnits) {
|
if (metricUnits) {
|
||||||
displayValue = context.getString(R.string.value_integer_meter, value);
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
if (value == recordingDistanceIntervalDefault) {
|
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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
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) {
|
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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
@@ -54,27 +56,27 @@ final class PreferenceHelper {
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
static String[] getMaxRecordingDistanceEntries(Context context, boolean metricUnits) {
|
static String[] getMaxRecordingDistanceEntries(Resources resources, boolean metricUnits) {
|
||||||
String[] entryValues = context.getResources().getStringArray(R.array.max_recording_distance_values);
|
String[] entryValues = resources.getStringArray(R.array.max_recording_distance_values);
|
||||||
String[] entries = new String[entryValues.length];
|
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++) {
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
String displayValue;
|
String displayValue;
|
||||||
if (metricUnits) {
|
if (metricUnits) {
|
||||||
displayValue = context.getString(R.string.value_integer_meter, value);
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
if (value == maxRecordingDistanceDefault) {
|
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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
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) {
|
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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
@@ -84,36 +86,36 @@ final class PreferenceHelper {
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
static String[] getRecordingGpsAccuracyEntries(Context context, boolean metricUnits) {
|
static String[] getRecordingGpsAccuracyEntries(Resources resources, boolean metricUnits) {
|
||||||
String[] entryValues = context.getResources().getStringArray(R.array.recording_gps_accuracy_values);
|
String[] entryValues = resources.getStringArray(R.array.recording_gps_accuracy_values);
|
||||||
String[] entries = new String[entryValues.length];
|
String[] entries = new String[entryValues.length];
|
||||||
|
|
||||||
final int recordingGPSAccuracyDefault = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default));
|
final int recordingGPSAccuracyDefault = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default));
|
||||||
final int recordingGPSAccuracyExcellent = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_excellent));
|
final int recordingGPSAccuracyExcellent = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_excellent));
|
||||||
final int recordingGPSAccuracyPoor = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_poor));
|
final int recordingGPSAccuracyPoor = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_poor));
|
||||||
|
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
String displayValue;
|
String displayValue;
|
||||||
if (metricUnits) {
|
if (metricUnits) {
|
||||||
displayValue = context.getString(R.string.value_integer_meter, value);
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
if (value == recordingGPSAccuracyDefault) {
|
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) {
|
} 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) {
|
} 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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
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) {
|
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) {
|
} 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 {
|
} else {
|
||||||
entries[i] = displayValue;
|
entries[i] = displayValue;
|
||||||
}
|
}
|
||||||
@@ -122,4 +124,32 @@ final class PreferenceHelper {
|
|||||||
|
|
||||||
return entries;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -279,22 +279,22 @@ public class SettingsActivity extends AbstractActivity implements ChooseActivity
|
|||||||
boolean metricUnits = PreferencesUtils.isMetricUnits();
|
boolean metricUnits = PreferencesUtils.isMetricUnits();
|
||||||
|
|
||||||
ListPreference voiceFrequency = findPreference(getString(R.string.voice_announcement_frequency_key));
|
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));
|
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));
|
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));
|
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));
|
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));
|
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));
|
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);
|
String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
|
||||||
|
|||||||
@@ -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}
|
* @return the formatted altitude_m (or null) and it's unit as {@link Pair}
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user