From 6188343341cbb5cb83ebbe145e094b80d525b1ff Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 11 Jan 2021 05:36:06 +0200 Subject: [PATCH] Add a delete button to TrackSegmentFragment --- .../plus/myplaces/AvailableGPXFragment.java | 24 ++++++----------- .../plus/myplaces/FavoritesActivity.java | 10 +++++++ .../plus/myplaces/TrackSegmentFragment.java | 27 +++++++++++++++++-- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 9e4ac656a4..6327e3eda1 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -84,8 +84,8 @@ import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.oauth.OsmOAuthHelper.OsmAuthorizationListener; import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.widgets.popup.PopUpMenuItem; import net.osmand.plus.widgets.popup.PopUpMenuHelper; +import net.osmand.plus.widgets.popup.PopUpMenuItem; import java.io.File; import java.text.DateFormat; @@ -105,6 +105,7 @@ import java.util.regex.Pattern; import static net.osmand.plus.GpxSelectionHelper.CURRENT_TRACK; import static net.osmand.plus.myplaces.FavoritesActivity.GPX_TAB; +import static net.osmand.plus.myplaces.FavoritesActivity.OPEN_GPX_REQUEST; import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; import static net.osmand.util.Algorithms.capitalizeFirstLetter; import static net.osmand.util.Algorithms.collectDirs; @@ -426,7 +427,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, f.getAbsolutePath()); } newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - a.startActivity(newIntent); + a.startActivityForResult(newIntent, OPEN_GPX_REQUEST); } public void reloadTracks() { @@ -434,6 +435,10 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement asyncLoader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, getActivity()); } + public void resetTracksLoader() { + asyncLoader = null; + } + @Override public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) { menu.clear(); @@ -1711,20 +1716,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement GpxInfo item = allGpxAdapter.getChild(groupPosition, childPosition); if (!selectionMode) { - Intent newIntent = new Intent(getActivity(), getMyApplication().getAppCustomization().getTrackActivity()); - // causes wrong position caching: newIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - if (item.currentlyRecordingTrack) { - newIntent.putExtra(TrackActivity.CURRENT_RECORDING, true); - } else { - newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, item.file.getAbsolutePath()); - } - newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(newIntent); - // item.setExpanded(!item.isExpanded()); - // if (item.isExpanded()) { - // descriptionLoader = new LoadLocalIndexDescriptionTask(); - // descriptionLoader.execute(item); - // } + openTrack(getActivity(), item.file); } else { if (!selectedItems.contains(item)) { selectedItems.add(item); diff --git a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java index 43e1e73cc8..c4e5cc8cee 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java @@ -42,6 +42,8 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; +import static net.osmand.plus.myplaces.TrackSegmentFragment.TRACK_DELETED_KEY; + /** * */ @@ -50,6 +52,7 @@ public class FavoritesActivity extends TabActivity { private static final int OPEN_GPX_DOCUMENT_REQUEST = 1006; private static final int IMPORT_FAVOURITES_REQUEST = 1007; + protected static final int OPEN_GPX_REQUEST = 1008; public static final String TAB_ID = "selected_tab_id"; @@ -152,6 +155,13 @@ public class FavoritesActivity extends TabActivity { if (data != null && data.getData() != null) { importHelper.handleGpxOrFavouritesImport(data.getData()); } + } else if (requestCode == OPEN_GPX_REQUEST && resultCode == Activity.RESULT_OK) { + if (data != null && data.getBooleanExtra(TRACK_DELETED_KEY, false)) { + AvailableGPXFragment gpxFragment = getGpxFragment(); + if (gpxFragment != null) { + gpxFragment.resetTracksLoader(); + } + } } else { super.onActivityResult(requestCode, resultCode, data); } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java index 4541cf810a..259a1b59d2 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java @@ -1,6 +1,8 @@ package net.osmand.plus.myplaces; +import android.app.Activity; import android.content.DialogInterface; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.AsyncTask; @@ -23,6 +25,7 @@ import androidx.fragment.app.FragmentManager; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import net.osmand.AndroidUtils; +import net.osmand.FileUtils; import net.osmand.GPXUtilities.GPXFile; import net.osmand.GPXUtilities.Track; import net.osmand.GPXUtilities.TrkSegment; @@ -55,6 +58,8 @@ import java.util.List; public class TrackSegmentFragment extends OsmAndListFragment implements TrackBitmapDrawerListener, SegmentActionsListener { + public static final String TRACK_DELETED_KEY = "track_deleted_key"; + private OsmandApplication app; private TrackDisplayHelper displayHelper; private TrackActivityFragmentAdapter fragmentAdapter; @@ -134,8 +139,26 @@ public class TrackSegmentFragment extends OsmAndListFragment implements TrackBit } }); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - } - if (gpxFile.showCurrentTrack) { + MenuItem deleteItem = menu.add(R.string.shared_string_delete) + .setIcon(app.getUIUtilities().getIcon((R.drawable.ic_action_delete_dark))) + .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + GPXFile gpx = displayHelper.getGpx(); + FragmentActivity activity = getActivity(); + if (activity != null && gpx != null) { + if (FileUtils.removeGpxFile(app, new File((gpx.path)))) { + Intent intent = new Intent(); + intent.putExtra(TRACK_DELETED_KEY, true); + activity.setResult(Activity.RESULT_OK, intent); + activity.onBackPressed(); + } + } + return true; + } + }); + deleteItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + } else if (gpxFile.showCurrentTrack) { MenuItem item = menu.add(R.string.shared_string_refresh).setIcon(R.drawable.ic_action_refresh_dark) .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override