diff --git a/MyTracks/res/layout/confirm_sharing.xml b/MyTracks/res/layout/confirm_dialog.xml
similarity index 92%
rename from MyTracks/res/layout/confirm_sharing.xml
rename to MyTracks/res/layout/confirm_dialog.xml
index 5c738ca54..bc81c4a97 100644
--- a/MyTracks/res/layout/confirm_sharing.xml
+++ b/MyTracks/res/layout/confirm_dialog.xml
@@ -25,11 +25,11 @@ limitations under the License.
android:paddingRight="10dp"
android:paddingTop="2dp" >
sendToFusionTables
sendToMaps
sensorType
+ showConfirmPlayDialog
showConfrimSharingDialog
splitFrequency
statsShowCoordinate
diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml
index b67bb6dab..2bc85d746 100644
--- a/MyTracks/res/values/strings.xml
+++ b/MyTracks/res/values/strings.xml
@@ -2267,6 +2267,10 @@ limitations under the License.
translation_description="In the track detail page, the title of the tab showing the map.">
Map
+
+ Play in Google Earth will save your track to external storage.
+
Stats
diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java
index e2bc188ef..0cb2d9468 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java
@@ -24,6 +24,7 @@ import com.google.android.apps.mytracks.content.WaypointCreationRequest;
import com.google.android.apps.mytracks.fragments.ChartFragment;
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment;
import com.google.android.apps.mytracks.fragments.ChooseUploadServiceDialogFragment;
+import com.google.android.apps.mytracks.fragments.ConfirmPlayDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
import com.google.android.apps.mytracks.fragments.FrequencyDialogFragment;
@@ -321,12 +322,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
return true;
case R.id.track_detail_play:
if (isEarthInstalled()) {
- AnalyticsUtils.sendPageViews(this, "/action/play");
- intent = IntentUtils.newIntent(this, SaveActivity.class)
- .putExtra(SaveActivity.EXTRA_TRACK_ID, trackId)
- .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) TrackFileFormat.KML)
- .putExtra(SaveActivity.EXTRA_PLAY_TRACK, true);
- startActivity(intent);
+ ConfirmPlayDialogFragment.newInstance(trackId)
+ .show(getSupportFragmentManager(), ConfirmPlayDialogFragment.CONFIRM_PLAY_DIALOG_TAG);
} else {
new InstallEarthDialogFragment().show(
getSupportFragmentManager(), InstallEarthDialogFragment.INSTALL_EARTH_DIALOG_TAG);
diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ConfirmPlayDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ConfirmPlayDialogFragment.java
new file mode 100644
index 000000000..bbdefd619
--- /dev/null
+++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ConfirmPlayDialogFragment.java
@@ -0,0 +1,102 @@
+/*
+ * 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.fragments;
+
+import com.google.android.apps.mytracks.io.file.SaveActivity;
+import com.google.android.apps.mytracks.io.file.TrackWriterFactory.TrackFileFormat;
+import com.google.android.apps.mytracks.util.AnalyticsUtils;
+import com.google.android.apps.mytracks.util.IntentUtils;
+import com.google.android.apps.mytracks.util.PreferencesUtils;
+import com.google.android.maps.mytracks.R;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentActivity;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.TextView;
+
+/**
+ * A DialogFragment to confirm play in Google Earth.
+ *
+ * @author Jimmy Shih
+ */
+public class ConfirmPlayDialogFragment extends DialogFragment {
+
+ public static final String CONFIRM_PLAY_DIALOG_TAG = "confirmPlayDialog";
+ private static final String KEY_TRACK_ID = "trackId";
+
+ private FragmentActivity activity;
+ private CheckBox checkBox;
+
+ public static ConfirmPlayDialogFragment newInstance(long trackId) {
+ Bundle bundle = new Bundle();
+ bundle.putLong(KEY_TRACK_ID, trackId);
+
+ ConfirmPlayDialogFragment confirmPlayDialogFragment = new ConfirmPlayDialogFragment();
+ confirmPlayDialogFragment.setArguments(bundle);
+ return confirmPlayDialogFragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ activity = getActivity();
+ if (!PreferencesUtils.getBoolean(getActivity(), R.string.show_confirm_play_earth_dialog_key,
+ PreferencesUtils.SHOW_CONFIRM_PLAY_DIALOG_DEFAULT)) {
+ dismiss();
+ playTrack();
+ }
+ }
+
+ private void playTrack() {
+ long trackId = getArguments().getLong(KEY_TRACK_ID);
+ AnalyticsUtils.sendPageViews(activity, "/action/play");
+ Intent intent = IntentUtils.newIntent(activity, SaveActivity.class)
+ .putExtra(SaveActivity.EXTRA_TRACK_ID, trackId)
+ .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) TrackFileFormat.KML)
+ .putExtra(SaveActivity.EXTRA_PLAY_TRACK, true);
+ startActivity(intent);
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ View view = activity.getLayoutInflater().inflate(R.layout.confirm_dialog, null);
+ TextView textView = (TextView) view.findViewById(R.id.confirm_dialog_message);
+ textView.setText(R.string.track_detail_play_confirm_message);
+ checkBox = (CheckBox) view.findViewById(R.id.confirm_dialog_check_box);
+
+ return new AlertDialog.Builder(activity)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ PreferencesUtils.setBoolean(
+ activity, R.string.show_confirm_play_earth_dialog_key, !checkBox.isChecked());
+ playTrack();
+ }
+ })
+ .setTitle(R.string.generic_confirm_title)
+ .setView(view)
+ .create();
+ }
+}
\ No newline at end of file
diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/EulaDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/EulaDialogFragment.java
index 7e79a696f..75f758421 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/fragments/EulaDialogFragment.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/EulaDialogFragment.java
@@ -87,7 +87,6 @@ public class EulaDialogFragment extends DialogFragment {
@Override
public void onClick(DialogInterface dialog, int which) {
EulaUtils.setAcceptEula(activity);
- Locale locale = Locale.getDefault();
PreferencesUtils.setBoolean(
activity, R.string.metric_units_key, !Locale.US.equals(Locale.getDefault()));
TrackListActivity trackListActivity = (TrackListActivity) activity;
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java
index f36cf5f7c..413792b48 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java
@@ -120,14 +120,14 @@ public class SaveActivity extends Activity {
@Override
public void onCancel(DialogInterface dialog) {
dialog.dismiss();
- onPostResultDialog();
+ finish();
}
})
.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
- onPostResultDialog();
+ finish();
}
})
.setTitle(success ? R.string.generic_success_title : R.string.generic_error_title);
@@ -163,7 +163,17 @@ public class SaveActivity extends Activity {
this.messageId = aMessageId;
this.savedPath = aSavedPath;
removeDialog(DIALOG_PROGRESS_ID);
- showDialog(DIALOG_RESULT_ID);
+ if (success && playTrack && savedPath != null) {
+ Intent intent = new Intent()
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
+ .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
+ .setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
+ .setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
+ startActivity(intent);
+ finish();
+ } else {
+ showDialog(DIALOG_RESULT_ID);
+ }
}
/**
@@ -186,19 +196,4 @@ public class SaveActivity extends Activity {
progressDialog.setProgress(Math.min(number, max));
}
}
-
- /**
- * To be invoked after showing the result dialog.
- */
- private void onPostResultDialog() {
- if (success && playTrack && savedPath != null) {
- Intent intent = new Intent()
- .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
- .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
- .setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
- .setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
- startActivity(intent);
- }
- finish();
- }
}
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/ConfirmSharingActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/ConfirmSharingActivity.java
index fee36ce7a..73227b0c9 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/ConfirmSharingActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/ConfirmSharingActivity.java
@@ -60,13 +60,13 @@ public class ConfirmSharingActivity extends Activity {
if (id != DIALOG_ID) {
return null;
}
- View view = getLayoutInflater().inflate(R.layout.confirm_sharing, null);
+ View view = getLayoutInflater().inflate(R.layout.confirm_dialog, null);
- TextView textView = (TextView) view.findViewById(R.id.confirm_sharing_text_view);
+ TextView textView = (TextView) view.findViewById(R.id.confirm_dialog_message);
textView.setText(StringUtils.getHtml(
this, R.string.share_track_confirm_message, R.string.maps_public_unlisted_url));
- checkBox = (CheckBox) view.findViewById(R.id.confirm_sharing_check_box);
+ checkBox = (CheckBox) view.findViewById(R.id.confirm_dialog_check_box);
DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int button) {
diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
index e135d7a1f..90decce7a 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java
@@ -76,6 +76,7 @@ public class PreferencesUtils {
public static final String SENSOR_TYPE_DEFAULT = "NONE";
+ public static final boolean SHOW_CONFIRM_PLAY_DIALOG_DEFAULT = true;
public static final boolean SHOW_CONFIRM_SHARING_DIALOG_DEFAULT = true;
public static final int SPLIT_FREQUENCY_DEFAULT = 0;
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsUtilsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsUtilsTest.java
index 65876c7d8..7b532e063 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsUtilsTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/maps/SendMapsUtilsTest.java
@@ -58,7 +58,7 @@ public class SendMapsUtilsTest extends TestCase {
/**
* Test {@link SendMapsUtils#buildMapsMarkerFeature(String, String, String,
- * GeoPoint)} with a title.
+ * Location)} with a title.
*/
public void testBuildMapsMarkerFeature_with_title() {
Location location = new Location("test");
@@ -77,7 +77,7 @@ public class SendMapsUtilsTest extends TestCase {
/**
* Test {@link SendMapsUtils#buildMapsMarkerFeature(String, String, String,
- * GeoPoint)} with an empty title.
+ * Location)} with an empty title.
*/
public void testBuildMapsMarkerFeature_empty_title() {
Location location = new Location("test");
@@ -96,7 +96,7 @@ public class SendMapsUtilsTest extends TestCase {
/**
* Test {@link SendMapsUtils#buildMapsMarkerFeature(String, String, String,
- * GeoPoint)} with a null title.
+ * Location)} with a null title.
*/
public void testBuildMapsMarkerFeature_null_title() {
Location location = new Location("test");