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;