Merge pull request #2721 from deltachat/adb/issue-2720

allow to select all media
This commit is contained in:
Asiel Díaz Benítez
2023-10-05 07:51:34 -04:00
committed by GitHub
7 changed files with 48 additions and 4 deletions
@@ -160,6 +160,12 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
notifyDataSetChanged();
}
public void selectAll() {
selected.clear();
selected.addAll(media.getAll());
notifyDataSetChanged();
}
public int getSelectedMediaCount() {
return selected.size();
}
@@ -150,6 +150,11 @@ public class ProfileDocumentsFragment
}
}
private void updateActionModeBar() {
actionMode.setTitle(String.valueOf(getListAdapter().getSelectedMediaCount()));
setCorrectMenuVisibility(actionMode.getMenu());
}
private void handleMediaMultiSelectClick(@NonNull DcMsg mediaRecord) {
ProfileDocumentsAdapter adapter = getListAdapter();
@@ -158,8 +163,7 @@ public class ProfileDocumentsFragment
actionMode.finish();
actionMode = null;
} else {
actionMode.setTitle(String.valueOf(adapter.getSelectedMediaCount()));
setCorrectMenuVisibility(actionMode.getMenu());
updateActionModeBar();
}
}
@@ -271,6 +275,10 @@ public class ProfileDocumentsFragment
case R.id.menu_resend:
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_select_all:
getListAdapter().selectAll();
updateActionModeBar();
return true;
}
return false;
}
@@ -124,6 +124,12 @@ class ProfileGalleryAdapter extends StickyHeaderGridAdapter {
notifyDataSetChanged();
}
public void selectAll() {
selected.clear();
selected.addAll(media.getAll());
notifyDataSetChanged();
}
public int getSelectedMediaCount() {
return selected.size();
}
@@ -142,6 +142,11 @@ public class ProfileGalleryFragment
}
}
private void updateActionModeBar() {
actionMode.setTitle(String.valueOf(getListAdapter().getSelectedMediaCount()));
setCorrectMenuVisibility(actionMode.getMenu());
}
private void handleMediaMultiSelectClick(@NonNull DcMsg mediaRecord) {
ProfileGalleryAdapter adapter = getListAdapter();
@@ -150,8 +155,7 @@ public class ProfileGalleryFragment
actionMode.finish();
actionMode = null;
} else {
actionMode.setTitle(String.valueOf(adapter.getSelectedMediaCount()));
setCorrectMenuVisibility(actionMode.getMenu());
updateActionModeBar();
}
}
@@ -258,6 +262,10 @@ public class ProfileGalleryFragment
case R.id.menu_resend:
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_select_all:
getListAdapter().selectAll();
updateActionModeBar();
return true;
}
return false;
}
@@ -272,6 +272,7 @@ public class ProfileSettingsFragment extends Fragment
menu.findItem(R.id.save).setVisible(false);
menu.findItem(R.id.share).setVisible(false);
menu.findItem(R.id.menu_resend).setVisible(false);
menu.findItem(R.id.menu_select_all).setVisible(false);
mode.setTitle("1");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -118,6 +118,17 @@ public class BucketedThreadMediaLoader extends AsyncTaskLoader<BucketedThreadMed
OLDER.add(imageMessage);
}
public LinkedList<DcMsg> getAll() {
LinkedList<DcMsg> messages = new LinkedList<>();
for (TimeBucket section : TIME_SECTIONS) {
messages.addAll(section.records);
}
for (List<DcMsg> records : OLDER.months.values()) {
messages.addAll(records);
}
return messages;
}
public int getSectionCount() {
return (int)Stream.of(TIME_SECTIONS)
.filter(timeBucket -> !timeBucket.isEmpty())