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;
}