From 80addd34545373cd0801dec93ae3c4bc95ce396e Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Wed, 4 Apr 2018 21:38:27 +0200 Subject: [PATCH] Amazfit Bip: Add Contextual Action Bar and long press to select Change metaphor from long-press-to-contextual-menu to long-press-to-select The multiple deletion is not functional, the share menu works --- .../activities/ActivitySummariesActivity.java | 108 +++++++++++++++--- app/src/main/res/menu/activity_list_menu.xml | 18 +++ 2 files changed, 108 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/menu/activity_list_menu.xml diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java index b69f4a5c9..ff85b1c07 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java @@ -4,17 +4,26 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.net.Uri; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; +import android.support.v4.content.FileProvider; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.SwipeRefreshLayout; -import android.view.ContextMenu; +import android.util.SparseBooleanArray; +import android.view.ActionMode; +import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.AbsListView; import android.widget.AdapterView; +import android.widget.ListView; import android.widget.Toast; +import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import nodomain.freeyourgadget.gadgetbridge.GBApplication; @@ -89,27 +98,71 @@ public class ActivitySummariesActivity extends AbstractListActivity paths = new ArrayList<>(); + + + for(int i = 0; i< checked.size(); i++) { + if (checked.valueAt(i)) { + + BaseActivitySummary item = getItemAdapter().getItem(checked.keyAt(i)); + if (item != null) { + ActivitySummary summary = (ActivitySummary) item; + + String gpxTrack = summary.getGpxTrack(); + if (gpxTrack != null) { + paths.add(gpxTrack); + } + } + } + } + + shareMultiple(paths); + processed = true; + default: + break; + + } + actionMode.finish(); + return processed; + } + + @Override + public void onDestroyActionMode(ActionMode actionMode) { + findViewById(R.id.fab).setVisibility(View.VISIBLE); } }); - getItemListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { - @Override - public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { - selectedIndex = position; - return getItemListView().showContextMenu(); - } - }); swipeLayout = findViewById(R.id.list_activity_swipe_layout); swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override @@ -160,4 +213,23 @@ public class ActivitySummariesActivity extends AbstractListActivity paths){ + + ArrayList uris = new ArrayList<>(); + for(String path: paths){ + File file = new File(path); + uris.add(FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".screenshot_provider", file)); + } + + if(uris.size() > 0) { + final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); + intent.setType("*/*"); + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); + startActivity(Intent.createChooser(intent, "SHARE")); + } else { + GB.toast(this, "No selected activity contains a GPX track to share", Toast.LENGTH_SHORT, GB.ERROR); + } + + } } diff --git a/app/src/main/res/menu/activity_list_menu.xml b/app/src/main/res/menu/activity_list_menu.xml new file mode 100644 index 000000000..5f544f795 --- /dev/null +++ b/app/src/main/res/menu/activity_list_menu.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file