forked from upstream-mirrors/OpenTracks
Modify DeleteMarkerDialogFragment to delete one or multiple markers
This commit is contained in:
@@ -894,11 +894,14 @@ limitations under the License.
|
|||||||
translation_description="When adding a marker, the message indicating success.">
|
translation_description="When adding a marker, the message indicating success.">
|
||||||
A marker was inserted.
|
A marker was inserted.
|
||||||
</string>
|
</string>
|
||||||
<string name="marker_delete_one_marker_confirm_message"
|
<string name="marker_delete_one_confirm_message"
|
||||||
translation_description="When deleting a marker, the confirmation dialog message informing the
|
translation_description="When deleting one marker, the confirmation message.">
|
||||||
user that the marker will be permanently deleted from the device.">
|
|
||||||
The marker will be permanently deleted from the device.
|
The marker will be permanently deleted from the device.
|
||||||
</string>
|
</string>
|
||||||
|
<string name="marker_delete_multiple_confirm_message"
|
||||||
|
translation_description="When deleting multiple markers, the confirmation message.">
|
||||||
|
The markers will be permanently deleted from the device.
|
||||||
|
</string>
|
||||||
<string name="marker_label_end"
|
<string name="marker_label_end"
|
||||||
translation_description="When inserting a marker to indicate the end of a track, the marker's
|
translation_description="When inserting a marker to indicate the end of a track, the marker's
|
||||||
name. E.g., 'track_name (End)'.
|
name. E.g., 'track_name (End)'.
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ 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.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment.DeleteOneMarkerCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||||
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;
|
||||||
@@ -39,8 +39,7 @@ import android.widget.TextView;
|
|||||||
*
|
*
|
||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
*/
|
*/
|
||||||
public class MarkerDetailActivity extends AbstractMyTracksActivity
|
public class MarkerDetailActivity extends AbstractMyTracksActivity implements DeleteMarkerCaller {
|
||||||
implements DeleteOneMarkerCaller {
|
|
||||||
|
|
||||||
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();
|
||||||
@@ -134,9 +133,8 @@ public class MarkerDetailActivity extends AbstractMyTracksActivity
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.marker_detail_delete:
|
case R.id.marker_detail_delete:
|
||||||
DeleteOneMarkerDialogFragment.newInstance(markerId, waypoint.getTrackId()).show(
|
DeleteMarkerDialogFragment.newInstance(new long[] { markerId })
|
||||||
getSupportFragmentManager(),
|
.show(getSupportFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG);
|
||||||
DeleteOneMarkerDialogFragment.DELETE_ONE_MARKER_DIALOG_TAG);
|
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
@@ -144,7 +142,7 @@ public class MarkerDetailActivity extends AbstractMyTracksActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeleteOneMarkerDone() {
|
public void onDeleteMarkerDone() {
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ 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.content.Waypoint.WaypointType;
|
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
||||||
import com.google.android.apps.mytracks.content.WaypointsColumns;
|
import com.google.android.apps.mytracks.content.WaypointsColumns;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment.DeleteOneMarkerCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||||
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
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.ListItemUtils;
|
import com.google.android.apps.mytracks.util.ListItemUtils;
|
||||||
@@ -55,7 +55,7 @@ import android.widget.ListView;
|
|||||||
*
|
*
|
||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
*/
|
*/
|
||||||
public class MarkerListActivity extends AbstractMyTracksActivity implements DeleteOneMarkerCaller {
|
public class MarkerListActivity extends AbstractMyTracksActivity implements DeleteMarkerCaller {
|
||||||
|
|
||||||
public static final String EXTRA_TRACK_ID = "track_id";
|
public static final String EXTRA_TRACK_ID = "track_id";
|
||||||
|
|
||||||
@@ -286,9 +286,8 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.list_context_menu_delete:
|
case R.id.list_context_menu_delete:
|
||||||
DeleteOneMarkerDialogFragment.newInstance(markerId, track.getId()).show(
|
DeleteMarkerDialogFragment.newInstance(new long[] { markerId })
|
||||||
getSupportFragmentManager(),
|
.show(getSupportFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG);
|
||||||
DeleteOneMarkerDialogFragment.DELETE_ONE_MARKER_DIALOG_TAG);
|
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -306,7 +305,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeleteOneMarkerDone() {
|
public void onDeleteMarkerDone() {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ import com.google.android.apps.mytracks.content.SearchEngineProvider;
|
|||||||
import com.google.android.apps.mytracks.content.Track;
|
import com.google.android.apps.mytracks.content.Track;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment.DeleteOneMarkerCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteTrackDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteTrackDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteTrackDialogFragment.DeleteTrackCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteTrackDialogFragment.DeleteTrackCaller;
|
||||||
import com.google.android.apps.mytracks.services.MyTracksLocationManager;
|
import com.google.android.apps.mytracks.services.MyTracksLocationManager;
|
||||||
@@ -75,7 +75,7 @@ import java.util.SortedSet;
|
|||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public class SearchListActivity extends AbstractSendToGoogleActivity
|
public class SearchListActivity extends AbstractSendToGoogleActivity
|
||||||
implements DeleteTrackCaller, DeleteOneMarkerCaller {
|
implements DeleteTrackCaller, DeleteMarkerCaller {
|
||||||
|
|
||||||
private static final String TAG = SearchListActivity.class.getSimpleName();
|
private static final String TAG = SearchListActivity.class.getSimpleName();
|
||||||
|
|
||||||
@@ -351,9 +351,8 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
|
|||||||
return true;
|
return true;
|
||||||
case R.id.list_context_menu_delete:
|
case R.id.list_context_menu_delete:
|
||||||
if (markerId != null) {
|
if (markerId != null) {
|
||||||
DeleteOneMarkerDialogFragment.newInstance(markerId, trackId).show(
|
DeleteMarkerDialogFragment.newInstance(new long[] { markerId }).show(
|
||||||
getSupportFragmentManager(),
|
getSupportFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG);
|
||||||
DeleteOneMarkerDialogFragment.DELETE_ONE_MARKER_DIALOG_TAG);
|
|
||||||
} else {
|
} else {
|
||||||
DeleteTrackDialogFragment.newInstance(false, new long[] { trackId })
|
DeleteTrackDialogFragment.newInstance(false, new long[] { trackId })
|
||||||
.show(getSupportFragmentManager(), DeleteTrackDialogFragment.DELETE_TRACK_DIALOG_TAG);
|
.show(getSupportFragmentManager(), DeleteTrackDialogFragment.DELETE_TRACK_DIALOG_TAG);
|
||||||
@@ -519,7 +518,7 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeleteOneMarkerDone() {
|
public void onDeleteMarkerDone() {
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
+27
-26
@@ -29,67 +29,68 @@ import android.support.v4.app.DialogFragment;
|
|||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A DialogFragment to delete one marker.
|
* A DialogFragment to delete marker.
|
||||||
*
|
*
|
||||||
* @author Jimmy Shih
|
* @author Jimmy Shih
|
||||||
*/
|
*/
|
||||||
public class DeleteOneMarkerDialogFragment extends DialogFragment {
|
public class DeleteMarkerDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for caller of this dialog fragment.
|
* Interface for caller of this dialog fragment.
|
||||||
*
|
*
|
||||||
* @author Jimmy Shih
|
* @author Jimmy Shih
|
||||||
*/
|
*/
|
||||||
public interface DeleteOneMarkerCaller {
|
public interface DeleteMarkerCaller {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when delete one marker is done.
|
* Called when delete marker is done.
|
||||||
*/
|
*/
|
||||||
public void onDeleteOneMarkerDone();
|
public void onDeleteMarkerDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String DELETE_ONE_MARKER_DIALOG_TAG = "deleteOneMarkerDialog";
|
public static final String DELETE_MARKER_DIALOG_TAG = "deleteMarkerDialog";
|
||||||
private static final String KEY_MARKER_ID = "markerId";
|
private static final String KEY_MARKER_IDS = "markerIds";
|
||||||
private static final String KEY_TRACK_ID = "trackId";
|
|
||||||
|
|
||||||
public static DeleteOneMarkerDialogFragment newInstance(long markerId, long trackId) {
|
public static DeleteMarkerDialogFragment newInstance(long[] markerIds) {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(KEY_MARKER_ID, markerId);
|
bundle.putLongArray(KEY_MARKER_IDS, markerIds);
|
||||||
bundle.putLong(KEY_TRACK_ID, trackId);
|
|
||||||
|
|
||||||
DeleteOneMarkerDialogFragment deleteOneMarkerDialogFragment = new DeleteOneMarkerDialogFragment();
|
DeleteMarkerDialogFragment deleteMarkerDialogFragment = new DeleteMarkerDialogFragment();
|
||||||
deleteOneMarkerDialogFragment.setArguments(bundle);
|
deleteMarkerDialogFragment.setArguments(bundle);
|
||||||
return deleteOneMarkerDialogFragment;
|
return deleteMarkerDialogFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeleteOneMarkerCaller caller;
|
private DeleteMarkerCaller caller;
|
||||||
private FragmentActivity fragmentActivity;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Activity activity) {
|
public void onAttach(Activity activity) {
|
||||||
super.onAttach(activity);
|
super.onAttach(activity);
|
||||||
try {
|
try {
|
||||||
caller = (DeleteOneMarkerCaller) activity;
|
caller = (DeleteMarkerCaller) activity;
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
throw new ClassCastException(
|
throw new ClassCastException(
|
||||||
activity.toString() + " must implement " + DeleteOneMarkerCaller.class.getSimpleName());
|
activity.toString() + " must implement " + DeleteMarkerCaller.class.getSimpleName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
fragmentActivity = getActivity();
|
final FragmentActivity fragmentActivity = getActivity();
|
||||||
return DialogUtils.createConfirmationDialog(fragmentActivity,
|
final long[] markerIds = getArguments().getLongArray(KEY_MARKER_IDS);
|
||||||
R.string.marker_delete_one_marker_confirm_message, new DialogInterface.OnClickListener() {
|
int messageId = markerIds.length > 1 ? R.string.marker_delete_multiple_confirm_message
|
||||||
|
: R.string.marker_delete_one_confirm_message;
|
||||||
|
return DialogUtils.createConfirmationDialog(
|
||||||
|
fragmentActivity, messageId, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
MyTracksProviderUtils.Factory.get(fragmentActivity).deleteWaypoint(
|
for (long markerId : markerIds) {
|
||||||
getArguments().getLong(KEY_MARKER_ID),
|
MyTracksProviderUtils.Factory.get(fragmentActivity)
|
||||||
new DescriptionGeneratorImpl(fragmentActivity));
|
.deleteWaypoint(markerId, new DescriptionGeneratorImpl(fragmentActivity));
|
||||||
caller.onDeleteOneMarkerDone();
|
}
|
||||||
|
caller.onDeleteMarkerDone();
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user