Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c46e5b3 authored by Wenyi Wang's avatar Wenyi Wang
Browse files

Make checkboxes not clickable

Bug: 30443581
Bug: 32950580

Test:
1. manually verified the following lists work well:
   - all contacts / account view
   - group view
   - send-to view
   - contact selection view (for adding contacts to group)
2. unit test

Change-Id: Ife4a31725ca31125c901ca9f9f1621422066342b
parent e6493181
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -259,11 +259,6 @@ public class SimImportFragment extends DialogFragment
        updateSelectedCount();
    }

    @Override
    public void onSelectedContactsChangedViaCheckBox() {
        updateSelectedCount();
    }

    private void updateSelectedCount() {
        final int selectedCount = mAdapter.getSelectedContactIds().size();
        if (selectedCount == 0) {
+6 −26
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;

import com.android.contacts.group.GroupUtil;
@@ -35,13 +34,12 @@ public abstract class MultiSelectEntryContactListAdapter extends ContactEntryLis

    private SelectedContactsListener mSelectedContactsListener;
    private DeleteContactListener mDeleteContactListener;
    private TreeSet<Long> mSelectedContactIds = new TreeSet<Long>();
    private TreeSet<Long> mSelectedContactIds = new TreeSet<>();
    private boolean mDisplayCheckBoxes;
    private final int mContactIdColumnIndex;

    public interface SelectedContactsListener {
        void onSelectedContactsChanged();
        void onSelectedContactsChangedViaCheckBox();
    }

    public interface DeleteContactListener {
@@ -156,11 +154,10 @@ public abstract class MultiSelectEntryContactListAdapter extends ContactEntryLis
        super.bindView(itemView, partition, cursor, position);
        final ContactListItemView view = (ContactListItemView) itemView;
        bindViewId(view, cursor, getContactColumnIdIndex());
        bindCheckBox(view, cursor, position, partition == ContactsContract.Directory.DEFAULT);
        bindCheckBox(view, cursor, partition == ContactsContract.Directory.DEFAULT);
    }

    private void bindCheckBox(ContactListItemView view, Cursor cursor, int position,
            boolean isLocalDirectory) {
    private void bindCheckBox(ContactListItemView view, Cursor cursor, boolean isLocalDirectory) {
        // Disable clicking on all contacts from remote directories when showing check boxes. We do
        // this by telling the view to handle clicking itself.
        view.setClickable(!isLocalDirectory && mDisplayCheckBoxes);
@@ -173,24 +170,7 @@ public abstract class MultiSelectEntryContactListAdapter extends ContactEntryLis
        final CheckBox checkBox = view.getCheckBox();
        final long contactId = cursor.getLong(mContactIdColumnIndex);
        checkBox.setChecked(mSelectedContactIds.contains(contactId));
        checkBox.setClickable(false);
        checkBox.setTag(contactId);
        checkBox.setOnClickListener(mCheckBoxClickListener);
    }

    private final OnClickListener mCheckBoxClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            final CheckBox checkBox = (CheckBox) v;
            final Long contactId = (Long) checkBox.getTag();
            if (checkBox.isChecked()) {
                mSelectedContactIds.add(contactId);
            } else {
                mSelectedContactIds.remove(contactId);
            }
            notifyDataSetChanged();
            if (mSelectedContactsListener != null) {
                mSelectedContactsListener.onSelectedContactsChangedViaCheckBox();
            }
        }
    };
}
+4 −14
Original line number Diff line number Diff line
@@ -114,16 +114,6 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        return getView();
    }

    @Override
    public void onSelectedContactsChangedViaCheckBox() {
        if (getAdapter().getSelectedContactIds().size() == 0) {
            // Last checkbox has been unchecked. So we should stop displaying checkboxes.
            mCheckBoxListListener.onStopDisplayingCheckBoxes();
        } else {
            onSelectedContactsChanged();
        }
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
@@ -403,8 +393,8 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        if (accountType instanceof GoogleAccountType) {
            accountFilterHeaderIcon.getLayoutParams().height = getResources()
                    .getDimensionPixelOffset(R.dimen.contact_browser_list_header_icon_size);
            accountFilterHeaderIcon.getLayoutParams().width =
                    accountFilterHeaderIcon.getLayoutParams().height;
            accountFilterHeaderIcon.getLayoutParams().width = getResources()
                    .getDimensionPixelOffset(R.dimen.contact_browser_list_header_icon_size);

            setMargins(accountFilterHeaderIcon,
                    getResources().getDimensionPixelOffset(
@@ -414,8 +404,8 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        } else {
            accountFilterHeaderIcon.getLayoutParams().height = getResources()
                    .getDimensionPixelOffset(R.dimen.contact_browser_list_header_icon_size_alt);
            accountFilterHeaderIcon.getLayoutParams().width =
                    accountFilterHeaderIcon.getLayoutParams().height;
            accountFilterHeaderIcon.getLayoutParams().width = getResources()
                    .getDimensionPixelOffset(R.dimen.contact_browser_list_header_icon_size_alt);

            setMargins(accountFilterHeaderIcon,
                    getResources().getDimensionPixelOffset(
+0 −5
Original line number Diff line number Diff line
@@ -52,11 +52,6 @@ public class MultiSelectEmailAddressesListFragment
        return adapter;
    }

    @Override
    public void onSelectedContactsChangedViaCheckBox() {
        onSelectedContactsChanged();
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
+0 −5
Original line number Diff line number Diff line
@@ -52,11 +52,6 @@ public class MultiSelectPhoneNumbersListFragment
        return adapter;
    }

    @Override
    public void onSelectedContactsChangedViaCheckBox() {
        onSelectedContactsChanged();
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);