diff --git a/res/menu/media_overview_context.xml b/res/menu/media_overview_context.xml index 4c3c26f781..b3486221c3 100644 --- a/res/menu/media_overview_context.xml +++ b/res/menu/media_overview_context.xml @@ -4,4 +4,9 @@ android:title="@string/delete" android:icon="@drawable/ic_delete_white_24dp" app:showAsAction="always"/> + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 43806c5289..6a1a483bcb 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -394,6 +394,7 @@ Deleting Deleting messages... Documents + Select all Signal call in progress diff --git a/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java b/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java index 526531e0de..43ee4fe89b 100644 --- a/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java +++ b/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java @@ -154,6 +154,15 @@ class MediaGalleryAdapter extends StickyHeaderGridAdapter { notifyDataSetChanged(); } + void selectAllMedia() { + for (int section = 0; section < media.getSectionCount(); section++) { + for (int item = 0; item < media.getSectionItemCount(section); item++) { + selected.add(media.get(section, item)); + } + } + this.notifyDataSetChanged(); + } + interface ItemClickListener { void onMediaClicked(@NonNull MediaRecord mediaRecord); void onMediaLongClicked(MediaRecord mediaRecord); diff --git a/src/org/thoughtcrime/securesms/MediaOverviewActivity.java b/src/org/thoughtcrime/securesms/MediaOverviewActivity.java index 19553265e6..cda67fa16f 100644 --- a/src/org/thoughtcrime/securesms/MediaOverviewActivity.java +++ b/src/org/thoughtcrime/securesms/MediaOverviewActivity.java @@ -357,6 +357,11 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity { builder.show(); } + private void handleSelectAllMedia() { + getListAdapter().selectAllMedia(); + actionMode.setTitle(String.valueOf(getListAdapter().getSelectedMediaCount())); + } + private MediaGalleryAdapter getListAdapter() { return (MediaGalleryAdapter) recyclerView.getAdapter(); } @@ -401,6 +406,9 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity { handleDeleteMedia(getListAdapter().getSelectedMedia()); exitMultiSelect(); return true; + case R.id.select_all: + handleSelectAllMedia(); + return true; } return false; }