Sort about card entries in a specific order
bug: 16182551
Change-Id: Ia6e5f66531ff3b1d6effbca90d730e86a7e8cebc
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index d316b0d..a49293c 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -228,10 +228,18 @@
Phone.CONTENT_ITEM_TYPE, SipAddress.CONTENT_ITEM_TYPE, Email.CONTENT_ITEM_TYPE,
StructuredPostal.CONTENT_ITEM_TYPE);
- private static final List<String> ABOUT_CARD_MIMETYPES = Lists.newArrayList(
- Event.CONTENT_ITEM_TYPE, GroupMembership.CONTENT_ITEM_TYPE, Identity.CONTENT_ITEM_TYPE,
- Im.CONTENT_ITEM_TYPE, Nickname.CONTENT_ITEM_TYPE, Note.CONTENT_ITEM_TYPE,
- Organization.CONTENT_ITEM_TYPE, Relation.CONTENT_ITEM_TYPE, Website.CONTENT_ITEM_TYPE);
+ private static final List<String> SORTED_ABOUT_CARD_MIMETYPES = Lists.newArrayList(
+ Nickname.CONTENT_ITEM_TYPE,
+ // Phonetic name is inserted after nickname if it is available.
+ // No mimetype for phonetic name exists.
+ Website.CONTENT_ITEM_TYPE,
+ Organization.CONTENT_ITEM_TYPE,
+ Event.CONTENT_ITEM_TYPE,
+ Relation.CONTENT_ITEM_TYPE,
+ Im.CONTENT_ITEM_TYPE,
+ GroupMembership.CONTENT_ITEM_TYPE,
+ Identity.CONTENT_ITEM_TYPE,
+ Note.CONTENT_ITEM_TYPE);
/** Id for the background contact loader */
private static final int LOADER_CONTACT_ID = 0;
@@ -789,20 +797,33 @@
}
}
+ private List<List<Entry>> buildAboutCardEntries() {
+ final List<List<Entry>> aboutCardEntries = new ArrayList<>();
+ for (String mimetype : SORTED_ABOUT_CARD_MIMETYPES) {
+ final List<DataItem> mimeTypeItems = mDataItemsMap.get(mimetype);
+ if (mimeTypeItems == null) {
+ continue;
+ }
+ final List<Entry> aboutEntries = dataItemsToEntries(mimeTypeItems);
+ if (aboutEntries.size() > 0) {
+ aboutCardEntries.add(aboutEntries);
+ }
+ }
+ return aboutCardEntries;
+ }
+
private void populateContactAndAboutCard() {
Trace.beginSection("bind contact card");
final List<List<Entry>> contactCardEntries = new ArrayList<>();
- final List<List<Entry>> aboutCardEntries = new ArrayList<>();
+ final List<List<Entry>> aboutCardEntries = buildAboutCardEntries();
for (int i = 0; i < mDataItemsList.size(); ++i) {
final List<DataItem> dataItemsByMimeType = mDataItemsList.get(i);
final DataItem topDataItem = dataItemsByMimeType.get(0);
- if (ABOUT_CARD_MIMETYPES.contains(topDataItem.getMimeType())) {
- List<Entry> aboutEntries = dataItemsToEntries(mDataItemsList.get(i));
- if (aboutEntries.size() > 0) {
- aboutCardEntries.add(aboutEntries);
- }
+ if (SORTED_ABOUT_CARD_MIMETYPES.contains(topDataItem.getMimeType())) {
+ // About card mimetypes are built in buildAboutCardEntries, skip here
+ continue;
} else {
List<Entry> contactEntries = dataItemsToEntries(mDataItemsList.get(i));
if (contactEntries.size() > 0) {
@@ -842,7 +863,13 @@
);
List<Entry> phoneticList = new ArrayList<>();
phoneticList.add(phoneticEntry);
- aboutCardEntries.add(0, phoneticList);
+ // Phonetic name comes after nickname. Check to see if the first entry type is nickname
+ if (aboutCardEntries.get(0).get(0).getHeader().equals(
+ getResources().getString(R.string.header_nickname_entry))) {
+ aboutCardEntries.add(1, phoneticList);
+ } else {
+ aboutCardEntries.add(0, phoneticList);
+ }
}
mAboutCard.initialize(aboutCardEntries,