Merge heads

This commit is contained in:
Jimmy Shih
2011-12-22 15:29:20 -08:00
97 changed files with 738 additions and 564 deletions
+2 -2
View File
@@ -17,8 +17,8 @@ limitations under the License.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.maps.mytracks" package="com.google.android.maps.mytracks"
android:installLocation="auto" android:installLocation="auto"
android:versionCode="35" android:versionCode="36"
android:versionName="1.1.12"> android:versionName="1.1.13">
<application android:icon="@drawable/arrow_icon" <application android:icon="@drawable/arrow_icon"
android:label="@string/my_tracks_app_name" android:label="@string/my_tracks_app_name"
android:name="com.google.android.apps.mytracks.MyTracksApplication" android:name="com.google.android.apps.mytracks.MyTracksApplication"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 275 B

+82 -78
View File
@@ -17,87 +17,91 @@ limitations under the License.
<ScrollView <ScrollView
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content"> android:layout_width="fill_parent">
<TableLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="fill_parent"
android:padding="2dp" android:orientation="vertical"
android:shrinkColumns="0" android:padding="10dp">
android:stretchColumns="1">
<TableRow style="@style/AboutTableRow"> <!-- Title -->
<ImageView <TableLayout
android:layout_column="0" android:layout_height="wrap_content"
android:scaleType="center" android:layout_width="fill_parent"
android:src="@drawable/arrow_icon"/> android:padding="2dp"
<LinearLayout android:shrinkColumns="0"
android:layout_column="1" android:stretchColumns="1">
android:layout_height="wrap_content" <TableRow>
android:layout_width="wrap_content" <ImageView
android:orientation="vertical"> android:layout_column="0"
<TextView
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:text="@string/my_tracks_app_name" android:scaleType="center"
android:textSize="30sp" /> android:src="@drawable/arrow_icon"/>
<TextView <LinearLayout
android:layout_column="1"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:text="@string/about_copyright_notice" android:orientation="vertical">
android:textSize="15sp" /> <TextView
</LinearLayout> android:layout_height="wrap_content"
</TableRow> android:layout_width="wrap_content"
<TableRow style="@style/AboutTableRow"> android:text="@string/my_tracks_app_name"
<TextView android:textSize="30sp"/>
android:text="@string/about_team" <TextView
style="@style/AboutTextView.Column0"/> android:layout_height="wrap_content"
<LinearLayout android:layout_width="wrap_content"
android:layout_column="1" android:text="@string/about_copyright_notice"
android:layout_height="wrap_content" android:textSize="15sp"/>
android:layout_width="wrap_content" </LinearLayout>
android:orientation="vertical"> </TableRow>
<TextView </TableLayout>
android:text="@string/about_bart"
style="@style/AboutTextView"/> <!-- Team -->
<TextView <TextView
android:text="@string/about_dylan" android:text="@string/about_team"
style="@style/AboutTextView"/> style="@style/AboutLabel"/>
<TextView <TextView
android:text="@string/about_jimmy" android:text="@string/about_bart"
style="@style/AboutTextView"/> style="@style/AboutItem"/>
<TextView <TextView
android:text="@string/about_leif" android:text="@string/about_dylan"
style="@style/AboutTextView"/> style="@style/AboutItem"/>
<TextView <TextView
android:text="@string/about_rodrigo" android:text="@string/about_jimmy"
style="@style/AboutTextView"/> style="@style/AboutItem"/>
<TextView <TextView
android:text="@string/about_sandor" android:text="@string/about_leif"
style="@style/AboutTextView"/> style="@style/AboutItem"/>
</LinearLayout> <TextView
</TableRow> android:text="@string/about_rodrigo"
<TableRow style="@style/AboutTableRow"> style="@style/AboutItem"/>
<TextView <TextView
android:text="@string/about_version" android:text="@string/about_sandor"
style="@style/AboutTextView.Column0"/> style="@style/AboutItem"/>
<TextView
android:id="@+id/about_version" <!-- Version -->
style="@style/AboutTextView"/> <TextView
</TableRow> android:text="@string/about_version"
<TableRow style="@style/AboutTableRow"> style="@style/AboutLabel"/>
<TextView <TextView
android:text="@string/about_support" android:id="@+id/about_version"
style="@style/AboutTextView.Column0"/> style="@style/AboutItem"/>
<TextView
android:text="@string/my_tracks_web_url" <!-- Support -->
style="@style/AboutTextView.Url"/> <TextView
</TableRow> android:text="@string/about_support"
<TableRow style="@style/AboutTableRow"> style="@style/AboutLabel"/>
<TextView <TextView
android:text="@string/about_privacy" android:text="@string/my_tracks_web_url"
style="@style/AboutTextView.Column0"/> style="@style/AboutUrl"/>
<TextView
android:text="@string/my_tracks_privacy_url" <!-- Privacy -->
style="@style/AboutTextView.Url"/> <TextView
</TableRow> android:text="@string/about_privacy"
</TableLayout> style="@style/AboutLabel"/>
<TextView
android:text="@string/my_tracks_privacy_url"
style="@style/AboutUrl"/>
</LinearLayout>
</ScrollView> </ScrollView>
+76 -106
View File
@@ -17,120 +17,90 @@ limitations under the License.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:minWidth="300dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <TableLayout
android:background="@drawable/list_bar"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent"> android:layout_width="fill_parent"
<TextView android:shrinkColumns="0"
android:layout_height="wrap_content" android:stretchColumns="0">
android:layout_marginLeft="10dp" <TableRow>
android:layout_width="fill_parent" <TextView
android:text="@string/menu_chart_view_chart_settings" android:background="@drawable/list_bar"
android:textColor="#fff" android:layout_height="wrap_content"
android:textSize="20sp"/> android:layout_width="fill_parent"
</LinearLayout> android:paddingLeft="10dp"
android:text="@string/menu_chart_view_chart_settings"
android:textColor="@color/white"
android:textSize="20sp"/>
</TableRow>
</TableLayout>
<ScrollView <ScrollView
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:layout_width="fill_parent"> android:layout_width="fill_parent">
<TableLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:stretchColumns="1"> android:orientation="vertical"
<TableRow> android:padding="10dp">
<LinearLayout
android:layout_height="wrap_content" <!-- X axis -->
android:layout_marginLeft="10dp" <LinearLayout style="@style/ChartSettingsAxisLayout">
android:layout_width="fill_parent" <ImageView
android:orientation="vertical"> android:src="@drawable/x_axis"
<LinearLayout style="@style/ChartSettingsAxisImage"/>
android:layout_height="wrap_content" <TextView
android:layout_width="fill_parent" android:text="@string/chart_settings_x_axis"
android:orientation="horizontal"> style="@style/ChartSettingsAxisText"/>
<ImageView </LinearLayout>
android:layout_height="wrap_content"
android:layout_width="wrap_content" <RadioGroup
android:src="@drawable/x_axis"/> android:id="@+id/chart_settings_x"
<TextView android:layout_height="wrap_content"
android:layout_height="wrap_content" android:layout_width="fill_parent">
android:layout_width="fill_parent" <RadioButton
android:text="@string/chart_settings_x_axis" android:id="@+id/chart_settings_by_distance"
android:textSize="20sp"/> android:text="@string/chart_settings_by_distance"
</LinearLayout> style="@style/ChartSettingsRadioButton"/>
<RadioGroup <RadioButton
android:id="@+id/chart_settings_x" android:id="@+id/chart_settings_by_time"
android:layout_height="wrap_content" android:text="@string/chart_settings_by_time"
android:layout_width="fill_parent"> style="@style/ChartSettingsRadioButton"/>
<RadioButton </RadioGroup>
android:id="@+id/chart_settings_by_distance"
android:layout_height="wrap_content" <!-- Y axis -->
android:layout_width="fill_parent" <LinearLayout
android:text="@string/chart_settings_by_distance"/> android:paddingTop="10dp"
<RadioButton style="@style/ChartSettingsAxisLayout">
android:id="@+id/chart_settings_by_time" <ImageView
android:layout_height="wrap_content" android:src="@drawable/y_axis"
android:layout_width="fill_parent" style="@style/ChartSettingsAxisImage"/>
android:text="@string/chart_settings_by_time"/> <TextView
</RadioGroup> android:text="@string/chart_settings_y_axis"
</LinearLayout> style="@style/ChartSettingsAxisText"/>
</TableRow> </LinearLayout>
<TableRow>
<LinearLayout <CheckBox
android:layout_height="wrap_content" android:id="@+id/chart_settings_elevation"
android:layout_marginLeft="10dp" android:text="@string/stat_elevation"
android:layout_width="fill_parent" style="@style/ChartSettingsCheckbox"/>
android:orientation="vertical"> <CheckBox
<LinearLayout android:id="@+id/chart_settings_speed"
android:layout_height="wrap_content" android:text="@string/stat_speed"
android:layout_width="fill_parent" style="@style/ChartSettingsCheckbox"/>
android:orientation="horizontal"> <CheckBox
<ImageView android:id="@+id/chart_settings_power"
android:layout_height="wrap_content" android:text="@string/sensor_state_power"
android:layout_width="wrap_content" style="@style/ChartSettingsCheckbox"/>
android:src="@drawable/y_axis"/> <CheckBox
<TextView android:id="@+id/chart_settings_cadence"
android:layout_height="wrap_content" android:text="@string/sensor_state_cadence"
android:layout_width="fill_parent" style="@style/ChartSettingsCheckbox"/>
android:text="@string/chart_settings_y_axis" <CheckBox
android:textSize="20sp" /> android:id="@+id/chart_settings_heart_rate"
</LinearLayout> android:text="@string/sensor_state_heart_rate"
<CheckBox style="@style/ChartSettingsCheckbox"/>
android:id="@+id/chart_settings_elevation" </LinearLayout>
android:checked="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/stat_elevation"/>
<CheckBox
android:id="@+id/chart_settings_speed"
android:checked="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/stat_speed"/>
<CheckBox
android:id="@+id/chart_settings_power"
android:checked="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/sensor_state_power"/>
<CheckBox
android:id="@+id/chart_settings_cadence"
android:checked="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/sensor_state_cadence"/>
<CheckBox
android:id="@+id/chart_settings_heart_rate"
android:checked="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/sensor_state_heart_rate"/>
</LinearLayout>
</TableRow>
</TableLayout>
</ScrollView> </ScrollView>
<LinearLayout style="@style/ButtonLayout"> <LinearLayout style="@style/ButtonLayout">
<LinearLayout style="@style/ButtonSpacer"/> <LinearLayout style="@style/ButtonSpacer"/>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3
View File
@@ -22,6 +22,9 @@ limitations under the License.
<string name="about_leif">Leif Wilden</string> <string name="about_leif">Leif Wilden</string>
<string name="about_rodrigo">Rodrigo Damazio</string> <string name="about_rodrigo">Rodrigo Damazio</string>
<string name="about_sandor">Sandor Dornbush</string> <string name="about_sandor">Sandor Dornbush</string>
<string name="color_mode_dynamic_percentage_default">25</string>
<string name="color_mode_fixed_medium_default">15</string>
<string name="color_mode_fixed_slow_default">9</string>
<string name="display_track_color_value_dynamic">DYNAMIC</string> <string name="display_track_color_value_dynamic">DYNAMIC</string>
<string name="display_track_color_value_fixed">FIXED</string> <string name="display_track_color_value_fixed">FIXED</string>
<string name="display_track_color_value_none">NONE</string> <string name="display_track_color_value_none">NONE</string>
+79 -67
View File
@@ -420,11 +420,17 @@ limitations under the License.
\n \n
http://mytracks.googlecode.com\n http://mytracks.googlecode.com\n
</string> </string>
<string name="android_market_recent_changes_text"
translation_description="For the Android Market (not used in the app), the recent changes text.
Character limit: 500.">
Please see the English version for more information.
</string>
<string name="android_market_promo_text" <string name="android_market_promo_text"
translation_description="For the Android Market (not used in the app), the promotion text. translation_description="For the Android Market (not used in the app), the promotion text.
Character limit: 80."> Character limit: 80.">
My Tracks allows you to record and share your GPS tracks, including statistics. Record and share your GPS tracks with My Tracks.
</string> </string>
<!-- Chart Settings --> <!-- Chart Settings -->
@@ -477,6 +483,11 @@ limitations under the License.
http://m.google.com/toscountry."> http://m.google.com/toscountry.">
By using Google\'s mobile products and services ("Services"), you: By using Google\'s mobile products and services ("Services"), you:
</string> </string>
<string name="eula_message_copyright"
translation_description="The copyright in the Google mobile terms of service. See
http://m.google.com/toscountry.">
©2011
</string>
<string name="eula_message_date" <string name="eula_message_date"
translation_description="The date in the Google mobile terms of service. See translation_description="The date in the Google mobile terms of service. See
http://m.google.com/toscountry."> http://m.google.com/toscountry.">
@@ -583,7 +594,7 @@ limitations under the License.
<string name="generic_progress_title" <string name="generic_progress_title"
translation_description="The title on a progress dialog asking the user to wait. translation_description="The title on a progress dialog asking the user to wait.
Screenshot: sc_card_progress_write_file.png"> Screenshot: sd_card_progress_write_file.png">
Please wait... Please wait...
</string> </string>
<string name="generic_save" <string name="generic_save"
@@ -593,7 +604,7 @@ limitations under the License.
<string name="generic_success_title" <string name="generic_success_title"
translation_description="The title on an alert dialog indicating success. translation_description="The title on an alert dialog indicating success.
Screenshot: sc_card_success_write_file.png"> Screenshot: sd_card_success_write_file.png">
Success Success
</string> </string>
<string name="generic_yes" <string name="generic_yes"
@@ -966,7 +977,7 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: my_tracks_recording_service.png"> Screenshot: my_tracks_recording_service.png">
Track recording service Recording service
</string> </string>
<!-- Permission --> <!-- Permission -->
@@ -1076,7 +1087,7 @@ limitations under the License.
translation_description="When reading from the SD card, the success message when finish reading translation_description="When reading from the SD card, the success message when finish reading
from the SD card. from the SD card.
Screenshot: sc_card_success_read_file.png"> Screenshot: sd_card_success_read_file.png">
Finished reading from the SD card. Finished reading from the SD card.
</string> </string>
<string name="sd_card_success_write_file" <string name="sd_card_success_write_file"
@@ -1118,8 +1129,9 @@ limitations under the License.
translation_description="When sending a track to Google Maps, the radio option to use an translation_description="When sending a track to Google Maps, the radio option to use an
existing map as opposed to create a new map. existing map as opposed to create a new map.
Character limit: ~21 (1 line)
Screenshot: send_google_choose_service.png"> Screenshot: send_google_choose_service.png">
Use an existing map Use existing map
</string> </string>
<string name="send_google_fusion_tables" <string name="send_google_fusion_tables"
translation_description="When sending a track to Google, under the 'Send to...' dialog, the translation_description="When sending a track to Google, under the 'Send to...' dialog, the
@@ -1139,8 +1151,9 @@ limitations under the License.
translation_description="When sending a track to Google Maps, the radio option to create a translation_description="When sending a track to Google Maps, the radio option to create a
new map as opposed to use an existing map. new map as opposed to use an existing map.
Character limit: ~21 (1 line)
Screenshot: send_google_choose_service.png"> Screenshot: send_google_choose_service.png">
Create a new map Create new map
</string> </string>
<string name="send_google_no_account_message" <string name="send_google_no_account_message"
translation_description="When sending to Google, the dialog message when no Google account is translation_description="When sending to Google, the dialog message when no Google account is
@@ -1294,7 +1307,7 @@ limitations under the License.
<string name="sensor_state_heart_rate_value" <string name="sensor_state_heart_rate_value"
translation_description="In the 'Sensor state' page, the value for the 'Heart rate'. E.g., translation_description="In the 'Sensor state' page, the value for the 'Heart rate'. E.g.,
'Hear rate: 100 bpm'. 'Hear rate: 100 bpm'.
%1$d: a number. E.g., '100'."> %1$d: a number. E.g., '100'.">
%1$d bpm %1$d bpm
</string> </string>
@@ -1337,7 +1350,7 @@ limitations under the License.
Backup Backup
</string> </string>
<string name="settings_backup_now" <string name="settings_backup_now"
translation_description="In the 'Backup' settings, under the 'SD card backup' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the
option to backup to the SD card now. option to backup to the SD card now.
Character limit: ~26 (1 line) Character limit: ~26 (1 line)
@@ -1353,7 +1366,7 @@ limitations under the License.
Writing all tracks and settings to the SD card. This may take a while... Writing all tracks and settings to the SD card. This may take a while...
</string> </string>
<string name="settings_backup_now_summary" <string name="settings_backup_now_summary"
translation_description="In the 'Backup' settings, under the 'SD card backup' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the
summary for the 'Backup now' option explaining that all tracks and settings will be written to summary for the 'Backup now' option explaining that all tracks and settings will be written to
the SD card. the SD card.
@@ -1361,7 +1374,7 @@ limitations under the License.
Write a full copy of all your tracks and settings to the SD card. Write a full copy of all your tracks and settings to the SD card.
</string> </string>
<string name="settings_backup_restore" <string name="settings_backup_restore"
translation_description="In the 'Backup' settings, under the 'SD card backup' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the
option to restore everything from the SD card. option to restore everything from the SD card.
Character limit: ~26 (1 line) Character limit: ~26 (1 line)
@@ -1400,11 +1413,10 @@ limitations under the License.
Select a backup to restore Select a backup to restore
</string> </string>
<string name="settings_backup_restore_summary" <string name="settings_backup_restore_summary"
translation_description="In the 'Backup' settings, under the 'SD card backup' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the
summary for the 'Restore now' option explaining that it restores all tracks and settings from summary for the 'Restore now' option explaining that it restores all tracks and settings from
the SD card. the SD card.
Character limit: ~26 (1 line)
Screenshot: settings_backup.png"> Screenshot: settings_backup.png">
Restore all tracks and settings from the SD card. Restore all tracks and settings from the SD card.
</string> </string>
@@ -1414,7 +1426,7 @@ limitations under the License.
Character limit: ~40 (1 line) Character limit: ~40 (1 line)
Screenshot: settings_backup.png"> Screenshot: settings_backup.png">
SD card backup SD card
</string> </string>
<string name="settings_display" <string name="settings_display"
translation_description="In the 'Settings' page, the option to change the display related translation_description="In the 'Settings' page, the option to change the display related
@@ -1429,17 +1441,17 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Use metric units Use metric
</string> </string>
<string name="settings_display_metric_summary_off" <string name="settings_display_metric_summary_off"
translation_description="In the 'Display' settings, the summary for the 'Use metric units' translation_description="In the 'Display' settings, the summary for the 'Use metric'
checkbox when it is unchecked explaining using the imperial units to display distances. checkbox when it is unchecked explaining using the imperial units to display distances.
Screenshot: settings_display_unchecked.png"> Screenshot: settings_display_unchecked.png">
Use imperial units to display distances. Use imperial units to display distances.
</string> </string>
<string name="settings_display_metric_summary_on" <string name="settings_display_metric_summary_on"
translation_description="In the 'Display' settings, the summary for the 'Use metric units' translation_description="In the 'Display' settings, the summary for the 'Use metric'
checkbox when it is checked explaining using the metric units to display distances. checkbox when it is checked explaining using the metric units to display distances.
Screenshot: settings_display.png"> Screenshot: settings_display.png">
@@ -1475,10 +1487,10 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Track color mode Color mode
</string> </string>
<string name="settings_display_track_color_dynamic" <string name="settings_display_track_color_dynamic"
translation_description="In the 'Display' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Display' settings, for the 'Color mode' dropdown, the
option to use different colors to color a track based on dynamically determined speed option to use different colors to color a track based on dynamically determined speed
thresholds. E.g., use one color when the speed is below the slow speed threshold. thresholds. E.g., use one color when the speed is below the slow speed threshold.
@@ -1489,17 +1501,17 @@ limitations under the License.
<string name="settings_display_track_color_dynamic_medium" <string name="settings_display_track_color_dynamic_medium"
translation_description="In the 'Display' settings, under the 'Dynamic thresholds' translation_description="In the 'Display' settings, under the 'Dynamic thresholds'
configurations, the option for configuring the percentage from the average speed for the configurations, the option for configuring the percentage from the average speed for the
medium speed range. The track color mode will use different colors to color a track depending medium speed range. The color mode will use different colors to color a track depending
on whether the speed is above, in, or below the medium speed range. on whether the speed is above, in, or below the medium speed range.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Percentage from average Percentage
</string> </string>
<string name="settings_display_track_color_dynamic_medium_summary" <string name="settings_display_track_color_dynamic_medium_summary"
translation_description="In the 'Display' settings, under the 'Dynamic thresholds' translation_description="In the 'Display' settings, under the 'Dynamic thresholds'
configurations, the summary for the 'Percentage from average' option explaining that it sets configurations, the summary for the 'Percentage' option explaining that it sets
the percentage from the average speed for the medium speed range. The track color mode will the percentage from the average speed for the medium speed range. The color mode will
use different colors to color a track depending on whether the speed is above, in, or below use different colors to color a track depending on whether the speed is above, in, or below
the medium speed range. the medium speed range.
@@ -1507,7 +1519,7 @@ limitations under the License.
Percentage from the average speed for the medium speed range. Percentage from the average speed for the medium speed range.
</string> </string>
<string name="settings_display_track_color_fixed" <string name="settings_display_track_color_fixed"
translation_description="In the 'Display' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Display' settings, for the 'Color mode' dropdown, the
option to use different colors to color a track based on fixed speed thresholds. E.g., use option to use different colors to color a track based on fixed speed thresholds. E.g., use
one color when the speed is below the slow speed threshold. one color when the speed is below the slow speed threshold.
@@ -1523,11 +1535,11 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Medium speed threshold Medium speed
</string> </string>
<string name="settings_display_track_color_fixed_medium_summary" <string name="settings_display_track_color_fixed_medium_summary"
translation_description="In the 'Display' settings, under the 'Fixed thresholds' configurations, translation_description="In the 'Display' settings, under the 'Fixed thresholds' configurations,
the summary for the 'Medium speed threshold' option explaining that it sets a cutoff speed the summary for the 'Medium speed' option explaining that it sets a cutoff speed
for the medium speed color. for the medium speed color.
Screenshot: settings_display.png"> Screenshot: settings_display.png">
@@ -1540,18 +1552,18 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Slow speed threshold Slow speed
</string> </string>
<string name="settings_display_track_color_fixed_slow_summary" <string name="settings_display_track_color_fixed_slow_summary"
translation_description="In the 'Display' settings, under the 'Fixed thresholds' configurations, translation_description="In the 'Display' settings, under the 'Fixed thresholds' configurations,
the summary for the 'Slow speed threshold' option explaining that it sets a cutoff speed for the summary for the 'Slow speed' option explaining that it sets a cutoff speed for
the slow speed color. the slow speed color.
Screenshot: settings_display.png"> Screenshot: settings_display.png">
Slow speed top value. Slow speed top value.
</string> </string>
<string name="settings_display_track_color_single" <string name="settings_display_track_color_single"
translation_description="In the 'Display' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Display' settings, for the 'Color mode' dropdown, the
option to use a single color for all speeds. option to use a single color for all speeds.
Character limit: ~21 (1 line) Character limit: ~21 (1 line)
@@ -1559,7 +1571,7 @@ limitations under the License.
Single color Single color
</string> </string>
<string name="settings_display_track_color_summary" <string name="settings_display_track_color_summary"
translation_description="In the 'Display' settings, the summary for the 'Track color mode' translation_description="In the 'Display' settings, the summary for the 'Color mode'
dropdown explaining that it configures how colors are used to color a track based on dropdown explaining that it configures how colors are used to color a track based on
slow, medium, and fast speed. slow, medium, and fast speed.
@@ -1587,10 +1599,10 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_bottom.png"> Screenshot: settings_recording_bottom.png">
Auto-resume timeout Auto-resume
</string> </string>
<string name="settings_recording_auto_resume_summary" <string name="settings_recording_auto_resume_summary"
translation_description="In the 'Recording' settings, the summary for the 'Auto-resume timeout' translation_description="In the 'Recording' settings, the summary for the 'Auto-resume'
dropdown option explaining that it configures the maximum time after which a previous dropdown option explaining that it configures the maximum time after which a previous
recording will not be resumed after phone reboot. recording will not be resumed after phone reboot.
@@ -1603,11 +1615,11 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_bottom.png"> Screenshot: settings_recording_bottom.png">
Default activity type Default activity
</string> </string>
<string name="settings_recording_default_activity_summary" <string name="settings_recording_default_activity_summary"
translation_description="In the 'Recording' settings, the summary for the 'Default activity translation_description="In the 'Recording' settings, the summary for the 'Default activity'
type' option explaining that it sets the default activity type for a new track. option explaining that it sets the default activity type for a new track.
Screenshot: settings_recording_bottom.png"> Screenshot: settings_recording_bottom.png">
Default activity type for a new track. Default activity type for a new track.
@@ -1618,11 +1630,11 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Distance between points Distance interval
</string> </string>
<string name="settings_recording_distance_summary" <string name="settings_recording_distance_summary"
translation_description="In the 'Recording' settings, the summary for the 'Distance between translation_description="In the 'Recording' settings, the summary for the 'Distance interval'
points' dropdown option explaining that it configures the smallest distance between two dropdown option explaining that it configures the smallest distance between two
recordings of your position. recordings of your position.
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
@@ -1651,10 +1663,10 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Time between points Time interval
</string> </string>
<string name="settings_recording_interval_summary" <string name="settings_recording_interval_summary"
translation_description="In the 'Recording' settings, the summary for the 'Time between points' translation_description="In the 'Recording' settings, the summary for the 'Time interval'
dropdown option explaining that it configures the smallest time interval between two dropdown option explaining that it configures the smallest time interval between two
recordings of your position. recordings of your position.
@@ -1667,10 +1679,10 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Marker frequency Marker
</string> </string>
<string name="settings_recording_marker_summary" <string name="settings_recording_marker_summary"
translation_description="In the 'Recording' settings, the summary for the 'Marker frequency' translation_description="In the 'Recording' settings, the summary for the 'Marker'
dropdown option explaining that it configures the time or distance after which a new marker dropdown option explaining that it configures the time or distance after which a new marker
will be inserted. will be inserted.
@@ -1683,19 +1695,18 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_bottom.png"> Screenshot: settings_recording_bottom.png">
Use time for track name Use timestamp
</string> </string>
<string name="settings_recording_name_summary_off" <string name="settings_recording_name_summary_off"
translation_description="In the 'Recording' settings, the summary for the 'Use time for track translation_description="In the 'Recording' settings, the summary for the 'Use timestamp'
name' checkbox when it is unchecked explaining using a number as the default track name. checkbox when it is unchecked explaining using a number as the default track name.
Screenshot: settings_recording_bottom_unchecked.png"> Screenshot: settings_recording_bottom_unchecked.png">
Use a number as the default track name. Use a number as the default track name.
</string> </string>
<string name="settings_recording_name_summary_on" <string name="settings_recording_name_summary_on"
translation_description="In the 'Recording' settings, the summary for the 'Use time for track translation_description="In the 'Recording' settings, the summary for the 'Use timestamp'
name' checkbox when it is checked explaining using the track's start time as the default track checkbox when it is checked explaining using the track's start time as the default track name.
name.
Screenshot: settings_recording_bottom.png"> Screenshot: settings_recording_bottom.png">
Use the track\'s start time as the default track name. Use the track\'s start time as the default track name.
@@ -1706,15 +1717,16 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Distance between tracks Max interval
</string> </string>
<string name="settings_recording_track_distance_summary" <string name="settings_recording_track_distance_summary"
translation_description="In the 'Recording' settings, the summary for the 'Distance between translation_description="In the 'Recording' settings, the summary for the 'Max interval'
tracks' dropdown option explaining that it configures the maximum distance for two recorded dropdown option explaining that it configures the maximum distance for two recorded
points for them to be still considered as the same track. points for them to be still considered as the same track.
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Track will be split if two recordings of your position are further than this. Maximum distance between two recordings of your position. If two positions are further than
this, the track will be split.
</string> </string>
<string name="settings_recording_voice" <string name="settings_recording_voice"
translation_description="In the 'Recording' settings, the dropdown option to configure the voice translation_description="In the 'Recording' settings, the dropdown option to configure the voice
@@ -1722,17 +1734,17 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_recording_top.png"> Screenshot: settings_recording_top.png">
Voice frequency Voice
</string> </string>
<string name="settings_recording_voice_not_available" <string name="settings_recording_voice_not_available"
translation_description="In the 'Recording' settings, the summary for the 'Voice frequency' translation_description="In the 'Recording' settings, the summary for the 'Voice'
explaining that this option is not available on your Android phone. explaining that this option is not available on your Android phone.
Screenshot: settings_recording_voice_not_available.png"> Screenshot: settings_recording_voice_not_available.png">
Voice announcement is not available on your Android phone. Voice announcement is not available on your Android phone.
</string> </string>
<string name="settings_recording_voice_summary" <string name="settings_recording_voice_summary"
translation_description="In the 'Recording' settings, the summary for the 'Voice frequency' translation_description="In the 'Recording' settings, the summary for the 'Voice'
dropdown option explaining that it configures the time or distance between two voice dropdown option explaining that it configures the time or distance between two voice
announcements. announcements.
@@ -1744,10 +1756,10 @@ limitations under the License.
Character limit: ~26 (1 line) Character limit: ~26 (1 line)
Screenshot: settings.png"> Screenshot: settings.png">
Reset to defaults Reset
</string> </string>
<string name="settings_reset_dialog_message" <string name="settings_reset_dialog_message"
translation_description="In the 'Settings' page, after pressing the 'Reset to defaults' option, translation_description="In the 'Settings' page, after pressing the 'Reset' option,
the confirmation dialog asking the user to confirm reverting all settings to defaults. But the confirmation dialog asking the user to confirm reverting all settings to defaults. But
the saved tracks will be preserved. the saved tracks will be preserved.
@@ -1756,7 +1768,7 @@ limitations under the License.
preserved. Are you sure? preserved. Are you sure?
</string> </string>
<string name="settings_reset_done" <string name="settings_reset_done"
translation_description="In the 'Settings' page, after pressing the 'Reset to defaults' option, translation_description="In the 'Settings' page, after pressing the 'Reset' option,
the confirmation dialog informing the user that all settings have been reverted to their the confirmation dialog informing the user that all settings have been reverted to their
defaults. defaults.
@@ -1764,7 +1776,7 @@ limitations under the License.
All settings have been reverted to their defaults. All settings have been reverted to their defaults.
</string> </string>
<string name="settings_reset_summary" <string name="settings_reset_summary"
translation_description="In the 'Settings' page, the summary for the 'Reset to defaults' option translation_description="In the 'Settings' page, the summary for the 'Reset' option
explaining reverting all the settings to the default values. explaining reverting all the settings to the default values.
Screenshot: settings.png"> Screenshot: settings.png">
@@ -1854,7 +1866,7 @@ limitations under the License.
Character limit: ~21 (1 line) Character limit: ~21 (1 line)
Screenshot: settings_sensor_type.png"> Screenshot: settings_sensor_type.png">
ANT+ heart rate sensor ANT+ heart rate
</string> </string>
<string name="settings_sensor_type_none" <string name="settings_sensor_type_none"
translation_description="In the 'Sensor' settings, for the 'Sensor type' dropdown, the option to translation_description="In the 'Sensor' settings, for the 'Sensor type' dropdown, the option to
@@ -1875,7 +1887,7 @@ limitations under the License.
</string> </string>
<string name="settings_sensor_type_srm" <string name="settings_sensor_type_srm"
translation_description="In the 'Sensor' settings, for the 'Sensor type' dropdown, the option to translation_description="In the 'Sensor' settings, for the 'Sensor type' dropdown, the option to
connect to a SRM ANT+ bridge. Do not trasnlate SRM, the company name, but can translate connect to a SRM ANT+ bridge. Do not translate SRM, the company name, but can translate
ANT+, the radio standard, and bridge (network bridge). ANT+, the radio standard, and bridge (network bridge).
Character limit: ~21 (1 line) Character limit: ~21 (1 line)
@@ -1904,11 +1916,11 @@ limitations under the License.
Character limit: ~26 (1 line) Character limit: ~26 (1 line)
Screenshot: settings_sensor.png"> Screenshot: settings_sensor.png">
Unpair ANT+ heart rate sensor Unpair ANT+ heart rate
</string> </string>
<string name="settings_sensor_unpair_srm" <string name="settings_sensor_unpair_srm"
translation_description="In the 'Sensor' settings, under the 'ANT+ options' configurations, the translation_description="In the 'Sensor' settings, under the 'ANT+ options' configurations, the
option to unpair a SRM ANT+ bridge. Do not trasnlate SRM, the company name, but can translate option to unpair a SRM ANT+ bridge. Do not translate SRM, the company name, but can translate
ANT+, the radio standard, and bridge (network bridge). ANT+, the radio standard, and bridge (network bridge).
Character limit: ~26 (1 line) Character limit: ~26 (1 line)
@@ -1963,10 +1975,10 @@ limitations under the License.
Character limit: ~23 (1 line) Character limit: ~23 (1 line)
Screenshot: settings_sharing.png"> Screenshot: settings_sharing.png">
Make new maps public New maps public
</string> </string>
<string name="settings_sharing_map_public_summary_off" <string name="settings_sharing_map_public_summary_off"
translation_description="In the 'Sharing' settings, the summary for the 'Make new maps public' translation_description="In the 'Sharing' settings, the summary for the 'New maps public'
checkbox option when it is unchecked explaining that new maps created in Google Maps will checkbox option when it is unchecked explaining that new maps created in Google Maps will
be unlisted, as opposed to public. be unlisted, as opposed to public.
@@ -1974,7 +1986,7 @@ limitations under the License.
Make new maps created in Google Maps unlisted. Make new maps created in Google Maps unlisted.
</string> </string>
<string name="settings_sharing_map_public_summary_on" <string name="settings_sharing_map_public_summary_on"
translation_description="In the 'Sharing' settings, the summary for the 'Make new maps public' translation_description="In the 'Sharing' settings, the summary for the 'New maps public'
checkbox option when it is checked explaining that new maps created in Google Maps will checkbox option when it is checked explaining that new maps created in Google Maps will
be public, as opposed to unlisted. be public, as opposed to unlisted.
@@ -2711,7 +2723,7 @@ limitations under the License.
%2$s: time string. E.g., '1 hour and 30 minutes' or '20 minutes 1 second' %2$s: time string. E.g., '1 hour and 30 minutes' or '20 minutes 1 second'
%3$s: speed/pace string. For speed, e.g., '2.2 miles per hour', '1 kilometer per hour'. For %3$s: speed/pace string. For speed, e.g., '2.2 miles per hour', '1 kilometer per hour'. For
pace, e.g., '2 hours 1 minute per mile', '30 minutes 1 second per kilometer'."> pace, e.g., '2 hours 1 minute per mile', '30 minutes 1 second per kilometer'.">
My Tracks total distance %1$s in %2$s at %3$s. My Tracks %1$s in %2$s at %3$s.
</string> </string>
<string name="voice_total_distance_kilometers_few" <string name="voice_total_distance_kilometers_few"
translation_description="For voice announcement, to say total distance 'few' kilometers. translation_description="For voice announcement, to say total distance 'few' kilometers.
+68 -33
View File
@@ -15,33 +15,33 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<resources> <resources>
<!-- About page label -->
<!-- About dialog TableRow --> <style name="AboutLabel">
<style name="AboutTableRow">
<item name="android:paddingBottom">2dp</item>
</style>
<!-- About dialog TextView -->
<style name="AboutTextView">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item> <item name="android:layout_width">fill_parent</item>
<item name="android:textSize">20sp</item> <item name="android:paddingBottom">2dp</item>
<item name="android:textSize">20sp</item>
</style> </style>
<!-- About dialog TextView column 0 --> <!-- About page item -->
<style name="AboutTextView.Column0"> <style name="AboutItem">
<item name="android:gravity">right</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_column">0</item> <item name="android:layout_width">fill_parent</item>
<item name="android:paddingLeft">10dp</item> <item name="android:paddingBottom">2dp</item>
<item name="android:paddingRight">10dp</item> <item name="android:paddingLeft">20dp</item>
<item name="android:textSize">18sp</item>
</style> </style>
<!-- About dialog TextView Url --> <!-- About page url -->
<style name="AboutTextView.Url"> <style name="AboutUrl">
<item name="android:autoLink">web</item> <item name="android:autoLink">web</item>
<item name="android:textSize">18sp</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:paddingBottom">2dp</item>
<item name="android:paddingLeft">20dp</item>
<item name="android:textSize">18sp</item>
</style> </style>
<!-- Button --> <!-- Button -->
<style name="Button"> <style name="Button">
<item name="android:layout_height">fill_parent</item> <item name="android:layout_height">fill_parent</item>
@@ -50,7 +50,7 @@ limitations under the License.
<item name="android:maxLines">2</item> <item name="android:maxLines">2</item>
<item name="android:textSize">14dip</item> <item name="android:textSize">14dip</item>
</style> </style>
<!-- Button layout --> <!-- Button layout -->
<style name="ButtonLayout"> <style name="ButtonLayout">
<item name="android:background">@drawable/list_bar</item> <item name="android:background">@drawable/list_bar</item>
@@ -61,7 +61,7 @@ limitations under the License.
<item name="android:paddingRight">2dip</item> <item name="android:paddingRight">2dip</item>
<item name="android:paddingTop">4dip</item> <item name="android:paddingTop">4dip</item>
</style> </style>
<!-- Button spacer --> <!-- Button spacer -->
<style name="ButtonSpacer"> <style name="ButtonSpacer">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
@@ -70,7 +70,42 @@ limitations under the License.
<item name="android:orientation">horizontal</item> <item name="android:orientation">horizontal</item>
<item name="android:visibility">gone</item> <item name="android:visibility">gone</item>
</style> </style>
<!-- Chart settings axis image -->
<style name="ChartSettingsAxisImage">
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">wrap_content</item>
</style>
<!-- Chart settings axis layout -->
<style name="ChartSettingsAxisLayout">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:orientation">horizontal</item>
</style>
<!-- Chart settings axis text -->
<style name="ChartSettingsAxisText">
<item name="android:gravity">bottom</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:paddingLeft">10dp</item>
<item name="android:textSize">20sp</item>
</style>
<!-- Chart settings checkbox -->
<style name="ChartSettingsCheckbox">
<item name="android:checked">true</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<!-- Chart settings radio button -->
<style name="ChartSettingsRadioButton">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="SensorStateLabel"> <style name="SensorStateLabel">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item> <item name="android:layout_width">fill_parent</item>
@@ -95,7 +130,7 @@ limitations under the License.
<item name="android:layout_height">3dip</item> <item name="android:layout_height">3dip</item>
<item name="android:layout_width">fill_parent</item> <item name="android:layout_width">fill_parent</item>
</style> </style>
<!-- The style for a text view for displaying a value on the statistics activity. --> <!-- The style for a text view for displaying a value on the statistics activity. -->
<style name="StatsRegister" parent="@android:Widget.TextView"> <style name="StatsRegister" parent="@android:Widget.TextView">
<item name="android:gravity">right</item> <item name="android:gravity">right</item>
@@ -130,7 +165,7 @@ limitations under the License.
<item name="android:layout_width">5dip</item> <item name="android:layout_width">5dip</item>
<item name="android:textSize">40sp</item> <item name="android:textSize">40sp</item>
</style> </style>
<!-- The style for the unit on the statistics activity. --> <!-- The style for the unit on the statistics activity. -->
<style name="StatsUnit" parent="@android:Widget.TextView"> <style name="StatsUnit" parent="@android:Widget.TextView">
<item name="android:gravity">bottom</item> <item name="android:gravity">bottom</item>
@@ -147,8 +182,8 @@ limitations under the License.
<item name="android:layout_marginBottom">-9dip</item> <item name="android:layout_marginBottom">-9dip</item>
<item name="android:layout_marginTop">-9dip</item> <item name="android:layout_marginTop">-9dip</item>
<item name="android:textColor">@color/stat_label_text</item> <item name="android:textColor">@color/stat_label_text</item>
</style> </style>
<!-- Welcome page TextView --> <!-- Welcome page TextView -->
<style name="WelcomeTextView"> <style name="WelcomeTextView">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
@@ -157,13 +192,13 @@ limitations under the License.
<item name="android:paddingRight">10sp</item> <item name="android:paddingRight">10sp</item>
<item name="android:textColor">@color/black</item> <item name="android:textColor">@color/black</item>
<item name="android:textSize">16sp</item> <item name="android:textSize">16sp</item>
</style> </style>
<!-- Welcome page TextView question --> <!-- Welcome page TextView question -->
<style name="WelcomeTextView.Question"> <style name="WelcomeTextView.Question">
<item name="android:paddingTop">10sp</item> <item name="android:paddingTop">10sp</item>
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
</style> </style>
<!-- Widget TextView --> <!-- Widget TextView -->
<style name="WidgetTextView"> <style name="WidgetTextView">
@@ -172,9 +207,9 @@ limitations under the License.
<item name="android:textColor">@color/appwidget_text</item> <item name="android:textColor">@color/appwidget_text</item>
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
</style> </style>
<!-- Widget TextView value --> <!-- Widget TextView value -->
<style name="WidgetTextView.Value"> <style name="WidgetTextView.Value">
<item name="android:width">160px</item> <item name="android:width">160px</item>
</style> </style>
</resources> </resources>
+27 -27
View File
@@ -32,7 +32,7 @@ limitations under the License.
android:summaryOn="@string/settings_display_speed_summary_on" android:summaryOn="@string/settings_display_speed_summary_on"
android:summaryOff="@string/settings_display_speed_summary_off" android:summaryOff="@string/settings_display_speed_summary_off"
android:defaultValue="true" /> android:defaultValue="true" />
<ListPreference android:key="@string/track_color_mode_key" <ListPreference android:key="@string/track_color_mode_key"
android:title="@string/settings_display_track_color" android:title="@string/settings_display_track_color"
android:summary="@string/settings_display_track_color_summary" android:summary="@string/settings_display_track_color_summary"
@@ -40,46 +40,46 @@ limitations under the License.
android:entryValues="@array/display_track_color_values" android:entryValues="@array/display_track_color_values"
android:defaultValue="@string/display_track_color_value_none"/> android:defaultValue="@string/display_track_color_value_none"/>
<PreferenceCategory android:title="@string/settings_display_track_color_fixed" <PreferenceCategory android:title="@string/settings_display_track_color_fixed"
android:key="@string/track_color_mode_fixed_speed_options_key"> android:key="@string/track_color_mode_fixed_speed_options_key">
<EditTextPreference android:key="@string/track_color_mode_fixed_speed_slow_key" <EditTextPreference android:key="@string/track_color_mode_fixed_speed_slow_key"
android:title="@string/settings_display_track_color_fixed_slow" android:title="@string/settings_display_track_color_fixed_slow"
android:summary="@string/settings_display_track_color_fixed_slow_summary" android:summary="@string/settings_display_track_color_fixed_slow_summary"
android:defaultValue="9" android:defaultValue="@string/color_mode_fixed_slow_default"
android:inputType="number" android:inputType="number"
android:maxLength="3"> android:maxLength="3">
</EditTextPreference> </EditTextPreference>
<EditTextPreference android:key="@string/track_color_mode_fixed_speed_slow_display_key" <EditTextPreference android:key="@string/track_color_mode_fixed_speed_slow_display_key"
android:title="@string/settings_display_track_color_fixed_slow" android:title="@string/settings_display_track_color_fixed_slow"
android:summary="@string/settings_display_track_color_fixed_slow_summary" android:summary="@string/settings_display_track_color_fixed_slow_summary"
android:defaultValue="9" android:defaultValue="@string/color_mode_fixed_slow_default"
android:inputType="number" android:inputType="number"
android:maxLength="3"> android:maxLength="3">
</EditTextPreference> </EditTextPreference>
<EditTextPreference android:key="@string/track_color_mode_fixed_speed_medium_key" <EditTextPreference android:key="@string/track_color_mode_fixed_speed_medium_key"
android:title="@string/settings_display_track_color_fixed_medium" android:title="@string/settings_display_track_color_fixed_medium"
android:summary="@string/settings_display_track_color_fixed_medium_summary" android:summary="@string/settings_display_track_color_fixed_medium_summary"
android:defaultValue="15" android:defaultValue="@string/color_mode_fixed_medium_default"
android:inputType="number" android:inputType="number"
android:maxLength="3"> android:maxLength="3">
</EditTextPreference> </EditTextPreference>
<EditTextPreference android:key="@string/track_color_mode_fixed_speed_medium_display_key" <EditTextPreference android:key="@string/track_color_mode_fixed_speed_medium_display_key"
android:title="@string/settings_display_track_color_fixed_medium" android:title="@string/settings_display_track_color_fixed_medium"
android:summary="@string/settings_display_track_color_fixed_medium_summary" android:summary="@string/settings_display_track_color_fixed_medium_summary"
android:defaultValue="15" android:defaultValue="@string/color_mode_fixed_medium_default"
android:inputType="number" android:inputType="number"
android:maxLength="3"> android:maxLength="3">
</EditTextPreference> </EditTextPreference>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/settings_display_track_color_dynamic"> <PreferenceCategory android:title="@string/settings_display_track_color_dynamic">
<EditTextPreference android:key="@string/track_color_mode_dynamic_speed_variation_key" <EditTextPreference android:key="@string/track_color_mode_dynamic_speed_variation_key"
android:title="@string/settings_display_track_color_dynamic_medium" android:title="@string/settings_display_track_color_dynamic_medium"
android:summary="@string/settings_display_track_color_dynamic_medium_summary" android:summary="@string/settings_display_track_color_dynamic_medium_summary"
android:defaultValue="25" android:defaultValue="@string/color_mode_dynamic_percentage_default"
android:inputType="number" android:inputType="number"
android:maxLength="2"> android:maxLength="2">
</EditTextPreference> </EditTextPreference>
@@ -143,7 +143,7 @@ limitations under the License.
android:summaryOn="@string/settings_recording_name_summary_on" android:summaryOn="@string/settings_recording_name_summary_on"
android:summaryOff="@string/settings_recording_name_summary_off" android:summaryOff="@string/settings_recording_name_summary_off"
android:defaultValue="true" /> android:defaultValue="true" />
<com.google.android.apps.mytracks.AutoCompleteTextPreference <com.google.android.apps.mytracks.AutoCompleteTextPreference
android:key="@string/default_activity_key" android:key="@string/default_activity_key"
android:title="@string/settings_recording_default_activity" android:title="@string/settings_recording_default_activity"
@@ -167,7 +167,7 @@ limitations under the License.
<ListPreference android:key="@string/bluetooth_sensor_key" <ListPreference android:key="@string/bluetooth_sensor_key"
android:title="@string/settings_sensor_bluetooth_sensor" android:title="@string/settings_sensor_bluetooth_sensor"
android:summary="@string/settings_sensor_bluetooth_sensor_summary" android:summary="@string/settings_sensor_bluetooth_sensor_summary"
android:defaultValue="any" /> android:defaultValue="" />
<Preference android:key="@string/bluetooth_pairing_key" <Preference android:key="@string/bluetooth_pairing_key"
android:title="@string/settings_sensor_bluetooth_pairing" android:title="@string/settings_sensor_bluetooth_pairing"
@@ -77,8 +77,8 @@ public class ChartActivity extends Activity implements TrackDataListener {
private double trackMaxSpeed; private double trackMaxSpeed;
// Modes of operation // Modes of operation
private boolean metricUnits; private boolean metricUnits = true;
private boolean reportSpeed; private boolean reportSpeed = true;
/* /*
* UI elements: * UI elements:
@@ -240,6 +240,7 @@ public class ChartActivity extends Activity implements TrackDataListener {
private void prepareSettingsDialog(ChartSettingsDialog settingsDialog) { private void prepareSettingsDialog(ChartSettingsDialog settingsDialog) {
settingsDialog.setMode(chartView.getMode()); settingsDialog.setMode(chartView.getMode());
settingsDialog.setDisplaySpeed(reportSpeed);
for (int i = 0; i < ChartView.NUM_SERIES; i++) { for (int i = 0; i < ChartView.NUM_SERIES; i++) {
settingsDialog.setSeriesEnabled(i, chartView.isChartValueSeriesEnabled(i)); settingsDialog.setSeriesEnabled(i, chartView.isChartValueSeriesEnabled(i));
} }
@@ -452,26 +453,33 @@ public class ChartActivity extends Activity implements TrackDataListener {
@Override @Override
public boolean onUnitsChanged(boolean metric) { public boolean onUnitsChanged(boolean metric) {
boolean changed = metric != this.metricUnits; if (metricUnits == metric) {
if (!changed) return false; return false;
}
this.metricUnits = metric; metricUnits = metric;
chartView.setMetricUnits(metricUnits);
chartView.setMetricUnits(metric); runOnUiThread(new Runnable() {
@Override
return true; // Reload data public void run() {
chartView.requestLayout();
}
});
return true;
} }
@SuppressWarnings("hiding")
@Override @Override
public boolean onReportSpeedChanged(boolean reportSpeed) { public boolean onReportSpeedChanged(boolean speed) {
boolean changed = reportSpeed != this.reportSpeed; if (reportSpeed == speed) {
if (!changed) return false; return false;
}
this.reportSpeed = reportSpeed; reportSpeed = speed;
chartView.setReportSpeed(speed, this);
chartView.setReportSpeed(reportSpeed, this); runOnUiThread(new Runnable() {
@Override
return true; // Reload data public void run() {
chartView.requestLayout();
}
});
return true;
} }
} }
@@ -89,6 +89,15 @@ public class ChartSettingsDialog extends Dialog {
? R.id.chart_settings_by_distance ? R.id.chart_settings_by_distance
: R.id.chart_settings_by_time); : R.id.chart_settings_by_time);
} }
/**
* Sets whether to display speed or pace.
*
* @param displaySpeed true to display speed
*/
public void setDisplaySpeed(boolean displaySpeed) {
series[ChartView.SPEED_SERIES].setText(displaySpeed ? R.string.stat_speed : R.string.stat_pace);
}
public void setSeriesEnabled(int seriesIdx, boolean enabled) { public void setSeriesEnabled(int seriesIdx, boolean enabled) {
series[seriesIdx].setChecked(enabled); series[seriesIdx].setChecked(enabled);
@@ -91,7 +91,7 @@ public class ChartView extends View {
*/ */
private int bottomBorder; private int bottomBorder;
private static final int RIGHT_BORDER = 17; private static final int RIGHT_BORDER = 40;
/** Space to leave for drawing the unit labels */ /** Space to leave for drawing the unit labels */
private static final int UNIT_BORDER = 15; private static final int UNIT_BORDER = 15;
@@ -116,7 +116,7 @@ public class ImportAllTracks {
Log.i(Constants.TAG, "ImportAllTracks: Releasing wake lock."); Log.i(Constants.TAG, "ImportAllTracks: Releasing wake lock.");
} }
activity.runOnUiThread(new Thread() { activity.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
showDoneDialog(); showDoneDialog();
@@ -219,7 +219,7 @@ public class ImportAllTracks {
* Attempts to import a GPX file. Returns true on success, issues error * Attempts to import a GPX file. Returns true on success, issues error
* notifications and returns false on failure. * notifications and returns false on failure.
*/ */
private boolean importFile(File gpxFile, MyTracksProviderUtils providerUtils) { private boolean importFile(final File gpxFile, MyTracksProviderUtils providerUtils) {
Log.i(Constants.TAG, "ImportAllTracks: importing: " + gpxFile.getName()); Log.i(Constants.TAG, "ImportAllTracks: importing: " + gpxFile.getName());
try { try {
importedTrackIds = GpxImporter.importGPXFile(new FileInputStream(gpxFile), providerUtils); importedTrackIds = GpxImporter.importGPXFile(new FileInputStream(gpxFile), providerUtils);
@@ -234,8 +234,13 @@ public class ImportAllTracks {
} catch (IOException e) { } catch (IOException e) {
Log.w(Constants.TAG, "Error reading file: " + gpxFile.getAbsolutePath(), e); Log.w(Constants.TAG, "Error reading file: " + gpxFile.getAbsolutePath(), e);
} }
Toast.makeText(activity, activity.getString(R.string.import_error, gpxFile.getName()), activity.runOnUiThread(new Runnable() {
Toast.LENGTH_LONG).show(); @Override
public void run() {
Toast.makeText(activity, activity.getString(R.string.import_error, gpxFile.getName()),
Toast.LENGTH_LONG).show();
}
});
return false; return false;
} }
@@ -118,7 +118,8 @@ public class StatsActivity extends Activity implements TrackDataListener {
sv.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_INSET); sv.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_INSET);
showUnknownLocation(); showUnknownLocation();
updateLabels();
DisplayMetrics metrics = new DisplayMetrics(); DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (metrics.heightPixels > 600) { if (metrics.heightPixels > 600) {
@@ -153,24 +154,22 @@ public class StatsActivity extends Activity implements TrackDataListener {
@Override @Override
public boolean onUnitsChanged(boolean metric) { public boolean onUnitsChanged(boolean metric) {
// Ignore if unchanged. if (utils.isMetricUnits() == metric) {
if (metric == utils.isMetricUnits()) return false; return false;
}
utils.setMetricUnits(metric); utils.setMetricUnits(metric);
updateLabels(); updateLabels();
return true;
return true; // Reload data
} }
@Override @Override
public boolean onReportSpeedChanged(boolean displaySpeed) { public boolean onReportSpeedChanged(boolean speed) {
// Ignore if unchanged. if (utils.isReportSpeed() == speed) {
if (displaySpeed == utils.isReportSpeed()) return false; return false;
}
utils.setReportSpeed(displaySpeed); utils.setReportSpeed(speed);
updateLabels(); updateLabels();
return true;
return true; // Reload data
} }
private void updateLabels() { private void updateLabels() {
@@ -36,27 +36,40 @@ import android.util.Log;
*/ */
public class DynamicSpeedTrackPathDescriptor public class DynamicSpeedTrackPathDescriptor
implements TrackPathDescriptor, OnSharedPreferenceChangeListener { implements TrackPathDescriptor, OnSharedPreferenceChangeListener {
private int slowSpeed; private int slowSpeed;
private int normalSpeed; private int normalSpeed;
private int speedMargin; private int speedMargin;
private final int speedMarginDefault;
private double averageMovingSpeed; private double averageMovingSpeed;
private final Context context; private final Context context;
public DynamicSpeedTrackPathDescriptor(Context context){ public DynamicSpeedTrackPathDescriptor(Context context){
this.context = context; this.context = context;
speedMarginDefault = Integer.parseInt(
context.getString(R.string.color_mode_dynamic_percentage_default));
SharedPreferences prefs = context.getSharedPreferences( SharedPreferences prefs = context.getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
if (prefs == null) { if (prefs == null) {
speedMargin = 25; speedMargin = speedMarginDefault;
return; return;
} }
prefs.registerOnSharedPreferenceChangeListener(this); prefs.registerOnSharedPreferenceChangeListener(this);
speedMargin = Integer.parseInt(prefs.getString( speedMargin = getSpeedMargin(prefs);
context.getString(R.string.track_color_mode_dynamic_speed_variation_key), "25"));
} }
private 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;
}
}
/** /**
* Get the slow speed calculated based on the % below the average speed. * Get the slow speed calculated based on the % below the average speed.
* @return The speed limit considered as slow. * @return The speed limit considered as slow.
@@ -88,15 +101,12 @@ public class DynamicSpeedTrackPathDescriptor
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
if (prefs == null) { if (prefs == null) {
speedMargin = 25; speedMargin = speedMarginDefault;
return; return;
} }
speedMargin = speedMargin = getSpeedMargin(prefs);
Integer.parseInt( }
prefs.getString(
context.getString(R.string.track_color_mode_dynamic_speed_variation_key), "25"));
}
@Override @Override
public boolean needsRedraw() { public boolean needsRedraw() {
@@ -34,32 +34,37 @@ import android.util.Log;
public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor, OnSharedPreferenceChangeListener { public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor, OnSharedPreferenceChangeListener {
private int slowSpeed; private int slowSpeed;
private int normalSpeed; private int normalSpeed;
private final int slowDefault;
private final int normalDefault;
private final Context context; private final Context context;
public FixedSpeedTrackPathDescriptor(Context context) { public FixedSpeedTrackPathDescriptor(Context context) {
this.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 prefs = context.getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
if (prefs == null) { if (prefs == null) {
slowSpeed = 9; slowSpeed = slowDefault;
normalSpeed = 17; normalSpeed = normalDefault;
return; return;
} }
prefs.registerOnSharedPreferenceChangeListener(this); prefs.registerOnSharedPreferenceChangeListener(this);
try { try {
slowSpeed = Integer.parseInt(prefs.getString(context.getString( slowSpeed = Integer.parseInt(prefs.getString(context.getString(
R.string.track_color_mode_fixed_speed_slow_key), "9")); R.string.track_color_mode_fixed_speed_slow_key), Integer.toString(slowDefault)));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
slowSpeed = 9; slowSpeed = slowDefault;
} }
try { try {
normalSpeed = Integer.parseInt(prefs.getString(context.getString( normalSpeed = Integer.parseInt(prefs.getString(context.getString(
R.string.track_color_mode_fixed_speed_medium_key), "17")); R.string.track_color_mode_fixed_speed_medium_key), Integer.toString(normalDefault)));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
normalSpeed = 17; normalSpeed = normalDefault;
} }
} }
@@ -90,22 +95,22 @@ public class FixedSpeedTrackPathDescriptor implements TrackPathDescriptor, OnSha
SharedPreferences prefs = context.getSharedPreferences( SharedPreferences prefs = context.getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
if (prefs == null) { if (prefs == null) {
slowSpeed = 9; slowSpeed = slowDefault;
normalSpeed = 17; normalSpeed = normalDefault;
return; return;
} }
try { try {
slowSpeed = Integer.parseInt(prefs.getString(context.getString( slowSpeed = Integer.parseInt(prefs.getString(context.getString(
R.string.track_color_mode_fixed_speed_slow_key), "9")); R.string.track_color_mode_fixed_speed_slow_key), Integer.toString(slowDefault)));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
slowSpeed = 9; slowSpeed = slowDefault;
} }
try { try {
normalSpeed = Integer.parseInt(prefs.getString(context.getString( normalSpeed = Integer.parseInt(prefs.getString(context.getString(
R.string.track_color_mode_fixed_speed_medium_key), "17")); R.string.track_color_mode_fixed_speed_medium_key), Integer.toString(normalDefault)));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
normalSpeed = 17; normalSpeed = normalDefault;
} }
} }
@@ -130,8 +130,8 @@ public class BluetoothSensorManager extends SensorManager {
SharedPreferences prefs = context.getSharedPreferences( SharedPreferences prefs = context.getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
String address = String address =
prefs.getString(context.getString(R.string.bluetooth_sensor_key), null); prefs.getString(context.getString(R.string.bluetooth_sensor_key), "");
if (address == null) { if (address.isEmpty()) {
return; return;
} }
Log.w(Constants.TAG, "Connecting to bluetooth sensor: " + address); Log.w(Constants.TAG, "Connecting to bluetooth sensor: " + address);
@@ -30,7 +30,6 @@ public class EulaUtil {
// Accepting Google mobile terms of service // Accepting Google mobile terms of service
private static final String EULA_PREFERENCE_KEY = "eula.google_mobile_tos_accepted"; private static final String EULA_PREFERENCE_KEY = "eula.google_mobile_tos_accepted";
private static final String COPYRIGHT = "©2011";
private static final String HOST_NAME = "m.google.com"; private static final String HOST_NAME = "m.google.com";
private EulaUtil() {} private EulaUtil() {}
@@ -71,6 +70,6 @@ public class EulaUtil {
+ "\n\n" + "\n\n"
+ footer + footer
+ "\n\n" + "\n\n"
+ COPYRIGHT; + context.getString(R.string.eula_message_copyright);
} }
} }