Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fff99ad authored by Danny Baumann's avatar Danny Baumann
Browse files

Display group memberships in a meaningful way.

Change-Id: I60d789b3cf533173a46417bf6876e7098cde2335
parent 0d4dea32
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -124,6 +124,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;
@@ -1664,6 +1665,12 @@ public class QuickContactActivity extends ContactsActivity {
        if (dataItems.get(0).getMimeType().equals(MIMETYPE_GPLUS_PROFILE) ||
                dataItems.get(0).getMimeType().equals(MIMETYPE_HANGOUTS)) {
            return gPlusOrHangoutsDataItemsToEntries(dataItems);
        } else if (dataItems.get(0).getMimeType().equals(GroupMembership.CONTENT_ITEM_TYPE)) {
            final Entry entry = groupDataItemsToEntry(dataItems);
            if (entry != null) {
                return Lists.newArrayList(entry);
            }
            return null;
        } else {
            final List<Entry> entries = new ArrayList<>();
            for (DataItem dataItem : dataItems) {
@@ -1677,6 +1684,39 @@ public class QuickContactActivity extends ContactsActivity {
        }
    }

    private Entry groupDataItemsToEntry(List<DataItem> dataItems) {
        final List<String> titles = new ArrayList<>();
        for (DataItem dataItem : dataItems) {
            final String title = dataItem instanceof GroupMembershipDataItem
                    ? ((GroupMembershipDataItem) dataItem).getGroupTitle() : null;
            if (title != null) {
                titles.add(title);
            }
        }
        if (titles.isEmpty()) {
            return null;
        }

        return new Entry(/* viewId = */ -1, /* icon = */ null,
                /* header */ getResources().getString(R.string.contacts_groups_label),
                /* subHeader */ null,
                /* subHeaderIcon = */ null,
                /* text = */ TextUtils.join(", ", titles),
                /* textIcon = */ null,
                /* primaryContentDescription = */ null,
                /* intent = */ null,
                /* alternateIcon = */ null,
                /* alternateIntent = */ null,
                /* alternateContentDescription = */ null,
                /* shouldApplyColor = */ true,
                /* isEditable = */ false,
                /* EntryContextMenuInfo = */ null,
                /* thirdIcon = */ null,
                /* thirdIntent = */ null,
                /* thirdContentDescription = */ null,
                /* iconResourceId = */ 0);
    }

    /**
     * G+ and Hangout entries are unique in that a single ExpandingEntryCardView.Entry consists
     * of two data items. This method attempts to build each entry using the two data items if