Adds support to selecting name preference order

Bug: 16467223
Change-Id: I34b4267929cded27cc9f71a7d7c7af5798f84931
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index c984b7a..849923d 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -40,15 +40,14 @@
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
-import com.android.contacts.detail.ContactDetailDisplayUtils;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.detail.ContactDetailFragment;
 import com.android.contacts.detail.ContactDetailLayoutController;
+import com.android.contacts.detail.ContactDisplayUtils;
 import com.android.contacts.detail.ContactLoaderFragment;
 import com.android.contacts.detail.ContactLoaderFragment.ContactLoaderFragmentListener;
 import com.android.contacts.interactions.ContactDeletionInteraction;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.account.AccountWithDataSet;
-import com.android.contacts.util.PhoneCapabilityTester;
 
 import java.util.ArrayList;
 
@@ -115,7 +114,7 @@
                     final boolean isStarred = starredMenuItem.isChecked();
 
                     // To improve responsiveness, swap out the picture (and tag) in the UI already
-                    ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+                    ContactDisplayUtils.configureStarredMenuItem(starredMenuItem,
                             mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                             !isStarred);
 
@@ -129,7 +128,7 @@
         });
         // If there is contact data, update the starred state
         if (mContactData != null) {
-            ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+            ContactDisplayUtils.configureStarredMenuItem(starredMenuItem,
                     mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                     mContactData.getStarred());
         }
@@ -209,8 +208,8 @@
      * Setup the activity title and subtitle with contact name and company.
      */
     private void setupTitle() {
-        CharSequence displayName = ContactDetailDisplayUtils.getDisplayName(this, mContactData);
-        String company =  ContactDetailDisplayUtils.getCompany(this, mContactData);
+        CharSequence displayName = ContactDisplayUtils.getDisplayName(this, mContactData);
+        String company =  ContactDisplayUtils.getCompany(this, mContactData);
 
         ActionBar actionBar = getActionBar();
         actionBar.setTitle(displayName);
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 85581d5..50be097 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -18,7 +18,6 @@
 
 import android.app.Activity;
 import android.app.Fragment;
-import android.app.SearchManager;
 import android.content.ComponentName;
 import android.content.ContentUris;
 import android.content.ContentValues;
@@ -26,21 +25,16 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
-import android.net.ParseException;
 import android.net.Uri;
-import android.net.WebAddress;
 import android.os.Bundle;
 import android.os.Parcelable;
-import android.provider.CalendarContract;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
-import android.provider.ContactsContract.DisplayNameSources;
 import android.provider.ContactsContract.StatusUpdates;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
@@ -75,30 +69,24 @@
 import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
 import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.ClipboardUtils;
-import com.android.contacts.common.Collapser;
-import com.android.contacts.common.ContactsUtils;
-import com.android.contacts.common.GroupMetaData;
 import com.android.contacts.common.Collapser.Collapsible;
 import com.android.contacts.common.ContactPresenceIconUtil;
-import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.GroupMetaData;
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.editor.SelectAccountDialogFragment;
 import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.model.ValuesDelta;
-import com.android.contacts.common.model.account.AccountType;
-import com.android.contacts.common.model.account.AccountType.EditType;
-import com.android.contacts.common.model.account.AccountWithDataSet;
-import com.android.contacts.common.model.dataitem.DataKind;
-import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.contacts.common.util.DataStatus;
-import com.android.contacts.common.util.DateUtils;
 import com.android.contacts.common.model.Contact;
 import com.android.contacts.common.model.RawContact;
 import com.android.contacts.common.model.RawContactDelta;
 import com.android.contacts.common.model.RawContactDeltaList;
 import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.model.dataitem.EmailDataItem;
 import com.android.contacts.common.model.dataitem.EventDataItem;
 import com.android.contacts.common.model.dataitem.GroupMembershipDataItem;
@@ -112,17 +100,16 @@
 import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
 import com.android.contacts.common.model.dataitem.StructuredPostalDataItem;
 import com.android.contacts.common.model.dataitem.WebsiteDataItem;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.common.util.DataStatus;
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.util.StructuredPostalUtils;
 import com.android.contacts.util.UiClosables;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.collect.Iterables;
 
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -378,7 +365,7 @@
      * list cannot have a positive offset.
      */
     public int getFirstListItemOffset() {
-        return ContactDetailDisplayUtils.getFirstListItemOffset(mListView);
+        return ContactDisplayUtils.getFirstListItemOffset(mListView);
     }
 
     /**
@@ -387,7 +374,7 @@
      * @param offset which should be <= 0
      */
     public void requestToMoveToOffset(int offset) {
-        ContactDetailDisplayUtils.requestToMoveToOffset(mListView, offset);
+        ContactDisplayUtils.requestToMoveToOffset(mListView, offset);
     }
 
     protected void bindData() {
@@ -581,7 +568,8 @@
                         entry.secondaryIntent = smsIntent;
                         entry.secondaryActionIcon = kind.iconAltRes;
                         entry.secondaryActionDescription =
-                            ContactDisplayUtils.getSmsLabelResourceId(entry.type);
+                                com.android.contacts.common.util.ContactDisplayUtils.
+                                        getSmsLabelResourceId(entry.type);
                     } else if (hasPhone) {
                         entry.intent = phoneIntent;
                     } else if (hasSms) {
@@ -786,7 +774,7 @@
      * done manually because phonetic name doesn't have a mimetype or action intent.
      */
     private void addPhoneticName() {
-        String phoneticName = ContactDetailDisplayUtils.getPhoneticName(mContext, mContactData);
+        String phoneticName = ContactDisplayUtils.getPhoneticName(mContext, mContactData);
         if (TextUtils.isEmpty(phoneticName)) {
             return;
         }
@@ -809,7 +797,7 @@
      * to the same {@link DataKind}.
      */
     private void addNetworks() {
-        String attribution = ContactDetailDisplayUtils.getAttribution(mContext, mContactData);
+        String attribution = ContactDisplayUtils.getAttribution(mContext, mContactData);
         boolean hasAttribution = !TextUtils.isEmpty(attribution);
         int networksCount = mOtherEntriesMap.keySet().size();
 
@@ -1519,9 +1507,9 @@
                 result.setTag(viewCache);
             }
 
-            ContactDetailDisplayUtils.setDisplayName(mContext, mContactData,
+            ContactDisplayUtils.setDisplayName(mContext, mContactData,
                     viewCache.displayNameView);
-            ContactDetailDisplayUtils.setCompanyName(mContext, mContactData, viewCache.companyView);
+            ContactDisplayUtils.setCompanyName(mContext, mContactData, viewCache.companyView);
 
             // Set the photo if it should be displayed
             if (viewCache.photoView != null) {
@@ -1537,7 +1525,7 @@
             // Set the starred state if it should be displayed
             final ImageView favoritesStar = viewCache.starredView;
             if (favoritesStar != null) {
-                ContactDetailDisplayUtils.configureStarredImageView(favoritesStar,
+                ContactDisplayUtils.configureStarredImageView(favoritesStar,
                         mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                         mContactData.getStarred());
                 final Uri lookupUri = mContactData.getLookupUri();
@@ -1556,7 +1544,7 @@
 
                             // To improve responsiveness, swap out the picture (and tag) in the UI
                             // already
-                            ContactDetailDisplayUtils.configureStarredImageView(favoritesStar,
+                            ContactDisplayUtils.configureStarredImageView(favoritesStar,
                                     mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                                     !isStarred);
 
@@ -1715,7 +1703,8 @@
             String secondaryActionDescription = null;
             if (entry.secondaryActionIcon != -1) {
                 secondaryActionIcon = resources.getDrawable(entry.secondaryActionIcon);
-                if (ContactDisplayUtils.isCustomPhoneType(entry.type)) {
+                if (com.android.contacts.common.util.ContactDisplayUtils.isCustomPhoneType(
+                        entry.type)) {
                     secondaryActionDescription = resources.getString(
                             entry.secondaryActionDescription, entry.typeString);
                 } else {
diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDisplayUtils.java
similarity index 99%
rename from src/com/android/contacts/detail/ContactDetailDisplayUtils.java
rename to src/com/android/contacts/detail/ContactDisplayUtils.java
index 2684af7..1180219 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDisplayUtils.java
@@ -50,8 +50,8 @@
  * (meaning name, phonetic name, job, and attribution) from a
  * {@link Contact} data object to appropriate {@link View}s.
  */
-public class ContactDetailDisplayUtils {
-    private static final String TAG = "ContactDetailDisplayUtils";
+public class ContactDisplayUtils {
+    private static final String TAG = "ContactDisplayUtils";
 
     /**
      * Returns the display name of the contact, using the current display order setting.
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 5eb1fd5..06622b6 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -114,7 +114,7 @@
 import com.android.contacts.common.util.DateUtils;
 import com.android.contacts.common.util.MaterialColorMapUtils;
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
-import com.android.contacts.detail.ContactDetailDisplayUtils;
+import com.android.contacts.detail.ContactDisplayUtils;
 import com.android.contacts.interactions.CalendarInteractionsLoader;
 import com.android.contacts.interactions.CallLogInteractionsLoader;
 import com.android.contacts.interactions.ContactDeletionInteraction;
@@ -687,7 +687,7 @@
         mPhotoSetter.setupContactPhoto(data, mPhotoView);
         extractAndApplyTintFromPhotoViewAsynchronously();
         analyzeWhitenessOfPhotoAsynchronously();
-        setHeaderNameText(data.getDisplayName());
+        setHeaderNameText(ContactDisplayUtils.getDisplayName(this, data).toString());
 
         Trace.endSection();
 
@@ -1579,7 +1579,7 @@
             final boolean isStarred = starredMenuItem.isChecked();
 
             // To improve responsiveness, swap out the picture (and tag) in the UI already
-            ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+            ContactDisplayUtils.configureStarredMenuItem(starredMenuItem,
                     mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                     !isStarred);
 
@@ -1677,7 +1677,7 @@
     public boolean onPrepareOptionsMenu(Menu menu) {
         if (mContactData != null) {
             final MenuItem starredMenuItem = menu.findItem(R.id.menu_star);
-            ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+            ContactDisplayUtils.configureStarredMenuItem(starredMenuItem,
                     mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
                     mContactData.getStarred());
             // Configure edit MenuItem
diff --git a/src/com/android/contacts/widget/AlphaTouchInterceptorOverlay.java b/src/com/android/contacts/widget/AlphaTouchInterceptorOverlay.java
index 8779a95..f203193 100644
--- a/src/com/android/contacts/widget/AlphaTouchInterceptorOverlay.java
+++ b/src/com/android/contacts/widget/AlphaTouchInterceptorOverlay.java
@@ -20,7 +20,7 @@
 import android.view.View;
 import android.widget.FrameLayout;
 
-import com.android.contacts.detail.ContactDetailDisplayUtils;
+import com.android.contacts.detail.ContactDisplayUtils;
 import com.android.contacts.util.ThemeUtils;
 
 /**
@@ -66,7 +66,7 @@
         if (mAlphaLayer == alphaLayer) return;
 
         // We're no longer the alpha-layer, so make ourself invisible.
-        if (mAlphaLayer == this) ContactDetailDisplayUtils.setAlphaOnViewBackground(this, 0.0f);
+        if (mAlphaLayer == this) ContactDisplayUtils.setAlphaOnViewBackground(this, 0.0f);
 
         mAlphaLayer = (alphaLayer == null) ? this : alphaLayer;
         setAlphaLayerValue(mAlpha);
@@ -76,7 +76,7 @@
     public void setAlphaLayerValue(float alpha) {
         mAlpha = alpha;
         if (mAlphaLayer != null) {
-            ContactDetailDisplayUtils.setAlphaOnViewBackground(mAlphaLayer, mAlpha);
+            ContactDisplayUtils.setAlphaOnViewBackground(mAlphaLayer, mAlpha);
         }
     }