summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-02-12 11:40:20 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-14 17:49:08 -0800
commitc266566db55647ac1e27f686b6f03440c5eee36b (patch)
tree921d36f41242104de690aa0b60c4ce1868893a03 /java/com/android/dialer/searchfragment
parentb2d5e7caf51de7805b98295e97c37a91792cbddf (diff)
Restored work profile contacts to Dialer search.
We were intentionally leaving out work profile contacts to gauge user impact. Unfortunatly, no enterprise users left feedback in the play store but luckily, they raised the concern internally and it was escalated to the Android for Work team. Bug: 73083054 Test: manual PiperOrigin-RevId: 185409607 Change-Id: Iae40d0abdbe7f209ba3ad12823e07eac748632a5
Diffstat (limited to 'java/com/android/dialer/searchfragment')
-rw-r--r--java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml11
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java8
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java8
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java21
4 files changed, 35 insertions, 13 deletions
diff --git a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
index 407207a83..9be7fa046 100644
--- a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
+++ b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
@@ -65,4 +65,15 @@
android:tint="@color/dialer_secondary_text_color"
android:visibility="gone"
android:scaleType="center"/>
+
+ <ImageView
+ android:id="@+id/work_icon"
+ android:layout_width="@dimen/search_row_height"
+ android:layout_height="@dimen/search_row_height"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:padding="@dimen/call_to_action_padding"
+ android:src="@drawable/ic_work_profile"
+ android:scaleType="centerInside"
+ android:visibility="gone"/>
</RelativeLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
index 9d369003d..4be96fe58 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
@@ -26,8 +26,10 @@ import android.provider.ContactsContract.Contacts;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
+import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
+import com.android.contacts.common.compat.DirectoryCompat;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.contactphoto.ContactPhotoManager;
@@ -46,6 +48,7 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
private final TextView nameView;
private final TextView numberView;
private final QuickContactBadge photo;
+ private final ImageView workBadge;
private String number;
@@ -55,6 +58,7 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
photo = view.findViewById(R.id.photo);
nameView = view.findViewById(R.id.primary);
numberView = view.findViewById(R.id.secondary);
+ workBadge = view.findViewById(R.id.work_icon);
context = view.getContext();
}
@@ -74,6 +78,10 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name, context));
numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo, context));
+ workBadge.setVisibility(
+ DirectoryCompat.isOnlyEnterpriseDirectoryId(cursor.getDirectoryId())
+ ? View.VISIBLE
+ : View.GONE);
if (shouldShowPhoto(cursor)) {
nameView.setVisibility(View.VISIBLE);
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
index 9510443b9..653c67041 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
@@ -22,6 +22,7 @@ import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import com.android.contacts.common.compat.DirectoryCompat;
import com.android.dialer.common.Assert;
import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader;
@@ -101,7 +102,12 @@ public final class RemoteContactsCursor extends MergeCursor implements SearchCur
private static MatrixCursor createHeaderCursor(Context context, String name, long id) {
MatrixCursor headerCursor = new MatrixCursor(PROJECTION, 1);
- headerCursor.addRow(new Object[] {context.getString(R.string.directory, name), id});
+ if (DirectoryCompat.isOnlyEnterpriseDirectoryId(id)) {
+ headerCursor.addRow(
+ new Object[] {context.getString(R.string.directory_search_label_work), id});
+ } else {
+ headerCursor.addRow(new Object[] {context.getString(R.string.directory, name), id});
+ }
return headerCursor;
}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
index 9feeb7e99..cf495e49c 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
@@ -27,6 +27,7 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
+import com.android.contacts.common.compat.DirectoryCompat;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
import java.util.ArrayList;
@@ -71,7 +72,14 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
Directory directory = directories.get(i);
// Filter out local directories
- if (!isRemoteDirectory(directory.getId())) {
+ if (!DirectoryCompat.isRemoteDirectoryId(directory.getId())
+ && !DirectoryCompat.isEnterpriseDirectoryId(directory.getId())) {
+ cursors[i] = null;
+ continue;
+ }
+
+ // Filter out invisible directories
+ if (DirectoryCompat.isInvisibleDirectory(directory.getId())) {
cursors[i] = null;
continue;
}
@@ -93,17 +101,6 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
}
- private static boolean isRemoteDirectory(long directoryId) {
- return VERSION.SDK_INT >= VERSION_CODES.N
- ? ContactsContract.Directory.isRemoteDirectoryId(directoryId)
- : (directoryId != ContactsContract.Directory.DEFAULT
- && directoryId != ContactsContract.Directory.LOCAL_INVISIBLE
- // Directory.ENTERPRISE_DEFAULT is the default work profile directory for locally stored
- // contacts
- && directoryId != ContactsContract.Directory.ENTERPRISE_DEFAULT
- && directoryId != ContactsContract.Directory.ENTERPRISE_LOCAL_INVISIBLE);
- }
-
private MatrixCursor createMatrixCursorFilteringNullNumbers(Cursor cursor) {
if (cursor == null) {
return null;