Merge "Fix the "Add Contacts" button too small in empty label view" into ub-contactsdialer-f-dev
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 8683809..bfb684a 100755
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -112,6 +112,7 @@
     public static final String EXTRA_CONTACT_URI = "contactUri";
     public static final String EXTRA_CONTACT_IDS = "contactIds";
     public static final String EXTRA_STARRED_FLAG = "starred";
+    public static final String EXTRA_DISPLAY_NAME = "extraDisplayName";
 
     public static final String ACTION_SET_SUPER_PRIMARY = "setSuperPrimary";
     public static final String ACTION_CLEAR_PRIMARY = "clearPrimary";
@@ -1293,6 +1294,7 @@
 
     private void joinSeveralContacts(Intent intent) {
         final long[] contactIds = intent.getLongArrayExtra(EXTRA_CONTACT_IDS);
+
         final ResultReceiver receiver = intent.getParcelableExtra(EXTRA_RESULT_RECEIVER);
 
         // Load raw contact IDs for all contacts involved.
@@ -1334,15 +1336,39 @@
             }
             return;
         }
+
         if (receiver != null) {
             final Bundle result = new Bundle();
             result.putSerializable(EXTRA_RAW_CONTACT_IDS, separatedRawContactIds);
+            result.putString(EXTRA_DISPLAY_NAME, queryNameOfLinkedContacts(contactIds));
             receiver.send(CONTACTS_LINKED, result);
         } else {
             showToast(R.string.contactsJoinedMessage);
         }
     }
 
+    // Get the display name of the top-level contact after the contacts have been linked.
+    private String queryNameOfLinkedContacts(long[] contactIds) {
+        final StringBuilder whereBuilder = new StringBuilder(Contacts._ID).append(" IN (");
+        final String[] whereArgs = new String[contactIds.length];
+        for (int i = 0; i < contactIds.length; i++) {
+            whereArgs[i] = String.valueOf(contactIds[i]);
+            whereBuilder.append("?,");
+        }
+        whereBuilder.deleteCharAt(whereBuilder.length() - 1).append(')');
+        final Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,
+                new String[]{Contacts.DISPLAY_NAME}, whereBuilder.toString(), whereArgs, null);
+        try {
+            if (cursor.moveToFirst()) {
+                return cursor.getString(0);
+            }
+            return null;
+        } finally {
+            cursor.close();
+        }
+    }
+
+
     /** Returns true if the batch was successfully applied and false otherwise. */
     private boolean applyOperations(ContentResolver resolver,
             ArrayList<ContentProviderOperation> operations) {
diff --git a/src/com/android/contacts/editor/PhotoSourceDialogFragment.java b/src/com/android/contacts/editor/PhotoSourceDialogFragment.java
index 4b502e5..c2ed3b4 100644
--- a/src/com/android/contacts/editor/PhotoSourceDialogFragment.java
+++ b/src/com/android/contacts/editor/PhotoSourceDialogFragment.java
@@ -26,6 +26,8 @@
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
 import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
 
 import java.util.ArrayList;
 
@@ -91,8 +93,10 @@
         };
 
         // Build the AlertDialog
+        final TextView title = (TextView) View.inflate(getActivity(), R.layout.dialog_title, null);
+        title.setText(R.string.menu_change_photo);
         final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        builder.setTitle(R.string.menu_change_photo);
+        builder.setCustomTitle(title);
         builder.setItems(items, clickListener);
         builder.setNegativeButton(android.R.string.cancel, /* listener =*/ null);
         return builder.create();