diff options
3 files changed, 38 insertions, 2 deletions
diff --git a/src/com/android/contacts/common/model/ContactLoader.java b/src/com/android/contacts/common/model/ContactLoader.java index 59ab292e..78eac7eb 100644 --- a/src/com/android/contacts/common/model/ContactLoader.java +++ b/src/com/android/contacts/common/model/ContactLoader.java @@ -47,6 +47,7 @@ import com.android.contacts.common.util.ContactLoaderUtils; import com.android.contacts.common.util.DataStatus; import com.android.contacts.common.util.UriUtils; import com.android.contacts.common.model.dataitem.DataItem; +import com.android.contacts.common.model.dataitem.GroupMembershipDataItem; import com.android.contacts.common.model.dataitem.PhoneDataItem; import com.android.contacts.common.model.dataitem.PhotoDataItem; import com.google.common.collect.ImmutableList; @@ -864,7 +865,30 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { cursor.close(); } } - result.setGroupMetaData(groupListBuilder.build()); + + final ImmutableList<GroupMetaData> metaDataList = groupListBuilder.build(); + result.setGroupMetaData(metaDataList); + + for (RawContact rawContact : result.getRawContacts()) { + for (DataItem dataItem : rawContact.getDataItems()) { + if (!(dataItem instanceof GroupMembershipDataItem)) { + continue; + } + + final GroupMembershipDataItem groupItem = (GroupMembershipDataItem) dataItem; + final Long groupId = groupItem.getGroupRowId(); + if (groupId == null) { + continue; + } + + for (GroupMetaData groupData : metaDataList) { + if (groupData.getGroupId() == groupId) { + groupItem.setGroupMetaData(groupData); + break; + } + } + } + } } /** diff --git a/src/com/android/contacts/common/model/account/BaseAccountType.java b/src/com/android/contacts/common/model/account/BaseAccountType.java index 1ead103f..cb9b3e73 100644 --- a/src/com/android/contacts/common/model/account/BaseAccountType.java +++ b/src/com/android/contacts/common/model/account/BaseAccountType.java @@ -40,6 +40,7 @@ import android.view.inputmethod.EditorInfo; import com.android.contacts.common.R; import com.android.contacts.common.model.dataitem.DataKind; +import com.android.contacts.common.model.dataitem.GroupMembershipDataItem; import com.android.contacts.common.testing.NeededForTesting; import com.android.contacts.common.util.CommonDateUtils; import com.android.contacts.common.util.ContactDisplayUtils; @@ -437,7 +438,7 @@ public abstract class BaseAccountType extends AccountType { R.string.groupsLabel, Weight.GROUP_MEMBERSHIP, true)); kind.actionHeader = new SimpleInflater(R.string.label_groups); - kind.actionBody = new SimpleInflater(GroupMembership.GROUP_ROW_ID); + kind.actionBody = new SimpleInflater(GroupMembershipDataItem.GROUP_TITLE); kind.typeOverallMax = 1; kind.fieldList = Lists.newArrayList(); kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1)); diff --git a/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java b/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java index 41f19e65..5105a1b4 100644 --- a/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java +++ b/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java @@ -20,11 +20,14 @@ import android.content.ContentValues; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.GroupMembership; +import com.android.contacts.common.GroupMetaData; + /** * Represents a group memebership data item, wrapping the columns in * {@link ContactsContract.CommonDataKinds.GroupMembership}. */ public class GroupMembershipDataItem extends DataItem { + public static final String GROUP_TITLE = "group_title"; /* package */ GroupMembershipDataItem(ContentValues values) { super(values); @@ -37,4 +40,12 @@ public class GroupMembershipDataItem extends DataItem { public String getGroupSourceId() { return getContentValues().getAsString(GroupMembership.GROUP_SOURCE_ID); } + + public void setGroupMetaData(GroupMetaData metaData) { + getContentValues().put(GROUP_TITLE, metaData.getTitle()); + } + + public String getGroupTitle() { + return getContentValues().getAsString(GROUP_TITLE); + } } |