Show quick contact in phone search UI
Change-Id: Ibc643162b9c74964b1b9e9bd89351203fb29d6b6
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index bc89d2d..3f29889 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -282,6 +282,7 @@
mSearchFragment.setOnPhoneNumberPickerActionListener(
mPhoneNumberPickerActionListener);
mSearchFragment.setHighlightSearchPrefix(true);
+ mSearchFragment.setQuickContactEnabled(true);
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(mSearchFragment);
diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index 62b678c..69b0077 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -35,6 +35,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.QuickContactBadge;
import android.widget.TextView;
import java.util.HashSet;
@@ -617,4 +618,32 @@
return super.getItemPlacementInSection(position);
}
}
+
+ // TODO: move sharable logic (bindXX() methods) to here with extra arguments
+
+ protected void bindQuickContact(final ContactListItemView view, int partitionIndex,
+ Cursor cursor, int photoIdColumn, int lookUpKeyColumn) {
+ long photoId = 0;
+ if (!cursor.isNull(photoIdColumn)) {
+ photoId = cursor.getLong(photoIdColumn);
+ }
+
+ QuickContactBadge quickContact = view.getQuickContact();
+ quickContact.assignContactUri(
+ getContactUri(partitionIndex, cursor, photoIdColumn, lookUpKeyColumn));
+ getPhotoLoader().loadPhoto(quickContact, photoId);
+ }
+
+ protected Uri getContactUri(int partitionIndex, Cursor cursor,
+ int photoIdColumn, int lookUpKeyColumn) {
+ long contactId = cursor.getLong(photoIdColumn);
+ String lookupKey = cursor.getString(lookUpKeyColumn);
+ Uri uri = Contacts.getLookupUri(contactId, lookupKey);
+ long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
+ if (directoryId != Directory.DEFAULT) {
+ uri = uri.buildUpon().appendQueryParameter(
+ ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
+ }
+ return uri;
+ }
}
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index 8af0af2..e51fd5c 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -298,18 +298,6 @@
}
}
- protected void bindQuickContact(
- final ContactListItemView view, int partitionIndex, Cursor cursor) {
- long photoId = 0;
- if (!cursor.isNull(CONTACT_PHOTO_ID_COLUMN_INDEX)) {
- photoId = cursor.getLong(CONTACT_PHOTO_ID_COLUMN_INDEX);
- }
-
- QuickContactBadge quickContact = view.getQuickContact();
- quickContact.assignContactUri(getContactUri(partitionIndex, cursor));
- getPhotoLoader().loadPhoto(quickContact, photoId);
- }
-
protected void bindName(final ContactListItemView view, Cursor cursor) {
view.showDisplayName(cursor, mDisplayNameColumnIndex, mAlternativeDisplayNameColumnIndex,
isNameHighlightingEnabled(), getContactNameDisplayOrder());
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 6916514..5ba1d8e 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -224,7 +224,8 @@
bindSectionHeaderAndDivider(view, position);
if (isQuickContactEnabled()) {
- bindQuickContact(view, partition, cursor);
+ bindQuickContact(view, partition, cursor,
+ CONTACT_PHOTO_ID_COLUMN_INDEX, CONTACT_LOOKUP_KEY_COLUMN_INDEX);
} else {
bindPhoto(view, partition, cursor);
}
diff --git a/src/com/android/contacts/list/PhoneNumberListAdapter.java b/src/com/android/contacts/list/PhoneNumberListAdapter.java
index 53a9e5f..109d857 100644
--- a/src/com/android/contacts/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/PhoneNumberListAdapter.java
@@ -24,12 +24,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.ContactCounts;
+import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.QuickContactBadge;
/**
* A cursor adapter for the {@link Phone#CONTENT_TYPE} content type.
@@ -45,8 +47,9 @@
Phone.DISPLAY_NAME_PRIMARY, // 4
Phone.DISPLAY_NAME_ALTERNATIVE, // 5
Phone.CONTACT_ID, // 6
- Phone.PHOTO_ID, // 7
- Phone.PHONETIC_NAME, // 8
+ Phone.LOOKUP_KEY, // 7
+ Phone.PHOTO_ID, // 8
+ Phone.PHONETIC_NAME, // 9
};
protected static final int PHONE_ID_COLUMN_INDEX = 0;
@@ -56,8 +59,9 @@
protected static final int PHONE_PRIMARY_DISPLAY_NAME_COLUMN_INDEX = 4;
protected static final int PHONE_ALTERNATIVE_DISPLAY_NAME_COLUMN_INDEX = 5;
protected static final int PHONE_CONTACT_ID_COLUMN_INDEX = 6;
- protected static final int PHONE_PHOTO_ID_COLUMN_INDEX = 7;
- protected static final int PHONE_PHONETIC_NAME_COLUMN_INDEX = 8;
+ protected static final int PHONE_LOOKUP_KEY_COLUMN_INDEX = 7;
+ protected static final int PHONE_PHOTO_ID_COLUMN_INDEX = 8;
+ protected static final int PHONE_PHONETIC_NAME_COLUMN_INDEX = 9;
private CharSequence mUnknownNameText;
private int mDisplayNameColumnIndex;
@@ -202,10 +206,16 @@
bindSectionHeaderAndDivider(view, position);
if (isFirstEntry) {
bindName(view, cursor);
- bindPhoto(view, cursor);
+ if (isQuickContactEnabled()) {
+ bindQuickContact(view, partition, cursor,
+ PHONE_PHOTO_ID_COLUMN_INDEX, PHONE_LOOKUP_KEY_COLUMN_INDEX);
+ } else {
+ bindPhoto(view, cursor);
+ }
} else {
unbindName(view);
- unbindPhoto(view);
+
+ view.removePhotoView(true, false);
}
bindPhoneNumber(view, cursor);
view.setDividerVisible(showBottomDivider);
@@ -255,10 +265,6 @@
getPhotoLoader().loadPhoto(view.getPhotoView(), photoId);
}
- protected void unbindPhoto(final ContactListItemView view) {
- view.removePhotoView(true, false);
- }
-
public void setHighlightSearchPrefix(boolean highlight) {
mHighlightSearchPrefix = highlight;
}