From e82288e82128b3a5229beba889550d60e81d86c4 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sun, 8 Jan 2023 23:40:31 -0500 Subject: [PATCH] Allow searching while selecting for creating group chat --- .../ui/ChooseContactActivity.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java index 9da5c754662379dd6ab7fd0b2885fe0fe964d2a2..e5f6f633d99e1edd665fb9e3a33dc9279f536209 100644 --- a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java @@ -120,7 +120,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity im multiple = intent.getBooleanExtra(EXTRA_SELECT_MULTIPLE, false); if (multiple) { - getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); + getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); getListView().setMultiChoiceModeListener(this); } @@ -282,6 +282,9 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity im } Collections.sort(getListItems()); getListItemAdapter().notifyDataSetChanged(); + for (int i = 0; i < getListItemAdapter().getCount(); i++) { + getListView().setItemChecked(i, selected.contains(getListItemAdapter().getItem(i).getJid().toString())); + } } private String[] getSelectedContactJids() { @@ -388,8 +391,24 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity im @Override public void onItemClick(AdapterView parent, View view, int position, long id) { if (multiple) { - startActionMode(this); - getListView().setItemChecked(position, true); + if (getListView().isItemChecked(position)) { + selected.add(getListItemAdapter().getItem(position).getJid().toString()); + } else { + selected.remove(getListItemAdapter().getItem(position).getJid().toString()); + } + + if (selected.isEmpty()) { + this.binding.fab.setImageResource(R.drawable.ic_person_add_white_24dp); + if (this.showEnterJid) { + this.binding.fab.show(); + } else { + this.binding.fab.hide(); + } + } else { + binding.fab.setImageResource(R.drawable.ic_forward_white_24dp); + binding.fab.show(); + } + return; } final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);