diff --git a/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java b/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java index f8d74bb02..d8f233cdd 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java @@ -56,7 +56,17 @@ import java.util.concurrent.BlockingQueue; * * @author Leif Hendrik Wilden */ -public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListener { +public class MapOverlay extends Overlay { + + private final OnSharedPreferenceChangeListener + sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (PreferencesUtils.getKey(context, R.string.track_color_mode_key).equals(key)) { + trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context); + } + } + }; private final Context context; private final List waypoints; @@ -181,7 +191,7 @@ public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListe trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context); context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE) - .registerOnSharedPreferenceChangeListener(this); + .registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } /** @@ -366,13 +376,6 @@ public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListe return super.onTap(geoPoint, mapView); } - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (PreferencesUtils.getKey(context, R.string.track_color_mode_key).equals(key)) { - trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context); - } - } - /** * Gets the points. */ diff --git a/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java b/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java index 604d05954..cc26c7e35 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java @@ -37,8 +37,19 @@ import android.util.Log; * * @author Vangelis S. */ -public class DynamicSpeedTrackPathDescriptor - implements TrackPathDescriptor, OnSharedPreferenceChangeListener { +public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor { + + private final OnSharedPreferenceChangeListener + sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key) + .equals(key)) { + speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key, + PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); + } + } + }; private final Context context; private int speedMargin; @@ -54,7 +65,7 @@ public class DynamicSpeedTrackPathDescriptor speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key, PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE) - .registerOnSharedPreferenceChangeListener(this); + .registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } @Override @@ -93,14 +104,6 @@ public class DynamicSpeedTrackPathDescriptor } } - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key).equals(key)) { - speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key, - PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); - } - } - /** * Returns true if the average moving speed and the new average moving speed * are significantly different. diff --git a/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java b/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java index 56d0f3a8f..a07736306 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java @@ -29,8 +29,23 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; * * @author Vangelis S. */ -public class FixedSpeedTrackPathDescriptor - implements TrackPathDescriptor, OnSharedPreferenceChangeListener { +public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor { + + private final OnSharedPreferenceChangeListener + sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (PreferencesUtils.getKey(context, R.string.track_color_mode_slow_key).equals(key)) { + slowSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_slow_key, + PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT); + } else if (PreferencesUtils.getKey(context, R.string.track_color_mode_medium_key) + .equals(key)) { + normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key, + PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); + } + } + }; + private final Context context; private int slowSpeed; private int normalSpeed; @@ -43,7 +58,7 @@ public class FixedSpeedTrackPathDescriptor normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key, PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE) - .registerOnSharedPreferenceChangeListener(this); + .registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } @Override @@ -60,15 +75,4 @@ public class FixedSpeedTrackPathDescriptor public boolean updateState() { return false; } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (PreferencesUtils.getKey(context, R.string.track_color_mode_slow_key).equals(key)) { - slowSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_slow_key, - PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT); - } else if (PreferencesUtils.getKey(context, R.string.track_color_mode_medium_key).equals(key)) { - normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key, - PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); - } - } } \ No newline at end of file diff --git a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java index c7fb0bda0..8ab33d1c5 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java @@ -52,8 +52,7 @@ import android.widget.RemoteViews; * @author Sandor Dornbush * @author Paul R. Saxman */ -public class TrackWidgetProvider extends AppWidgetProvider - implements OnSharedPreferenceChangeListener { +public class TrackWidgetProvider extends AppWidgetProvider { /** * Observer for track content. @@ -99,43 +98,50 @@ public class TrackWidgetProvider extends AppWidgetProvider handler = new Handler(); } - @Override - public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null - || key.equals(PreferencesUtils.getKey(context, R.string.selected_track_id_key))) { - selectedTrackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); - } - if (key == null - || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) { - long oldValue = recordingTrackId; - recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); - if (oldValue == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT - && recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { - recordingtrackPaused = false; - } - } - if (key == null - || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) { - recordingtrackPaused = PreferencesUtils.getBoolean(context, - R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); - } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) { - metricUnits = PreferencesUtils.getBoolean( - context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); - } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.report_speed_key))) { - reportSpeed = PreferencesUtils.getBoolean( - context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT); - } - if (key == null - || key.equals(PreferencesUtils.getKey(context, R.string.stats_show_moving_time_key))) { - showMovingTime = PreferencesUtils.getBoolean(context, R.string.stats_show_moving_time_key, - PreferencesUtils.STATS_SHOW_MOVING_TIME_DEFAULT); - } - if (key != null) { - update(); - } - } + private final OnSharedPreferenceChangeListener + sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.selected_track_id_key))) { + selectedTrackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) { + long oldValue = recordingTrackId; + recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + if (oldValue == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT + && recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + recordingtrackPaused = false; + } + } + if (key == null || key.equals( + PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) { + recordingtrackPaused = PreferencesUtils.getBoolean(context, + R.string.recording_track_paused_key, + PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) { + metricUnits = PreferencesUtils.getBoolean( + context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.report_speed_key))) { + reportSpeed = PreferencesUtils.getBoolean( + context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT); + } + if (key == null || key.equals( + PreferencesUtils.getKey(context, R.string.stats_show_moving_time_key))) { + showMovingTime = PreferencesUtils.getBoolean(context, + R.string.stats_show_moving_time_key, + PreferencesUtils.STATS_SHOW_MOVING_TIME_DEFAULT); + } + if (key != null) { + update(); + } + } + }; @Override public void onReceive(Context aContext, Intent intent) { @@ -150,8 +156,8 @@ public class TrackWidgetProvider extends AppWidgetProvider unknown = context.getString(R.string.value_unknown); sharedPreferences = context.getSharedPreferences(SETTINGS_NAME, Context.MODE_PRIVATE); - sharedPreferences.registerOnSharedPreferenceChangeListener(this); - onSharedPreferenceChanged(sharedPreferences, null); + sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null); context.getContentResolver() .registerContentObserver(TracksColumns.CONTENT_URI, true, trackObserver); } @@ -165,7 +171,7 @@ public class TrackWidgetProvider extends AppWidgetProvider @Override public void onDisabled(Context aContext) { if (sharedPreferences != null) { - sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); + sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } if (trackObserver != null) { aContext.getContentResolver().unregisterContentObserver(trackObserver);