summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Chang <vichang@google.com>2015-12-17 09:14:15 +0000
committerVictor Chang <vichang@google.com>2016-01-13 22:10:00 +0000
commit240523d3e1b4502326c8d0d313dd1787aa8ff024 (patch)
treed6478e553604cbd844704d03d80708c0951bd23b
parent90a13e94e3d918da73e83d80ab12c6e5f3f76f7e (diff)
Show work badge icon/description in InCallUI/Dialer
Add work badge icon in calllog for work contacts To see this feature 1. Receive/Make a call from work contact (a contact in work profile has the phone number) 2. Drop/miss the call. See a badge icon next to phone label in calllog BUG=26082618 Change-Id: I7371795e3c3ef925739096f39a70f03722dd430b
-rw-r--r--res/layout/call_log_list_item.xml8
-rw-r--r--src/com/android/dialer/PhoneCallDetails.java4
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java6
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViewHolder.java2
-rw-r--r--src/com/android/dialer/calllog/ContactInfo.java3
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java5
-rw-r--r--src/com/android/dialer/list/RegularSearchListAdapter.java12
7 files changed, 36 insertions, 4 deletions
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index 95de2680c..469e72ae5 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -101,6 +101,14 @@
android:layout_marginEnd="@dimen/call_log_icon_margin"
android:layout_gravity="center_vertical" />
+ <ImageView android:id="@+id/work_profile_icon"
+ android:src="@drawable/ic_work_profile"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/call_log_icon_margin"
+ android:scaleType="center"
+ android:visibility="gone" />
+
<TextView
android:id="@+id/call_location_and_date"
android:layout_width="wrap_content"
diff --git a/src/com/android/dialer/PhoneCallDetails.java b/src/com/android/dialer/PhoneCallDetails.java
index 71aa26d15..b332b43cc 100644
--- a/src/com/android/dialer/PhoneCallDetails.java
+++ b/src/com/android/dialer/PhoneCallDetails.java
@@ -16,6 +16,7 @@
package com.android.dialer;
+import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.calllog.PhoneNumberDisplayUtil;
@@ -101,6 +102,9 @@ public class PhoneCallDetails {
// Whether the contact number is a voicemail number.
public boolean isVoicemail;
+ /** The {@link UserType} of the contact */
+ public @UserType long contactUserType;
+
/**
* If this is a voicemail, whether the message is read. For other types of calls, this defaults
* to {@code true}.
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index dac50ff1f..af77d8621 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -41,6 +41,7 @@ import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
+import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.PermissionsUtil;
@@ -55,6 +56,7 @@ import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+import com.android.incallui.CallerInfo;
import java.util.HashMap;
@@ -400,6 +402,7 @@ public class CallLogAdapter extends GroupingListAdapter
* @param viewHolder The view corresponding to this entry.
* @param position The position of the entry.
*/
+ @Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
Trace.beginSection("onBindViewHolder: " + position);
@@ -497,6 +500,7 @@ public class CallLogAdapter extends GroupingListAdapter
details.photoUri = info.photoUri;
details.sourceType = info.sourceType;
details.objectId = info.objectId;
+ details.contactUserType = info.userType;
}
final CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder;
@@ -517,6 +521,8 @@ public class CallLogAdapter extends GroupingListAdapter
details.numberLabel);
// Default case: an item in the call log.
views.primaryActionView.setVisibility(View.VISIBLE);
+ views.workIconView.setVisibility(
+ details.contactUserType == ContactsUtils.USER_TYPE_WORK ? View.VISIBLE : View.GONE);
// Check if the day group has changed and display a header if necessary.
int currentGroup = getDayGroupForCall(views.rowId);
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 21f3213a6..7e1471953 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -96,6 +96,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public View sendMessageView;
public View detailsButtonView;
public View callWithNoteButtonView;
+ public ImageView workIconView;
/**
* The row Id for the first call associated with the call log entry. Used as a key for the
@@ -233,6 +234,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
this.callLogEntryView = callLogEntryView;
this.dayGroupHeader = dayGroupHeader;
this.primaryActionButtonView = primaryActionButtonView;
+ this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
Resources resources = mContext.getResources();
mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index 30f60d9d3..1020d109c 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -19,6 +19,7 @@ package com.android.dialer.calllog;
import android.net.Uri;
import android.text.TextUtils;
+import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.util.UriUtils;
import com.google.common.base.Objects;
@@ -46,6 +47,7 @@ public class ContactInfo {
public Uri photoUri;
public boolean isBadData;
public String objectId;
+ public @UserType long userType;
public static ContactInfo EMPTY = new ContactInfo();
@@ -80,6 +82,7 @@ public class ContactInfo {
if (photoId != other.photoId) return false;
if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
if (!TextUtils.equals(objectId, other.objectId)) return false;
+ if (userType != other.userType) return false;
return true;
}
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 1fd2fad5e..e075b9bf3 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -32,6 +32,7 @@ import android.text.TextUtils;
import android.util.Log;
import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.ContactsCompat;
import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.contacts.common.util.PhoneNumberHelper;
@@ -41,6 +42,7 @@ import com.android.dialer.service.CachedNumberLookupService;
import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
import com.android.dialer.util.TelecomUtil;
import com.android.dialerbind.ObjectFactory;
+import com.android.incallui.CallerInfo;
import org.json.JSONException;
import org.json.JSONObject;
@@ -200,6 +202,9 @@ public class ContactInfoHelper {
info.photoId = phoneLookupCursor.getLong(PhoneQuery.PHOTO_ID);
info.photoUri = UriUtils.parseUriOrNull(phoneLookupCursor.getString(PhoneQuery.PHOTO_URI));
info.formattedNumber = null;
+ info.userType = ContactsUtils.determineUserType(null,
+ phoneLookupCursor.getLong(PhoneQuery.PERSON_ID));
+
return info;
}
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index 748f4dcda..4d8bb6df7 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -21,6 +21,8 @@ import android.net.Uri;
import android.text.TextUtils;
import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.DirectoryCompat;
import com.android.contacts.common.list.DirectoryPartition;
import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.calllog.ContactInfo;
@@ -45,19 +47,21 @@ public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter {
CachedContactInfo cacheInfo = lookupService.buildCachedContactInfo(info);
final Cursor item = (Cursor) getItem(position);
if (item != null) {
+ final DirectoryPartition partition =
+ (DirectoryPartition) getPartition(getPartitionForPosition(position));
+ final long directoryId = partition.getDirectoryId();
+
info.name = item.getString(PhoneQuery.DISPLAY_NAME);
info.type = item.getInt(PhoneQuery.PHONE_TYPE);
info.label = item.getString(PhoneQuery.PHONE_LABEL);
info.number = item.getString(PhoneQuery.PHONE_NUMBER);
final String photoUriStr = item.getString(PhoneQuery.PHOTO_URI);
info.photoUri = photoUriStr == null ? null : Uri.parse(photoUriStr);
+ info.userType = DirectoryCompat.isEnterpriseDirectoryId(directoryId)
+ ? ContactsUtils.USER_TYPE_WORK : ContactsUtils.USER_TYPE_CURRENT;
cacheInfo.setLookupKey(item.getString(PhoneQuery.LOOKUP_KEY));
- final int partitionIndex = getPartitionForPosition(position);
- final DirectoryPartition partition =
- (DirectoryPartition) getPartition(partitionIndex);
- final long directoryId = partition.getDirectoryId();
final String sourceName = partition.getLabel();
if (isExtendedDirectory(directoryId)) {
cacheInfo.setExtendedSource(sourceName, directoryId);