Add function to construction monogram based on display order
Bug: 162456205
Test: Manual
Change-Id: I0873bbc07b39fcd49d6d614d6752841347d0e3cf
diff --git a/car-telephony-common/src/com/android/car/telephony/common/Contact.java b/car-telephony-common/src/com/android/car/telephony/common/Contact.java
index aef9c72..498e92b 100644
--- a/car-telephony-common/src/com/android/car/telephony/common/Contact.java
+++ b/car-telephony-common/src/com/android/car/telephony/common/Contact.java
@@ -450,6 +450,17 @@
}
/**
+ * Returns the initials of the contact's name based on display order.
+ */
+ public String getInitialsBasedOnDisplayOrder(boolean startWithFirstName) {
+ if (startWithFirstName) {
+ return TelecomUtils.getInitials(mDisplayName, mDisplayNameAlt);
+ } else {
+ return TelecomUtils.getInitials(mDisplayNameAlt, mDisplayName);
+ }
+ }
+
+ /**
* Returns {@link #mPhoneBookLabel}
*/
public String getPhonebookLabel() {
diff --git a/car-telephony-common/src/com/android/car/telephony/common/TelecomUtils.java b/car-telephony-common/src/com/android/car/telephony/common/TelecomUtils.java
index 0ad3d57..950370e 100644
--- a/car-telephony-common/src/com/android/car/telephony/common/TelecomUtils.java
+++ b/car-telephony-common/src/com/android/car/telephony/common/TelecomUtils.java
@@ -69,6 +69,14 @@
private static final String TAG = "CD.TelecomUtils";
private static final int PII_STRING_LENGTH = 4;
private static final String COUNTRY_US = "US";
+ /**
+ * A reference to keep track of the soring method of sorting by the contact's first name.
+ */
+ public static final Integer SORT_BY_FIRST_NAME = 1;
+ /**
+ * A reference to keep track of the soring method of sorting by the contact's last name.
+ */
+ public static final Integer SORT_BY_LAST_NAME = 2;
private static String sVoicemailNumber;
private static TelephonyManager sTelephonyManager;
@@ -391,26 +399,48 @@
/**
* Sets a Contact avatar onto the provided {@code icon}. The first letter or both letters of the
* contact's initials.
+ *
+ * @param sortMethod can be either {@link #SORT_BY_FIRST_NAME} or {@link #SORT_BY_LAST_NAME}.
*/
public static void setContactBitmapAsync(
Context context,
@Nullable final ImageView icon,
- @Nullable final Contact contact) {
- setContactBitmapAsync(context, icon, contact, null);
+ @Nullable final Contact contact,
+ Integer sortMethod) {
+ setContactBitmapAsync(context, icon, contact, null, sortMethod);
}
/**
* Sets a Contact avatar onto the provided {@code icon}. The first letter or both letters of the
- * contact's initials or {@code fallbackDisplayName} will be used as a fallback resource if
- * avatar loading fails.
+ * contact's initials. Will start with first name by default.
*/
public static void setContactBitmapAsync(
Context context,
@Nullable final ImageView icon,
@Nullable final Contact contact,
@Nullable final String fallbackDisplayName) {
+ setContactBitmapAsync(context, icon, contact, fallbackDisplayName, SORT_BY_FIRST_NAME);
+ }
+
+ /**
+ * Sets a Contact avatar onto the provided {@code icon}. The first letter or both letters of the
+ * contact's initials or {@code fallbackDisplayName} will be used as a fallback resource if
+ * avatar loading fails.
+ *
+ * @param sortMethod can be either {@link #SORT_BY_FIRST_NAME} or {@link #SORT_BY_LAST_NAME}. If
+ * the value is {@link #SORT_BY_FIRST_NAME}, the name and initials order will
+ * be first name first. Otherwise, the order will be last name first.
+ */
+ public static void setContactBitmapAsync(
+ Context context,
+ @Nullable final ImageView icon,
+ @Nullable final Contact contact,
+ @Nullable final String fallbackDisplayName,
+ Integer sortMethod) {
Uri avatarUri = contact != null ? contact.getAvatarUri() : null;
- String initials = contact != null ? contact.getInitials()
+ boolean startWithFirstName = isSortByFirstName(sortMethod);
+ String initials = contact != null
+ ? contact.getInitialsBasedOnDisplayOrder(startWithFirstName)
: (fallbackDisplayName == null ? null : getInitials(fallbackDisplayName, null));
String identifier = contact == null ? fallbackDisplayName : contact.getDisplayName();
@@ -603,4 +633,12 @@
return piiString.length() >= PII_STRING_LENGTH ? "*" + piiString.substring(
piiString.length() - PII_STRING_LENGTH) : piiString;
}
+
+ /**
+ * Returns true if contacts are sorted by their first names. Returns false if they are sorted by
+ * last names.
+ */
+ public static boolean isSortByFirstName(Integer sortMethod) {
+ return SORT_BY_FIRST_NAME.equals(sortMethod);
+ }
}