diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml index 0e80fb509..50d9c3d62 100755 --- a/MyTracks/AndroidManifest.xml +++ b/MyTracks/AndroidManifest.xml @@ -208,6 +208,7 @@ limitations under the License. + diff --git a/MyTracks/res/values/arrays_do_not_translate.xml b/MyTracks/res/values/arrays_do_not_translate.xml index aa43cb8fb..fb5aeb571 100644 --- a/MyTracks/res/values/arrays_do_not_translate.xml +++ b/MyTracks/res/values/arrays_do_not_translate.xml @@ -90,16 +90,6 @@ limitations under the License. 15 -1 - - @string/settings_display_track_color_single - @string/settings_display_track_color_fixed - @string/settings_display_track_color_dynamic - - - @string/display_track_color_value_none - @string/display_track_color_value_fixed - @string/display_track_color_value_dynamic - GPX KML @@ -192,6 +182,16 @@ limitations under the License. @string/sensor_type_value_polar @string/sensor_type_value_zephyr + + @string/settings_map_track_color_mode_single + @string/settings_map_track_color_mode_fixed + @string/settings_map_track_color_mode_dynamic + + + @string/settings_map_track_color_mode_single_value + @string/settings_map_track_color_mode_fixed_value + @string/settings_map_track_color_mode_dynamic_value + @string/settings_recording_track_name_date_local_option @string/settings_recording_track_name_date_iso_8601_option diff --git a/MyTracks/res/values/do_not_translate.xml b/MyTracks/res/values/do_not_translate.xml index b1dcb20eb..3bad2cdf7 100644 --- a/MyTracks/res/values/do_not_translate.xml +++ b/MyTracks/res/values/do_not_translate.xml @@ -16,36 +16,25 @@ limitations under the License. --> - 25 - 15 - 9 - DYNAMIC - FIXED - NONE - - http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png - - - http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png - - UA-7222692-2 + http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png + http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png + UA-7222692-2 www.google.com/policies/privacy/ My Tracks Recording Service - - groups.google.com/a/googleproductforums.com/forum/#!categories/maps/mytracks - + groups.google.com/a/googleproductforums.com/forum/#!categories/maps/mytracks www.google.com/mobile/mytracks - - com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS - + com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS docs.google.com google.com/fusiontables maps.google.com - ANT + ANT NONE POLAR SRM_ANT_BRIDGE ZEPHYR + DYNAMIC + FIXED + SINGLE DATE_ISO_8601 DATE_LOCAL NUMBER @@ -53,4 +42,4 @@ limitations under the License. android.intent.action.SAVE com.google.android.apps.mytracks.START_NEW_TRACK - - + \ No newline at end of file diff --git a/MyTracks/res/values/keys.xml b/MyTracks/res/values/keys.xml index 4ad088ce7..0551ee3ab 100644 --- a/MyTracks/res/values/keys.xml +++ b/MyTracks/res/values/keys.xml @@ -50,11 +50,9 @@ limitations under the License. statsShowElevation statsShowGrade statsUseTotalTime - trackColorModeDynamicVariation - trackColorModeFixedMediumDisplay - trackColorModeFixedMedium - trackColorModeFixedSlowDisplay - trackColorModeFixedSlow + trackColorModeMedium + trackColorModePercentage + trackColorModeSlow trackColorMode trackName @@ -63,6 +61,10 @@ limitations under the License. resetToDefaults restoreFromSd settingsBackup + settingsMap + settingsMapMediumDisplay + settingsMapPercentageDisplay + settingsMapSlowDisplay settingsRecording settingsSensor settingsSensorAnt @@ -71,5 +73,4 @@ limitations under the License. settingsSensorRoot settingsSharing settingsStats - trackColorModeFixedOptions \ No newline at end of file diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index 9e5145641..68a7ec787 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -1520,97 +1520,60 @@ limitations under the License. the SD card."> Restore all tracks and settings from the SD card. - - - - Display + + + Top medium speed - - Color mode + + Percentage from average - - Dynamic thresholds - - - Percentage - - Percentage from the average speed for the medium speed range. - + + Top slow speed + + + Track color mode + + + Dynamic thresholds + + Fixed thresholds - - Medium speed - - - Medium speed top value. - - - Slow speed - - - Slow speed top value. - - + Single color - + The way to color a track based on slow, medium, and fast speed. + + @@ -2281,7 +2244,7 @@ limitations under the License. %1$.2f: a float number. E.g., '2.22'"> %1$.2f km - @@ -2352,6 +2315,12 @@ limitations under the License. %1$d: an integer value. E.g., '2'"> %1$d km + + %1$d km/h + %1$d mi + + %1$d mi/h + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MyTracks/res/xml/preferences.xml b/MyTracks/res/xml/preferences.xml index 37bfdc04d..e22615a37 100644 --- a/MyTracks/res/xml/preferences.xml +++ b/MyTracks/res/xml/preferences.xml @@ -15,87 +15,35 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - - - - - - - - - - - - - - - - - - - - - - + android:title="@string/menu_settings" > + + android:key="@string/settings_recording_key" + android:persistent="false" + android:title="@string/settings_recording" /> - + android:key="@string/settings_sharing_key" + android:persistent="false" + android:title="@string/settings_sharing" /> - + android:key="@string/settings_sensor_key" + android:persistent="false" + android:title="@string/settings_sensor" /> + - + android:key="@string/reset_key" + android:persistent="false" + android:summary="@string/settings_reset_summary" + android:title="@string/settings_reset" /> + \ No newline at end of file diff --git a/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java b/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java index 57076921c..a7b3ef48c 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MapOverlay.java @@ -23,6 +23,7 @@ import com.google.android.apps.mytracks.maps.TrackPathPainterFactory; import com.google.android.apps.mytracks.maps.TrackPathUtilities; import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.LocationUtils; +import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapView; @@ -462,10 +463,8 @@ public class MapOverlay extends Overlay implements OnSharedPreferenceChangeListe @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Log.d(TAG, "MapOverlay: onSharedPreferences changed " + key); - if (key != null) { - if (key.equals(context.getString(R.string.track_color_mode_key))) { - trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context); - } + if (PreferencesUtils.getKey(context, R.string.track_color_mode_key).equals(key)) { + trackPathPainter = TrackPathPainterFactory.getTrackPathPainter(context); } } } 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 e088e9b2f..f5ba2c58d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java @@ -42,7 +42,6 @@ public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor, private int slowSpeed; private int normalSpeed; private int speedMargin; - private final int speedMarginDefault; private double averageMovingSpeed; private final Context context; @VisibleForTesting @@ -50,29 +49,12 @@ public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor, public DynamicSpeedTrackPathDescriptor(Context context) { this.context = context; - speedMarginDefault = Integer.parseInt(context - .getString(R.string.color_mode_dynamic_percentage_default)); SharedPreferences prefs = context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - - if (prefs == null) { - speedMargin = speedMarginDefault; - return; - } prefs.registerOnSharedPreferenceChangeListener(this); - speedMargin = getSpeedMargin(prefs); - } - - @VisibleForTesting - int getSpeedMargin(SharedPreferences sharedPreferences) { - try { - return Integer.parseInt(sharedPreferences.getString( - context.getString(R.string.track_color_mode_dynamic_speed_variation_key), - Integer.toString(speedMarginDefault))); - } catch (NumberFormatException e) { - return speedMarginDefault; - } + speedMargin = PreferencesUtils.getInt(context, R.string.track_color_mode_percentage_key, + PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); } /** @@ -98,17 +80,10 @@ public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor, @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Log.d(TAG, "DynamicSpeedTrackPathDescriptor: onSharedPreferences changed " + key); - if (key == null - || !key.equals(context.getString(R.string.track_color_mode_dynamic_speed_variation_key))) { return; } - SharedPreferences prefs = context.getSharedPreferences(Constants.SETTINGS_NAME, - Context.MODE_PRIVATE); - - if (prefs == null) { - speedMargin = speedMarginDefault; - return; + 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); } - - speedMargin = getSpeedMargin(prefs); } @Override 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 a4ae7732d..0b79081f9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptor.java @@ -13,104 +13,67 @@ * License for the specific language governing permissions and limitations under * the License. */ + package com.google.android.apps.mytracks.maps; -import static com.google.android.apps.mytracks.Constants.TAG; - import com.google.android.apps.mytracks.Constants; +import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.util.Log; - /** * A fixed speed path descriptor. - * + * * @author Vangelis S. */ -public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor, OnSharedPreferenceChangeListener { +public class FixedSpeedTrackPathDescriptor + implements TrackPathDescriptor, OnSharedPreferenceChangeListener { private int slowSpeed; private int normalSpeed; - private final int slowDefault; - private final int normalDefault; private final Context context; - + public FixedSpeedTrackPathDescriptor(Context context) { - this.context = context; - slowDefault = Integer.parseInt(context.getString(R.string.color_mode_fixed_slow_default)); - normalDefault = Integer.parseInt(context.getString(R.string.color_mode_fixed_medium_default)); - - SharedPreferences prefs = context.getSharedPreferences( + + SharedPreferences sharedPreferences = context.getSharedPreferences( Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - if (prefs == null) { - slowSpeed = slowDefault; - normalSpeed = normalDefault; - return; - } - prefs.registerOnSharedPreferenceChangeListener(this); - - try { - slowSpeed = Integer.parseInt(prefs.getString(context.getString( - R.string.track_color_mode_fixed_speed_slow_key), Integer.toString(slowDefault))); - } catch (NumberFormatException e) { - slowSpeed = slowDefault; - } - - try { - normalSpeed = Integer.parseInt(prefs.getString(context.getString( - R.string.track_color_mode_fixed_speed_medium_key), Integer.toString(normalDefault))); - } catch (NumberFormatException e) { - normalSpeed = normalDefault; - } + sharedPreferences.registerOnSharedPreferenceChangeListener(this); + + slowSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_slow_key, + PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT); + normalSpeed = PreferencesUtils.getInt(context, R.string.track_color_mode_medium_key, + PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); } - + /** * Gets the slow speed for reference. + * * @return The speed limit considered as slow. */ public int getSlowSpeed() { return slowSpeed; } - + /** * Gets the normal speed for reference. + * * @return The speed limit considered as normal. */ public int getNormalSpeed() { return normalSpeed; } - + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - Log.d(TAG, "FixedSpeedTrackPathDescriptor: onSharedPreferences changed " + key); - if (key == null - || (!key.equals(context.getString(R.string.track_color_mode_fixed_speed_slow_key)) - && !key.equals(context.getString(R.string.track_color_mode_fixed_speed_medium_key)))) { - return; - } - SharedPreferences prefs = context.getSharedPreferences( - Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - if (prefs == null) { - slowSpeed = slowDefault; - normalSpeed = normalDefault; - return; - } - - try { - slowSpeed = Integer.parseInt(prefs.getString(context.getString( - R.string.track_color_mode_fixed_speed_slow_key), Integer.toString(slowDefault))); - } catch (NumberFormatException e) { - slowSpeed = slowDefault; - } - try { - normalSpeed = Integer.parseInt(prefs.getString(context.getString( - R.string.track_color_mode_fixed_speed_medium_key), Integer.toString(normalDefault))); - } catch (NumberFormatException e) { - normalSpeed = normalDefault; + 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); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactory.java b/MyTracks/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactory.java index 52924c5b3..f00d38ae1 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactory.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactory.java @@ -17,11 +17,10 @@ package com.google.android.apps.mytracks.maps; import static com.google.android.apps.mytracks.Constants.TAG; -import com.google.android.apps.mytracks.Constants; +import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; import android.content.Context; -import android.content.SharedPreferences; import android.util.Log; /** @@ -40,26 +39,18 @@ public class TrackPathPainterFactory { * @return The TrackPathPainter that corresponds to the track color mode setting. */ public static TrackPathPainter getTrackPathPainter(Context context) { - SharedPreferences prefs = context.getSharedPreferences( - Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - if (prefs == null) { - return new SingleColorTrackPathPainter(context); - } - - String colorMode = prefs.getString(context.getString(R.string.track_color_mode_key), null); - Log.i(TAG, "Creating track path painter of type: " + colorMode); + String trackColorMode = PreferencesUtils.getString(context, R.string.track_color_mode_key, + context.getString(R.string.settings_map_track_color_mode_single_value)); + Log.i(TAG, "Creating track path painter of type: " + trackColorMode); - if (colorMode == null - || colorMode.equals(context.getString(R.string.display_track_color_value_none))) { - return new SingleColorTrackPathPainter(context); - } else if (colorMode.equals(context.getString(R.string.display_track_color_value_fixed))) { - return new DynamicSpeedTrackPathPainter(context, - new FixedSpeedTrackPathDescriptor(context)); - } else if (colorMode.equals(context.getString(R.string.display_track_color_value_dynamic))) { - return new DynamicSpeedTrackPathPainter(context, - new DynamicSpeedTrackPathDescriptor(context)); + if (context.getString(R.string.settings_map_track_color_mode_fixed_value) + .equals(trackColorMode)) { + return new DynamicSpeedTrackPathPainter(context, new FixedSpeedTrackPathDescriptor(context)); + } else if (context.getString(R.string.settings_map_track_color_mode_dynamic_value) + .equals(trackColorMode)) { + return new DynamicSpeedTrackPathPainter(context, new DynamicSpeedTrackPathDescriptor( + context)); } else { - Log.w(TAG, "Using default track path painter. Unrecognized painter: " + colorMode); return new SingleColorTrackPathPainter(context); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/MapSettingsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/settings/MapSettingsActivity.java new file mode 100644 index 000000000..2f17b1392 --- /dev/null +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/MapSettingsActivity.java @@ -0,0 +1,274 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.android.apps.mytracks.settings; + +import com.google.android.apps.mytracks.util.PreferencesUtils; +import com.google.android.apps.mytracks.util.UnitConversions; +import com.google.android.maps.mytracks.R; + +import android.app.Dialog; +import android.os.Bundle; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.Preference.OnPreferenceClickListener; +import android.util.Log; +import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; +import android.widget.TextView; + +/** + * An activity for accessing map settings. + * + * @author Jimmy Shih + */ +public class MapSettingsActivity extends AbstractSettingsActivity { + + private static final String TAG = MapSettingsActivity.class.getSimpleName(); + + private EditTextPreference slowEditTextPreference; + private EditTextPreference mediumEditTextPreference; + private EditTextPreference percentageEditTextPreference; + + @SuppressWarnings("deprecation") + @Override + protected void onCreate(Bundle bundle) { + super.onCreate(bundle); + addPreferencesFromResource(R.xml.map_settings); + + ListPreference trackColorModeListPreference = (ListPreference) findPreference( + getString(R.string.track_color_mode_key)); + trackColorModeListPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + updateUiByTrackColorMode((String) newValue); + return true; + } + }); + updateUiByTrackColorMode(trackColorModeListPreference.getValue()); + + slowEditTextPreference = (EditTextPreference) findPreference( + getString(R.string.settings_map_slow_display_key)); + configureSpeedEditTextPreference(R.string.track_color_mode_slow_key); + + mediumEditTextPreference = (EditTextPreference) findPreference( + getString(R.string.settings_map_medium_display_key)); + configureSpeedEditTextPreference(R.string.track_color_mode_medium_key); + + percentageEditTextPreference = (EditTextPreference) findPreference( + getString(R.string.settings_map_percentage_display_key)); + configurePercentageEditTextPreference(); + updatePercentageSummary(); + + configureImeActionDone(slowEditTextPreference); + configureImeActionDone(mediumEditTextPreference); + configureImeActionDone(percentageEditTextPreference); + } + + /** + * Configures the speed edit text preference. + * + * @param keyId the key id + */ + private void configureSpeedEditTextPreference(final int keyId) { + final EditTextPreference editTextPreference = keyId == R.string.track_color_mode_slow_key ? slowEditTextPreference + : mediumEditTextPreference; + editTextPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + storeSpeedValue(keyId, (String) newValue); + updateSpeedSummary(keyId); + return true; + } + }); + editTextPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + int value = getSpeedDisplayValue(keyId); + ((EditTextPreference) preference).getEditText().setText(String.valueOf(value)); + return true; + } + }); + } + + /** + * Configures the percentage edit text preference. + */ + private void configurePercentageEditTextPreference() { + percentageEditTextPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String displayValue = (String) newValue; + int value; + try { + value = Integer.parseInt(displayValue); + } catch (NumberFormatException e) { + Log.e(TAG, "invalid value " + displayValue); + value = PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT; + } + if (value < 0) { + value = PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT; + } + PreferencesUtils.setInt( + MapSettingsActivity.this, R.string.track_color_mode_percentage_key, value); + updatePercentageSummary(); + return true; + } + }); + percentageEditTextPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + int value = PreferencesUtils.getInt( + MapSettingsActivity.this, R.string.track_color_mode_percentage_key, + PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); + ((EditTextPreference) preference).getEditText().setText(String.valueOf(value)); + return true; + } + }); + } + + /** + * Configures the IME action done. + * + * @param editTextPreference the edit text preference + */ + private void configureImeActionDone(final EditTextPreference editTextPreference) { + editTextPreference.getEditText() + .setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_DONE) { + Dialog dialog = editTextPreference.getDialog(); + editTextPreference.onClick(dialog, Dialog.BUTTON_POSITIVE); + dialog.dismiss(); + return true; + } + return false; + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + updateSpeedSummary(R.string.track_color_mode_slow_key); + updateSpeedSummary(R.string.track_color_mode_medium_key); + } + + /** + * Updates the UI by the track color mode. + * + * @param trackColorMode the track color mode + */ + @SuppressWarnings("deprecation") + private void updateUiByTrackColorMode(String trackColorMode) { + boolean isFixedValue = trackColorMode.equals( + getString(R.string.settings_map_track_color_mode_fixed_value)); + boolean isDynamicValue = trackColorMode.equals( + getString(R.string.settings_map_track_color_mode_dynamic_value)); + findPreference(getString(R.string.settings_map_slow_display_key)).setEnabled(isFixedValue); + findPreference(getString(R.string.settings_map_medium_display_key)).setEnabled(isFixedValue); + findPreference(getString(R.string.settings_map_percentage_display_key)) + .setEnabled(isDynamicValue); + } + + /** + * Stores the speed value, always in metric units. + * + * @param keyId the key id + * @param displayValue the display value + */ + private void storeSpeedValue(int keyId, String displayValue) { + int maxValue; + int minValue; + int defaultValue; + if (keyId == R.string.track_color_mode_slow_key) { + minValue = 0; + maxValue = PreferencesUtils.getInt(this, R.string.track_color_mode_medium_key, + PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); + defaultValue = PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT; + } else { + minValue = PreferencesUtils.getInt( + this, R.string.track_color_mode_slow_key, PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT); + maxValue = Integer.MAX_VALUE; + defaultValue = PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT; + } + int value; + try { + value = Integer.parseInt(displayValue); + if (!PreferencesUtils.getBoolean( + this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT)) { + value = (int) (value * UnitConversions.MI_TO_KM); + } + } catch (NumberFormatException e) { + Log.e(TAG, "invalid value " + displayValue); + value = defaultValue; + } + + if (value > maxValue) { + value = maxValue; + } + if (value < minValue) { + value = minValue; + } + PreferencesUtils.setInt(this, keyId, value); + } + + /** + * Gets the speed display value, in metric or imperial depending on the preferred + * units. + * + * @param keyId the key id + */ + private int getSpeedDisplayValue(int keyId) { + int defaultValue = keyId == R.string.track_color_mode_slow_key ? PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT + : PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT; + int value = PreferencesUtils.getInt(this, keyId, defaultValue); + if (!PreferencesUtils.getBoolean( + this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT)) { + value = (int) (value * UnitConversions.KM_TO_MI); + } + return value; + } + + /** + * Updates the speed summary. + * + * @param keyId the key id + */ + private void updateSpeedSummary(int keyId) { + EditTextPreference editTextPreference = keyId == R.string.track_color_mode_slow_key ? slowEditTextPreference + : mediumEditTextPreference; + boolean metric = PreferencesUtils.getBoolean( + this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); + int displayValue = getSpeedDisplayValue(keyId); + editTextPreference.setSummary(getString(metric ? R.string.value_integer_kilometer_hour + : R.string.value_integer_mile_hour, displayValue)); + } + + /** + * Updates the percentage summary. + */ + private void updatePercentageSummary() { + int value = PreferencesUtils.getInt( + MapSettingsActivity.this, R.string.track_color_mode_percentage_key, + PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); + percentageEditTextPreference.setSummary(getString(R.string.settings_map_percentage_summary) + "\n" + + getString(R.string.value_integer_percent, value)); + } +} diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java index dc2210808..f34d2bdc8 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/SettingsActivity.java @@ -19,11 +19,9 @@ package com.google.android.apps.mytracks.settings; import static com.google.android.apps.mytracks.Constants.TAG; import com.google.android.apps.mytracks.Constants; -import com.google.android.apps.mytracks.util.ApiAdapterFactory; import com.google.android.apps.mytracks.util.DialogUtils; import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; import android.app.Dialog; @@ -31,14 +29,9 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; import android.os.Bundle; -import android.preference.EditTextPreference; -import android.preference.ListPreference; import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; -import android.preference.PreferenceCategory; import android.util.Log; import android.widget.Toast; @@ -58,19 +51,26 @@ public class SettingsActivity extends AbstractSettingsActivity { super.onCreate(bundle); addPreferencesFromResource(R.xml.preferences); - customizeTrackColorModePreferences(); + Preference mapPreference = findPreference(getString(R.string.settings_map_key)); + mapPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent intent = IntentUtils.newIntent(SettingsActivity.this, MapSettingsActivity.class); + startActivity(intent); + return true; + } + }); Preference statsPreference = findPreference(getString(R.string.settings_stats_key)); statsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent intent = IntentUtils.newIntent( - SettingsActivity.this, StatsSettingsActivity.class); + Intent intent = IntentUtils.newIntent(SettingsActivity.this, StatsSettingsActivity.class); startActivity(intent); return true; } }); - + Preference recordingPreference = findPreference(getString(R.string.settings_recording_key)); recordingPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override @@ -139,31 +139,6 @@ public class SettingsActivity extends AbstractSettingsActivity { } } - private void customizeTrackColorModePreferences() { - ListPreference trackColorModePreference = - (ListPreference) findPreference(getString(R.string.track_color_mode_key)); - trackColorModePreference.setOnPreferenceChangeListener( - new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, - Object newValue) { - updateTrackColorModeSettings((String) newValue); - return true; - } - }); - updateTrackColorModeSettings(trackColorModePreference.getValue()); - - setTrackColorModePreferenceListeners(); - - PreferenceCategory speedOptionsCategory = (PreferenceCategory) findPreference( - getString(R.string.track_color_mode_fixed_speed_options_key)); - - speedOptionsCategory.removePreference( - findPreference(getString(R.string.track_color_mode_fixed_speed_slow_key))); - speedOptionsCategory.removePreference( - findPreference(getString(R.string.track_color_mode_fixed_speed_medium_key))); - } - @Override protected void onResume() { super.onResume(); @@ -175,20 +150,6 @@ public class SettingsActivity extends AbstractSettingsActivity { : R.string.settings_reset_summary); } - private void updateTrackColorModeSettings(String trackColorMode) { - boolean usesFixedSpeed = - trackColorMode.equals(getString(R.string.display_track_color_value_fixed)); - boolean usesDynamicSpeed = - trackColorMode.equals(getString(R.string.display_track_color_value_dynamic)); - - findPreference(getString(R.string.track_color_mode_fixed_speed_slow_display_key)) - .setEnabled(usesFixedSpeed); - findPreference(getString(R.string.track_color_mode_fixed_speed_medium_display_key)) - .setEnabled(usesFixedSpeed); - findPreference(getString(R.string.track_color_mode_dynamic_speed_variation_key)) - .setEnabled(usesDynamicSpeed); - } - /** Callback for when user confirms resetting all settings. */ private void onResetPreferencesConfirmed() { // Change preferences in a separate thread. @@ -221,84 +182,4 @@ public class SettingsActivity extends AbstractSettingsActivity { } }.start(); } - - /** - * Set the given edit text preference text. - * If the units are not metric convert the value before displaying. - */ - private void viewTrackColorModeSettings(EditTextPreference preference, int id) { - if (PreferencesUtils.getBoolean( - this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT)) { - return; - } - // Convert miles/h to km/h - SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); - String metricspeed = prefs.getString(getString(id), null); - int englishspeed; - try { - englishspeed = (int) (Double.parseDouble(metricspeed) * UnitConversions.KM_TO_MI); - } catch (NumberFormatException e) { - englishspeed = 0; - } - preference.getEditText().setText(String.valueOf(englishspeed)); - } - - /** - * Saves the given edit text preference value. - * If the units are not metric convert the value before saving. - */ - private void validateTrackColorModeSettings(String newValue, int id) { - String metricspeed; - if (PreferencesUtils.getBoolean( - this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT)) { - metricspeed = newValue; - } else { - // Convert miles/h to km/h - try { - metricspeed = String.valueOf( - (int) (Double.parseDouble(newValue) * UnitConversions.MI_TO_KM)); - } catch (NumberFormatException e) { - metricspeed = "0"; - } - } - SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); - Editor editor = prefs.edit(); - editor.putString(getString(id), metricspeed); - ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor); - } - - /** - * Sets the TrackColorMode preference listeners. - */ - private void setTrackColorModePreferenceListeners() { - setTrackColorModePreferenceListener(R.string.track_color_mode_fixed_speed_slow_display_key, - R.string.track_color_mode_fixed_speed_slow_key); - setTrackColorModePreferenceListener(R.string.track_color_mode_fixed_speed_medium_display_key, - R.string.track_color_mode_fixed_speed_medium_key); - } - - /** - * Sets a TrackColorMode preference listener. - */ - private void setTrackColorModePreferenceListener(int displayKey, final int metricKey) { - EditTextPreference trackColorModePreference = - (EditTextPreference) findPreference(getString(displayKey)); - trackColorModePreference.setOnPreferenceChangeListener( - new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, - Object newValue) { - validateTrackColorModeSettings((String) newValue, metricKey); - return true; - } - }); - trackColorModePreference.setOnPreferenceClickListener( - new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - viewTrackColorModeSettings((EditTextPreference) preference, metricKey); - return true; - } - }); - } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java index eabdbf3d4..dbf70f7f5 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java @@ -68,6 +68,10 @@ public class PreferencesUtils { public static final boolean STATS_SHOW_GRADE_DEFAULT = false; public static final boolean STATS_USE_TOTAL_TIME_DEFAULT = true; + public static final int TRACK_COLOR_MODE_MEDIUM_DEFAULT = 15; + public static final int TRACK_COLOR_MODE_PERCENTAGE_DEFAULT = 25; + public static final int TRACK_COLOR_MODE_SLOW_DEFAULT = 9; + private PreferencesUtils() {} /** diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptorTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptorTest.java index 711b633e6..ad6fa0afe 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptorTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptorTest.java @@ -13,6 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ + package com.google.android.apps.mytracks.maps; import com.google.android.apps.mytracks.Constants; @@ -21,26 +22,23 @@ import com.google.android.maps.mytracks.R; import android.content.Context; import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; import android.test.AndroidTestCase; /** * Tests for the {@link DynamicSpeedTrackPathDescriptor}. - * + * * @author Youtao Liu */ public class DynamicSpeedTrackPathDescriptorTest extends AndroidTestCase { private Context context; private SharedPreferences sharedPreferences; - private Editor sharedPreferencesEditor; @Override protected void setUp() throws Exception { super.setUp(); context = getContext(); sharedPreferences = context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - sharedPreferencesEditor = sharedPreferences.edit(); } /** @@ -48,96 +46,77 @@ public class DynamicSpeedTrackPathDescriptorTest extends AndroidTestCase { * with zero, normal and illegal value. */ public void testGetSpeedMargin() { - String[] actuals = { "0", "50", "99", "" }; // The default value of speedMargin is 25. int[] expectations = { 0, 50, 99, 25 }; // Test for (int i = 0; i < expectations.length; i++) { - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_dynamic_speed_variation_key), actuals[i]); - sharedPreferencesEditor.commit(); + PreferencesUtils.setInt(context, R.string.track_color_mode_percentage_key, expectations[i]); DynamicSpeedTrackPathDescriptor dynamicSpeedTrackPathDescriptor = new DynamicSpeedTrackPathDescriptor( context); - assertEquals(expectations[i], - dynamicSpeedTrackPathDescriptor.getSpeedMargin(sharedPreferences)); + assertEquals(expectations[i], dynamicSpeedTrackPathDescriptor.getSpeedMargin()); } } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is null. */ public void testOnSharedPreferenceChanged_nullKey() { DynamicSpeedTrackPathDescriptor dynamicSpeedTrackPathDescriptor = new DynamicSpeedTrackPathDescriptor( context); - int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(sharedPreferences); + int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(); // Change value in shared preferences. - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_dynamic_speed_variation_key), - Integer.toString(speedMargin + 2)); - sharedPreferencesEditor.commit(); + PreferencesUtils.setInt(context, R.string.track_color_mode_percentage_key, speedMargin + 2); dynamicSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, null); assertEquals(speedMargin, dynamicSpeedTrackPathDescriptor.getSpeedMargin()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is not null, and not trackColorModeDynamicVariation. */ public void testOnSharedPreferenceChanged_otherKey() { DynamicSpeedTrackPathDescriptor dynamicSpeedTrackPathDescriptor = new DynamicSpeedTrackPathDescriptor( context); - int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(sharedPreferences); + int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(); // Change value in shared preferences. - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_dynamic_speed_variation_key), - Integer.toString(speedMargin + 2)); - sharedPreferencesEditor.commit(); - + PreferencesUtils.setInt(context, R.string.track_color_mode_percentage_key, speedMargin + 2); dynamicSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, "anyKey"); assertEquals(speedMargin, dynamicSpeedTrackPathDescriptor.getSpeedMargin()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is trackColorModeDynamicVariation. */ public void testOnSharedPreferenceChanged_trackColorModeDynamicVariationKey() { DynamicSpeedTrackPathDescriptor dynamicSpeedTrackPathDescriptor = new DynamicSpeedTrackPathDescriptor( context); - int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(sharedPreferences); + int speedMargin = dynamicSpeedTrackPathDescriptor.getSpeedMargin(); // Change value in shared preferences. - sharedPreferencesEditor.putString( - "trackColorModeDynamicVariation", - Integer.toString(speedMargin + 2)); - sharedPreferencesEditor.commit(); + PreferencesUtils.setInt(context, R.string.track_color_mode_percentage_key, speedMargin + 2); dynamicSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, - "trackColorModeDynamicVariation"); + PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key)); assertEquals(speedMargin + 2, dynamicSpeedTrackPathDescriptor.getSpeedMargin()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, - * String)} when the values of speedMargin is "". + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * String)} when the values of speedMargin is the default value. */ - public void testOnSharedPreferenceChanged_emptyValue() { + public void testOnSharedPreferenceChanged_defaultValue() { DynamicSpeedTrackPathDescriptor dynamicSpeedTrackPathDescriptor = new DynamicSpeedTrackPathDescriptor( context); // Change value in shared preferences - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_dynamic_speed_variation_key), ""); - sharedPreferencesEditor.commit(); - + PreferencesUtils.setInt(context, R.string.track_color_mode_percentage_key, + PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT); dynamicSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, - context.getString(R.string.track_color_mode_dynamic_speed_variation_key)); + PreferencesUtils.getKey(context, R.string.track_color_mode_percentage_key)); // The default value of speedMargin is 25. - assertEquals(25, dynamicSpeedTrackPathDescriptor.getSpeedMargin()); + assertEquals(PreferencesUtils.TRACK_COLOR_MODE_PERCENTAGE_DEFAULT, + dynamicSpeedTrackPathDescriptor.getSpeedMargin()); } /** @@ -160,9 +139,9 @@ public class DynamicSpeedTrackPathDescriptorTest extends AndroidTestCase { context); double[] averageMovingSpeeds = { 0, 30, 30, 30 }; double[] newAverageMovingSpeed = { 20, 30, - // Difference is less than CRITICAL_DIFFERENCE_PERCENTAGE + // Difference is less than CRITICAL_DIFFERENCE_PERCENTAGE 30 * (1 + (DynamicSpeedTrackPathDescriptor.CRITICAL_DIFFERENCE_PERCENTAGE / 100) / 2), - // Difference is more than CRITICAL_DIFFERENCE_PERCENTAGE + // Difference is more than CRITICAL_DIFFERENCE_PERCENTAGE 30 * (1 + (DynamicSpeedTrackPathDescriptor.CRITICAL_DIFFERENCE_PERCENTAGE / 100.00) * 2) }; boolean[] expectedValues = { true, false, false, true }; double[] expectedAverageMovingSpeed = { 20, 30, 30, @@ -172,8 +151,8 @@ public class DynamicSpeedTrackPathDescriptorTest extends AndroidTestCase { dynamicSpeedTrackPathDescriptor.setAverageMovingSpeed(averageMovingSpeeds[i]); assertEquals(expectedValues[i], dynamicSpeedTrackPathDescriptor.isDifferenceSignificant( averageMovingSpeeds[i], newAverageMovingSpeed[i])); - assertEquals(expectedAverageMovingSpeed[i], - dynamicSpeedTrackPathDescriptor.getAverageMovingSpeed()); + assertEquals( + expectedAverageMovingSpeed[i], dynamicSpeedTrackPathDescriptor.getAverageMovingSpeed()); } } } \ No newline at end of file diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptorTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptorTest.java index 347ab9bb4..1533214e0 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptorTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/maps/FixedSpeedTrackPathDescriptorTest.java @@ -16,52 +16,42 @@ package com.google.android.apps.mytracks.maps; import com.google.android.apps.mytracks.Constants; +import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; import android.content.Context; import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; import android.test.AndroidTestCase; /** * Tests for the {@link DynamicSpeedTrackPathDescriptor}. - * + * * @author Youtao Liu */ public class FixedSpeedTrackPathDescriptorTest extends AndroidTestCase { + private Context context; private SharedPreferences sharedPreferences; - private Editor sharedPreferencesEditor; - private int slowDefault; - private int normalDefault; @Override protected void setUp() throws Exception { super.setUp(); context = getContext(); sharedPreferences = context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - sharedPreferencesEditor = sharedPreferences.edit(); - // Get the default value - slowDefault = 9; - normalDefault = 15; } /** - * Tests the initialization of slowSpeed and normalSpeed in {@link - * DynamicSpeedTrackPathDescriptor#DynamicSpeedTrackPathDescriptor(Context)}. + * Tests the initialization of slowSpeed and normalSpeed in {@link DynamicSpeedTrackPathDescriptor#DynamicSpeedTrackPathDescriptor(Context)} + * . */ public void testConstructor() { - String[] slowSpeedsInShPre = { "0", "1", "99", "" }; - int[] slowSpeedExpectations = { 0, 1, 99, slowDefault }; - String[] normalSpeedsInShPre = { "0", "1", "99", "" }; - int[] normalSpeedExpectations = { 0, 1, 99, normalDefault }; - for (int i = 0; i < slowSpeedsInShPre.length; i++) { - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), slowSpeedsInShPre[i]); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), - normalSpeedsInShPre[i]); - sharedPreferencesEditor.commit(); + int[] slowSpeedExpectations = { 0, 1, 99, PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT }; + int[] normalSpeedExpectations = { 0, 1, 99, PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT }; + for (int i = 0; i < slowSpeedExpectations.length; i++) { + PreferencesUtils.setInt( + context, R.string.track_color_mode_slow_key, slowSpeedExpectations[i]); + PreferencesUtils.setInt( + context, R.string.track_color_mode_medium_key, normalSpeedExpectations[i]); FixedSpeedTrackPathDescriptor fixedSpeedTrackPathDescriptor = new FixedSpeedTrackPathDescriptor( context); assertEquals(slowSpeedExpectations[i], fixedSpeedTrackPathDescriptor.getSlowSpeed()); @@ -70,8 +60,7 @@ public class FixedSpeedTrackPathDescriptorTest extends AndroidTestCase { } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is null. */ public void testOnSharedPreferenceChanged_null_key() { @@ -80,22 +69,15 @@ public class FixedSpeedTrackPathDescriptorTest extends AndroidTestCase { int slowSpeed = fixedSpeedTrackPathDescriptor.getSlowSpeed(); int normalSpeed = fixedSpeedTrackPathDescriptor.getNormalSpeed(); // Change value in shared preferences - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), - Integer.toString(slowSpeed + 2)); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), - Integer.toString(normalSpeed + 2)); - sharedPreferencesEditor.commit(); - + PreferencesUtils.setInt(context, R.string.track_color_mode_slow_key, slowSpeed + 2); + PreferencesUtils.setInt(context, R.string.track_color_mode_medium_key, normalSpeed + 2); fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, null); assertEquals(slowSpeed, fixedSpeedTrackPathDescriptor.getSlowSpeed()); assertEquals(normalSpeed, fixedSpeedTrackPathDescriptor.getNormalSpeed()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is not null, and not slowSpeed and not normalSpeed. */ public void testOnSharedPreferenceChanged_other_key() { @@ -104,84 +86,59 @@ public class FixedSpeedTrackPathDescriptorTest extends AndroidTestCase { int slowSpeed = fixedSpeedTrackPathDescriptor.getSlowSpeed(); int normalSpeed = fixedSpeedTrackPathDescriptor.getNormalSpeed(); // Change value in shared preferences - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), - Integer.toString(slowSpeed + 2)); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), - Integer.toString(normalSpeed + 2)); - sharedPreferencesEditor.commit(); + PreferencesUtils.setInt(context, R.string.track_color_mode_slow_key, slowSpeed + 2); + PreferencesUtils.setInt(context, R.string.track_color_mode_medium_key, normalSpeed + 2); fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, "anyKey"); assertEquals(slowSpeed, fixedSpeedTrackPathDescriptor.getSlowSpeed()); assertEquals(normalSpeed, fixedSpeedTrackPathDescriptor.getNormalSpeed()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is slowSpeed. */ public void testOnSharedPreferenceChanged_slowSpeedKey() { FixedSpeedTrackPathDescriptor fixedSpeedTrackPathDescriptor = new FixedSpeedTrackPathDescriptor( context); int slowSpeed = fixedSpeedTrackPathDescriptor.getSlowSpeed(); - int normalSpeed = fixedSpeedTrackPathDescriptor.getNormalSpeed(); // Change value in shared preferences - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), - Integer.toString(slowSpeed + 2)); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), - Integer.toString(normalSpeed + 2)); - sharedPreferencesEditor.commit(); - fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, - context.getString(R.string.track_color_mode_fixed_speed_slow_key)); + PreferencesUtils.setInt(context, R.string.track_color_mode_slow_key, slowSpeed + 2); + fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged( + sharedPreferences, context.getString(R.string.track_color_mode_slow_key)); assertEquals(slowSpeed + 2, fixedSpeedTrackPathDescriptor.getSlowSpeed()); - assertEquals(normalSpeed + 2, fixedSpeedTrackPathDescriptor.getNormalSpeed()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the key is normalSpeed. */ public void testOnSharedPreferenceChanged_normalSpeedKey() { FixedSpeedTrackPathDescriptor fixedSpeedTrackPathDescriptor = new FixedSpeedTrackPathDescriptor( context); - int slowSpeed = fixedSpeedTrackPathDescriptor.getSlowSpeed(); int normalSpeed = fixedSpeedTrackPathDescriptor.getNormalSpeed(); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), - Integer.toString(slowSpeed + 4)); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), - Integer.toString(normalSpeed + 4)); - sharedPreferencesEditor.commit(); - - fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, - context.getString(R.string.track_color_mode_fixed_speed_medium_key)); - assertEquals(slowSpeed + 4, fixedSpeedTrackPathDescriptor.getSlowSpeed()); + PreferencesUtils.setInt(context, R.string.track_color_mode_medium_key, normalSpeed + 4); + fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged( + sharedPreferences, context.getString(R.string.track_color_mode_medium_key)); assertEquals(normalSpeed + 4, fixedSpeedTrackPathDescriptor.getNormalSpeed()); } /** - * Tests {@link - * DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, + * Tests {@link DynamicSpeedTrackPathDescriptor#onSharedPreferenceChanged(SharedPreferences, * String)} when the values of slowSpeed and normalSpeed in SharedPreference - * is "". In such situation, the default value should get returned. + * are the default values. */ - public void testOnSharedPreferenceChanged_emptyValue() { + public void testOnSharedPreferenceChanged_defaultValue() { FixedSpeedTrackPathDescriptor fixedSpeedTrackPathDescriptor = new FixedSpeedTrackPathDescriptor( context); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_slow_key), ""); - sharedPreferencesEditor.putString( - context.getString(R.string.track_color_mode_fixed_speed_medium_key), ""); - sharedPreferencesEditor.commit(); - - fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged(sharedPreferences, - context.getString(R.string.track_color_mode_fixed_speed_medium_key)); - assertEquals(slowDefault, fixedSpeedTrackPathDescriptor.getSlowSpeed()); - assertEquals(normalDefault, fixedSpeedTrackPathDescriptor.getNormalSpeed()); + PreferencesUtils.setInt(context, R.string.track_color_mode_slow_key, + PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT); + PreferencesUtils.setInt(context, R.string.track_color_mode_medium_key, + PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT); + fixedSpeedTrackPathDescriptor.onSharedPreferenceChanged( + sharedPreferences, context.getString(R.string.track_color_mode_medium_key)); + assertEquals(PreferencesUtils.TRACK_COLOR_MODE_SLOW_DEFAULT, + fixedSpeedTrackPathDescriptor.getSlowSpeed()); + assertEquals(PreferencesUtils.TRACK_COLOR_MODE_MEDIUM_DEFAULT, + fixedSpeedTrackPathDescriptor.getNormalSpeed()); } } \ No newline at end of file diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactoryTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactoryTest.java index 8673cbe1d..36bab1029 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactoryTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/maps/TrackPathPainterFactoryTest.java @@ -15,11 +15,10 @@ */ package com.google.android.apps.mytracks.maps; -import com.google.android.apps.mytracks.Constants; +import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; import android.content.Context; -import android.content.SharedPreferences; import android.location.Location; /** @@ -41,25 +40,20 @@ public class TrackPathPainterFactoryTest extends TrackPathPainterTestCase { } Context context = getContext(); - SharedPreferences prefs = context.getSharedPreferences( - Constants.SETTINGS_NAME, Context.MODE_PRIVATE); - if (prefs == null) { - return; - } - testTrackPathPainterFactorySpecific(context, prefs, R.string.display_track_color_value_none, - SingleColorTrackPathPainter.class); - testTrackPathPainterFactorySpecific(context, prefs, R.string.display_track_color_value_fixed, - DynamicSpeedTrackPathPainter.class); - testTrackPathPainterFactorySpecific(context, prefs, R.string.display_track_color_value_dynamic, + testTrackPathPainterFactorySpecific(context, + R.string.settings_map_track_color_mode_single_value, SingleColorTrackPathPainter.class); + testTrackPathPainterFactorySpecific(context, R.string.settings_map_track_color_mode_fixed_value, DynamicSpeedTrackPathPainter.class); + testTrackPathPainterFactorySpecific(context, + R.string.settings_map_track_color_mode_dynamic_value, DynamicSpeedTrackPathPainter.class); } - private void testTrackPathPainterFactorySpecific(Context context, SharedPreferences prefs, - int track_color_mode, Class c) { - prefs.edit().putString(context.getString(R.string.track_color_mode_key), - context.getString(track_color_mode)).apply(); - + private void testTrackPathPainterFactorySpecific( + Context context, int track_color_mode, Class c) { + PreferencesUtils.setString( + context, R.string.track_color_mode_key, context.getString(track_color_mode)); + int startLocationIdx = 0; Boolean alwaysVisible = true;