merge heads

This commit is contained in:
Jimmy Shih
2012-05-01 18:05:53 -07:00
parent 52253afd3a
commit 66ba54ffa0
113 changed files with 1122 additions and 1956 deletions
+14 -49
View File
@@ -19,22 +19,18 @@ limitations under the License.
android:versionCode="39" android:versionCode="39"
android:versionName="1.1.16" android:versionName="1.1.16"
package="com.google.android.maps.mytracks" > package="com.google.android.maps.mytracks" >
<!-- Permission to initialize services --> <!-- Permission to initialize services -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- Permissions to record locations --> <!-- Permissions to record locations -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Permissions to access sensors --> <!-- Permissions to access sensors -->
<uses-permission android:name="com.dsi.ant.permission.ANT" /> <uses-permission android:name="com.dsi.ant.permission.ANT" />
<uses-permission android:name="com.dsi.ant.permission.ANT_ADMIN" /> <uses-permission android:name="com.dsi.ant.permission.ANT_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- Permissions to upload tracks --> <!-- Permissions to upload tracks -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
@@ -46,18 +42,14 @@ limitations under the License.
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.wise" /> <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.wise" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.writely" /> <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.writely" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- Permission to read phone state so voice announcement will not interrupt ongoing calls --> <!-- Permission to read phone state so voice announcement will not interrupt ongoing calls -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Permission to write to SD card --> <!-- Permission to write to SD card -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Permissions to access My Tracks data --> <!-- Permissions to access My Tracks data -->
<uses-permission android:name="com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS" /> <uses-permission android:name="com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS" />
<uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" /> <uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" />
<uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" /> <uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
<!-- Permission to receive My Tracks internal broadcasts --> <!-- Permission to receive My Tracks internal broadcasts -->
<permission <permission
android:description="@string/permission_notification_label" android:description="@string/permission_notification_label"
@@ -86,11 +78,9 @@ limitations under the License.
android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA"
android:permissionGroup="android.permission-group.LOCATION" android:permissionGroup="android.permission-group.LOCATION"
android:protectionLevel="dangerous" /> android:protectionLevel="dangerous" />
<uses-sdk <uses-sdk
android:minSdkVersion="7" android:minSdkVersion="7"
android:targetSdkVersion="15" /> android:targetSdkVersion="15" />
<!-- Required features --> <!-- Required features -->
<uses-feature <uses-feature
android:name="android.hardware.location" android:name="android.hardware.location"
@@ -98,7 +88,6 @@ limitations under the License.
<uses-feature <uses-feature
android:name="android.hardware.location.gps" android:name="android.hardware.location.gps"
android:required="true" /> android:required="true" />
<!-- Optional features --> <!-- Optional features -->
<uses-feature <uses-feature
android:name="android.hardware.bluetooth" android:name="android.hardware.bluetooth"
@@ -124,46 +113,38 @@ limitations under the License.
<uses-feature <uses-feature
android:name="android.hardware.touchscreen.multitouch" android:name="android.hardware.touchscreen.multitouch"
android:required="false" /> android:required="false" />
<supports-screens <supports-screens
android:anyDensity="true" android:anyDensity="true"
android:largeScreens="true" android:largeScreens="true"
android:normalScreens="true" android:normalScreens="true"
android:smallScreens="true" android:smallScreens="true"
android:xlargeScreens="true" /> android:xlargeScreens="true" />
<application <application
android:backupAgent="com.google.android.apps.mytracks.io.backup.MyTracksBackupAgent" android:backupAgent="com.google.android.apps.mytracks.io.backup.MyTracksBackupAgent"
android:icon="@drawable/arrow_icon" 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"
android:theme="@style/ThemeSelector" > android:theme="@style/ThemeSelector" >
<!-- For data backup --> <!-- For data backup -->
<meta-data <meta-data
android:name="com.google.android.backup.api_key" android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAIi-_QiwoRSc9_bAC9cmuNXTQyU8ajJmGtKdhskQ" /> android:value="AEdPqrEAAAAIi-_QiwoRSc9_bAC9cmuNXTQyU8ajJmGtKdhskQ" />
<!-- Activities -->
<activity <activity
android:label="@string/menu_aggregated_statistics" android:label="@string/menu_aggregated_statistics"
android:name="com.google.android.apps.mytracks.AggregatedStatsActivity" /> android:name="com.google.android.apps.mytracks.AggregatedStatsActivity" />
<activity android:name="com.google.android.apps.mytracks.ExportActivity"/> <activity android:name="com.google.android.apps.mytracks.ExportActivity" />
<activity <activity
android:label="@string/menu_help" android:label="@string/menu_help"
android:name="com.google.android.apps.mytracks.HelpActivity" /> android:name="com.google.android.apps.mytracks.HelpActivity" />
<activity <activity
android:label="@string/my_tracks_importer" android:label="@string/my_tracks_importer"
android:name="com.google.android.apps.mytracks.ImportActivity" android:name="com.google.android.apps.mytracks.ImportActivity" >
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.ATTACH_DATA" /> <action android:name="android.intent.action.ATTACH_DATA" />
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/gpx" /> <data android:mimeType="application/gpx" />
<data android:mimeType="application/gpx+xml" /> <data android:mimeType="application/gpx+xml" />
<data android:mimeType="application/vnd.google-earth.gpx" /> <data android:mimeType="application/vnd.google-earth.gpx" />
@@ -186,7 +167,6 @@ limitations under the License.
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEARCH" /> <action android:name="android.intent.action.SEARCH" />
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.app.searchable" android:name="android.app.searchable"
android:resource="@xml/search" /> android:resource="@xml/search" />
@@ -196,37 +176,25 @@ limitations under the License.
android:name="com.google.android.apps.mytracks.SensorStateActivity" /> android:name="com.google.android.apps.mytracks.SensorStateActivity" />
<activity <activity
android:label="@string/settings_title" android:label="@string/settings_title"
android:name="com.google.android.apps.mytracks.SettingsActivity" > android:name="com.google.android.apps.mytracks.SettingsActivity" />
<intent-filter>
<category android:name="android.intent.category.PREFERENCE" />
</intent-filter>
</activity>
<activity android:name="com.google.android.apps.mytracks.TrackDetailActivity" /> <activity android:name="com.google.android.apps.mytracks.TrackDetailActivity" />
<activity android:name="com.google.android.apps.mytracks.TrackEditActivity" /> <activity
android:name="com.google.android.apps.mytracks.TrackEditActivity"
android:windowSoftInputMode="stateHidden" />
<activity android:name="com.google.android.apps.mytracks.TrackListActivity" > <activity android:name="com.google.android.apps.mytracks.TrackListActivity" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.app.default_searchable" android:name="android.app.default_searchable"
android:value="com.google.android.apps.mytracks.SearchListActivity" /> android:value="com.google.android.apps.mytracks.SearchListActivity" />
</activity> </activity>
<activity android:name="com.google.android.apps.mytracks.io.backup.BackupActivity"/> <activity android:name="com.google.android.apps.mytracks.io.backup.BackupActivity" />
<activity android:name="com.google.android.apps.mytracks.io.backup.RestoreActivity"/> <activity android:name="com.google.android.apps.mytracks.io.backup.RestoreActivity" />
<activity android:name="com.google.android.apps.mytracks.io.backup.RestoreChooserActivity"/> <activity android:name="com.google.android.apps.mytracks.io.backup.RestoreChooserActivity" />
<activity android:name="com.google.android.apps.mytracks.io.docs.SendDocsActivity" /> <activity android:name="com.google.android.apps.mytracks.io.docs.SendDocsActivity" />
<activity <activity android:name="com.google.android.apps.mytracks.io.file.SaveActivity" />
android:name="com.google.android.apps.mytracks.io.file.SaveActivity"
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.SAVE" />
<data android:mimeType="vnd.android.cursor.item/vnd.google.track" />
</intent-filter>
</activity>
<activity android:name="com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity" /> <activity android:name="com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity" />
<activity <activity
android:label="@string/maps_list_title" android:label="@string/maps_list_title"
@@ -235,7 +203,7 @@ limitations under the License.
<activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.AccountChooserActivity" /> <activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.AccountChooserActivity" />
<activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity" /> <activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity" />
<activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity" /> <activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity" />
<!-- Services -->
<service <service
android:exported="false" android:exported="false"
android:name="com.google.android.apps.mytracks.services.ControlRecordingService" /> android:name="com.google.android.apps.mytracks.services.ControlRecordingService" />
@@ -247,7 +215,7 @@ limitations under the License.
android:label="@string/my_tracks_recording_service" android:label="@string/my_tracks_recording_service"
android:name="com.google.android.apps.mytracks.services.TrackRecordingService" android:name="com.google.android.apps.mytracks.services.TrackRecordingService"
android:permission="com.google.android.apps.mytracks.WRITE_TRACK_DATA" /> android:permission="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
<!-- Receivers -->
<receiver android:name="com.google.android.apps.mytracks.BootReceiver" > <receiver android:name="com.google.android.apps.mytracks.BootReceiver" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.BOOT_COMPLETED" />
@@ -259,12 +227,11 @@ limitations under the License.
<action android:name="com.google.android.apps.mytracks.TRACK_STARTED" /> <action android:name="com.google.android.apps.mytracks.TRACK_STARTED" />
<action android:name="com.google.android.apps.mytracks.TRACK_STOPPED" /> <action android:name="com.google.android.apps.mytracks.TRACK_STOPPED" />
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.appwidget.provider" android:name="android.appwidget.provider"
android:resource="@xml/track_widget_info" /> android:resource="@xml/track_widget_info" />
</receiver> </receiver>
<!-- Providers -->
<!-- My Tracks data provider --> <!-- My Tracks data provider -->
<provider <provider
android:authorities="com.google.android.maps.mytracks" android:authorities="com.google.android.maps.mytracks"
@@ -277,8 +244,6 @@ limitations under the License.
android:authorities="com.google.android.maps.mytracks.search" android:authorities="com.google.android.maps.mytracks.search"
android:exported="false" android:exported="false"
android:name="com.google.android.apps.mytracks.content.SearchEngineProvider" /> android:name="com.google.android.apps.mytracks.content.SearchEngineProvider" />
<uses-library android:name="com.google.android.maps" /> <uses-library android:name="com.google.android.maps" />
</application> </application>
</manifest> </manifest>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+14 -43
View File
@@ -15,64 +15,35 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp" > android:padding="8dp" >
<TextView <TextView
android:drawableLeft="@drawable/arrow_icon" android:drawableLeft="@drawable/arrow_icon"
android:drawablePadding="8dp" android:text="@string/about_copyright_notice"
android:gravity="center" style="@style/TextMedium.WithIcon" />
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/about_copyright_notice" />
<TextView <TextView
android:layout_height="wrap_content" android:text="@string/about_version"
android:layout_width="wrap_content" style="@style/TextLarge" />
style="@android:style/TextAppearance.DeviceDefault.Large"
android:text="@string/about_version" />
<TextView <TextView
android:id="@+id/about_version" android:id="@+id/about_version"
android:layout_height="wrap_content" style="@style/AboutValue" />
android:layout_width="wrap_content"
android:paddingLeft="48dp"
style="@android:style/TextAppearance.DeviceDefault.Medium" />
<TextView <TextView
android:layout_height="wrap_content" android:text="@string/about_support"
android:layout_width="wrap_content" style="@style/TextLarge" />
style="@android:style/TextAppearance.DeviceDefault.Large"
android:text="@string/about_support" />
<TextView <TextView
android:autoLink="web" android:autoLink="web"
android:layout_height="wrap_content" android:text="@string/my_tracks_support_url"
android:layout_width="wrap_content" style="@style/AboutValue" />
android:paddingLeft="48dp"
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/my_tracks_support_url" />
<TextView <TextView
android:layout_height="wrap_content" android:text="@string/about_privacy"
android:layout_width="wrap_content" style="@style/TextLarge" />
style="@android:style/TextAppearance.DeviceDefault.Large"
android:text="@string/about_privacy" />
<TextView <TextView
android:autoLink="web" android:autoLink="web"
android:layout_height="wrap_content" android:text="@string/my_tracks_privacy_url"
android:layout_width="wrap_content" style="@style/AboutValue" />
android:paddingLeft="48dp"
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/my_tracks_privacy_url" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright 2010 Google Inc. Copyright 2012 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@@ -14,6 +14,14 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<gradient android:startColor="#ff999999" android:endColor="#ff777777" android:angle="270"/> style="@style/ScrollView">
</shape> <TableLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:padding="8dp"
android:shrinkColumns="0,2"
android:stretchColumns="0,2" >
<include layout="@layout/stats_core" />
</TableLayout>
</ScrollView>
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/chart_view_layout"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="fill_parent"
android:orientation="vertical" >
</LinearLayout>
<ZoomControls
android:background="@android:color/white"
android:gravity="right"
android:id="@+id/chart_zoom_controls"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:paddingRight="8dp" />
</LinearLayout>
+19 -54
View File
@@ -15,87 +15,52 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp" > android:padding="8dp" >
<TextView <TextView
android:drawableLeft="@drawable/x_axis" android:drawableLeft="@drawable/x_axis"
android:drawablePadding="8dp" android:text="@string/chart_settings_x_axis"
android:gravity="bottom" style="@style/TextLarge.WithIcon" />
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@android:style/TextAppearance.DeviceDefault.Large"
android:text="@string/chart_settings_x_axis" />
<RadioGroup <RadioGroup
android:id="@+id/chart_settings_x" android:id="@+id/chart_settings_x"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" > android:layout_width="wrap_content" >
<RadioButton <RadioButton
android:id="@+id/chart_settings_by_distance" android:id="@+id/chart_settings_by_distance"
android:layout_height="wrap_content" android:text="@string/chart_settings_by_distance"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/chart_settings_by_distance" />
<RadioButton <RadioButton
android:id="@+id/chart_settings_by_time" android:id="@+id/chart_settings_by_time"
android:layout_height="wrap_content" android:text="@string/chart_settings_by_time"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/chart_settings_by_time" />
</RadioGroup> </RadioGroup>
<TextView <TextView
android:drawableLeft="@drawable/y_axis" android:drawableLeft="@drawable/y_axis"
android:drawablePadding="8dp" android:text="@string/chart_settings_y_axis"
android:gravity="bottom" style="@style/TextLarge.WithIcon" />
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@android:style/TextAppearance.DeviceDefault.Large"
android:text="@string/chart_settings_y_axis" />
<CheckBox <CheckBox
android:id="@+id/chart_settings_elevation" android:id="@+id/chart_settings_elevation"
android:layout_height="wrap_content" android:text="@string/stats_elevation"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/stat_elevation" />
<CheckBox <CheckBox
android:id="@+id/chart_settings_speed" android:id="@+id/chart_settings_speed"
android:layout_height="wrap_content" android:text="@string/stats_speed"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/stat_speed" />
<CheckBox <CheckBox
android:id="@+id/chart_settings_power" android:id="@+id/chart_settings_power"
android:layout_height="wrap_content" android:text="@string/sensor_state_power"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/sensor_state_power" />
<CheckBox <CheckBox
android:id="@+id/chart_settings_cadence" android:id="@+id/chart_settings_cadence"
android:layout_height="wrap_content" android:text="@string/sensor_state_cadence"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/sensor_state_cadence" />
<CheckBox <CheckBox
android:id="@+id/chart_settings_heart_rate" android:id="@+id/chart_settings_heart_rate"
android:layout_height="wrap_content" android:text="@string/sensor_state_heart_rate"
android:layout_width="wrap_content" style="@style/TextMedium" />
style="@android:style/TextAppearance.DeviceDefault.Medium"
android:text="@string/sensor_state_heart_rate" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
+6 -23
View File
@@ -14,32 +14,15 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <merge 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:orientation="vertical">
<TextView
android:background="@drawable/list_bar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:padding="5dp"
android:text="@string/maps_list_pick_map"
android:textColor="@color/white"
android:textSize="16sp"/>
<ListView <ListView
android:id="@+id/choose_map_list_view" android:id="@+id/choose_map_list_view"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_width="fill_parent" />
android:layout_width="fill_parent"
android:padding="5dp"/>
<TextView <TextView
android:id="@+id/choose_map_empty_view" android:id="@+id/choose_map_empty_view"
android:gravity="center" style="@style/ListEmptyTextView" >
android:layout_height="fill_parent" </TextView>
android:layout_weight="1" </merge>
android:layout_width="fill_parent"
android:padding="5dp"
android:textColor="@color/red"
android:textSize="16sp"
android:textStyle="bold"/>
</LinearLayout>
+14 -24
View File
@@ -15,33 +15,23 @@ See the License for the specific language governing permissions and
limitations under the License. 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:gravity="center_vertical"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical" android:orientation="vertical"
android:paddingBottom="2dp" android:padding="8dp" >
android:paddingTop="2dp">
<TextView <TextView
android:id="@+id/choose_map_list_item_title" android:id="@+id/choose_map_item_title"
android:layout_height="wrap_content" android:singleLine="true"
android:layout_marginLeft="6dp" style="@style/TextLarge" />
android:layout_marginTop="6dp"
android:layout_width="fill_parent"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
android:singleLine="true"/>
<TextView <TextView
android:id="@+id/choose_map_list_item_description" android:id="@+id/choose_map_item_description"
android:layout_height="wrap_content" android:singleLine="false"
android:layout_marginLeft="6dp" android:textColor="@android:color/secondary_text_dark"
android:layout_width="fill_parent" style="@style/TextSmall" />
android:textSize="14sp"
android:singleLine="true"/>
<TextView <TextView
android:id="@+id/choose_map_list_item_search_status" android:id="@+id/choose_map_item_search_status"
android:layout_height="wrap_content" android:singleLine="true"
android:layout_marginLeft="6dp" style="@style/TextSmall" />
android:layout_width="fill_parent" </LinearLayout>
android:textSize="14sp"
android:singleLine="true"/>
</LinearLayout>
+2 -5
View File
@@ -18,11 +18,8 @@ limitations under the License.
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" > android:orientation="vertical" >
<ScrollView <ScrollView style="@style/ScrollView.WithBottomButtons" >
android:layout_height="0dp" <include layout="@layout/help_content" />
android:layout_weight="1"
android:layout_width="fill_parent" >
<include layout="@layout/welcome" />
</ScrollView> </ScrollView>
<LinearLayout style="@style/BottomButtonBar" > <LinearLayout style="@style/BottomButtonBar" >
<include layout="@layout/help_buttons" /> <include layout="@layout/help_buttons" />
+11 -6
View File
@@ -27,10 +27,13 @@ limitations under the License.
android:orientation="horizontal" > android:orientation="horizontal" >
<TextView <TextView
android:id="@+id/list_item_name" android:id="@+id/list_item_name"
style="@style/ListItemName" /> android:singleLine="true"
style="@style/TextLarge.WithIcon" />
<TextView <TextView
android:id="@+id/list_item_category" android:id="@+id/list_item_category"
style="@style/ListItemCategory" /> android:layout_marginLeft="8dp"
android:singleLine="true"
style="@style/TextSmall" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -39,16 +42,18 @@ limitations under the License.
<TextView <TextView
android:id="@+id/list_item_total_time" android:id="@+id/list_item_total_time"
android:layout_marginRight="8dp" android:layout_marginRight="8dp"
style="@style/ListItemStat" /> style="@style/ListItemStats" />
<TextView <TextView
android:id="@+id/list_item_total_distance" android:id="@+id/list_item_total_distance"
android:layout_marginRight="8dp" android:layout_marginRight="8dp"
style="@style/ListItemStat" /> style="@style/ListItemStats" />
<TextView <TextView
android:id="@+id/list_item_start_time" android:id="@+id/list_item_start_time"
style="@style/ListItemStat" /> style="@style/ListItemStats" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:id="@+id/list_item_description" android:id="@+id/list_item_description"
style="@style/ListItemDescription" /> android:singleLine="false"
android:textColor="@android:color/secondary_text_dark"
style="@style/TextSmall" />
</LinearLayout> </LinearLayout>
+40
View File
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 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.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent" >
<!-- apiKey corresponds to certificate md5: 81:DF:A2:63:53:C7:6B:1E:6C:24:62:D4:91:1C:36:3A -->
<com.google.android.maps.MapView
android:apiKey="0TXoRmxTinrZKQ9JSazj-9A34XX6_lXsRvTpXWA"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/map_view"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
<TextView
android:background="@color/background_warning"
android:drawableLeft="@android:drawable/ic_dialog_alert"
android:gravity="center"
android:id="@+id/map_message"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:padding="8dp"
android:textColor="@android:color/primary_text_dark"
android:visibility="gone"
style="@style/TextMedium.WithIcon" />
</RelativeLayout>
+6 -119
View File
@@ -15,8 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
@@ -24,7 +23,7 @@ limitations under the License.
android:padding="8dp" > android:padding="8dp" >
<TextView <TextView
android:id="@+id/marker_detail_name" android:id="@+id/marker_detail_name"
style="@style/MarkerDetailLabel" /> style="@style/TextLarge" />
<LinearLayout <LinearLayout
android:id="@+id/marker_detail_waypoint_section" android:id="@+id/marker_detail_waypoint_section"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -32,131 +31,19 @@ limitations under the License.
android:orientation="vertical" > android:orientation="vertical" >
<TextView <TextView
android:id="@+id/marker_detail_marker_type" android:id="@+id/marker_detail_marker_type"
style="@style/MarkerDetailLabel" /> style="@style/TextLarge" />
<TextView <TextView
android:id="@+id/marker_detail_description" android:id="@+id/marker_detail_description"
style="@style/MarkerDetailLabel" /> style="@style/TextLarge" />
</LinearLayout> </LinearLayout>
<TableLayout <TableLayout
android:id="@+id/marker_detail_statistics_section" android:id="@+id/marker_detail_statistics_section"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:paddingTop="8dp"
android:shrinkColumns="0,2" android:shrinkColumns="0,2"
android:stretchColumns="0,2" > android:stretchColumns="0,2" >
<!-- Total distance and max speed (fastest pace) --> <include layout="@layout/stats_core" />
<TableRow>
<TextView
android:text="@string/stat_total_distance"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:id="@+id/marker_detail_max_speed_label"
android:layout_column="2"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_total_distance_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_max_speed_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
<!-- Total time and average speed (average pace) -->
<TableRow>
<TextView
android:text="@string/stat_total_time"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:id="@+id/marker_detail_average_speed_label"
android:layout_column="2"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_total_time_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_average_speed_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
<!-- Moving time and average moving speed (average moving pace) -->
<TableRow>
<TextView
android:text="@string/stat_moving_time"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:id="@+id/marker_detail_average_moving_speed_label"
android:layout_column="2"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_moving_time_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_average_moving_speed_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
<!-- Elevation and elevation gain -->
<TableRow>
<TextView
android:text="@string/stat_elevation"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stat_elevation_gain"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_elevation_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_elevation_gain_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
<!-- Min and max elevation -->
<TableRow>
<TextView
android:text="@string/stat_min_elevation"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stat_max_elevation"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_min_elevation_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_max_elevation_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
<!-- Min and max grade -->
<TableRow>
<TextView
android:text="@string/stat_min_grade"
style="@style/MarkerDetailStatisticsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stat_max_grade"
style="@style/MarkerDetailStatisticsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/marker_detail_min_grade_value"
style="@style/MarkerDetailStatisticsValue" />
<TextView style="@style/MarkerDetailStatisticsSpacer" />
<TextView
android:id="@+id/marker_detail_max_grade_value"
style="@style/MarkerDetailStatisticsValue" />
</TableRow>
</TableLayout> </TableLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
+7 -10
View File
@@ -18,10 +18,7 @@ limitations under the License.
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" > android:orientation="vertical" >
<ScrollView <ScrollView style="@style/ScrollView.WithBottomButtons" >
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
@@ -34,7 +31,7 @@ limitations under the License.
android:orientation="vertical" > android:orientation="vertical" >
<TextView <TextView
android:text="@string/marker_edit_type" android:text="@string/marker_edit_type"
style="@style/EditLabel" /> style="@style/TextMedium" />
<RadioGroup <RadioGroup
android:id="@+id/marker_edit_type" android:id="@+id/marker_edit_type"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -42,16 +39,16 @@ limitations under the License.
<RadioButton <RadioButton
android:id="@+id/marker_edit_type_statistics" android:id="@+id/marker_edit_type_statistics"
android:text="@string/marker_edit_type_statistics" android:text="@string/marker_edit_type_statistics"
style="@style/EditLabel" /> style="@style/TextMedium" />
<RadioButton <RadioButton
android:id="@+id/marker_edit_type_waypoint" android:id="@+id/marker_edit_type_waypoint"
android:text="@string/marker_edit_type_waypoint" android:text="@string/marker_edit_type_waypoint"
style="@style/EditLabel" /> style="@style/TextMedium" />
</RadioGroup> </RadioGroup>
</LinearLayout> </LinearLayout>
<TextView <TextView
android:text="@string/generic_name" android:text="@string/generic_name"
style="@style/EditLabel" /> style="@style/TextMedium" />
<EditText <EditText
android:hint="@string/generic_name" android:hint="@string/generic_name"
android:id="@+id/marker_edit_name" android:id="@+id/marker_edit_name"
@@ -63,7 +60,7 @@ limitations under the License.
android:orientation="vertical" > android:orientation="vertical" >
<TextView <TextView
android:text="@string/marker_edit_marker_type" android:text="@string/marker_edit_marker_type"
style="@style/EditLabel" /> style="@style/TextMedium" />
<AutoCompleteTextView <AutoCompleteTextView
android:hint="@string/marker_edit_marker_type_hint" android:hint="@string/marker_edit_marker_type_hint"
android:id="@+id/marker_edit_marker_type" android:id="@+id/marker_edit_marker_type"
@@ -71,7 +68,7 @@ limitations under the License.
style="@style/EditCategory" /> style="@style/EditCategory" />
<TextView <TextView
android:text="@string/generic_description" android:text="@string/generic_description"
style="@style/EditLabel" /> style="@style/TextMedium" />
<EditText <EditText
android:hint="@string/generic_description" android:hint="@string/generic_description"
android:id="@+id/marker_edit_description" android:id="@+id/marker_edit_description"
+2 -2
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <merge 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" >
<ListView <ListView
@@ -26,4 +26,4 @@ limitations under the License.
android:text="@string/marker_list_empty_message" android:text="@string/marker_list_empty_message"
style="@style/ListEmptyTextView" > style="@style/ListEmptyTextView" >
</TextView> </TextView>
</FrameLayout> </merge>
-57
View File
@@ -1,57 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 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.
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/elevation_root"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<LinearLayout android:id="@+id/elevation_chart"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
<RelativeLayout android:id="@+id/elevation_zoom_layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<ZoomControls android:id="@+id/elevation_zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<LinearLayout android:id="@+id/elevation_busypane"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
android:visibility="gone">
<ProgressBar
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="wrap_content"
android:maxWidth="80dp"
android:maxHeight="80dp"
android:minWidth="80dp"
android:minHeight="80dp"
android:layout_gravity="center"/>
</LinearLayout>
</RelativeLayout>
-62
View File
@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 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.
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:apiKey="0TXoRmxTinrZKQ9JSazj-9A34XX6_lXsRvTpXWA"/>
<!-- corresponding certificate md5: 81:DF:A2:63:53:C7:6B:1E:6C:24:62:D4:91:1C:36:3A -->
<LinearLayout android:id="@+id/messagepane"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:padding="3dp"
android:visibility="gone">
<TextView android:id="@+id/messagetext"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="16dp"
android:textColor="#fff"
android:text="@string/gps_wait_for_fix"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout android:id="@+id/busypane"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
android:visibility="gone">
<ProgressBar
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="wrap_content"
android:maxWidth="80dp"
android:maxHeight="80dp"
android:minWidth="80dp"
android:minHeight="80dp"
android:layout_gravity="center"/>
</LinearLayout>
</RelativeLayout>
+2 -2
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <merge 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" >
<ListView <ListView
@@ -26,4 +26,4 @@ limitations under the License.
android:text="@string/search_list_empty_message" android:text="@string/search_list_empty_message"
style="@style/ListEmptyTextView" > style="@style/ListEmptyTextView" >
</TextView> </TextView>
</FrameLayout> </merge>
+50 -64
View File
@@ -14,67 +14,53 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<LinearLayout <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" style="@style/ScrollView" >
android:layout_height="fill_parent" <LinearLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical"> android:layout_width="fill_parent"
<ScrollView android:orientation="vertical"
android:layout_height="0dp" android:padding="8dp" >
android:layout_weight="1" <TextView
android:layout_width="fill_parent"> android:text="@string/menu_sensor_state"
<LinearLayout style="@style/TextMedium" />
android:layout_height="wrap_content" <TextView
android:layout_width="fill_parent" android:id="@+id/sensor_state"
android:orientation="vertical"> style="@style/SensorStateValue" />
<!-- Last sensor time -->
<!-- Sensor state --> <TextView
<TextView android:text="@string/sensor_state_last_sensor_time"
android:text="@string/menu_sensor_state" style="@style/TextMedium" />
style="@style/SensorStateLabel"/> <TextView
<TextView android:id="@+id/sensor_state_last_sensor_time"
android:id="@+id/sensor_state" style="@style/SensorStateValue" />
style="@style/SensorStateValue"/> <!-- Power -->
<TextView
<!-- Last sensor time --> android:text="@string/sensor_state_power"
<TextView style="@style/TextMedium" />
android:text="@string/sensor_state_last_sensor_time" <TextView
style="@style/SensorStateLabel"/> android:id="@+id/sensor_state_power"
<TextView style="@style/SensorStateValue" />
android:id="@+id/sensor_state_last_sensor_time" <!-- Cadence -->
style="@style/SensorStateValue"/> <TextView
android:text="@string/sensor_state_cadence"
<!-- Power --> style="@style/TextMedium" />
<TextView <TextView
android:text="@string/sensor_state_power" android:id="@+id/sensor_state_cadence"
style="@style/SensorStateLabel"/> style="@style/SensorStateValue" />
<TextView <!-- Heart rate -->
android:id="@+id/sensor_state_power" <TextView
style="@style/SensorStateValue"/> android:text="@string/sensor_state_heart_rate"
style="@style/TextMedium" />
<!-- Cadence --> <TextView
<TextView android:id="@+id/sensor_state_heart_rate"
android:text="@string/sensor_state_cadence" style="@style/SensorStateValue" />
style="@style/SensorStateLabel"/> <!-- Battery level -->
<TextView <TextView
android:id="@+id/sensor_state_cadence" android:text="@string/sensor_state_battery"
style="@style/SensorStateValue"/> style="@style/TextMedium" />
<TextView
<!-- Heart rate --> android:id="@+id/sensor_state_battery"
<TextView style="@style/SensorStateValue" />
android:text="@string/sensor_state_heart_rate" </LinearLayout>
style="@style/SensorStateLabel"/> </ScrollView>
<TextView
android:id="@+id/sensor_state_heart_rate"
style="@style/SensorStateValue"/>
<!-- Battery level -->
<TextView
android:text="@string/sensor_state_battery"
style="@style/SensorStateLabel"/>
<TextView
android:id="@+id/sensor_state_battery"
style="@style/SensorStateValue"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
+39 -344
View File
@@ -14,349 +14,44 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<RelativeLayout <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" style="@style/ScrollView" >
android:id="@+id/stats_root" <TableLayout
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="fill_parent">
<ScrollView
android:id="@+id/scrolly"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent">
<TableLayout
android:id="@+id/stats_table"
android:layout_height="wrap_content"
android:stretchColumns="1,4"
android:layout_width="fill_parent">
<!-- Layout the speed large on it's own line. -->
<TableRow>
<TextView
android:id="@+id/speed_label"
android:layout_span="5"
android:text="@string/stat_speed" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
style="@style/StatsRegister.Big"
android:id="@+id/speed_register"
android:layout_column="1"
android:layout_span="4"/>
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
android:orientation="vertical">
<TextView
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
<TextView
android:id="@+id/speed_unit_label_top"
style="@style/StatsUnit" />
<TextView
style="@style/StatsDivider" />
<TextView
android:id="@+id/speed_unit_label_bottom"
style="@style/StatsUnit" />
</LinearLayout>
</TableRow>
<!-- Total distance and max speed -->
<TableRow
android:padding="1dp">
<TextView
android:id="@+id/total_distance_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_total_distance" />
<TextView
android:id="@+id/max_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_max_speed" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
style="@style/StatsRegister"
android:id="@+id/total_distance_register"
android:layout_column="1" />
<TextView
android:id="@+id/total_distance_unit_label"
android:layout_column="2"
style="@style/StatsUnitSolo" />
<!-- TODO 4/08/2009
The following is a bad hack to get a spacer the same size as the
text. Ideally this should just be a View, however I don't know how to
set the view height properly. fill_parent on this element causes as
NullPointerException. This same filler is repeated on each line.-->
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/max_speed_register"
style="@style/StatsRegister"
android:layout_column="4" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
android:orientation="vertical">
<TextView
android:id="@+id/max_speed_unit_label_top"
style="@style/StatsUnit" />
<TextView
style="@style/StatsDivider" />
<TextView
android:id="@+id/max_speed_unit_label_bottom"
style="@style/StatsUnit" />
</LinearLayout>
</TableRow>
<!-- Total time and average speed -->
<TableRow>
<TextView
android:id="@+id/track_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_total_time" />
<TextView
android:id="@+id/average_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_average_speed" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/total_time_register"
android:layout_column="1"
android:layout_height="wrap_content"
android:layout_span="2"
android:layout_width="fill_parent"
style="@style/StatsRegister" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/average_speed_register"
android:layout_column="4"
style="@style/StatsRegister" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
android:orientation="vertical">
<TextView
android:id="@+id/average_speed_unit_label_top"
style="@style/StatsUnit" />
<TextView
style="@style/StatsDivider" />
<TextView
android:id="@+id/average_speed_unit_label_bottom"
style="@style/StatsUnit" />
</LinearLayout>
</TableRow>
<!-- Moving time and average moving speed -->
<TableRow>
<TextView
android:id="@+id/moving_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_moving_time" />
<TextView
android:id="@+id/average_moving_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_average_moving_speed" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/moving_time_register"
android:layout_column="1"
android:layout_height="wrap_content"
android:layout_span="2"
android:layout_width="fill_parent"
style="@style/StatsRegister" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/average_moving_speed_register"
style="@style/StatsRegister" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
android:orientation="vertical">
<TextView
android:id="@+id/average_moving_speed_unit_label_top"
style="@style/StatsUnit" />
<TextView
style="@style/StatsDivider" />
<TextView
android:id="@+id/average_moving_speed_unit_label_bottom"
style="@style/StatsUnit" />
</LinearLayout>
</TableRow>
<!-- Elevation and elevation gain -->
<TableRow>
<TextView
android:id="@+id/elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_elevation" />
<TextView
android:id="@+id/elevation_gain_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_elevation_gain" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/elevation_register"
android:layout_column="1"
style="@style/StatsRegister" />
<TextView
android:id="@+id/elevation_unit_label"
android:layout_column="2"
style="@style/StatsUnitSolo" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/elevation_gain_register"
android:layout_column="4"
style="@style/StatsRegister" />
<TextView
android:id="@+id/elevation_gain_unit_label"
android:layout_column="5"
style="@style/StatsUnitSolo" />
</TableRow>
<!-- Min and max elevation -->
<TableRow>
<TextView
android:id="@+id/min_elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_min_elevation" />
<TextView
android:id="@+id/max_elevation_label"
android:layout_column="4"
android:layout_span="3"
android:text="@string/stat_max_elevation" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/min_elevation_register"
android:layout_column="1"
style="@style/StatsRegister" />
<TextView
android:id="@+id/min_elevation_unit_label"
android:layout_column="2"
style="@style/StatsUnitSolo" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/max_elevation_register"
android:layout_column="4"
style="@style/StatsRegister" />
<TextView
android:id="@+id/max_elevation_unit_label"
android:layout_column="5"
style="@style/StatsUnitSolo" />
</TableRow>
<!-- Min and max grade -->
<TableRow>
<TextView
android:id="@+id/min_grade_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_min_grade" />
<TextView
android:id="@+id/max_grade_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_max_grade" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/min_grade_register"
android:layout_column="1"
android:layout_span="2"
style="@style/StatsRegister" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"/>
<TextView
android:id="@+id/max_grade_register"
android:layout_column="4"
android:layout_span="2"
style="@style/StatsRegister" />
</TableRow>
<!-- Latitude and Longitude -->
<TableRow>
<TextView
android:layout_column="1"
android:layout_span="3"
android:text="@string/stat_latitude" />
<TextView
android:layout_column="4"
android:layout_span="2"
android:text="@string/stat_longitude" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:id="@+id/latitude_register"
android:layout_column="1"
android:layout_span="2"
style="@style/StatsRegister.Small" />
<TextView
style="@style/StatsSpacer"
android:layout_column="3"
android:textSize="25sp" />
<TextView
android:id="@+id/longitude_register"
android:layout_column="4"
android:layout_span="2"
style="@style/StatsRegister.Small" />
</TableRow>
</TableLayout>
</ScrollView>
<LinearLayout android:id="@+id/stats_busypane"
android:orientation="vertical"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:padding="8dp"
android:padding="3dp" android:shrinkColumns="0,2"
android:visibility="gone"> android:stretchColumns="0,2" >
<ProgressBar <!-- Speed on one line -->
android:layout_weight="1" <TableRow>
android:layout_height="0dp" <TextView
android:layout_width="wrap_content" android:id="@+id/stats_speed_label"
android:maxWidth="80dp" style="@style/StatsLabel" />
android:maxHeight="80dp" </TableRow>
android:minWidth="80dp" <TableRow>
android:minHeight="80dp" <TextView
android:layout_gravity="center"/> android:id="@+id/stats_speed_value"
</LinearLayout> style="@style/StatsValue" />
</RelativeLayout> </TableRow>
<include layout="@layout/stats_core" />
<!-- Latitude and longitude -->
<TableRow>
<TextView
android:text="@string/stats_latitude"
style="@style/StatsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stats_longitude"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_latitude_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_longitude_value"
style="@style/StatsValue" />
</TableRow>
</TableLayout>
</ScrollView>
+132
View File
@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Total distance and max speed (fastest pace) -->
<TableRow>
<TextView
android:text="@string/stats_total_distance"
style="@style/StatsLabel" />
<TextView
android:id="@+id/stats_max_speed_label"
android:layout_column="2"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_total_distance_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_max_speed_value"
style="@style/StatsValue" />
</TableRow>
<!-- Total time and average speed (average pace) -->
<TableRow>
<TextView
android:text="@string/stats_total_time"
style="@style/StatsLabel" />
<TextView
android:id="@+id/stats_average_speed_label"
android:layout_column="2"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_total_time_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_average_speed_value"
style="@style/StatsValue" />
</TableRow>
<!-- Moving time and average moving speed (average moving pace) -->
<TableRow>
<TextView
android:text="@string/stats_moving_time"
style="@style/StatsLabel" />
<TextView
android:id="@+id/stats_average_moving_speed_label"
android:layout_column="2"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_moving_time_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_average_moving_speed_value"
style="@style/StatsValue" />
</TableRow>
<!-- Elevation and elevation gain -->
<TableRow>
<TextView
android:text="@string/stats_elevation"
style="@style/StatsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stats_elevation_gain"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_elevation_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_elevation_gain_value"
style="@style/StatsValue" />
</TableRow>
<!-- Min and max elevation -->
<TableRow>
<TextView
android:text="@string/stats_min_elevation"
style="@style/StatsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stats_max_elevation"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_min_elevation_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_max_elevation_value"
style="@style/StatsValue" />
</TableRow>
<!-- Min and max grade -->
<TableRow>
<TextView
android:text="@string/stats_min_grade"
style="@style/StatsLabel" />
<TextView
android:layout_column="2"
android:text="@string/stats_max_grade"
style="@style/StatsLabel" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/stats_min_grade_value"
style="@style/StatsValue" />
<TextView style="@style/StatsSpacer" />
<TextView
android:id="@+id/stats_max_grade_value"
style="@style/StatsValue" />
</TableRow>
</merge>
+4 -7
View File
@@ -18,10 +18,7 @@ limitations under the License.
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" > android:orientation="vertical" >
<ScrollView <ScrollView style="@style/ScrollView.WithBottomButtons" >
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
@@ -29,7 +26,7 @@ limitations under the License.
android:padding="8dp" > android:padding="8dp" >
<TextView <TextView
android:text="@string/generic_name" android:text="@string/generic_name"
style="@style/EditLabel" /> style="@style/TextMedium" />
<EditText <EditText
android:drawableLeft="@drawable/track" android:drawableLeft="@drawable/track"
android:hint="@string/generic_name" android:hint="@string/generic_name"
@@ -38,7 +35,7 @@ limitations under the License.
style="@style/EditName" /> style="@style/EditName" />
<TextView <TextView
android:text="@string/track_edit_activity_type" android:text="@string/track_edit_activity_type"
style="@style/EditLabel" /> style="@style/TextMedium" />
<AutoCompleteTextView <AutoCompleteTextView
android:hint="@string/track_edit_activity_type_hint" android:hint="@string/track_edit_activity_type_hint"
android:id="@+id/track_edit_activity_type" android:id="@+id/track_edit_activity_type"
@@ -46,7 +43,7 @@ limitations under the License.
style="@style/EditCategory" /> style="@style/EditCategory" />
<TextView <TextView
android:text="@string/generic_description" android:text="@string/generic_description"
style="@style/EditLabel" /> style="@style/TextMedium" />
<EditText <EditText
android:hint="@string/generic_description" android:hint="@string/generic_description"
android:id="@+id/track_edit_description" android:id="@+id/track_edit_description"
+3 -3
View File
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <merge 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" >
<ListView <ListView
@@ -26,7 +26,7 @@ limitations under the License.
android:id="@+id/track_list_empty" android:id="@+id/track_list_empty"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical"> android:orientation="vertical" >
<TextView <TextView
android:text="@string/track_list_empty_message" android:text="@string/track_list_empty_message"
style="@style/ListEmptyTextView" > style="@style/ListEmptyTextView" >
@@ -40,4 +40,4 @@ limitations under the License.
android:src="@drawable/menu_record_track" android:src="@drawable/menu_record_track"
style="@android:style/Widget.DeviceDefault.ImageButton" /> style="@android:style/Widget.DeviceDefault.ImageButton" />
</LinearLayout> </LinearLayout>
</FrameLayout> </merge>
+60 -66
View File
@@ -14,77 +14,71 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout android:background="@drawable/appwidget_background"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:paddingBottom="5dp"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:paddingRight="10dp" android:paddingRight="10dp"
android:paddingTop="5dp" android:paddingTop="5dp" >
android:paddingBottom="5dp"> <ImageButton
<LinearLayout android:background="@android:color/transparent"
android:contentDescription="@string/my_tracks_app_name"
android:id="@+id/appwidget_button"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="wrap_content"
android:background="@drawable/appwidget_background"> android:paddingLeft="10dp"
<ImageButton android:paddingRight="10dp"
android:id="@+id/appwidget_button" android:src="@drawable/appwidget_button_disabled" />
android:layout_height="fill_parent" <LinearLayout
android:layout_width="wrap_content" android:clickable="true"
android:background="@android:color/transparent" android:id="@+id/appwidget_track_statistics"
android:paddingLeft="10dp" android:layout_height="fill_parent"
android:paddingRight="10dp" android:layout_weight="1"
android:src="@drawable/appwidget_button_disabled" /> android:layout_width="0dp"
android:orientation="vertical"
android:paddingLeft="16dp" >
<LinearLayout <LinearLayout
android:id="@+id/appwidget_track_statistics" android:layout_height="wrap_content"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:layout_width="0dp" android:orientation="horizontal" >
android:layout_weight="1" <TextView
android:clickable="true" android:id="@+id/appwidget_distance_text"
android:orientation="vertical" style="@style/TrackWidgetValue" />
android:paddingLeft="15dp"> <TextView
<LinearLayout android:text="@string/stats_total_distance"
android:layout_height="wrap_content" style="@style/TextSmall" />
android:layout_width="fill_parent" </LinearLayout>
android:orientation="horizontal"> <LinearLayout
<TextView android:background="@color/appwidget_hr"
style="@style/WidgetTextView.Value" android:layout_height="1dp"
android:id="@+id/appwidget_distance_text" /> android:layout_width="fill_parent" />
<TextView <LinearLayout
style="@style/WidgetTextView" android:layout_height="wrap_content"
android:text="@string/stat_total_distance" /> android:layout_width="fill_parent"
</LinearLayout> android:orientation="horizontal" >
<LinearLayout <TextView
android:layout_width="fill_parent" android:id="@+id/appwidget_time_text"
android:layout_height="1dp" style="@style/TrackWidgetValue" />
android:background="@color/appwidget_hr" /> <TextView
<LinearLayout android:text="@string/stats_moving_time"
android:layout_height="wrap_content" style="@style/TextSmall" />
android:layout_width="fill_parent" </LinearLayout>
android:orientation="horizontal" <LinearLayout
android:paddingBottom="2dp"> android:background="@color/appwidget_hr"
<TextView android:layout_height="1dp"
style="@style/WidgetTextView.Value" android:layout_width="fill_parent" />
android:id="@+id/appwidget_time_text" /> <LinearLayout
<TextView android:layout_height="wrap_content"
style="@style/WidgetTextView" android:layout_width="fill_parent"
android:text="@string/stat_moving_time" /> android:orientation="horizontal" >
</LinearLayout> <TextView
<LinearLayout android:id="@+id/appwidget_speed_text"
android:layout_width="fill_parent" style="@style/TrackWidgetValue" />
android:layout_height="1dp" <TextView
android:background="@color/appwidget_hr" /> android:text="@string/stats_speed"
<LinearLayout style="@style/TextSmall" />
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal">
<TextView
style="@style/WidgetTextView.Value"
android:id="@+id/appwidget_speed_text" />
<TextView
style="@style/WidgetTextView"
android:text="@string/stat_speed" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
+14 -28
View File
@@ -15,13 +15,12 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_margin="8dp"
android:layout_width="fill_parent" >
<LinearLayout <LinearLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical" > android:orientation="vertical"
android:padding="8dp" >
<!-- Google Maps result --> <!-- Google Maps result -->
<LinearLayout <LinearLayout
android:id="@+id/upload_result_maps_result" android:id="@+id/upload_result_maps_result"
@@ -36,20 +35,17 @@ limitations under the License.
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:src="@drawable/success" /> android:src="@drawable/success" />
<LinearLayout <LinearLayout
android:layout_gravity="center_vertical"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="8dp" > android:paddingLeft="8dp" >
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_maps" android:text="@string/send_google_maps"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_maps_url" android:text="@string/send_google_maps_url"
style="@android:style/TextAppearance.DeviceDefault.Small" /> style="@style/TextSmall" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- Google Fusion Tables result --> <!-- Google Fusion Tables result -->
@@ -66,20 +62,17 @@ limitations under the License.
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:src="@drawable/success" /> android:src="@drawable/success" />
<LinearLayout <LinearLayout
android:layout_gravity="center_vertical"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="8dp" > android:paddingLeft="8dp" >
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_fusion_tables" android:text="@string/send_google_fusion_tables"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_fusion_tables_url" android:text="@string/send_google_fusion_tables_url"
style="@android:style/TextAppearance.DeviceDefault.Small" /> style="@style/TextSmall" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- Google Docs result --> <!-- Google Docs result -->
@@ -96,36 +89,29 @@ limitations under the License.
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:src="@drawable/success" /> android:src="@drawable/success" />
<LinearLayout <LinearLayout
android:layout_gravity="center_vertical"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="8dp" > android:paddingLeft="8dp" >
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_docs" android:text="@string/send_google_docs"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_docs_url" android:text="@string/send_google_docs_url"
style="@android:style/TextAppearance.DeviceDefault.Small" /> style="@style/TextSmall" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- Footer --> <!-- Footer -->
<TextView <TextView
android:id="@+id/upload_result_success_footer" android:id="@+id/upload_result_success_footer"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="@string/send_google_success_footer" android:text="@string/send_google_success_footer"
style="@android:style/TextAppearance.DeviceDefault.Small" /> style="@style/TextSmall" />
<TextView <TextView
android:id="@+id/upload_result_error_footer" android:id="@+id/upload_result_error_footer"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="@string/send_google_error" android:text="@string/send_google_error"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
+13 -33
View File
@@ -15,27 +15,21 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_width="fill_parent" >
<TableLayout <TableLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:padding="8dp"
android:stretchColumns="1" > android:stretchColumns="1" >
<TableRow android:id="@+id/send_google_maps_row" > <TableRow android:id="@+id/send_google_maps_row" >
<ImageView <ImageView
android:contentDescription="@string/send_google_maps" android:contentDescription="@string/send_google_maps"
android:layout_height="wrap_content" android:src="@drawable/maps_icon"
android:layout_width="wrap_content" style="@style/UploadServiceChooserImageView" />
android:src="@drawable/maps_icon" />
<CheckBox <CheckBox
android:id="@+id/send_google_maps" android:id="@+id/send_google_maps"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_width="0dp"
android:text="@string/send_google_maps" android:text="@string/send_google_maps"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/UploadServiceChooserCheckBox" />
</TableRow> </TableRow>
<TableRow android:id="@+id/send_google_maps_option_row" > <TableRow android:id="@+id/send_google_maps_option_row" >
<RadioGroup <RadioGroup
@@ -45,47 +39,33 @@ limitations under the License.
android:layout_width="0dp" > android:layout_width="0dp" >
<RadioButton <RadioButton
android:id="@+id/send_google_new_map" android:id="@+id/send_google_new_map"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_new_map" android:text="@string/send_google_new_map"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
<RadioButton <RadioButton
android:id="@+id/send_google_existing_map" android:id="@+id/send_google_existing_map"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/send_google_existing_map" android:text="@string/send_google_existing_map"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/TextMedium" />
</RadioGroup> </RadioGroup>
</TableRow> </TableRow>
<TableRow android:id="@+id/send_google_fusion_tables_row" > <TableRow android:id="@+id/send_google_fusion_tables_row" >
<ImageView <ImageView
android:contentDescription="@string/send_google_fusion_tables" android:contentDescription="@string/send_google_fusion_tables"
android:layout_height="wrap_content" android:src="@drawable/googledocs_icon"
android:layout_width="wrap_content" style="@style/UploadServiceChooserImageView" />
android:src="@drawable/googledocs_icon" />
<CheckBox <CheckBox
android:id="@+id/send_google_fusion_tables" android:id="@+id/send_google_fusion_tables"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_width="0dp"
android:text="@string/send_google_fusion_tables" android:text="@string/send_google_fusion_tables"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/UploadServiceChooserCheckBox" />
</TableRow> </TableRow>
<TableRow android:id="@+id/send_google_docs_row" > <TableRow android:id="@+id/send_google_docs_row" >
<ImageView <ImageView
android:contentDescription="@string/send_google_docs" android:contentDescription="@string/send_google_docs"
android:layout_height="wrap_content" android:src="@drawable/googledocs_icon"
android:layout_width="wrap_content" style="@style/UploadServiceChooserImageView" />
android:src="@drawable/googledocs_icon" />
<CheckBox <CheckBox
android:id="@+id/send_google_docs" android:id="@+id/send_google_docs"
android:layout_gravity="center_vertical"
android:layout_height="fill_parent"
android:layout_marginLeft="8dp"
android:layout_width="0dp"
android:text="@string/send_google_docs" android:text="@string/send_google_docs"
style="@android:style/TextAppearance.DeviceDefault.Medium" /> style="@style/UploadServiceChooserCheckBox" />
</TableRow> </TableRow>
</TableLayout> </TableLayout>
</ScrollView> </ScrollView>
+2 -3
View File
@@ -15,7 +15,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" style="@style/ScrollView" >
android:layout_width="fill_parent" > <include layout="@layout/help_content" />
<include layout="@layout/help_content"/>
</ScrollView> </ScrollView>
+3 -3
View File
@@ -18,16 +18,16 @@ limitations under the License.
<item <item
android:icon="@drawable/menu_show_on_map" android:icon="@drawable/menu_show_on_map"
android:id="@+id/list_context_menu_show_on_map" android:id="@+id/list_context_menu_show_on_map"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_show_on_map"/> android:title="@string/menu_show_on_map"/>
<item <item
android:icon="@drawable/menu_edit" android:icon="@drawable/menu_edit"
android:id="@+id/list_context_menu_edit" android:id="@+id/list_context_menu_edit"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_edit"/> android:title="@string/menu_edit"/>
<item <item
android:icon="@drawable/menu_delete" android:icon="@drawable/menu_delete"
android:id="@+id/list_context_menu_delete" android:id="@+id/list_context_menu_delete"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_delete"/> android:title="@string/menu_delete"/>
</menu> </menu>
+2 -2
View File
@@ -18,12 +18,12 @@ limitations under the License.
<item <item
android:icon="@drawable/menu_show_on_map" android:icon="@drawable/menu_show_on_map"
android:id="@+id/marker_detail_show_on_map" android:id="@+id/marker_detail_show_on_map"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_show_on_map"/> android:title="@string/menu_show_on_map"/>
<item <item
android:icon="@drawable/menu_edit" android:icon="@drawable/menu_edit"
android:id="@+id/marker_detail_edit" android:id="@+id/marker_detail_edit"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_edit"/> android:title="@string/menu_edit"/>
<item <item
android:icon="@drawable/menu_delete" android:icon="@drawable/menu_delete"
+1 -1
View File
@@ -18,7 +18,7 @@ limitations under the License.
<item <item
android:icon="@drawable/menu_insert_marker" android:icon="@drawable/menu_insert_marker"
android:id="@+id/marker_list_insert_marker" android:id="@+id/marker_list_insert_marker"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_insert_marker"/> android:title="@string/menu_insert_marker"/>
<item <item
android:actionViewClass="android.widget.SearchView" android:actionViewClass="android.widget.SearchView"
+12 -9
View File
@@ -18,22 +18,22 @@ limitations under the License.
<item <item
android:icon="@drawable/menu_stop_recording" android:icon="@drawable/menu_stop_recording"
android:id="@+id/track_detail_stop_recording" android:id="@+id/track_detail_stop_recording"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_stop_recording"/> android:title="@string/menu_stop_recording"/>
<item <item
android:icon="@drawable/menu_insert_marker" android:icon="@drawable/menu_insert_marker"
android:id="@+id/track_detail_insert_marker" android:id="@+id/track_detail_insert_marker"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_insert_marker"/> android:title="@string/menu_insert_marker"/>
<item <item
android:icon="@drawable/menu_play" android:icon="@drawable/menu_play"
android:id="@+id/track_detail_play" android:id="@+id/track_detail_play"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_play"/> android:title="@string/menu_play"/>
<item <item
android:icon="@drawable/menu_share" android:icon="@drawable/menu_share"
android:id="@+id/track_detail_share" android:id="@+id/track_detail_share"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_share"> android:title="@string/menu_share">
<menu> <menu>
<item <item
@@ -49,13 +49,16 @@ limitations under the License.
</menu> </menu>
</item> </item>
<item <item
android:icon="@drawable/ic_menu_waypoints" android:icon="@drawable/menu_markers"
android:id="@+id/track_detail_markers" android:id="@+id/track_detail_markers"
android:showAsAction="ifRoom"
android:title="@string/menu_markers"/> android:title="@string/menu_markers"/>
<item <item
android:icon="@drawable/menu_send_google"
android:id="@+id/track_detail_send_google" android:id="@+id/track_detail_send_google"
android:title="@string/menu_send_google"/> android:title="@string/menu_send_google"/>
<item <item
android:icon="@drawable/menu_save"
android:id="@+id/track_detail_save" android:id="@+id/track_detail_save"
android:title="@string/menu_save"> android:title="@string/menu_save">
<menu> <menu>
@@ -74,19 +77,19 @@ limitations under the License.
android:id="@+id/track_detail_delete" android:id="@+id/track_detail_delete"
android:title="@string/menu_delete"/> android:title="@string/menu_delete"/>
<item <item
android:icon="@android:drawable/ic_menu_mylocation" android:icon="@drawable/menu_my_location"
android:id="@+id/track_detail_my_location" android:id="@+id/track_detail_my_location"
android:title="@string/menu_my_location"/> android:title="@string/menu_my_location"/>
<item <item
android:icon="@android:drawable/ic_menu_mapmode" android:icon="@drawable/menu_satellite_mode"
android:id="@+id/track_detail_satellite_mode" android:id="@+id/track_detail_satellite_mode"
android:title="@string/menu_satellite_mode"/> android:title="@string/menu_satellite_mode"/>
<item <item
android:icon="@drawable/ic_menu_chartsettings" android:icon="@drawable/menu_chart_settings"
android:id="@+id/track_detail_chart_settings" android:id="@+id/track_detail_chart_settings"
android:title="@string/menu_chart_settings"/> android:title="@string/menu_chart_settings"/>
<item <item
android:icon="@drawable/ic_menu_sensorstatus" android:icon="@drawable/menu_sensor_state"
android:id="@+id/track_detail_sensor_state" android:id="@+id/track_detail_sensor_state"
android:title="@string/menu_sensor_state"/> android:title="@string/menu_sensor_state"/>
<item <item
+6 -2
View File
@@ -18,12 +18,12 @@ limitations under the License.
<item <item
android:icon="@drawable/menu_record_track" android:icon="@drawable/menu_record_track"
android:id="@+id/track_list_record_track" android:id="@+id/track_list_record_track"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_record_track"/> android:title="@string/menu_record_track"/>
<item <item
android:icon="@drawable/menu_stop_recording" android:icon="@drawable/menu_stop_recording"
android:id="@+id/track_list_stop_recording" android:id="@+id/track_list_stop_recording"
android:showAsAction="always" android:showAsAction="ifRoom"
android:title="@string/menu_stop_recording"/> android:title="@string/menu_stop_recording"/>
<item <item
android:actionViewClass="android.widget.SearchView" android:actionViewClass="android.widget.SearchView"
@@ -32,9 +32,11 @@ limitations under the License.
android:showAsAction="always|collapseActionView" android:showAsAction="always|collapseActionView"
android:title="@string/menu_search"/> android:title="@string/menu_search"/>
<item <item
android:icon="@drawable/menu_import_all"
android:id="@+id/track_list_import_all" android:id="@+id/track_list_import_all"
android:title="@string/menu_import_all"/> android:title="@string/menu_import_all"/>
<item <item
android:icon="@drawable/menu_export_all"
android:id="@+id/track_list_export_all" android:id="@+id/track_list_export_all"
android:title="@string/menu_export_all"> android:title="@string/menu_export_all">
<menu> <menu>
@@ -45,9 +47,11 @@ limitations under the License.
</menu> </menu>
</item> </item>
<item <item
android:icon="@drawable/menu_delete_all"
android:id="@+id/track_list_delete_all" android:id="@+id/track_list_delete_all"
android:title="@string/menu_delete_all"/> android:title="@string/menu_delete_all"/>
<item <item
android:icon="@drawable/menu_aggregated_statistics"
android:id="@+id/track_list_aggregated_statistics" android:id="@+id/track_list_aggregated_statistics"
android:title="@string/menu_aggregated_statistics"/> android:title="@string/menu_aggregated_statistics"/>
<item <item
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resources>
<!-- The style for large size text -->
<style name="TextLarge" parent="@android:style/TextAppearance.DeviceDefault.Large">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<!-- The style for medium size text -->
<style name="TextMedium" parent="@android:style/TextAppearance.DeviceDefault.Medium">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<!-- The style for large size text -->
<style name="TextSmall" parent="@android:style/TextAppearance.DeviceDefault.Small">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
</resources>
+3 -3
View File
@@ -17,13 +17,13 @@ limitations under the License.
<resources> <resources>
<color name="black">#FF000000</color> <color name="black">#FF000000</color>
<color name="blue">#FF0000FF</color> <color name="blue">#FF0000FF</color>
<color name="green">#FF00FF00</color>
<color name="gray">#FFAAAAAA</color> <color name="gray">#FFAAAAAA</color>
<color name="red">#FFFF0000</color> <color name="red">#FFFF0000</color>
<color name="stat_label_background">#FFF0F0F0</color>
<color name="stat_label_text">#FF0F0F0F</color>
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<!-- holo_orange_dark -->
<color name="background_warning">#FFFF8800</color>
<!-- Chart colors by series. --> <!-- Chart colors by series. -->
<!-- Green and a transparent green --> <!-- Green and a transparent green -->
<color name="elevation_border">#FF339933</color> <color name="elevation_border">#FF339933</color>
+52 -50
View File
@@ -494,7 +494,7 @@ limitations under the License.
Accuracy (m) Accuracy (m)
</string> </string>
<string name="description_location_altitude" <string name="description_location_altitude"
translation_description="Label for location altitude in degrees."> translation_description="Label for location altitude in meters.">
Altitude (m) Altitude (m)
</string> </string>
<string name="description_location_bearing" <string name="description_location_bearing"
@@ -695,8 +695,8 @@ limitations under the License.
<string name="gps_need_to_enable" <string name="gps_need_to_enable"
translation_description="In the main view, the message on the top asking the user to enable translation_description="In the main view, the message on the top asking the user to enable
GPS."> GPS.">
Please tap here to go to \'Location &amp; security\' settings &amp; check Tap here to go to \'Location services\' settings &amp; check \'GPS satellites\'. Press the back
\'Use GPS satellites\'. Press the back button to return. button to return.
</string> </string>
<string name="gps_not_found" <string name="gps_not_found"
translation_description="On application start, message when there is no GPS on the device."> translation_description="On application start, message when there is no GPS on the device.">
@@ -929,11 +929,6 @@ limitations under the License.
'Maps' list page informing the user that he doesn't have any maps."> 'Maps' list page informing the user that he doesn't have any maps.">
You don\'t have any maps. You don\'t have any maps.
</string> </string>
<string name="maps_list_pick_map"
translation_description="When sending a track to an existing Google Map, the text on the
'Maps' list page asking the user to pick one of his maps.">
Pick a map:
</string>
<string name="maps_list_progress_message" <string name="maps_list_progress_message"
translation_description="When sending a track to an existing Google Map, the progress message translation_description="When sending a track to an existing Google Map, the progress message
informing the user that his maps are being loaded."> informing the user that his maps are being loaded.">
@@ -946,8 +941,8 @@ limitations under the License.
</string> </string>
<string name="maps_list_title" <string name="maps_list_title"
translation_description="When sending a track to an existing Google Map, the title of the translation_description="When sending a track to an existing Google Map, the title of the
page listing the user's maps in Google Maps."> page asking the user to pick a map.">
Your Google Maps Pick a Map
</string> </string>
<string name="maps_list_unlisted_label" <string name="maps_list_unlisted_label"
translation_description="When sending a track to an existing Google Map, in the 'Maps' translation_description="When sending a track to an existing Google Map, in the 'Maps'
@@ -2067,81 +2062,81 @@ limitations under the License.
I think you might be interested in this track:\n\n%1$s I think you might be interested in this track:\n\n%1$s
</string> </string>
<!-- Stat Page --> <!-- Stats Page -->
<string name="stat_average_moving_pace" <string name="stats_average_moving_pace"
translation_description="In the 'Statistics' page, the average moving pace."> translation_description="In the 'Stats' page, the average moving pace.">
Average moving pace Average moving pace
</string> </string>
<string name="stat_average_moving_speed" <string name="stats_average_moving_speed"
translation_description="In the 'Statistics' page, the average moving speed."> translation_description="In the 'Stats' page, the average moving speed.">
Average moving speed Average moving speed
</string> </string>
<string name="stat_average_pace" <string name="stats_average_pace"
translation_description="In the 'Statistics' page, the average pace."> translation_description="In the 'Stats' page, the average pace.">
Average pace Average pace
</string> </string>
<string name="stat_average_speed" <string name="stats_average_speed"
translation_description="In the 'Statistics' page, the average speed."> translation_description="In the 'Stats' page, the average speed.">
Average speed Average speed
</string> </string>
<string name="stat_elevation" <string name="stats_elevation"
translation_description="In the 'Statistics' page, the elevation."> translation_description="In the 'Stats' page, the elevation.">
Elevation Elevation
</string> </string>
<string name="stat_elevation_gain" <string name="stats_elevation_gain"
translation_description="In the 'Statistics' page, the elevation gain."> translation_description="In the 'Stats' page, the elevation gain.">
Elevation gain Elevation gain
</string> </string>
<string name="stat_fastest_pace" <string name="stats_fastest_pace"
translation_description="In the 'Statistics' page, the fastest pace."> translation_description="In the 'Stats' page, the fastest pace.">
Fastest pace Fastest pace
</string> </string>
<string name="stat_latitude" <string name="stats_latitude"
translation_description="In the 'Statistics' page, the latitude."> translation_description="In the 'Stats' page, the latitude.">
Latitude Latitude
</string> </string>
<string name="stat_longitude" <string name="stats_longitude"
translation_description="In the 'Statistics' page, the longitude."> translation_description="In the 'Stats' page, the longitude.">
Longitude Longitude
</string> </string>
<string name="stat_max_elevation" <string name="stats_max_elevation"
translation_description="In the 'Statistics' page, the maximum elevation."> translation_description="In the 'Stats' page, the maximum elevation.">
Max elevation Max elevation
</string> </string>
<string name="stat_max_grade" <string name="stats_max_grade"
translation_description="In the 'Statistics' page, the maximum grade."> translation_description="In the 'Stats' page, the maximum grade.">
Max grade Max grade
</string> </string>
<string name="stat_max_speed" <string name="stats_max_speed"
translation_description="In the 'Statistics' page, the maximum speed."> translation_description="In the 'Stats' page, the maximum speed.">
Max speed Max speed
</string> </string>
<string name="stat_min_elevation" <string name="stats_min_elevation"
translation_description="In the 'Statistics' page, the minimum elevation."> translation_description="In the 'Stats' page, the minimum elevation.">
Min elevation Min elevation
</string> </string>
<string name="stat_min_grade" <string name="stats_min_grade"
translation_description="In the 'Statistics' page, the minimum grade."> translation_description="In the 'Stats' page, the minimum grade.">
Min grade Min grade
</string> </string>
<string name="stat_moving_time" <string name="stats_moving_time"
translation_description="In the 'Statistics' page, the moving time."> translation_description="In the 'Stats' page, the moving time.">
Moving time Moving time
</string> </string>
<string name="stat_pace" <string name="stats_pace"
translation_description="In the 'Statistics' page, the pace like hours per mile."> translation_description="In the 'Stats' page, the pace like hours per mile.">
Pace Pace
</string> </string>
<string name="stat_speed" <string name="stats_speed"
translation_description="In the 'Statistics' page, the speed like miles per hour."> translation_description="In the 'Stats' page, the speed like miles per hour.">
Speed Speed
</string> </string>
<string name="stat_total_distance" <string name="stats_total_distance"
translation_description="In the 'Statistics' page, the total distance."> translation_description="In the 'Stats' page, the total distance.">
Total distance Total distance
</string> </string>
<string name="stat_total_time" <string name="stats_total_time"
translation_description="In the 'Statistics' page, the total time."> translation_description="In the 'Stats' page, the total time.">
Total time Total time
</string> </string>
@@ -2417,7 +2412,14 @@ limitations under the License.
recommended value."> recommended value.">
Smallest (recommended) Smallest (recommended)
</string> </string>
<string name="value_coordinate_degree"
translation_description="To display a latitude or longitude coordinate in degree. E.g.,
2.2 \u00B0. \u00B0 is the unicode value for the degree symbol.
%1$s: a string value of the coordinate. E.g., '2.2'">
%1$s \u00B0
</string>
<!-- Voice --> <!-- Voice -->
<string name="voice_hours_few" <string name="voice_hours_few"
translation_description="For voice announcement, to say 'few' hours. translation_description="For voice announcement, to say 'few' hours.
+99 -169
View File
@@ -15,215 +15,145 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<resources> <resources>
<style name="ThemeSelector" parent="android:Theme" /> <!-- The style for the about value -->
<style name="AboutValue" parent="@style/TextMedium">
<!-- The style for the bottom button bar --> <item name="android:paddingLeft">48dp</item>
<style name="BottomButtonBar" parent="@android:style/DeviceDefault.ButtonBar">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:orientation">horizontal</item>
</style> </style>
<!-- The style for the bottom button --> <!-- The style for the bottom button -->
<style name="BottomButton" parent="@android:style/Widget.DeviceDefault.Button.Borderless"> <style name="BottomButton" parent="@android:style/Widget.DeviceDefault.Button.Borderless">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item> <item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item> <item name="android:layout_width">0dp</item>
</style> </style>
<!-- The style for the edit category --> <!-- The style for the bottom button bar -->
<style name="EditCategory" parent="@android:style/TextAppearance.DeviceDefault.Medium"> <style name="BottomButtonBar" parent="@android:style/DeviceDefault.ButtonBar">
<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:orientation">horizontal</item>
</style>
<!-- The style for the edit category -->
<style name="EditCategory" parent="@style/TextMedium">
<item name="android:layout_width">fill_parent</item> <item name="android:layout_width">fill_parent</item>
<item name="android:selectAllOnFocus">true</item> <item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">true</item> <item name="android:singleLine">true</item>
</style> </style>
<!-- The style for the edit description --> <!-- The style for the edit description -->
<style name="EditDescription" parent="@android:style/TextAppearance.DeviceDefault.Medium"> <style name="EditDescription" parent="@style/TextMedium">
<item name="android:layout_height">wrap_content</item> <item name="android:inputType">textAutoCorrect|textCapSentences</item>
<item name="android:layout_width">fill_parent</item> <item name="android:layout_width">fill_parent</item>
<item name="android:maxLines">50</item>
<item name="android:selectAllOnFocus">true</item> <item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">false</item> <item name="android:singleLine">false</item>
<item name="android:maxLines">50</item>
<item name="android:inputType">textAutoCorrect|textCapSentences</item>
</style>
<!-- The style for the edit label -->
<style name="EditLabel" parent="@android:style/TextAppearance.DeviceDefault.Medium">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style> </style>
<!-- The style for the edit name --> <!-- The style for the edit name -->
<style name="EditName" parent="@android:style/TextAppearance.DeviceDefault.Medium"> <style name="EditName" parent="@style/TextMedium.WithIcon">
<item name="android:layout_height">wrap_content</item> <item name="android:inputType">textAutoCorrect|textCapWords</item>
<item name="android:layout_width">fill_parent</item> <item name="android:layout_width">fill_parent</item>
<item name="android:selectAllOnFocus">true</item> <item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">true</item> <item name="android:singleLine">true</item>
<item name="android:inputType">textAutoCorrect|textCapWords</item> </style>
<!-- The style for the list empty text view -->
<style name="ListEmptyTextView" parent="@style/TextLarge">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:padding">8dp</item>
</style>
<!-- style for the list item stats -->
<style name="ListItemStats" parent="@style/TextSmall">
<item name="android:singleLine">true</item>
<item name="android:textColor">@android:color/secondary_text_dark</item>
</style>
<!-- The style for the scroll view -->
<style name="ScrollView">
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:scrollbarStyle">outsideInset</item>
</style>
<!-- The style for the scroll view with bottom buttons -->
<style name="ScrollView.WithBottomButtons">
<item name="android:layout_height">0dp</item>
<item name="android:layout_weight">1</item>
</style>
<!-- The style for the sensor state value -->
<style name="SensorStateValue" parent="@style/TextLarge">
<item name="android:background">@android:color/background_light</item>
<item name="android:gravity">right</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:paddingRight">8dp</item>
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
<!-- The style for the stats label -->
<style name="StatsLabel" parent="@style/TextMedium">
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
</style>
<!-- The style for the stats spacer -->
<style name="StatsSpacer">
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">8dp</item>
</style>
<!-- The style for the stats value -->
<style name="StatsValue" parent="@style/TextLarge">
<item name="android:background">@android:color/background_light</item>
<item name="android:gravity">right</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
<!-- The style for large size text -->
<style name="TextLarge">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textSize">22sp</item>
</style>
<!-- The style for large size text with an icon on the left -->
<style name="TextLarge.WithIcon">
<item name="android:drawablePadding">8dp</item> <item name="android:drawablePadding">8dp</item>
<item name="android:gravity">center_vertical</item> <item name="android:gravity">center_vertical</item>
</style> </style>
<!-- The style for the list empty text view --> <!-- The style for medium size text -->
<style name="ListEmptyTextView" parent="@android:style/TextAppearance.DeviceDefault.Large"> <style name="TextMedium">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<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">wrap_content</item>
<item name="android:padding">8dp</item> <item name="android:textSize">18sp</item>
</style> </style>
<!-- The style for the list item category --> <!-- The style for medium size text with an icon on the left -->
<style name="ListItemCategory" parent="@android:style/TextAppearance.DeviceDefault.Small"> <style name="TextMedium.WithIcon">
<item name="android:layout_height">wrap_content</item> <item name="android:drawablePadding">8dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:singleLine">true</item>
<item name="android:layout_marginLeft">8dp</item>
</style>
<!-- The style for the list item description -->
<style name="ListItemDescription" parent="@android:style/TextAppearance.DeviceDefault.Small">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:singleLine">false</item>
</style>
<!-- The style for the list item name -->
<style name="ListItemName" parent="@android:style/TextAppearance.DeviceDefault.Large">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:singleLine">true</item>
<item name="android:gravity">center_vertical</item> <item name="android:gravity">center_vertical</item>
<item name="android:paddingLeft">9dp</item>
</style> </style>
<!-- style for the list item stat --> <!-- The style for large size text -->
<style name="ListItemStat" parent="@android:style/TextAppearance.DeviceDefault.Small"> <style name="TextSmall">
<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">wrap_content</item>
<item name="android:singleLine">true</item> <item name="android:textColor">?android:textColorSecondary</item>
<item name="android:textColor">@color/green</item> <item name="android:textSize">14sp</item>
</style> </style>
<!-- The style for the marker detail label --> <!-- Theme selector -->
<style name="MarkerDetailLabel" parent="@android:style/TextAppearance.DeviceDefault.Large"> <style name="ThemeSelector" parent="android:Theme" />
<item name="android:layout_height">wrap_content</item> <!-- The style for the track widget value -->
<item name="android:layout_width">wrap_content</item> <style name="TrackWidgetValue" parent="@style/TextSmall">
<item name="android:width">100dp</item>
</style> </style>
<!-- The style for the marker detail statistics label --> <!-- The style for upload service chooser check box -->
<style name="MarkerDetailStatisticsLabel" parent="@android:style/TextAppearance.DeviceDefault.Medium"> <style name="UploadServiceChooserCheckBox" parent="@style/TextMedium">
<item name="android:layout_height">wrap_content</item> <item name="android:layout_gravity">center_vertical</item>
<item name="android:layout_marginLeft">8dp</item>
<item name="android:layout_width">0dp</item> <item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
</style> </style>
<!-- The style for the marker detail statistics spacer --> <!-- The style for upload service chooser image view -->
<style name="MarkerDetailStatisticsSpacer"> <style name="UploadServiceChooserImageView">
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">8dp</item>
</style>
<!-- The style for the marker detail statistics value -->
<style name="MarkerDetailStatisticsValue" parent="@android:style/TextAppearance.DeviceDefault.Large">
<item name="android:gravity">right</item>
<item name="android:textColor">@color/stat_label_text</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
<item name="android:background">@android:color/background_light</item>
</style>
<style name="SensorStateLabel">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:paddingRight">4dp</item>
</style>
<style name="SensorStateValue">
<item name="android:background">@color/stat_label_background</item>
<item name="android:gravity">right</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:textColor">@color/stat_label_text</item>
<item name="android:textSize">40sp</item>
</style>
<!-- The style for a view which divides the numerator and denominator of the units on the statistics activity. -->
<style name="StatsDivider" parent="@android:Widget.TextView">
<item name="android:background">@color/black</item>
<item name="android:layout_height">3dp</item>
<item name="android:layout_width">fill_parent</item>
</style>
<!-- The style for a text view for displaying a value on the statistics activity. -->
<style name="StatsRegister" parent="@android:Widget.TextView">
<item name="android:gravity">right</item>
<item name="android:layout_marginBottom">-9dp</item>
<item name="android:layout_marginTop">-9dp</item>
<item name="android:text">@string/value_unknown</item>
<item name="android:textColor">@color/stat_label_text</item>
<item name="android:textSize">40sp</item>
</style>
<!-- The style for a text view for displaying a large value on the statistics activity. -->
<style name="StatsRegister.Big">
<item name="android:layout_marginBottom">-13dp</item>
<item name="android:layout_marginTop">-13dp</item>
<item name="android:textSize">50sp</item>
</style>
<!-- The style for a text view for displaying a small value on the statistics activity. -->
<style name="StatsRegister.Small">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginBottom">-5dp</item>
<item name="android:layout_marginTop">-5dp</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:textSize">25sp</item>
</style>
<!-- The style for a view which divides two columns in the statistics activity. -->
<style name="StatsSpacer" parent="@android:Widget.TextView">
<item name="android:background">@color/black</item>
<item name="android:layout_marginBottom">-9dp</item>
<item name="android:layout_marginTop">-9dp</item>
<item name="android:layout_width">5dp</item>
<item name="android:textSize">40sp</item>
</style>
<!-- The style for the unit on the statistics activity. -->
<style name="StatsUnit" parent="@android:Widget.TextView">
<item name="android:gravity">bottom</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginBottom">-2dp</item>
<item name="android:layout_marginTop">-2dp</item>
<item name="android:layout_width">wrap_content</item> <item name="android:layout_width">wrap_content</item>
<item name="android:textColor">@color/stat_label_text</item>
</style> </style>
<!-- The style for the unit on the statistics activity where there is only one string. -->
<style name="StatsUnitSolo" parent="@android:Widget.TextView">
<item name="android:gravity">right</item>
<item name="android:layout_marginBottom">-9dp</item>
<item name="android:layout_marginTop">-9dp</item>
<item name="android:textColor">@color/stat_label_text</item>
</style>
<!-- The style for the welcome page answer --> <!-- The style for the welcome page answer -->
<style name="WelcomeAnswerTextView" parent="@android:style/TextAppearance.DeviceDefault.Small"> <style name="WelcomeAnswerTextView" parent="@style/TextSmall">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:paddingBottom">8dp</item> <item name="android:paddingBottom">8dp</item>
</style> </style>
<!-- The style for welcome page question --> <!-- The style for welcome page question -->
<style name="WelcomeQuestionTextView" parent="@android:style/TextAppearance.DeviceDefault.Medium"> <style name="WelcomeQuestionTextView" parent="@style/TextMedium">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textStyle">bold</item>
<item name="android:paddingTop">8dp</item> <item name="android:paddingTop">8dp</item>
<item name="android:textStyle">bold</item>
</style> </style>
</resources>
<!-- Widget TextView -->
<style name="WidgetTextView">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textColor">@color/appwidget_text</item>
<item name="android:textSize">14sp</item>
</style>
<!-- Widget TextView value -->
<style name="WidgetTextView.Value">
<item name="android:width">160px</item>
</style>
</resources>
@@ -0,0 +1,55 @@
/*
* 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;
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.FragmentActivity;
import android.view.MenuItem;
/**
* An abstract class for all My Tracks activities.
*
* @author Jimmy Shih
*/
public class AbstractMyTracksActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != android.R.id.home) {
return super.onOptionsItemSelected(item);
}
onHomeSelected();
return true;
}
/**
* Callback when the home menu item is selected.
*/
protected void onHomeSelected() {
finish();
}
}
@@ -1,129 +1,68 @@
/*
* 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; package com.google.android.apps.mytracks;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.stats.TripStatistics; import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.apps.mytracks.util.ApiAdapterFactory; import com.google.android.apps.mytracks.util.StatsUtils;
import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MenuItem;
import android.widget.ScrollView;
import android.widget.TextView;
import java.util.List; import java.util.List;
/** /**
* Activity for viewing the combined statistics for all the recorded tracks. * An activity to view aggregated stats from all recorded tracks.
*
* Other features to add - menu items to change setings.
* *
* @author Fergus Nelson * @author Fergus Nelson
*/ */
public class AggregatedStatsActivity extends Activity implements public class AggregatedStatsActivity extends AbstractMyTracksActivity {
OnSharedPreferenceChangeListener {
private final StatsUtilities utils;
private MyTracksProviderUtils tracksProvider;
private boolean metricUnits = true;
public AggregatedStatsActivity() {
this.utils = new StatsUtilities(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Log.d(Constants.TAG, "StatsActivity: onSharedPreferences changed "
+ key);
if (key != null) {
if (key.equals(getString(R.string.metric_units_key))) {
metricUnits = sharedPreferences.getBoolean(
getString(R.string.metric_units_key), true);
utils.setMetricUnits(metricUnits);
utils.updateUnits();
loadAggregatedStats();
}
}
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.aggregated_stats);
this.tracksProvider = MyTracksProviderUtils.Factory.get(this);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.stats);
ScrollView sv = ((ScrollView) findViewById(R.id.scrolly));
sv.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_INSET);
SharedPreferences preferences = getSharedPreferences( SharedPreferences preferences = getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
if (preferences != null) { boolean metricUnits = preferences.getBoolean(getString(R.string.metric_units_key), true);
metricUnits = preferences.getBoolean(getString(R.string.metric_units_key), true); boolean reportSpeed = preferences.getBoolean(getString(R.string.report_speed_key), true);
preferences.registerOnSharedPreferenceChangeListener(this);
}
utils.setMetricUnits(metricUnits);
utils.updateUnits();
utils.setSpeedLabel(R.id.speed_label, R.string.stat_speed, R.string.stat_pace);
utils.setSpeedLabels();
DisplayMetrics metrics = new DisplayMetrics(); StatsUtils.setSpeedLabels(this, reportSpeed, false);
getWindowManager().getDefaultDisplay().getMetrics(metrics); StatsUtils.setTripStatisticsValues(this, getTripStatistics(), metricUnits, reportSpeed);
if (metrics.heightPixels > 600) { StatsUtils.setLocationElevationValue(this, Double.NaN, metricUnits);
((TextView) findViewById(R.id.speed_register)).setTextSize(80.0f);
}
loadAggregatedStats();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != android.R.id.home) {
return false;
}
Intent intent = IntentUtils.newIntent(this, TrackListActivity.class);
startActivity(intent);
return true;
} }
/** /**
* 1. Reads tracks from the db * Gets the aggregated trip statistics for all the recorded tracks or null if
* 2. Merges the trip stats from the tracks * there is no track.
* 3. Updates the view
*/ */
private void loadAggregatedStats() { private TripStatistics getTripStatistics() {
List<Track> tracks = retrieveTracks(); List<Track> tracks = MyTracksProviderUtils.Factory.get(this).getAllTracks();
TripStatistics rollingStats = null; TripStatistics tripStatistics = null;
if (!tracks.isEmpty()) { if (!tracks.isEmpty()) {
rollingStats = new TripStatistics(tracks.iterator().next() tripStatistics = new TripStatistics(tracks.iterator().next().getStatistics());
.getStatistics());
for (int i = 1; i < tracks.size(); i++) { for (int i = 1; i < tracks.size(); i++) {
rollingStats.merge(tracks.get(i).getStatistics()); tripStatistics.merge(tracks.get(i).getStatistics());
} }
} }
updateView(rollingStats); return tripStatistics;
}
private List<Track> retrieveTracks() {
return tracksProvider.getAllTracks();
}
private void updateView(TripStatistics aggStats) {
if (aggStats != null) {
utils.setAllStats(aggStats);
}
} }
} }
@@ -215,7 +215,7 @@ public class ChartView extends View {
R.color.elevation_border, R.color.elevation_border,
new ZoomSettings(MAX_INTERVALS, new ZoomSettings(MAX_INTERVALS,
new int[] {5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000}), new int[] {5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000}),
R.string.stat_elevation); R.string.stats_elevation);
series[SPEED_SERIES] = series[SPEED_SERIES] =
new ChartValueSeries(context, new ChartValueSeries(context,
@@ -223,7 +223,7 @@ public class ChartView extends View {
R.color.speed_border, R.color.speed_border,
new ZoomSettings(MAX_INTERVALS, 0, Integer.MIN_VALUE, new ZoomSettings(MAX_INTERVALS, 0, Integer.MIN_VALUE,
new int[] {1, 5, 10, 20, 50}), new int[] {1, 5, 10, 20, 50}),
R.string.stat_speed); R.string.stats_speed);
series[POWER_SERIES] = series[POWER_SERIES] =
new ChartValueSeries(context, new ChartValueSeries(context,
R.color.power_fill, R.color.power_fill,
@@ -270,8 +270,8 @@ public class ChartView extends View {
public void setReportSpeed(boolean reportSpeed, Context c) { public void setReportSpeed(boolean reportSpeed, Context c) {
series[SPEED_SERIES].setTitle(c.getString(reportSpeed series[SPEED_SERIES].setTitle(c.getString(reportSpeed
? R.string.stat_speed ? R.string.stats_speed
: R.string.stat_pace)); : R.string.stats_pace));
} }
private void addDataPointInternal(double[] theData) { private void addDataPointInternal(double[] theData) {
@@ -33,14 +33,6 @@ public abstract class Constants {
*/ */
public static final String SDCARD_TOP_DIR = "MyTracks"; public static final String SDCARD_TOP_DIR = "MyTracks";
/*
* Main screen tab tags:
*/
public static final String MAP_TAB_TAG = "map";
public static final String STATS_TAB_TAG = "stats";
public static final String CHART_TAB_TAG = "chart";
/** /**
* The number of distance readings to smooth to get a stable signal. * The number of distance readings to smooth to get a stable signal.
*/ */
@@ -17,15 +17,9 @@
package com.google.android.apps.mytracks; package com.google.android.apps.mytracks;
import com.google.android.apps.mytracks.fragments.AboutDialogFragment; import com.google.android.apps.mytracks.fragments.AboutDialogFragment;
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.FragmentActivity;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@@ -34,13 +28,11 @@ import android.view.View.OnClickListener;
* *
* @author Sandor Dornbush * @author Sandor Dornbush
*/ */
public class HelpActivity extends FragmentActivity { public class HelpActivity extends AbstractMyTracksActivity {
@Override @Override
public void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.help); setContentView(R.layout.help);
findViewById(R.id.help_ok).setOnClickListener(new OnClickListener() { findViewById(R.id.help_ok).setOnClickListener(new OnClickListener() {
@@ -55,14 +47,4 @@ public class HelpActivity extends FragmentActivity {
} }
}); });
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != android.R.id.home) {
return false;
}
Intent intent = IntentUtils.newIntent(this, TrackListActivity.class);
startActivity(intent);
return true;
}
} }
@@ -19,8 +19,6 @@ package com.google.android.apps.mytracks;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment; import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.apps.mytracks.util.StatsUtils; import com.google.android.apps.mytracks.util.StatsUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
@@ -29,8 +27,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.FragmentActivity;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@@ -42,7 +38,7 @@ import android.widget.TextView;
* *
* @author Leif Hendrik Wilden * @author Leif Hendrik Wilden
*/ */
public class MarkerDetailActivity extends FragmentActivity { public class MarkerDetailActivity extends AbstractMyTracksActivity {
public static final String EXTRA_MARKER_ID = "marker_id"; public static final String EXTRA_MARKER_ID = "marker_id";
private static final String TAG = MarkerDetailActivity.class.getSimpleName(); private static final String TAG = MarkerDetailActivity.class.getSimpleName();
@@ -53,8 +49,6 @@ public class MarkerDetailActivity extends FragmentActivity {
@Override @Override
protected void onCreate(Bundle bundle) { protected void onCreate(Bundle bundle) {
super.onCreate(bundle); super.onCreate(bundle);
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.marker_detail); setContentView(R.layout.marker_detail);
markerId = getIntent().getLongExtra(EXTRA_MARKER_ID, -1L); markerId = getIntent().getLongExtra(EXTRA_MARKER_ID, -1L);
@@ -94,44 +88,9 @@ public class MarkerDetailActivity extends FragmentActivity {
boolean metricUnits = preferences.getBoolean(getString(R.string.metric_units_key), true); boolean metricUnits = preferences.getBoolean(getString(R.string.metric_units_key), true);
boolean reportSpeed = preferences.getBoolean(getString(R.string.report_speed_key), true); boolean reportSpeed = preferences.getBoolean(getString(R.string.report_speed_key), true);
StatsUtils.setSpeedLabel(this, R.id.marker_detail_max_speed_label, R.string.stat_max_speed, StatsUtils.setSpeedLabels(this, reportSpeed, false);
R.string.stat_fastest_pace, reportSpeed); StatsUtils.setTripStatisticsValues(this, waypoint.getStatistics(), metricUnits, reportSpeed);
StatsUtils.setSpeedLabel(this, R.id.marker_detail_average_speed_label, StatsUtils.setLocationElevationValue(this, waypoint.getLocation().getAltitude(), metricUnits);
R.string.stat_average_speed, R.string.stat_average_pace, reportSpeed);
StatsUtils.setSpeedLabel(this, R.id.marker_detail_average_moving_speed_label,
R.string.stat_average_moving_speed, R.string.stat_average_moving_pace, reportSpeed);
TripStatistics tripStatistics = waypoint.getStatistics();
StatsUtils.setDistanceValue(this, R.id.marker_detail_total_distance_value,
tripStatistics.getTotalDistance(), metricUnits);
StatsUtils.setSpeedValue(this, R.id.marker_detail_max_speed_value,
tripStatistics.getMaxSpeed(), reportSpeed, metricUnits);
StatsUtils.setTimeValue(
this, R.id.marker_detail_total_time_value, tripStatistics.getTotalTime());
StatsUtils.setSpeedValue(this, R.id.marker_detail_average_speed_value,
tripStatistics.getAverageSpeed(), reportSpeed, metricUnits);
StatsUtils.setTimeValue(
this, R.id.marker_detail_moving_time_value, tripStatistics.getMovingTime());
StatsUtils.setSpeedValue(this, R.id.marker_detail_average_moving_speed_value,
tripStatistics.getAverageMovingSpeed(), reportSpeed, metricUnits);
StatsUtils.setAltitudeValue(this, R.id.marker_detail_elevation_value,
waypoint.getLocation().getAltitude(), metricUnits);
StatsUtils.setAltitudeValue(this, R.id.marker_detail_elevation_gain_value,
tripStatistics.getTotalElevationGain(), metricUnits);
StatsUtils.setAltitudeValue(this, R.id.marker_detail_min_elevation_value,
tripStatistics.getMinElevation(), metricUnits);
StatsUtils.setAltitudeValue(this, R.id.marker_detail_max_elevation_value,
tripStatistics.getMaxElevation(), metricUnits);
StatsUtils.setGradeValue(
this, R.id.marker_detail_min_grade_value, tripStatistics.getMinGrade());
StatsUtils.setGradeValue(
this, R.id.marker_detail_max_grade_value, tripStatistics.getMaxGrade());
} }
} }
@@ -141,15 +100,17 @@ public class MarkerDetailActivity extends FragmentActivity {
return true; return true;
} }
@Override
protected void onHomeSelected() {
Intent intent = IntentUtils.newIntent(this, MarkerListActivity.class)
.putExtra(MarkerListActivity.EXTRA_TRACK_ID, waypoint.getTrackId());
startActivity(intent);
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
Intent intent; Intent intent;
switch (item.getItemId()) { switch (item.getItemId()) {
case android.R.id.home:
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
.putExtra(MarkerListActivity.EXTRA_TRACK_ID, waypoint.getTrackId());
startActivity(intent);
return true;
case R.id.marker_detail_show_on_map: case R.id.marker_detail_show_on_map:
intent = IntentUtils.newIntent(this, TrackDetailActivity.class) intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
.putExtra(TrackDetailActivity.EXTRA_MARKER_ID, markerId); .putExtra(TrackDetailActivity.EXTRA_MARKER_ID, markerId);
@@ -22,16 +22,12 @@ import com.google.android.apps.mytracks.content.WaypointCreationRequest;
import com.google.android.apps.mytracks.content.WaypointCreationRequest.WaypointType; import com.google.android.apps.mytracks.content.WaypointCreationRequest.WaypointType;
import com.google.android.apps.mytracks.services.ITrackRecordingService; import com.google.android.apps.mytracks.services.ITrackRecordingService;
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils; import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.speech.tts.TextToSpeech;
import android.util.Log; import android.util.Log;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@@ -47,7 +43,7 @@ import android.widget.Toast;
* *
* @author Jimmy Shih * @author Jimmy Shih
*/ */
public class MarkerEditActivity extends Activity { public class MarkerEditActivity extends AbstractMyTracksActivity {
private static final String TAG = MarkerEditActivity.class.getSimpleName(); private static final String TAG = MarkerEditActivity.class.getSimpleName();
@@ -69,8 +65,6 @@ public class MarkerEditActivity extends Activity {
@Override @Override
protected void onCreate(Bundle bundle) { protected void onCreate(Bundle bundle) {
super.onCreate(bundle); super.onCreate(bundle);
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.marker_edit); setContentView(R.layout.marker_edit);
markerId = getIntent().getLongExtra(EXTRA_MARKER_ID, -1L); markerId = getIntent().getLongExtra(EXTRA_MARKER_ID, -1L);
@@ -85,6 +79,8 @@ public class MarkerEditActivity extends Activity {
boolean statistics = checkedId == R.id.marker_edit_type_statistics; boolean statistics = checkedId == R.id.marker_edit_type_statistics;
name.setText( name.setText(
statistics ? R.string.marker_edit_type_statistics : R.string.marker_edit_type_waypoint); statistics ? R.string.marker_edit_type_statistics : R.string.marker_edit_type_waypoint);
// Call selectAll so that all EditText have selectAllOnFocus style.
name.selectAll();
updateUiByMarkerType(statistics); updateUiByMarkerType(statistics);
} }
}); });
@@ -172,15 +168,6 @@ public class MarkerEditActivity extends Activity {
trackRecordingServiceConnection.unbind(); trackRecordingServiceConnection.unbind();
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != android.R.id.home) {
return false;
}
finish();
return true;
}
/** /**
* Adds a marker. * Adds a marker.
*/ */
@@ -33,8 +33,6 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.database.Cursor; import android.database.Cursor;
import android.os.Bundle; import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader; import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
@@ -56,7 +54,7 @@ import android.widget.ListView;
* *
* @author Leif Hendrik Wilden * @author Leif Hendrik Wilden
*/ */
public class MarkerListActivity extends FragmentActivity { public class MarkerListActivity extends AbstractMyTracksActivity {
public static final String EXTRA_TRACK_ID = "track_id"; public static final String EXTRA_TRACK_ID = "track_id";
@@ -111,9 +109,7 @@ public class MarkerListActivity extends FragmentActivity {
return; return;
} }
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.marker_list); setContentView(R.layout.marker_list);
SharedPreferences sharedPreferences = getSharedPreferences( SharedPreferences sharedPreferences = getSharedPreferences(
@@ -198,9 +194,6 @@ public class MarkerListActivity extends FragmentActivity {
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.marker_list_insert_marker: case R.id.marker_list_insert_marker:
Intent intent = IntentUtils.newIntent(this, MarkerEditActivity.class); Intent intent = IntentUtils.newIntent(this, MarkerEditActivity.class);
startActivity(intent); startActivity(intent);
@@ -42,8 +42,6 @@ import android.location.Location;
import android.location.LocationManager; import android.location.LocationManager;
import android.os.Bundle; import android.os.Bundle;
import android.provider.SearchRecentSuggestions; import android.provider.SearchRecentSuggestions;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.FragmentActivity;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
@@ -69,7 +67,7 @@ import java.util.SortedSet;
* *
* @author Rodrigo Damazio * @author Rodrigo Damazio
*/ */
public class SearchListActivity extends FragmentActivity { public class SearchListActivity extends AbstractMyTracksActivity {
private static final String TAG = SearchListActivity.class.getSimpleName(); private static final String TAG = SearchListActivity.class.getSimpleName();
@@ -119,9 +117,7 @@ public class SearchListActivity extends FragmentActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
setContentView(R.layout.search_list); setContentView(R.layout.search_list);
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this); myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
@@ -210,9 +206,6 @@ public class SearchListActivity extends FragmentActivity {
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.search_list_search: case R.id.search_list_search:
return ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this); return ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this);
default: default:

Some files were not shown because too many files have changed in this diff Show More