diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml
index 7f32148dc..d9edc8c60 100755
--- a/MyTracks/AndroidManifest.xml
+++ b/MyTracks/AndroidManifest.xml
@@ -181,16 +181,6 @@ limitations under the License.
-
-
-
-
-
-
-
-
diff --git a/MyTracks/src/com/google/android/apps/mytracks/DeleteAllTracks.java b/MyTracks/src/com/google/android/apps/mytracks/DeleteAllTracks.java
deleted file mode 100644
index 776f4bbd2..000000000
--- a/MyTracks/src/com/google/android/apps/mytracks/DeleteAllTracks.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2008 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.content.MyTracksProviderUtils;
-import com.google.android.apps.mytracks.util.ApiAdapterFactory;
-import com.google.android.maps.mytracks.R;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-
-/**
- * A utility class that can be used to delete all tracks and track points
- * from the provider, including asking for confirmation from the user via
- * a dialog.
- *
- * @author Leif Hendrik Wilden
- */
-public class DeleteAllTracks extends Handler {
-
- private final Context context;
- private final Runnable done;
-
- public DeleteAllTracks(Context context, Runnable done) {
- this.context = context;
- this.done = done;
- }
-
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
-
- AlertDialog dialog = null;
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setMessage(
- context.getString(R.string.track_list_delete_all_confirm_message));
- builder.setTitle(context.getString(R.string.generic_confirm_title));
- builder.setIcon(android.R.drawable.ic_dialog_alert);
- builder.setPositiveButton(context.getString(R.string.generic_yes),
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- Log.w(Constants.TAG, "deleting all!");
- MyTracksProviderUtils.Factory.get(context).deleteAllTracks();
- SharedPreferences prefs = context.getSharedPreferences(
- Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
- Editor editor = prefs.edit();
- // TODO: Go through data manager
- editor.putLong(context.getString(R.string.selected_track_key), -1);
- ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
- if (done != null) {
- Handler h = new Handler();
- h.post(done);
- }
- }
- });
- builder.setNegativeButton(context.getString(R.string.generic_no),
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- }
- });
- dialog = builder.create();
- dialog.show();
- }
-}
diff --git a/MyTracks/src/com/google/android/apps/mytracks/DeleteTrack.java b/MyTracks/src/com/google/android/apps/mytracks/DeleteTrack.java
deleted file mode 100644
index e34d78b49..000000000
--- a/MyTracks/src/com/google/android/apps/mytracks/DeleteTrack.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2011 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 static com.google.android.apps.mytracks.Constants.TAG;
-
-import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
-import com.google.android.apps.mytracks.content.TracksColumns;
-import com.google.android.apps.mytracks.util.ApiAdapterFactory;
-import com.google.android.apps.mytracks.util.UriUtils;
-import com.google.android.maps.mytracks.R;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-/**
- * Activity used to delete a track.
- *
- * @author Rodrigo Damazio
- */
-public class DeleteTrack extends Activity
- implements DialogInterface.OnClickListener, OnCancelListener {
- private static final int CONFIRM_DIALOG = 1;
-
- private MyTracksProviderUtils providerUtils;
-
- private long deleteTrackId;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- providerUtils = MyTracksProviderUtils.Factory.get(this);
-
- Intent intent = getIntent();
- String action = intent.getAction();
- Uri data = intent.getData();
- if (!Intent.ACTION_DELETE.equals(action) ||
- !UriUtils.matchesContentUri(data, TracksColumns.CONTENT_URI)) {
- Log.e(TAG, "Got bad delete intent: " + intent);
- finish();
- }
-
- deleteTrackId = ContentUris.parseId(data);
-
- showDialog(CONFIRM_DIALOG);
- }
-
- @Override
- protected Dialog onCreateDialog(int id) {
- if (id != CONFIRM_DIALOG) {
- Log.e(TAG, "Unknown dialog " + id);
- return null;
- }
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(getString(R.string.track_list_delete_track_confirm_message));
- builder.setTitle(getString(R.string.generic_confirm_title));
- builder.setIcon(android.R.drawable.ic_dialog_alert);
- builder.setPositiveButton(getString(R.string.generic_yes), this);
- builder.setNegativeButton(getString(R.string.generic_no), this);
- builder.setOnCancelListener(this);
- return builder.create();
- }
-
- @Override
- public void onClick(DialogInterface dialogInterface, int which) {
- dialogInterface.dismiss();
- if (which == DialogInterface.BUTTON_POSITIVE) {
- deleteTrack();
- }
- finish();
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- onClick(dialog, DialogInterface.BUTTON_NEGATIVE);
- }
-
- private void deleteTrack() {
- providerUtils.deleteTrack(deleteTrackId);
-
- // If the track we just deleted was selected, unselect it.
- String selectedKey = getString(R.string.selected_track_key);
- SharedPreferences preferences = getSharedPreferences(
- Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
- if (preferences.getLong(selectedKey, -1) == deleteTrackId) {
- Editor editor = preferences.edit().putLong(selectedKey, -1);
- ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
- }
- }
-}
diff --git a/MyTracks/src/com/google/android/apps/mytracks/MapActivity.java b/MyTracks/src/com/google/android/apps/mytracks/MapActivity.java
index 889541efb..424de7dec 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/MapActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/MapActivity.java
@@ -22,13 +22,14 @@ import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.content.TrackDataHub;
import com.google.android.apps.mytracks.content.TrackDataHub.ListenerDataType;
import com.google.android.apps.mytracks.content.TrackDataListener;
-import com.google.android.apps.mytracks.content.TracksColumns;
import com.google.android.apps.mytracks.content.Waypoint;
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.io.sendtogoogle.SendRequest;
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
import com.google.android.apps.mytracks.stats.TripStatistics;
+import com.google.android.apps.mytracks.util.ApiAdapterFactory;
+import com.google.android.apps.mytracks.util.DialogUtils;
import com.google.android.apps.mytracks.util.GeoRect;
import com.google.android.apps.mytracks.util.LocationUtils;
import com.google.android.apps.mytracks.util.PlayTrackUtils;
@@ -38,10 +39,12 @@ import com.google.android.maps.MapView;
import com.google.android.maps.mytracks.R;
import android.app.Dialog;
-import android.content.ContentUris;
+import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
import android.location.Location;
-import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.provider.Settings;
@@ -74,7 +77,8 @@ public class MapActivity extends com.google.android.maps.MapActivity
implements View.OnTouchListener, View.OnClickListener,
TrackDataListener {
- private static final int DIALOG_INSTALL_EARTH = 0;
+ private static final int DIALOG_INSTALL_EARTH_ID = 0;
+ private static final int DIALOG_DELETE_CURRENT_ID = 1;
// Saved instance state keys:
// ---------------------------
@@ -240,8 +244,26 @@ public class MapActivity extends com.google.android.maps.MapActivity
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
- case DIALOG_INSTALL_EARTH:
+ case DIALOG_INSTALL_EARTH_ID:
return PlayTrackUtils.createInstallEarthDialog(this);
+ case DIALOG_DELETE_CURRENT_ID:
+ return DialogUtils.createConfirmationDialog(this,
+ R.string.track_list_delete_track_confirm_message,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ long trackId = dataHub.getSelectedTrackId();
+ MyTracksProviderUtils.Factory.get(MapActivity.this).deleteTrack(trackId);
+ // If the deleted track was selected, unselect it.
+ String selectedTrackKey = getString(R.string.selected_track_key);
+ SharedPreferences sharedPreferences = getSharedPreferences(
+ Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
+ if (sharedPreferences.getLong(selectedTrackKey, -1L) == trackId) {
+ Editor editor = sharedPreferences.edit().putLong(selectedTrackKey, -1L);
+ ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
+ }
+ }
+ });
default:
return null;
}
@@ -490,7 +512,7 @@ public class MapActivity extends com.google.android.maps.MapActivity
PlayTrackUtils.playTrack(this, trackId);
return true;
} else {
- showDialog(DIALOG_INSTALL_EARTH);
+ showDialog(DIALOG_INSTALL_EARTH_ID);
return true;
}
case Constants.MENU_SEND_TO_GOOGLE:
@@ -564,9 +586,7 @@ public class MapActivity extends com.google.android.maps.MapActivity
dataHub.unloadCurrentTrack();
return true;
case Constants.MENU_DELETE:
- Uri uri = ContentUris.withAppendedId(TracksColumns.CONTENT_URI, trackId);
- intent = new Intent(Intent.ACTION_DELETE, uri);
- startActivity(intent);
+ showDialog(DIALOG_DELETE_CURRENT_ID);
return true;
default:
return super.onMenuItemSelected(featureId, item);
diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackList.java b/MyTracks/src/com/google/android/apps/mytracks/TrackList.java
index e3886abdf..66008d043 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/TrackList.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/TrackList.java
@@ -17,6 +17,7 @@ package com.google.android.apps.mytracks;
import static com.google.android.apps.mytracks.Constants.TAG;
+import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.TracksColumns;
import com.google.android.apps.mytracks.io.file.SaveActivity;
import com.google.android.apps.mytracks.io.file.TrackWriterFactory.TrackFileFormat;
@@ -24,6 +25,8 @@ import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
import com.google.android.apps.mytracks.services.ServiceUtils;
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
+import com.google.android.apps.mytracks.util.ApiAdapterFactory;
+import com.google.android.apps.mytracks.util.DialogUtils;
import com.google.android.apps.mytracks.util.PlayTrackUtils;
import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.maps.mytracks.R;
@@ -31,15 +34,13 @@ import com.google.android.maps.mytracks.R;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
-import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
import android.database.Cursor;
-import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
import android.os.Parcelable;
import android.util.Log;
import android.view.ContextMenu;
@@ -68,6 +69,8 @@ public class TrackList extends ListActivity
private static final int DIALOG_INSTALL_EARTH_ID = 0;
private static final int DIALOG_EXPORT_ALL_ID = 1;
+ private static final int DIALOG_DELETE_ALL_ID = 2;
+ private static final int DIALOG_DELETE_CURRENT_ID = 3;
private int contextPosition = -1;
private long trackId = -1;
@@ -254,10 +257,7 @@ public class TrackList extends ListActivity
startActivity(intent);
return true;
case Constants.MENU_DELETE:
- Uri uri = ContentUris.withAppendedId(TracksColumns.CONTENT_URI, trackId);
- intent = new Intent(Intent.ACTION_DELETE)
- .setDataAndType(uri, TracksColumns.CONTENT_ITEMTYPE);
- startActivity(intent);
+ showDialog(DIALOG_DELETE_CURRENT_ID);
return true;
default:
Log.w(TAG, "Unknown menu item: " + item.getItemId() + "(" + item.getTitle() + ")");
@@ -269,8 +269,7 @@ public class TrackList extends ListActivity
public void onClick(View v) {
switch (v.getId()) {
case R.id.tracklist_btn_delete_all: {
- Handler h = new DeleteAllTracks(this, null);
- h.handleMessage(null);
+ showDialog(DIALOG_DELETE_ALL_ID);
break;
}
case R.id.tracklist_btn_export_all: {
@@ -368,6 +367,36 @@ public class TrackList extends ListActivity
.setSingleChoiceItems(choices, 0, null)
.setTitle(R.string.track_list_export_all)
.create();
+ case DIALOG_DELETE_ALL_ID:
+ return DialogUtils.createConfirmationDialog(this,
+ R.string.track_list_delete_all_confirm_message, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ MyTracksProviderUtils.Factory.get(TrackList.this).deleteAllTracks();
+ SharedPreferences sharedPreferences = getSharedPreferences(
+ Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
+ Editor editor = sharedPreferences.edit();
+ // TODO: Go through data manager
+ editor.putLong(getString(R.string.selected_track_key), -1L);
+ ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
+ }
+ });
+ case DIALOG_DELETE_CURRENT_ID:
+ return DialogUtils.createConfirmationDialog(this,
+ R.string.track_list_delete_track_confirm_message, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ MyTracksProviderUtils.Factory.get(TrackList.this).deleteTrack(trackId);
+ // If the deleted track was selected, unselect it.
+ String selectedTrackKey = getString(R.string.selected_track_key);
+ SharedPreferences sharedPreferences = getSharedPreferences(
+ Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
+ if (sharedPreferences.getLong(selectedTrackKey, -1L) == trackId) {
+ Editor editor = sharedPreferences.edit().putLong(selectedTrackKey, -1L);
+ ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
+ }
+ }
+ });
default:
return null;
}