From f6a47c45949a969ce49c2ccecae42999b3e0b04b Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 27 Feb 2021 22:48:45 +0100 Subject: [PATCH] Statistics*Fragement now uses SharedPreferenceListener instead of accessing preferences repeatedly. --- .../fragments/StatisticsRecordedFragment.java | 73 ++++++----- .../StatisticsRecordingFragment.java | 113 ++++++++++-------- .../opentracks/util/PreferencesUtils.java | 51 +++++--- 3 files changed, 137 insertions(+), 100 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java index 253cbc5fb..2f44b1a64 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java @@ -51,11 +51,19 @@ import de.dennisguse.opentracks.viewmodels.SensorDataModel; * @author Sandor Dornbush * @author Rodrigo Damazio */ -//TODO During updateUI(): do not call PreferenceUtils (it is slow) rather use sharedPreferenceChangeListener. public class StatisticsRecordedFragment extends Fragment { private static final String TRACK_ID_KEY = "trackId"; + public static StatisticsRecordedFragment newInstance(Track.Id trackId) { + Bundle bundle = new Bundle(); + bundle.putParcelable(TRACK_ID_KEY, trackId); + + StatisticsRecordedFragment fragment = new StatisticsRecordedFragment(); + fragment.setArguments(bundle); + return fragment; + } + private TrackStatistics trackStatistics; private SensorStatistics sensorStatistics; private SensorsAdapter sensorsAdapter; @@ -65,26 +73,31 @@ public class StatisticsRecordedFragment extends Fragment { private StatisticsRecordedBinding viewBinding; - private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (preferences, key) -> { - if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { - if (isResumed()) { - getActivity().runOnUiThread(() -> { - if (isResumed()) { - updateUI(); - } - }); - } + private boolean preferenceMetricUnits; + private boolean preferenceReportSpeed; + + private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> { + boolean updateUInecessary = false; + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key)) { + updateUInecessary = true; + preferenceMetricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, getContext()); + } + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { + updateUInecessary = true; + preferenceReportSpeed = PreferencesUtils.isReportSpeed(sharedPreferences, getContext(), category); + } + + if (key != null && updateUInecessary && isResumed()) { + getActivity().runOnUiThread(() -> { + if (isResumed()) { + updateUI(); + } + }); } }; - public static StatisticsRecordedFragment newInstance(Track.Id trackId) { - Bundle bundle = new Bundle(); - bundle.putParcelable(TRACK_ID_KEY, trackId); - - StatisticsRecordedFragment fragment = new StatisticsRecordedFragment(); - fragment.setArguments(bundle); - return fragment; - } @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -113,7 +126,8 @@ public class StatisticsRecordedFragment extends Fragment { @Override public void onResume() { super.onResume(); - PreferencesUtils.register(getContext(), sharedPreferenceChangeListener); + SharedPreferences sharedPreferences = PreferencesUtils.register(getContext(), sharedPreferenceChangeListener); + sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null); loadStatistics(); } @@ -142,13 +156,10 @@ public class StatisticsRecordedFragment extends Fragment { } private void updateUI() { - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - boolean reportSpeed = PreferencesUtils.isReportSpeed(getContext(), category); - // Set total distance { double totalDistance = trackStatistics == null ? Double.NaN : trackStatistics.getTotalDistance(); - Pair parts = StringUtils.getDistanceParts(getContext(), totalDistance, metricUnits); + Pair parts = StringUtils.getDistanceParts(getContext(), totalDistance, preferenceMetricUnits); viewBinding.statsDistanceValue.setText(parts.first); viewBinding.statsDistanceUnit.setText(parts.second); @@ -169,9 +180,9 @@ public class StatisticsRecordedFragment extends Fragment { // Set average speed/pace { double speed = trackStatistics != null ? trackStatistics.getAverageSpeed() : Double.NaN; - viewBinding.statsAverageSpeedLabel.setText(reportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace); + viewBinding.statsAverageSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsAverageSpeedValue.setText(parts.first); viewBinding.statsAverageSpeedUnit.setText(parts.second); } @@ -180,9 +191,9 @@ public class StatisticsRecordedFragment extends Fragment { { double speed = trackStatistics == null ? Double.NaN : trackStatistics.getMaxSpeed(); - viewBinding.statsMaxSpeedLabel.setText(reportSpeed ? R.string.stats_max_speed : R.string.stats_fastest_pace); + viewBinding.statsMaxSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_max_speed : R.string.stats_fastest_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsMaxSpeedValue.setText(parts.first); viewBinding.statsMaxSpeedUnit.setText(parts.second); } @@ -191,9 +202,9 @@ public class StatisticsRecordedFragment extends Fragment { { double speed = trackStatistics != null ? trackStatistics.getAverageMovingSpeed() : Double.NaN; - viewBinding.statsMovingSpeedLabel.setText(reportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace); + viewBinding.statsMovingSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsMovingSpeedValue.setText(parts.first); viewBinding.statsMovingSpeedUnit.setText(parts.second); } @@ -209,11 +220,11 @@ public class StatisticsRecordedFragment extends Fragment { Pair parts; - parts = StringUtils.formatElevation(getContext(), elevationGain_m, metricUnits); + parts = StringUtils.formatElevation(getContext(), elevationGain_m, preferenceMetricUnits); viewBinding.statsElevationGainValue.setText(parts.first); viewBinding.statsElevationGainUnit.setText(parts.second); - parts = StringUtils.formatElevation(getContext(), elevationLoss_m, metricUnits); + parts = StringUtils.formatElevation(getContext(), elevationLoss_m, preferenceMetricUnits); viewBinding.statsElevationLossValue.setText(parts.first); viewBinding.statsElevationLossUnit.setText(parts.second); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java index 48922cebd..9729d1f56 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java @@ -44,41 +44,64 @@ import de.dennisguse.opentracks.viewmodels.SensorDataModel; * @author Sandor Dornbush * @author Rodrigo Damazio */ -//TODO isRecording should not be relevant anymore as we now have StatisticRecordedFragment. -//TODO During updateUI(): do not call PreferenceUtils (it is slow) rather use sharedPreferenceChangeListener. public class StatisticsRecordingFragment extends Fragment implements TrackDataListener { private static final String TAG = StatisticsRecordingFragment.class.getSimpleName(); private static final long UI_UPDATE_INTERVAL = UnitConversions.ONE_SECOND_MS; + public static Fragment newInstance() { + return new StatisticsRecordingFragment(); + } + private TrackDataHub trackDataHub; + private Handler handlerUpdateUI; private TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection(); - private TrackPoint lastTrackPoint; + private TrackStatistics lastTrackStatistics; private String category = ""; private StatisticsRecordingBinding viewBinding; - private SensorsAdapter sensorsAdapter; - public static Fragment newInstance() { - return new StatisticsRecordingFragment(); - } + private boolean preferenceMetricUnits; + private boolean preferenceReportSpeed; + private boolean preferenceShowElevation; + private boolean preferenceShowCoordinate; - private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (preferences, key) -> { - if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { - if (isResumed()) { - getActivity().runOnUiThread(() -> { - if (isResumed()) { - updateUI(); - } - }); - } + private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> { + boolean updateUInecessary = false; + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key)) { + updateUInecessary = true; + preferenceMetricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, getContext()); + } + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { + updateUInecessary = true; + preferenceReportSpeed = PreferencesUtils.isReportSpeed(sharedPreferences, getContext(), category); + } + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_show_grade_elevation_key, key)) { + updateUInecessary = true; + preferenceShowElevation = PreferencesUtils.isShowStatsElevation(sharedPreferences, getContext()); + } + + if (key == null || PreferencesUtils.isKey(getContext(), R.string.stats_show_coordinate_key, key)) { + updateUInecessary = true; + preferenceShowCoordinate = PreferencesUtils.isStatsShowCoordinate(sharedPreferences, getContext()); + } + + if (key != null && updateUInecessary && isResumed()) { + getActivity().runOnUiThread(() -> { + if (isResumed()) { + updateUI(); + } + }); } }; @@ -120,9 +143,11 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi public void onResume() { super.onResume(); resumeTrackDataHub(); - PreferencesUtils.register(getContext(), sharedPreferenceChangeListener); + SharedPreferences preferences = PreferencesUtils.register(getContext(), sharedPreferenceChangeListener); + sharedPreferenceChangeListener.onSharedPreferenceChanged(preferences, null); trackRecordingServiceConnection.startConnection(getContext()); + updateUIeachSecond.run(); handlerUpdateUI.post(updateUIeachSecond); } @@ -289,8 +314,6 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi // Set elevation gain private void setTotalElevationGain(Float elevationGain_m) { - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - Float totalElevationGain = elevationGain_m; if (lastTrackStatistics != null && lastTrackStatistics.hasTotalElevationGain()) { @@ -301,15 +324,13 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } } - Pair parts = StringUtils.formatElevation(getContext(), totalElevationGain, metricUnits); + Pair parts = StringUtils.formatElevation(getContext(), totalElevationGain, preferenceMetricUnits); viewBinding.statsElevationGainValue.setText(parts.first); viewBinding.statsElevationGainUnit.setText(parts.second); } // Set elevation loss private void setTotalElevationLoss(Float elevationLoss_m) { - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - Float totalElevationLoss = elevationLoss_m; if (lastTrackStatistics != null && lastTrackStatistics.hasTotalElevationLoss()) { @@ -320,7 +341,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } } - Pair parts = StringUtils.formatElevation(getContext(), totalElevationLoss, metricUnits); + Pair parts = StringUtils.formatElevation(getContext(), totalElevationLoss, preferenceMetricUnits); viewBinding.statsElevationLossValue.setText(parts.first); viewBinding.statsElevationLossUnit.setText(parts.second); } @@ -338,14 +359,10 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi private void updateStats() { String trackIconValue = TrackIconUtils.getIconValue(getContext(), category); - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - boolean reportSpeed = PreferencesUtils.isReportSpeed(getContext(), category); - boolean isRecording = isSelectedTrackRecording(); - // Set total distance { double totalDistance = lastTrackStatistics == null ? Double.NaN : lastTrackStatistics.getTotalDistance(); - Pair parts = StringUtils.getDistanceParts(getContext(), totalDistance, metricUnits); + Pair parts = StringUtils.getDistanceParts(getContext(), totalDistance, preferenceMetricUnits); viewBinding.statsDistanceValue.setText(parts.first); viewBinding.statsDistanceUnit.setText(parts.second); @@ -353,7 +370,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi // Set activity type { - viewBinding.statsActivityTypeIcon.setEnabled(isRecording); + viewBinding.statsActivityTypeIcon.setEnabled(isSelectedTrackRecording()); viewBinding.statsActivityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(trackIconValue)); } @@ -366,9 +383,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi // Set average speed/pace { double speed = lastTrackStatistics != null ? lastTrackStatistics.getAverageSpeed() : Double.NaN; - viewBinding.statsAverageSpeedLabel.setText(reportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace); + viewBinding.statsAverageSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsAverageSpeedValue.setText(parts.first); viewBinding.statsAverageSpeedUnit.setText(parts.second); } @@ -377,9 +394,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi { double speed = lastTrackStatistics == null ? Double.NaN : lastTrackStatistics.getMaxSpeed(); - viewBinding.statsMaxSpeedLabel.setText(reportSpeed ? R.string.stats_max_speed : R.string.stats_fastest_pace); + viewBinding.statsMaxSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_max_speed : R.string.stats_fastest_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsMaxSpeedValue.setText(parts.first); viewBinding.statsMaxSpeedUnit.setText(parts.second); } @@ -388,18 +405,16 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi { double speed = lastTrackStatistics != null ? lastTrackStatistics.getAverageMovingSpeed() : Double.NaN; - viewBinding.statsMovingSpeedLabel.setText(reportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace); + viewBinding.statsMovingSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace); - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsMovingSpeedValue.setText(parts.first); viewBinding.statsMovingSpeedUnit.setText(parts.second); } // Set elevation gain and loss { - // Make elevation visible? - boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext()); - viewBinding.statsElevationGroup.setVisibility(showElevation ? View.VISIBLE : View.GONE); + viewBinding.statsElevationGroup.setVisibility(preferenceShowElevation ? View.VISIBLE : View.GONE); } } @@ -416,29 +431,24 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } private void setLocationValues() { - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - // Set speed/pace double speed = lastTrackPoint != null && lastTrackPoint.hasSpeed() ? lastTrackPoint.getSpeed() : Double.NaN; setSpeed(speed); // Set elevation - boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext()); - viewBinding.statsElevationGroup.setVisibility(showElevation ? View.VISIBLE : View.GONE); + viewBinding.statsElevationGroup.setVisibility(preferenceShowElevation ? View.VISIBLE : View.GONE); - if (showElevation) { + if (preferenceShowElevation) { // Current elevation Float altitude = lastTrackPoint != null && lastTrackPoint.hasAltitude() ? (float) lastTrackPoint.getAltitude() : null; - Pair parts = StringUtils.formatElevation(getContext(), altitude, metricUnits); + Pair parts = StringUtils.formatElevation(getContext(), altitude, preferenceMetricUnits); viewBinding.statsElevationCurrentValue.setText(parts.first); viewBinding.statsElevationCurrentUnit.setText(parts.second); } // Set coordinate - boolean showCoordinate = PreferencesUtils.isStatsShowCoordinate(getContext()); - - viewBinding.statsCoordinateGroup.setVisibility(showCoordinate ? View.VISIBLE : View.GONE); - if (showCoordinate) { + viewBinding.statsCoordinateGroup.setVisibility(preferenceShowCoordinate ? View.VISIBLE : View.GONE); + if (preferenceShowCoordinate) { String latitudeText = getContext().getString(R.string.value_unknown); String longitudeText = getContext().getString(R.string.value_unknown); if (lastTrackPoint != null && lastTrackPoint.hasLocation()) { @@ -451,12 +461,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } private void setSpeed(double speed) { - boolean metricUnits = PreferencesUtils.isMetricUnits(getContext()); - boolean reportSpeed = PreferencesUtils.isReportSpeed(getContext(), category); + viewBinding.statsSpeedLabel.setText(preferenceReportSpeed ? R.string.stats_speed : R.string.stats_pace); - viewBinding.statsSpeedLabel.setText(reportSpeed ? R.string.stats_speed : R.string.stats_pace); - - Pair parts = StringUtils.getSpeedParts(getContext(), speed, metricUnits, reportSpeed); + Pair parts = StringUtils.getSpeedParts(getContext(), speed, preferenceMetricUnits, preferenceReportSpeed); viewBinding.statsSpeedValue.setText(parts.first); viewBinding.statsSpeedUnit.setText(parts.second); } diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index 9b00dcece..d14956008 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -46,8 +46,10 @@ public class PreferencesUtils { return PreferenceManager.getDefaultSharedPreferences(context); } - public static void register(Context context, SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) { - getSharedPreferences(context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + public static SharedPreferences register(Context context, SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) { + SharedPreferences sharedPreferences = getSharedPreferences(context); + sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + return sharedPreferences; } public static void unregister(Context context, SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) { @@ -106,6 +108,10 @@ public class PreferencesUtils { return sharedPreferences.getBoolean(getKey(context, keyId), defaultValue); } + private static boolean getBoolean(Context context, SharedPreferences sharedPreferences, int keyId, boolean defaultValue) { + return sharedPreferences.getBoolean(getKey(context, keyId), defaultValue); + } + /** * Sets a boolean preference value. * @@ -179,18 +185,16 @@ public class PreferencesUtils { editor.apply(); } - /** - * Gets a string preference value. - * - * @param context the context - * @param keyId the key id - * @param defaultValue default value - */ + @Deprecated public static String getString(Context context, int keyId, String defaultValue) { SharedPreferences sharedPreferences = getSharedPreferences(context); return sharedPreferences.getString(getKey(context, keyId), defaultValue); } + public static String getString(Context context, SharedPreferences sharedPreferences, int keyId, String defaultValue) { + return sharedPreferences.getString(getKey(context, keyId), defaultValue); + } + /** * Sets a string preference value. * @@ -206,15 +210,25 @@ public class PreferencesUtils { editor.apply(); } + @Deprecated public static boolean isMetricUnits(Context context) { - final String STATS_UNIT = context.getString(R.string.stats_units_default); - return STATS_UNIT.equals(getString(context, R.string.stats_units_key, STATS_UNIT)); + return isMetricUnits(getSharedPreferences(context), context); } + public static boolean isMetricUnits(SharedPreferences sharedPreferences, Context context) { + final String STATS_UNIT = context.getString(R.string.stats_units_default); + return STATS_UNIT.equals(getString(context, sharedPreferences, R.string.stats_units_key, STATS_UNIT)); + } + + @Deprecated public static boolean isReportSpeed(Context context, String category) { + return isReportSpeed(getSharedPreferences(context), context, category); + } + + public static boolean isReportSpeed(SharedPreferences sharedPreferences, Context context, String category) { final String STATS_RATE_DEFAULT = context.getString(R.string.stats_rate_default); - String currentStatsRate = getString(context, R.string.stats_rate_key, STATS_RATE_DEFAULT); - if (currentStatsRate.equals(getString(context, R.string.stats_rate_speed_or_pace_default, STATS_RATE_DEFAULT))) { + String currentStatsRate = getString(context, sharedPreferences, R.string.stats_rate_key, STATS_RATE_DEFAULT); + if (currentStatsRate.equals(getString(context, sharedPreferences, R.string.stats_rate_speed_or_pace_default, STATS_RATE_DEFAULT))) { return TrackIconUtils.isSpeedIcon(context, category); } @@ -286,12 +300,17 @@ public class PreferencesUtils { return getBoolean(context, R.string.stats_fullscreen_while_recording_key, DEFAULT); } + @Deprecated public static boolean isShowStatsElevation(Context context) { - final boolean STATS_SHOW_ELEVATION = context.getResources().getBoolean(R.bool.stats_show_elevation_default); - return getBoolean(context, R.string.stats_show_grade_elevation_key, STATS_SHOW_ELEVATION); + return isShowStatsElevation(getSharedPreferences(context), context); } - public static boolean isStatsShowCoordinate(Context context) { + public static boolean isShowStatsElevation(SharedPreferences sharedPreferences, Context context) { + final boolean STATS_SHOW_ELEVATION = context.getResources().getBoolean(R.bool.stats_show_elevation_default); + return getBoolean(context, sharedPreferences, R.string.stats_show_grade_elevation_key, STATS_SHOW_ELEVATION); + } + + public static boolean isStatsShowCoordinate(SharedPreferences sharedPreferences, Context context) { final boolean STATS_SHOW_COORDINATE = context.getResources().getBoolean(R.bool.stats_show_coordinate_default); return getBoolean(context, R.string.stats_show_coordinate_key, STATS_SHOW_COORDINATE); }