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();