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