ActionBarAdapter.java revision 08e1c4e49947daee26cfc435d01605febb7ae6fa
108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov/* 208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * Copyright (C) 2007 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; 2008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport com.android.contacts.list.ContactsRequest; 2108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport com.android.contacts.widget.SearchEditText; 2208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport com.android.contacts.widget.SearchEditText.OnFilterTextListener; 2308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 2408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.content.Context; 2508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.os.Bundle; 2608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.view.LayoutInflater; 2708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.view.View; 2808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.view.View.OnClickListener; 2908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.view.inputmethod.InputMethodManager; 3008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.widget.ImageView; 3108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovimport android.widget.ToggleButton; 3208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 3308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov/** 3408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov * Navigation bar at the top of the Contacts activity. 3508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov */ 3608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikovpublic class NavigationBar implements OnFilterTextListener, OnClickListener { 3708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 3808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public interface Listener { 3908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov void onNavigationBarChange(); 4008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 4108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 4208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private static final String EXTRA_KEY_DEFAULT_MODE = "navBar.defaultMode"; 4308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private static final String EXTRA_KEY_MODE = "navBar.mode"; 4408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private static final String EXTRA_KEY_QUERY = "navBar.query"; 4508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 4608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public static final int MODE_CONTACTS = 0; 4708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public static final int MODE_FAVORITES = 1; 4808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public static final int MODE_SEARCH = 2; 4908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 5008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private int mMode = MODE_CONTACTS; 5108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private int mDefaultMode = MODE_CONTACTS; 5208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private String mQueryString; 5308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private SearchEditText mSearchEditText; 5408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private View mNavigationBar; 5508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 5608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private final Context mContext; 5708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 5808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private Listener mListener; 5908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 6008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private ToggleButton mContactsButton; 6108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private ToggleButton mFavoritesButton; 6208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private ToggleButton mSearchButton; 6308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov private ImageView mCancelSearchButton; 6408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 6508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public NavigationBar(Context context) { 6608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContext = context; 6708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 6808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 6908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void onCreate(Bundle savedState, ContactsRequest request) { 7008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mDefaultMode = -1; 7108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mMode = -1; 7208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = null; 7308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (savedState != null) { 7408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mDefaultMode = savedState.getInt(EXTRA_KEY_DEFAULT_MODE, -1); 7508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mMode = savedState.getInt(EXTRA_KEY_MODE, -1); 7608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = savedState.getString(EXTRA_KEY_QUERY); 7708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 7808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 7908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov int actionCode = request.getActionCode(); 8008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (mDefaultMode == -1) { 8108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mDefaultMode = actionCode == ContactsRequest.ACTION_DEFAULT 8208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov ? NavigationBar.MODE_CONTACTS 8308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov : NavigationBar.MODE_FAVORITES; 8408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 8508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (mMode == -1) { 8608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mMode = request.isSearchMode() ? NavigationBar.MODE_SEARCH : mDefaultMode; 8708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 8808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (mQueryString == null) { 8908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = request.getQueryString(); 9008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 9108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 9208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 9308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void setListener(Listener listener) { 9408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mListener = listener; 9508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 9608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 9708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public View onCreateView(LayoutInflater inflater) { 9808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mNavigationBar = inflater.inflate(R.layout.navigation_bar, null); 9908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText = (SearchEditText)mNavigationBar.findViewById(R.id.search_src_text); 10008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setMaginfyingGlassEnabled(false); 10108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setOnFilterTextListener(this); 10208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setText(mQueryString); 10308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContactsButton = (ToggleButton)mNavigationBar.findViewById(R.id.nav_contacts); 10408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContactsButton.setOnClickListener(this); 10508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mFavoritesButton = (ToggleButton)mNavigationBar.findViewById(R.id.nav_favorites); 10608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mFavoritesButton.setOnClickListener(this); 10708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton = (ToggleButton)mNavigationBar.findViewById(R.id.nav_search); 10808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setOnClickListener(this); 10908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mCancelSearchButton = (ImageView)mNavigationBar.findViewById(R.id.nav_cancel_search); 11008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mCancelSearchButton.setOnClickListener(this); 11108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov update(); 11208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 11308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov return mNavigationBar; 11408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 11508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 11608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public int getMode() { 11708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov return mMode; 11808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 11908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 12008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void setMode(int mode) { 12108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mMode = mode; 12208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov update(); 12308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (mListener != null) { 12408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mListener.onNavigationBarChange(); 12508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 12608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 12708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 12808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public int getDefaultMode() { 12908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov return mDefaultMode; 13008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 13108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 13208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void setDefaultMode(int defaultMode) { 13308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mDefaultMode = defaultMode; 13408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 13508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 13608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public String getQueryString() { 13708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov return mQueryString; 13808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 13908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 14008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void setQueryString(String query) { 14108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = query; 14208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setText(query); 14308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 14408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 14508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void update() { 14608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov switch(mMode) { 14708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov case MODE_CONTACTS: 14808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContactsButton.setChecked(true); 14908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mFavoritesButton.setChecked(false); 15008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setChecked(false); 15108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setVisibility(View.VISIBLE); 15208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setVisibility(View.GONE); 15308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mCancelSearchButton.setVisibility(View.GONE); 15408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov break; 15508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov case MODE_FAVORITES: 15608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContactsButton.setChecked(false); 15708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mFavoritesButton.setChecked(true); 15808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setChecked(false); 15908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setVisibility(View.VISIBLE); 16008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setVisibility(View.GONE); 16108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mCancelSearchButton.setVisibility(View.GONE); 16208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov break; 16308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov case MODE_SEARCH: 16408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mContactsButton.setChecked(false); 16508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mFavoritesButton.setChecked(false); 16608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchButton.setVisibility(View.GONE); 16708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.setVisibility(View.VISIBLE); 16808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mSearchEditText.requestFocus(); 16908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov InputMethodManager inputMethodManager = 17008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 17108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov inputMethodManager.showSoftInput(mSearchEditText, 0); 17208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mCancelSearchButton.setVisibility(View.VISIBLE); 17308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov break; 17408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 17508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 17608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 17708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void toggleSearchMode() { 17808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(mMode == MODE_SEARCH ? mDefaultMode : MODE_SEARCH); 17908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 18008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 18108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov @Override 18208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void onClick(View view) { 18308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (view == mSearchButton) { 18408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(MODE_SEARCH); 18508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } else if (view == mContactsButton) { 18608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(MODE_CONTACTS); 18708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setDefaultMode(MODE_CONTACTS); 18808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } else if (view == mFavoritesButton) { 18908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(MODE_FAVORITES); 19008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setDefaultMode(MODE_FAVORITES); 19108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } else { // mCancelSearchButton 19208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(mDefaultMode); 19308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 19408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 19508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 19608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov @Override 19708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void onFilterChange(String queryString) { 19808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mQueryString = queryString; 19908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov if (mListener != null) { 20008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov mListener.onNavigationBarChange(); 20108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 20208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 20308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 20408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov @Override 20508e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void onCancelSearch() { 20608e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov setMode(mDefaultMode); 20708e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 20808e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov 20908e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov public void onSaveInstanceState(Bundle outState) { 21008e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov outState.putInt(EXTRA_KEY_DEFAULT_MODE, mDefaultMode); 21108e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov outState.putInt(EXTRA_KEY_MODE, mMode); 21208e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov outState.putString(EXTRA_KEY_QUERY, mQueryString); 21308e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov } 21408e1c4e49947daee26cfc435d01605febb7ae6faDmitri Plotnikov} 215