diff options
-rw-r--r-- | src/com/android/contacts/quickcontact/QuickContactActivity.java | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index 0337e2d38..0632108a5 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -106,6 +106,7 @@ 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.editor.SelectAccountDialogFragment; import com.android.contacts.common.interactions.TouchPointManager; import com.android.contacts.common.lettertiles.LetterTileDrawable; @@ -122,6 +123,7 @@ 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; import com.android.contacts.common.model.dataitem.ImDataItem; import com.android.contacts.common.model.dataitem.NicknameDataItem; import com.android.contacts.common.model.dataitem.NoteDataItem; @@ -1176,6 +1178,30 @@ public class QuickContactActivity extends ContactsActivity { } /** + * Maps group ID to the corresponding group name, collapses all synonymous groups. Ignores + * default groups (e.g. My Contacts) and favorites groups. + */ + private static String getGroupName(List<GroupMetaData> groupMetaData, long groupId) { + if (groupMetaData == null) { + return ""; + } + + for (GroupMetaData group : groupMetaData) { + if (group.getGroupId() == groupId) { + if (!group.isDefaultGroup() && !group.isFavorites()) { + String title = group.getTitle(); + if (!TextUtils.isEmpty(title)) { + return title; + } + } + break; + } + } + + return ""; + } + + /** * Create a card that shows "Add email" and "Add phone number" entries in grey. */ private void initializeNoContactDetailCard() { @@ -1608,6 +1634,31 @@ public class QuickContactActivity extends ContactsActivity { } else { aboutCardName.value = res.getString(R.string.about_card_title); } + } else if (dataItem instanceof GroupMembershipDataItem) { + GroupMembershipDataItem groupMembership = + (GroupMembershipDataItem) dataItem; + Long groupId = groupMembership.getGroupRowId(); + if (groupId != null) { + return new Entry(/* viewId = */-1, + /* icon = */null, + res.getString(R.string.groupsLabel), + getGroupName(contactData.getGroupMetaData(), + groupId), + /* text = */null, + /* primaryContentDescription = */null, + /* intent = */null, + /* alternateIcon = */null, + /* alternateIntent = */null, + /* alternateContentDescription = */null, + /* shouldApplyColor = */false, + /* isEditable = */false, + /* EntryContextMenuInfo = */null, + /* thirdIcon = */null, + /* thirdIntent = */null, + /* thirdContentDescription = */null, + /* iconResourceId = */0); + } + return null; } else { // Custom DataItem header = dataItem.buildDataStringForDisplay(context, kind); @@ -2218,7 +2269,7 @@ public class QuickContactActivity extends ContactsActivity { final List<ResolveInfo> receivers = getPackageManager() .queryBroadcastReceivers(createShortcutIntent, 0); return receivers != null && receivers.size() > 0; - } + } private void sendContactViaSMS() { // Get name string String name = mContactData.getDisplayName(); |