From c953fbc67a8d9052cc4335fe8f64794078d4dff1 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 24 Aug 2019 08:52:42 +0200 Subject: [PATCH] Implemented "Share" from TrackListActivity's context menu. --- .../dennisguse/opentracks/SearchListActivity.java | 10 +++++----- .../dennisguse/opentracks/TrackListActivity.java | 15 +++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java index f63e09269..85d48a1cf 100644 --- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java @@ -99,11 +99,6 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; // Callback when an item is selected in the contextual action mode private ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { - @Override - public boolean onClick(int itemId, int[] positions, long[] ids) { - return handleContextItem(itemId, positions); - } - @Override public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; @@ -131,6 +126,11 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa // Disable select all, no action is available for multiple selection menu.findItem(R.id.list_context_menu_select_all).setVisible(false); } + + @Override + public boolean onClick(int itemId, int[] positions, long[] ids) { + return handleContextItem(itemId, positions); + } }; private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT; private final OnSharedPreferenceChangeListener diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index 1d58199bb..b86d90280 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -41,6 +41,7 @@ import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SearchView; +import android.widget.ShareActionProvider; import android.widget.Toast; import androidx.annotation.NonNull; @@ -114,6 +115,13 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe boolean isSingleSelection = ids.length == 1; menu.findItem(R.id.list_context_menu_share).setVisible(!isRecording && isSingleSelection); + Intent shareIntent = null; + if (isSingleSelection) { + shareIntent = IntentUtils.newShareFileIntent(TrackListActivity.this, ids[0]); + } + ShareActionProvider shareActionProvider = (ShareActionProvider) menu.findItem(R.id.list_context_menu_share).getActionProvider(); + shareActionProvider.setShareIntent(shareIntent); + menu.findItem(R.id.list_context_menu_edit).setVisible(isSingleSelection); menu.findItem(R.id.list_context_menu_select_all).setVisible(showSelectAll); } @@ -456,8 +464,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe getMenuInflater().inflate(R.menu.list_context_menu, menu); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; - contextualActionModeCallback.onPrepare( - menu, new int[]{info.position}, new long[]{info.id}, false); + contextualActionModeCallback.onPrepare(menu, new int[]{info.position}, new long[]{info.id}, false); } @Override @@ -565,10 +572,6 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe case R.id.list_context_menu_show_on_map: IntentUtils.showTrackOnMap(this, trackIds); return true; - case R.id.list_context_menu_share: - //TODO - Log.e(TAG, "Not implemented"); - return true; case R.id.list_context_menu_edit: Intent intent = IntentUtils.newIntent(this, TrackEditActivity.class) .putExtra(TrackEditActivity.EXTRA_TRACK_ID, trackIds[0]);