summaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authorBrandon Maxwell <maxwelb@google.com>2015-10-23 12:01:00 -0700
committerBrandon Maxwell <maxwelb@google.com>2015-10-26 16:32:29 -0700
commit36aeec91ed927b7fe3a27bcd5e224443899117f1 (patch)
tree853e12b1c575c2ecfc568001e7a73da8e67d2869 /src/com/android
parentc58c53f9bf497f891e857da4b55a02b594082da6 (diff)
CallDetailActivity respect display name order
- Updated the CallDetailActivity to choose whether to show last name first or first name first based on user preferences. - Modified callLog code to behave in a similar fashion - Fixed bug in ContactInfoHelperTests - Rename PhoneCallDetails.name -> PhoneCallDetails.namePrimary Bug: 19364093 Change-Id: I50971ad0f26f6ede49f1c82965d1b00ce0cba4d3
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/dialer/CallDetailActivity.java18
-rw-r--r--src/com/android/dialer/PhoneCallDetails.java25
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java7
-rw-r--r--src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java3
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemHelper.java4
-rw-r--r--src/com/android/dialer/calllog/PhoneCallDetailsHelper.java12
6 files changed, 49 insertions, 20 deletions
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 284a5785e..2aff61c4c 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -24,7 +24,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.v7.app.AppCompatActivity;
-import android.telecom.PhoneAccountHandle;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
@@ -45,6 +44,7 @@ import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.interactions.TouchPointManager;
+import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
@@ -109,7 +109,6 @@ public class CallDetailActivity extends AppCompatActivity
mDetails = details[0];
mNumber = TextUtils.isEmpty(mDetails.number) ? null : mDetails.number.toString();
mDisplayNumber = mDetails.displayNumber;
- final int numberPresentation = mDetails.numberPresentation;
final CharSequence callLocationOrType = getNumberTypeOrLocation(mDetails);
@@ -117,8 +116,10 @@ public class CallDetailActivity extends AppCompatActivity
final String displayNumberStr = mBidiFormatter.unicodeWrap(
displayNumber.toString(), TextDirectionHeuristics.LTR);
- if (!TextUtils.isEmpty(mDetails.name)) {
- mCallerName.setText(mDetails.name);
+ mDetails.nameDisplayOrder = mContactsPreferences.getDisplayOrder();
+
+ if (!TextUtils.isEmpty(mDetails.getPreferredName())) {
+ mCallerName.setText(mDetails.getPreferredName());
mCallerNumber.setText(callLocationOrType + " " + displayNumberStr);
} else {
mCallerName.setText(displayNumberStr);
@@ -174,7 +175,7 @@ public class CallDetailActivity extends AppCompatActivity
* @return The phone number type or location.
*/
private CharSequence getNumberTypeOrLocation(PhoneCallDetails details) {
- if (!TextUtils.isEmpty(details.name)) {
+ if (!TextUtils.isEmpty(details.namePrimary)) {
return Phone.getTypeLabel(mResources, details.numberType,
details.numberLabel);
} else {
@@ -185,6 +186,7 @@ public class CallDetailActivity extends AppCompatActivity
private Context mContext;
private ContactInfoHelper mContactInfoHelper;
+ private ContactsPreferences mContactsPreferences;
private CallTypeHelper mCallTypeHelper;
private ContactPhotoManager mContactPhotoManager;
private FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
@@ -223,6 +225,7 @@ public class CallDetailActivity extends AppCompatActivity
mContext = this;
mResources = getResources();
mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
+ mContactsPreferences = new ContactsPreferences(mContext);
mCallTypeHelper = new CallTypeHelper(getResources());
mFilteredNumberAsyncQueryHandler =
new FilteredNumberAsyncQueryHandler(getContentResolver());
@@ -280,6 +283,7 @@ public class CallDetailActivity extends AppCompatActivity
@Override
public void onResume() {
super.onResume();
+ mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
getCallDetails();
}
@@ -436,8 +440,8 @@ public class CallDetailActivity extends AppCompatActivity
contactType = ContactPhotoManager.TYPE_BUSINESS;
}
- final String displayName = TextUtils.isEmpty(mDetails.name)
- ? mDetails.displayNumber : mDetails.name.toString();
+ final String displayName = TextUtils.isEmpty(mDetails.namePrimary)
+ ? mDetails.displayNumber : mDetails.namePrimary.toString();
final String lookupKey = mDetails.contactUri == null
? null : UriUtils.getLookupKeyFromUri(mDetails.contactUri);
diff --git a/src/com/android/dialer/PhoneCallDetails.java b/src/com/android/dialer/PhoneCallDetails.java
index 403c4e86c..fb1827dc4 100644
--- a/src/com/android/dialer/PhoneCallDetails.java
+++ b/src/com/android/dialer/PhoneCallDetails.java
@@ -16,12 +16,14 @@
package com.android.dialer;
+import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.calllog.PhoneNumberDisplayUtil;
import android.content.Context;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
/**
* The details of a phone call to be shown in the UI.
@@ -50,7 +52,14 @@ public class PhoneCallDetails {
// The duration of the call in milliseconds, or 0 for missed calls.
public long duration;
// The name of the contact, or the empty string.
- public CharSequence name;
+ public CharSequence namePrimary;
+ // The alternative name of the contact, e.g. last name first, or the empty string
+ public CharSequence nameAlternative;
+ /**
+ * The user's preference on name display order, last name first or first time first.
+ * {@see ContactsPreferences}
+ */
+ public int nameDisplayOrder;
// The type of phone, e.g., {@link Phone#TYPE_HOME}, 0 if not available.
public int numberType;
// The custom label associated with the phone number in the contact, or the empty string.
@@ -117,4 +126,18 @@ public class PhoneCallDetails {
this.formattedNumber,
this.isVoicemail).toString();
}
+
+ /**
+ * Returns the preferred name for the call details as specified by the
+ * {@link #nameDisplayOrder}
+ *
+ * @return the preferred name
+ */
+ public CharSequence getPreferredName() {
+ if (nameDisplayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY
+ || TextUtils.isEmpty(nameAlternative)) {
+ return namePrimary;
+ }
+ return nameAlternative;
+ }
}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index ae20e4943..01af982f3 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -465,10 +465,11 @@ public class CallLogAdapter extends GroupingListAdapter
details.dataUsage = c.getLong(CallLogQuery.DATA_USAGE);
}
- String preferredName = getPreferredDisplayName(info);
- if (!TextUtils.isEmpty(preferredName)) {
+ if (!TextUtils.isEmpty(info.name) || !TextUtils.isEmpty(info.nameAlternative)) {
details.contactUri = info.lookupUri;
- details.name = preferredName;
+ details.namePrimary = info.name;
+ details.nameAlternative = info.nameAlternative;
+ details.nameDisplayOrder = mContactsPreferences.getDisplayOrder();
details.numberType = info.type;
details.numberLabel = info.label;
details.photoUri = info.photoUri;
diff --git a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
index 89932ffce..2fffaff8d 100644
--- a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
+++ b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
@@ -189,7 +189,8 @@ public class CallLogAsyncTaskUtil {
details.accountHandle = accountHandle;
details.contactUri = info.lookupUri;
- details.name = info.name;
+ details.namePrimary = info.name;
+ details.nameAlternative = info.nameAlternative;
details.numberType = info.type;
details.numberLabel = info.label;
details.photoUri = info.photoUri;
diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java
index 84d036487..f856bf924 100644
--- a/src/com/android/dialer/calllog/CallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java
@@ -260,8 +260,8 @@ import com.android.dialer.R;
*/
private CharSequence getNameOrNumber(PhoneCallDetails details) {
final CharSequence recipient;
- if (!TextUtils.isEmpty(details.name)) {
- recipient = details.name;
+ if (!TextUtils.isEmpty(details.getPreferredName())) {
+ recipient = details.getPreferredName();
} else {
recipient = details.displayNumber;
}
diff --git a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
index b16079a9c..96dbf8219 100644
--- a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
@@ -132,12 +132,12 @@ public class PhoneCallDetailsHelper {
final CharSequence nameText;
final CharSequence displayNumber = details.displayNumber;
- if (TextUtils.isEmpty(details.name)) {
+ if (TextUtils.isEmpty(details.getPreferredName())) {
nameText = displayNumber;
// We have a real phone number as "nameView" so make it always LTR
views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
} else {
- nameText = details.name;
+ nameText = details.getPreferredName();
}
views.nameView.setText(nameText);
@@ -200,7 +200,7 @@ public class PhoneCallDetailsHelper {
&& !PhoneNumberHelper.isUriNumber(details.number.toString())
&& !mTelecomCallLogCache.isVoicemailNumber(details.accountHandle, details.number)) {
- if (TextUtils.isEmpty(details.name) && !TextUtils.isEmpty(details.geocode)) {
+ if (TextUtils.isEmpty(details.namePrimary) && !TextUtils.isEmpty(details.geocode)) {
numberFormattedLabel = details.geocode;
} else if (!(details.numberType == Phone.TYPE_CUSTOM
&& TextUtils.isEmpty(details.numberLabel))) {
@@ -210,7 +210,7 @@ public class PhoneCallDetailsHelper {
}
}
- if (!TextUtils.isEmpty(details.name) && TextUtils.isEmpty(numberFormattedLabel)) {
+ if (!TextUtils.isEmpty(details.namePrimary) && TextUtils.isEmpty(numberFormattedLabel)) {
numberFormattedLabel = details.displayNumber;
}
return numberFormattedLabel;
@@ -284,8 +284,8 @@ public class PhoneCallDetailsHelper {
@NeededForTesting
public void setCallDetailsHeader(TextView nameView, PhoneCallDetails details) {
final CharSequence nameText;
- if (!TextUtils.isEmpty(details.name)) {
- nameText = details.name;
+ if (!TextUtils.isEmpty(details.namePrimary)) {
+ nameText = details.namePrimary;
} else if (!TextUtils.isEmpty(details.displayNumber)) {
nameText = details.displayNumber;
} else {