Allow searching while selecting for creating group chat

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java | 25 
1 file changed, 22 insertions(+), 3 deletions(-)

Detailed changes

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