ActionBarAdapter.java revision 0b51a8d4539cc516dc2c02948335347d1df8769b
108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov/* 2fcfdffb439ccf1ddef971109b82e782c47161572Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * 408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * you may not use this file except in compliance with the License. 608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * You may obtain a copy of the License at 708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * 808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * 1008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 1108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 1208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * See the License for the specific language governing permissions and 1408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * limitations under the License. 1508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov */ 1608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 1708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovpackage com.android.contacts.activities; 1808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 1908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport com.android.contacts.R; 2015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikovimport com.android.contacts.list.ContactListFilterController; 21bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikovimport com.android.contacts.list.ContactListFilterController.ContactListFilterListener; 22251e4f7dc45928053133fe15fd456da00b7cbe8cDmitri Plotnikovimport com.android.contacts.list.ContactListFilterView; 2308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport com.android.contacts.list.ContactsRequest; 2408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 251a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikovimport android.app.ActionBar; 2608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.content.Context; 2708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.os.Bundle; 2815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikovimport android.text.TextUtils; 2915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikovimport android.view.LayoutInflater; 3008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.view.View; 311a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikovimport android.widget.SearchView; 321a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikovimport android.widget.SearchView.OnCloseListener; 331a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikovimport android.widget.SearchView.OnQueryChangeListener; 3415ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikovimport android.widget.TextView; 3592a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 3608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov/** 37fcfdffb439ccf1ddef971109b82e782c47161572Dmitri Plotnikov * Adapter for the action bar at the top of the Contacts activity. 3808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov */ 39bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikovpublic class ActionBarAdapter 40bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov implements OnQueryChangeListener, OnCloseListener, ContactListFilterListener { 4108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 4208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public interface Listener { 43fcfdffb439ccf1ddef971109b82e782c47161572Dmitri Plotnikov void onAction(); 4408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 4508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 4615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private static final String EXTRA_KEY_SEARCH_MODE = "navBar.searchMode"; 4708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private static final String EXTRA_KEY_QUERY = "navBar.query"; 4808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 4915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private static final String KEY_MODE_DEFAULT = "mode_default"; 5092a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov private static final String KEY_MODE_SEARCH = "mode_search"; 5192a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 5215ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private boolean mSearchMode; 5308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private String mQueryString; 5415ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private Bundle mSavedStateForSearchMode; 5515ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private Bundle mSavedStateForDefaultMode; 5615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov 5715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private View mNavigationBar; 5815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private TextView mSearchLabel; 5915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov private SearchView mSearchView; 6092a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 6108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private final Context mContext; 6208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 6308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private Listener mListener; 64251e4f7dc45928053133fe15fd456da00b7cbe8cDmitri Plotnikov private ContactListFilterView mFilterView; 65bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov private View mFilterIndicator; 66bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov private ContactListFilterController mFilterController; 67bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov private View mFilterContainer; 6808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 69fcfdffb439ccf1ddef971109b82e782c47161572Dmitri Plotnikov public ActionBarAdapter(Context context) { 7008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContext = context; 7108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 7208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 731a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov public void onCreate(Bundle savedState, ContactsRequest request, ActionBar actionBar) { 7408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = null; 7508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (savedState != null) { 7615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchMode = savedState.getBoolean(EXTRA_KEY_SEARCH_MODE); 7708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = savedState.getString(EXTRA_KEY_QUERY); 7815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSavedStateForDefaultMode = savedState.getParcelable(KEY_MODE_DEFAULT); 7915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSavedStateForSearchMode = savedState.getParcelable(KEY_MODE_SEARCH); 8015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov } else { 8115ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchMode = request.isSearchMode(); 8208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = request.getQueryString(); 8308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 8408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 8515ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mNavigationBar = LayoutInflater.from(mContext).inflate(R.layout.navigation_bar, null); 8615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov actionBar.setCustomNavigationMode(mNavigationBar); 871a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov 88bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterContainer = mNavigationBar.findViewById(R.id.filter_container); 89251e4f7dc45928053133fe15fd456da00b7cbe8cDmitri Plotnikov mFilterView = (ContactListFilterView) mNavigationBar.findViewById(R.id.filter_view); 9015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchLabel = (TextView) mNavigationBar.findViewById(R.id.search_label); 91bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterIndicator = mNavigationBar.findViewById(R.id.filter_indicator); 9215ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchView = (SearchView) mNavigationBar.findViewById(R.id.search_view); 93bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov 9415ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchView.setIconifiedByDefault(false); 9515ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchView.setOnQueryChangeListener(this); 9615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchView.setOnCloseListener(this); 9715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchView.setQuery(mQueryString, false); 981a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov 99bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov update(); 1001a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov } 10108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 1021a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov public void setListener(Listener listener) { 1031a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov mListener = listener; 10408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 10508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 10615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public void setContactListFilterController(ContactListFilterController controller) { 107bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterController = controller; 108bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterController.setAnchor(mFilterContainer); 109bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterController.addListener(this); 11015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov } 11115ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov 11215ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public boolean isSearchMode() { 11315ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov return mSearchMode; 11408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 11508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 11615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public void setSearchMode(boolean flag) { 11715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov if (mSearchMode != flag) { 11815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchMode = flag; 119bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov update(); 1200b51a8d4539cc516dc2c02948335347d1df8769bDmitri Plotnikov if (mSearchMode) { 1210b51a8d4539cc516dc2c02948335347d1df8769bDmitri Plotnikov mSearchView.requestFocus(); 1220b51a8d4539cc516dc2c02948335347d1df8769bDmitri Plotnikov } 1231a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov if (mListener != null) { 1241a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov mListener.onAction(); 1251a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov } 12608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 12708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 12808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 12908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public String getQueryString() { 13008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov return mQueryString; 13108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 13208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 13308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void setQueryString(String query) { 13408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = query; 1351a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov mSearchView.setQuery(query, false); 13608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 13708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 138bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov public void update() { 13915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov if (mSearchMode) { 14015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchLabel.setVisibility(View.VISIBLE); 141251e4f7dc45928053133fe15fd456da00b7cbe8cDmitri Plotnikov mFilterView.setVisibility(View.GONE); 142bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterIndicator.setVisibility(View.INVISIBLE); 143c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov if (mFilterController != null) { 144c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov mFilterController.setEnabled(false); 145c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov } 14615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov } else { 14715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSearchLabel.setVisibility(View.GONE); 148251e4f7dc45928053133fe15fd456da00b7cbe8cDmitri Plotnikov mFilterView.setVisibility(View.VISIBLE); 149bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov boolean showIndicator = false; 150c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov if (mFilterController != null){ 151c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov mFilterController.setEnabled(true); 152c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov if (mFilterController.isLoaded()) { 153c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov mFilterView.setContactListFilter(mFilterController.getFilter()); 154c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov mFilterView.bindView(false); 155c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov showIndicator = mFilterController.getFilterList().size() > 1; 156c9916d303cc48b4a4ff94ef9c56d7ca5da72c4deDmitri Plotnikov } 157bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov } 158bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov mFilterIndicator.setVisibility(showIndicator ? View.VISIBLE : View.INVISIBLE); 15908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 16008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 16108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 16208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov @Override 1631a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov public boolean onQueryTextChanged(String queryString) { 16408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = queryString; 1650b51a8d4539cc516dc2c02948335347d1df8769bDmitri Plotnikov setSearchMode(!TextUtils.isEmpty(queryString)); 1661a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov return true; 1671a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov } 1681a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov 1691a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov @Override 1701a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov public boolean onSubmitQuery(String query) { 1711a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov return true; 17208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 17308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 17408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov @Override 1751a59cffd839069ce91a9febb8a136442340ab4c8Dmitri Plotnikov public boolean onClose() { 17615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov setSearchMode(false); 17715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov return false; 17808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 17908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 18015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public Bundle getSavedStateForSearchMode() { 18115ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov return mSavedStateForSearchMode; 18292a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov } 18392a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 18415ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public void setSavedStateForSearchMode(Bundle state) { 18515ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSavedStateForSearchMode = state; 1862eb26aacc35a624607187418d61c78258eee8b2cDmitri Plotnikov } 1872eb26aacc35a624607187418d61c78258eee8b2cDmitri Plotnikov 18815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public Bundle getSavedStateForDefaultMode() { 18915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov return mSavedStateForDefaultMode; 19092a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov } 19192a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 19215ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public void setSavedStateForDefaultMode(Bundle state) { 19315ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov mSavedStateForDefaultMode = state; 19492a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov } 19592a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov 19615ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov public void onSaveInstanceState(Bundle outState) { 19715ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov outState.putBoolean(EXTRA_KEY_SEARCH_MODE, mSearchMode); 19815ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov outState.putString(EXTRA_KEY_QUERY, mQueryString); 19915ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov if (mSavedStateForDefaultMode != null) { 20015ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov outState.putParcelable(KEY_MODE_DEFAULT, mSavedStateForDefaultMode); 20192a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov } 20215ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov if (mSavedStateForSearchMode != null) { 20315ccbb4d22fd65165cacb7970cbe61de1aa9aac4Dmitri Plotnikov outState.putParcelable(KEY_MODE_SEARCH, mSavedStateForSearchMode); 20492a6fdf1b07b8f1447560174e24455fd46aee7cdDmitri Plotnikov } 20508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 206bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov 207bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov @Override 208bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov public void onContactListFiltersLoaded() { 209bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov update(); 210bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov } 211bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov 212bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov @Override 213bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov public void onContactListFilterChanged() { 214bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov update(); 215bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov } 216bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov 217bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov @Override 218bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov public void onContactListFilterCustomizationRequest() { 219bee8d3bd37edf44c535c0cc401e8d03f095b8328Dmitri Plotnikov } 22008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov} 221