Merge "Adding util to consolidate primary/alternative name choice" into ub-contactsdialer-a-dev
diff --git a/src/com/android/contacts/common/ContactTileLoaderFactory.java b/src/com/android/contacts/common/ContactTileLoaderFactory.java
index f8b0c35..f75950e 100644
--- a/src/com/android/contacts/common/ContactTileLoaderFactory.java
+++ b/src/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -48,6 +48,7 @@
// contacts._id because the query is performed on the data table. In order to obtain the
// contact id for strequent items, we thus have to use Phone.contact_id instead.
public final static int CONTACT_ID_FOR_DATA = 10;
+ public final static int DISPLAY_NAME_ALTERNATIVE = 11;
private static final String[] COLUMNS = new String[] {
Contacts._ID, // ..........................................0
@@ -68,7 +69,7 @@
@VisibleForTesting
public static final String[] COLUMNS_PHONE_ONLY = new String[] {
Contacts._ID, // ..........................................0
- Contacts.DISPLAY_NAME, // .................................1
+ Contacts.DISPLAY_NAME_PRIMARY, // .........................1
Contacts.STARRED, // ......................................2
Contacts.PHOTO_URI, // ....................................3
Contacts.LOOKUP_KEY, // ...................................4
@@ -77,7 +78,8 @@
Phone.LABEL, // ...........................................7
Phone.IS_SUPER_PRIMARY, //.................................8
Contacts.PINNED, // .......................................9
- Phone.CONTACT_ID //........................................10
+ Phone.CONTACT_ID, //.......................................10
+ Contacts.DISPLAY_NAME_ALTERNATIVE, // .....................11
};
private static final String STARRED_ORDER = Contacts.DISPLAY_NAME+" COLLATE NOCASE ASC";
diff --git a/src/com/android/contacts/common/list/ContactEntry.java b/src/com/android/contacts/common/list/ContactEntry.java
index 43fc19d..a29a8d8 100644
--- a/src/com/android/contacts/common/list/ContactEntry.java
+++ b/src/com/android/contacts/common/list/ContactEntry.java
@@ -19,12 +19,31 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.ContactsContract.PinnedPositions;
+import android.text.TextUtils;
+
+import com.android.contacts.common.preference.ContactsPreferences;
/**
* Class to hold contact information
*/
public class ContactEntry {
- public String name;
+
+ private static final int UNSET_DISPLAY_ORDER_PREFERENCE = -1;
+
+ /**
+ * Primary name for a Contact
+ */
+ public String namePrimary;
+ /**
+ * Alternative name for a Contact, e.g. last name first
+ */
+ public String nameAlternative;
+ /**
+ * The user's preference on name display order, last name first or first time first.
+ * {@see ContactsPreferences}
+ */
+ public int nameDisplayOrder = UNSET_DISPLAY_ORDER_PREFERENCE;
+
public String status;
public String phoneLabel;
public String phoneNumber;
@@ -38,4 +57,13 @@
public boolean isDefaultNumber = false;
public static final ContactEntry BLANK_ENTRY = new ContactEntry();
+
+ public String getPreferredDisplayName() {
+ if (nameDisplayOrder == UNSET_DISPLAY_ORDER_PREFERENCE
+ || nameDisplayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY
+ || TextUtils.isEmpty(nameAlternative)) {
+ return namePrimary;
+ }
+ return nameAlternative;
+ }
}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/list/ContactTileAdapter.java b/src/com/android/contacts/common/list/ContactTileAdapter.java
index ac10f38..c43fcf7 100644
--- a/src/com/android/contacts/common/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/common/list/ContactTileAdapter.java
@@ -243,7 +243,7 @@
ContactEntry contact = new ContactEntry();
String name = cursor.getString(mNameIndex);
- contact.name = (name != null) ? name : mResources.getString(R.string.missing_name);
+ contact.namePrimary = (name != null) ? name : mResources.getString(R.string.missing_name);
contact.status = cursor.getString(mStatusIndex);
contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
contact.lookupKey = lookupKey;
diff --git a/src/com/android/contacts/common/list/ContactTileView.java b/src/com/android/contacts/common/list/ContactTileView.java
index 56552bb..172d720 100644
--- a/src/com/android/contacts/common/list/ContactTileView.java
+++ b/src/com/android/contacts/common/list/ContactTileView.java
@@ -94,7 +94,7 @@
public void loadFromContact(ContactEntry entry) {
if (entry != null) {
- mName.setText(getNameForView(entry.name));
+ mName.setText(getNameForView(entry));
mLookupUri = entry.lookupUri;
if (mStatus != null) {
@@ -125,7 +125,8 @@
setVisibility(View.VISIBLE);
if (mPhotoManager != null) {
- DefaultImageRequest request = getDefaultImageRequest(entry.name, entry.lookupKey);
+ DefaultImageRequest request = getDefaultImageRequest(entry.namePrimary,
+ entry.lookupKey);
configureViewForImage(entry.photoUri == null);
if (mPhoto != null) {
mPhotoManager.loadPhoto(mPhoto, entry.photoUri, getApproximateImageSize(),
@@ -145,9 +146,9 @@
}
if (mPushState != null) {
- mPushState.setContentDescription(entry.name);
+ mPushState.setContentDescription(entry.namePrimary);
} else if (mQuickContact != null) {
- mQuickContact.setContentDescription(entry.name);
+ mQuickContact.setContentDescription(entry.namePrimary);
}
} else {
setVisibility(View.INVISIBLE);
@@ -178,8 +179,8 @@
* Returns the string that should actually be displayed as the contact's name. Subclasses
* can override this to return formatted versions of the name - i.e. first name only.
*/
- protected String getNameForView(String name) {
- return name;
+ protected String getNameForView(ContactEntry contactEntry) {
+ return contactEntry.namePrimary;
}
/**