diff options
Diffstat (limited to 'java/com/android/dialer/searchfragment')
-rw-r--r-- | java/com/android/dialer/searchfragment/list/NewSearchFragment.java | 11 | ||||
-rw-r--r-- | java/com/android/dialer/searchfragment/list/SearchAdapter.java | 12 |
2 files changed, 19 insertions, 4 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java index e797a0390..8306d37a6 100644 --- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java +++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java @@ -112,6 +112,9 @@ public final class NewSearchFragment extends Fragment private RecyclerView recyclerView; private SearchAdapter adapter; private String query; + // Raw query number from dialpad, which may contain special character such as "+". This is used + // for actions to add contact or send sms. + private String rawNumber; private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION; private boolean remoteDirectoriesDisabledForTesting; @@ -138,7 +141,7 @@ public final class NewSearchFragment extends Fragment LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_search, parent, false); adapter = new SearchAdapter(getContext(), new SearchCursorManager(), this); - adapter.setQuery(query); + adapter.setQuery(query, rawNumber); adapter.setSearchActions(getActions()); adapter.setZeroSuggestVisible(getArguments().getBoolean(KEY_SHOW_ZERO_SUGGEST)); emptyContentView = view.findViewById(R.id.empty_view); @@ -248,11 +251,15 @@ public final class NewSearchFragment extends Fragment } } + public void setRawNumber(String rawNumber) { + this.rawNumber = rawNumber; + } + public void setQuery(String query, CallInitiationType.Type callInitiationType) { this.query = query; this.callInitiationType = callInitiationType; if (adapter != null) { - adapter.setQuery(query); + adapter.setQuery(query, rawNumber); adapter.setSearchActions(getActions()); adapter.setZeroSuggestVisible(isRegularSearch()); loadNearbyPlacesCursor(); diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java index cc090ac47..4254baece 100644 --- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java +++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java @@ -18,6 +18,7 @@ package com.android.dialer.searchfragment.list; import android.content.Context; import android.database.Cursor; +import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; @@ -47,6 +48,9 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> { private boolean showZeroSuggest; private String query; + // Raw query number from dialpad, which may contain special character such as "+". This is used + // for actions to add contact or send sms. + private String rawNumber; private OnClickListener allowClickListener; private OnClickListener dismissClickListener; private RowClickListener rowClickListener; @@ -127,7 +131,10 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> { ((HeaderViewHolder) holder).setHeader(header); } else if (holder instanceof SearchActionViewHolder) { ((SearchActionViewHolder) holder) - .setAction(searchCursorManager.getSearchAction(position), position, query); + .setAction( + searchCursorManager.getSearchAction(position), + position, + TextUtils.isEmpty(rawNumber) ? query : rawNumber); } else if (holder instanceof LocationPermissionViewHolder) { // No-op } else { @@ -179,8 +186,9 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> { showZeroSuggest = visible; } - public void setQuery(String query) { + public void setQuery(String query, @Nullable String rawNumber) { this.query = query; + this.rawNumber = rawNumber; if (searchCursorManager.setQuery(query)) { notifyDataSetChanged(); } |