diff options
author | calderwoodra <calderwoodra@google.com> | 2017-09-18 14:26:14 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-09-18 15:46:04 -0700 |
commit | df06af5411002174c6aeb653ca7790f202284de6 (patch) | |
tree | 0aacd85dd55bd03870f54e2f14911338f3883c1b /java | |
parent | b615f7b460de730094af948e9827a9a1017ce1fd (diff) |
Now persist state through configuration changes in Search.
This CL adds logic to persist the search query and call
initiation type through configuration changes like device
rotation.
list of bugs:
https://docs.google.com/document/d/1GajzkAqXXRqbj_-qeYeDxIKr0fPsSZC3nXhRkIQg5tE/edit#heading=h.bopot1qivvxg
Bug: 65751247
Test: NSFT
PiperOrigin-RevId: 169146766
Change-Id: I7a68c01d5698c07a362ad621642a9138fd9a9aaa
Diffstat (limited to 'java')
-rw-r--r-- | java/com/android/dialer/searchfragment/list/NewSearchFragment.java | 18 | ||||
-rw-r--r-- | java/com/android/dialer/searchfragment/list/SearchAdapter.java | 7 |
2 files changed, 22 insertions, 3 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java index 2527b87ee..036d53fb5 100644 --- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java +++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java @@ -80,6 +80,9 @@ public final class NewSearchFragment extends Fragment private static final int REMOTE_DIRECTORIES_LOADER_ID = 2; private static final int REMOTE_CONTACTS_LOADER_ID = 3; + private static final String KEY_QUERY = "key_query"; + private static final String KEY_CALL_INITIATION_TYPE = "key_call_initiation_type"; + private EmptyContentView emptyContentView; private RecyclerView recyclerView; private SearchAdapter adapter; @@ -99,7 +102,7 @@ public final class NewSearchFragment extends Fragment @Nullable @Override public View onCreateView( - LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) { + LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_search, parent, false); adapter = new SearchAdapter(getActivity(), new SearchCursorManager()); adapter.setCallInitiationType(callInitiationType); @@ -119,12 +122,25 @@ public final class NewSearchFragment extends Fragment initLoaders(); } + if (savedInstanceState != null) { + setQuery( + savedInstanceState.getString(KEY_QUERY), + CallInitiationType.Type.forNumber(savedInstanceState.getInt(KEY_CALL_INITIATION_TYPE))); + } + if (updatePositionRunnable != null) { ViewUtil.doOnPreDraw(view, false, updatePositionRunnable); } return view; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(KEY_CALL_INITIATION_TYPE, callInitiationType.getNumber()); + outState.putString(KEY_QUERY, query); + } + private void initLoaders() { getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this); loadRemoteDirectoriesCursor(); diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java index 61055a0c1..3bfdd98f3 100644 --- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java +++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java @@ -111,8 +111,11 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> } public void setContactsCursor(SearchCursor cursor) { - searchCursorManager.setContactsCursor(cursor); - notifyDataSetChanged(); + if (searchCursorManager.setContactsCursor(cursor)) { + // Since this is a new contacts cursor, we need to reapply the filter. + searchCursorManager.setQuery(query); + notifyDataSetChanged(); + } } void clear() { |