From 82670fee34bfc922905f31d3904406eb0677b162 Mon Sep 17 00:00:00 2001 From: linyuh Date: Thu, 2 Nov 2017 18:05:33 -0700 Subject: Support dual alphabets in smart search when a secondary alphabet is available. Bug: 30215380 Test: QueryBoldingUtilTest, QueryFilteringUtilTest, ContactFilterCursorTest PiperOrigin-RevId: 174408771 Change-Id: I4c601b16dd90db6b7b2a05c9daa6804749ea2a43 --- .../dialer/searchfragment/cp2/ContactFilterCursor.java | 12 +++++++----- .../dialer/searchfragment/cp2/SearchContactViewHolder.java | 2 +- .../dialer/searchfragment/cp2/SearchContactsCursor.java | 10 ++++++---- .../searchfragment/cp2/SearchContactsCursorLoader.java | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) (limited to 'java/com/android/dialer/searchfragment/cp2') diff --git a/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java index 84c22a2cf..df67b762f 100644 --- a/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java +++ b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java @@ -17,6 +17,7 @@ package com.android.dialer.searchfragment.cp2; import android.content.ContentResolver; +import android.content.Context; import android.database.CharArrayBuffer; import android.database.ContentObserver; import android.database.Cursor; @@ -44,7 +45,7 @@ import java.util.Set; * Wrapper for a cursor containing all on device contacts. * *

This cursor removes duplicate phone numbers associated with the same contact and can filter - * contacts based on a query by calling {@link #filter(String)}. + * contacts based on a query by calling {@link #filter(String, Context)}. */ final class ContactFilterCursor implements Cursor { @@ -72,10 +73,11 @@ final class ContactFilterCursor implements Cursor { /** * @param cursor with projection {@link Projections#CP2_PROJECTION}. * @param query to filter cursor results. + * @param context of the app. */ - ContactFilterCursor(Cursor cursor, @Nullable String query) { + ContactFilterCursor(Cursor cursor, @Nullable String query, Context context) { this.cursor = createCursor(cursor); - filter(query); + filter(query, context); } /** @@ -238,7 +240,7 @@ final class ContactFilterCursor implements Cursor { *

  • Its company contains the query * */ - public void filter(@Nullable String query) { + public void filter(@Nullable String query, Context context) { if (query == null) { query = ""; } @@ -253,7 +255,7 @@ final class ContactFilterCursor implements Cursor { String companyName = cursor.getString(Projections.COMPANY_NAME); String nickName = cursor.getString(Projections.NICKNAME); if (TextUtils.isEmpty(query) - || QueryFilteringUtil.nameMatchesT9Query(query, name) + || QueryFilteringUtil.nameMatchesT9Query(query, name, context) || QueryFilteringUtil.numberMatchesNumberQuery(query, number) || QueryFilteringUtil.nameContainsQuery(query, name) || QueryFilteringUtil.nameContainsQuery(query, companyName) diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java index c09396c72..386ab3a6b 100644 --- a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java @@ -104,7 +104,7 @@ public final class SearchContactViewHolder extends ViewHolder implements OnClick : context.getString( com.android.contacts.common.R.string.call_subject_type_and_number, label, number); - nameOrNumberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name)); + nameOrNumberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name, context)); numberView.setText(QueryBoldingUtil.getNumberWithQueryBolded(query, secondaryInfo)); setCallToAction(cursor, query); diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java index 508ca7f57..7697e0520 100644 --- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java @@ -32,17 +32,19 @@ import com.android.dialer.searchfragment.common.SearchCursor; final class SearchContactsCursor extends MergeCursor implements SearchCursor { private final ContactFilterCursor contactFilterCursor; + private final Context context; static SearchContactsCursor newInstance( Context context, ContactFilterCursor contactFilterCursor) { MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION); headerCursor.addRow(new String[] {context.getString(R.string.all_contacts)}); - return new SearchContactsCursor(new Cursor[] {headerCursor, contactFilterCursor}); + return new SearchContactsCursor(new Cursor[] {headerCursor, contactFilterCursor}, context); } - private SearchContactsCursor(Cursor[] cursors) { + private SearchContactsCursor(Cursor[] cursors, Context context) { super(cursors); - contactFilterCursor = (ContactFilterCursor) cursors[1]; + this.contactFilterCursor = (ContactFilterCursor) cursors[1]; + this.context = context; } @Override @@ -52,7 +54,7 @@ final class SearchContactsCursor extends MergeCursor implements SearchCursor { @Override public boolean updateQuery(@Nullable String query) { - contactFilterCursor.filter(query); + contactFilterCursor.filter(query, context); return true; } diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java index d3abbffca..35518019e 100644 --- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java @@ -61,7 +61,7 @@ public final class SearchContactsCursorLoader extends CursorLoader { // All contacts Cursor cursor = super.loadInBackground(); // Filtering logic - ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, query); + ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, query, getContext()); // Header logic return SearchContactsCursor.newInstance(getContext(), contactFilterCursor); } -- cgit v1.2.3