Commit 7ee8585e authored by Finnur Thorarinsson's avatar Finnur Thorarinsson Committed by Commit Bot

Contacts Picker: Improved efficiency, scrolling, Select All, and search.

- Minimize the use of the cursor.
- Load the contact details upfront.
- Keep the ContactDetails in the adapter.
- Improved search: case-insensitive search within all contact details.

Also temporarily disable photos (will be reinstated in a different way).

Bug: 860467
Change-Id: Ia6ddf396bf20d82ae301489a12795d2fad333af8
Reviewed-on: https://chromium-review.googlesource.com/1221551Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Finnur Thorarinsson <finnur@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592000}
parent 1e3605ec
...@@ -93,17 +93,21 @@ public class ContactDetails implements Comparable<ContactDetails> { ...@@ -93,17 +93,21 @@ public class ContactDetails implements Comparable<ContactDetails> {
public String getContactDetailsAsString() { public String getContactDetailsAsString() {
int count = 0; int count = 0;
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
for (String email : mEmails) { if (mEmails != null) {
if (count++ > 0) { for (String email : mEmails) {
builder.append("\n"); if (count++ > 0) {
builder.append("\n");
}
builder.append(email);
} }
builder.append(email);
} }
for (String phoneNumber : mPhoneNumbers) { if (mPhoneNumbers != null) {
if (count++ > 0) { for (String phoneNumber : mPhoneNumbers) {
builder.append("\n"); if (count++ > 0) {
builder.append("\n");
}
builder.append(phoneNumber);
} }
builder.append(phoneNumber);
} }
return builder.toString(); return builder.toString();
...@@ -121,15 +125,19 @@ public class ContactDetails implements Comparable<ContactDetails> { ...@@ -121,15 +125,19 @@ public class ContactDetails implements Comparable<ContactDetails> {
writer.name("emails"); writer.name("emails");
writer.beginArray(); writer.beginArray();
for (String email : mEmails) { if (mEmails != null) {
writer.value(email); for (String email : mEmails) {
writer.value(email);
}
} }
writer.endArray(); writer.endArray();
writer.name("phoneNumbers"); writer.name("phoneNumbers");
writer.beginArray(); writer.beginArray();
for (String phoneNumber : mPhoneNumbers) { if (mPhoneNumbers != null) {
writer.value(phoneNumber); for (String phoneNumber : mPhoneNumbers) {
writer.value(phoneNumber);
}
} }
writer.endArray(); writer.endArray();
...@@ -148,7 +156,7 @@ public class ContactDetails implements Comparable<ContactDetails> { ...@@ -148,7 +156,7 @@ public class ContactDetails implements Comparable<ContactDetails> {
@Override @Override
public int hashCode() { public int hashCode() {
Object[] values = {mId, mDisplayName, mEmails}; Object[] values = {mId, mDisplayName};
return Arrays.hashCode(values); return Arrays.hashCode(values);
} }
......
...@@ -249,7 +249,8 @@ public class PickerCategoryView extends RelativeLayout ...@@ -249,7 +249,8 @@ public class PickerCategoryView extends RelativeLayout
} else if (id == R.id.action) { } else if (id == R.id.action) {
if (mSelectAllMode) { if (mSelectAllMode) {
mPreviousSelection = mSelectionDelegate.getSelectedItems(); mPreviousSelection = mSelectionDelegate.getSelectedItems();
mSelectionDelegate.setSelectedItems(mPickerAdapter.getAllContacts()); mSelectionDelegate.setSelectedItems(
new HashSet<ContactDetails>(mPickerAdapter.getAllContacts()));
mActionButton.setImageResource(R.drawable.ic_undo); mActionButton.setImageResource(R.drawable.ic_undo);
mActionButton.setContentDescription(mLabelUndo); mActionButton.setContentDescription(mLabelUndo);
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment