ToolbarWidgetWrapper.java revision fe6d57c366ba78295d3320cb73512f02876eed61
1e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell/*
2e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Copyright (C) 2014 The Android Open Source Project
3e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *
4e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Licensed under the Apache License, Version 2.0 (the "License");
5e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * you may not use this file except in compliance with the License.
6e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * You may obtain a copy of the License at
7e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *
8e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *      http://www.apache.org/licenses/LICENSE-2.0
9e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *
10e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Unless required by applicable law or agreed to in writing, software
11e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * distributed under the License is distributed on an "AS IS" BASIS,
12e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * See the License for the specific language governing permissions and
14e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * limitations under the License.
15e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell */
16e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
17e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
18e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellpackage com.android.internal.widget;
19e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
20e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.animation.Animator;
21e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.animation.AnimatorListenerAdapter;
22e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.app.ActionBar;
23e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.Context;
24e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.res.TypedArray;
25e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.graphics.drawable.Drawable;
26e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.os.Parcelable;
2707a74548ae5c1e064508cb1c79ac34de1142b240Adam Powellimport android.text.TextUtils;
28e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.Log;
29e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.SparseArray;
3022a117d1b60869ed36d125796396f190b4b002fbAlan Viveretteimport android.util.TypedValue;
3122a117d1b60869ed36d125796396f190b4b002fbAlan Viveretteimport android.view.ContextThemeWrapper;
326790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powellimport android.view.Gravity;
33e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.LayoutInflater;
34e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Menu;
35e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.View;
36e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.ViewGroup;
37e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Window;
38e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.ActionMenuPresenter;
39e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.AdapterView;
40e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Spinner;
41e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.SpinnerAdapter;
42e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Toolbar;
43e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.R;
44e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.ActionMenuItem;
45e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuBuilder;
46e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuPresenter;
47e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
48e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell/**
49e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Internal class used to interact with the Toolbar widget without
50e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * exposing interface methods to the public API.
51e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *
52e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * <p>ToolbarWidgetWrapper manages the differences between Toolbar and ActionBarView
53e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * so that either variant acting as a
54e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * {@link com.android.internal.app.WindowDecorActionBar WindowDecorActionBar} can behave
55e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * in the same way.</p>
56e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell *
57e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * @hide
58e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell */
59e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellpublic class ToolbarWidgetWrapper implements DecorToolbar {
60e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private static final String TAG = "ToolbarWidgetWrapper";
61e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
62e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private static final int AFFECTS_LOGO_MASK =
63e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO;
64e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
65e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Toolbar mToolbar;
66e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
67e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private int mDisplayOpts;
68e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private View mTabView;
69e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Spinner mSpinner;
70e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private View mCustomView;
71e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
72e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Drawable mIcon;
73e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Drawable mLogo;
74e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Drawable mNavIcon;
75e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
76e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private boolean mTitleSet;
77e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private CharSequence mTitle;
78e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private CharSequence mSubtitle;
79e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    private CharSequence mHomeDescription;
80e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
81e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private Window.Callback mWindowCallback;
82e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private boolean mMenuPrepared;
83e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private ActionMenuPresenter mActionMenuPresenter;
84e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
856790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell    private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD;
86e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    private int mDefaultNavigationContentDescription = 0;
8730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    private Drawable mDefaultNavigationIcon;
886790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell
892aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell    public ToolbarWidgetWrapper(Toolbar toolbar, boolean style) {
90e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        this(toolbar, style, R.string.action_bar_up_description);
91e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    }
92e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar
93e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    public ToolbarWidgetWrapper(Toolbar toolbar, boolean style,
94e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            int defaultNavigationContentDescription) {
95e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar = toolbar;
96e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
9707a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell        mTitle = toolbar.getTitle();
9807a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell        mSubtitle = toolbar.getSubtitle();
996192b07bdc81072fe8d8579b2625a9ba3999a3a0Adam Powell        mTitleSet = mTitle != null;
10030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        final TypedArray a = toolbar.getContext().obtainStyledAttributes(null,
10130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar                R.styleable.ActionBar, R.attr.actionBarStyle, 0);
10230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        mDefaultNavigationIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator);
1032aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell        if (style) {
1042aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final CharSequence title = a.getText(R.styleable.ActionBar_title);
1052aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (!TextUtils.isEmpty(title)) {
1062aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setTitle(title);
1072aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
108e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1092aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final CharSequence subtitle = a.getText(R.styleable.ActionBar_subtitle);
1102aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (!TextUtils.isEmpty(subtitle)) {
1112aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setSubtitle(subtitle);
1122aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
113e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1142aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final Drawable logo = a.getDrawable(R.styleable.ActionBar_logo);
1152aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (logo != null) {
1162aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setLogo(logo);
1172aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
118e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1192aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final Drawable icon = a.getDrawable(R.styleable.ActionBar_icon);
1202aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (icon != null) {
1212aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setIcon(icon);
1222aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
12330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            if (mDefaultNavigationIcon != null) {
12430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar                setNavigationIcon(mDefaultNavigationIcon);
1252aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
1262aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            setDisplayOptions(a.getInt(R.styleable.ActionBar_displayOptions, 0));
127e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1282aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int customNavId = a.getResourceId(
1292aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                    R.styleable.ActionBar_customNavigationLayout, 0);
1302aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (customNavId != 0) {
1312aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setCustomView(LayoutInflater.from(mToolbar.getContext()).inflate(customNavId,
1322aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                        mToolbar, false));
1332aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                setDisplayOptions(mDisplayOpts | ActionBar.DISPLAY_SHOW_CUSTOM);
1342aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
135e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1362aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0);
1372aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (height > 0) {
1382aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                final ViewGroup.LayoutParams lp = mToolbar.getLayoutParams();
1392aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                lp.height = height;
1402aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                mToolbar.setLayoutParams(lp);
1412aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
142e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1432aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int contentInsetStart = a.getDimensionPixelOffset(
1442aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                    R.styleable.ActionBar_contentInsetStart, -1);
1452aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int contentInsetEnd = a.getDimensionPixelOffset(
1462aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                    R.styleable.ActionBar_contentInsetEnd, -1);
1472aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (contentInsetStart >= 0 || contentInsetEnd >= 0) {
1482aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                mToolbar.setContentInsetsRelative(Math.max(contentInsetStart, 0),
1492aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                        Math.max(contentInsetEnd, 0));
1502aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
151e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
1522aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int titleTextStyle = a.getResourceId(R.styleable.ActionBar_titleTextStyle, 0);
1532aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (titleTextStyle != 0) {
1542aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                mToolbar.setTitleTextAppearance(mToolbar.getContext(), titleTextStyle);
1552aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
156ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell
1572aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            final int subtitleTextStyle = a.getResourceId(
1582aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                    R.styleable.ActionBar_subtitleTextStyle, 0);
1592aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            if (subtitleTextStyle != 0) {
1602aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell                mToolbar.setSubtitleTextAppearance(mToolbar.getContext(), subtitleTextStyle);
1612aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell            }
162ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell
16322a117d1b60869ed36d125796396f190b4b002fbAlan Viverette            final int popupTheme = a.getResourceId(R.styleable.ActionBar_popupTheme, 0);
16422a117d1b60869ed36d125796396f190b4b002fbAlan Viverette            if (popupTheme != 0) {
16522a117d1b60869ed36d125796396f190b4b002fbAlan Viverette                mToolbar.setPopupTheme(popupTheme);
16622a117d1b60869ed36d125796396f190b4b002fbAlan Viverette            }
167af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell        } else {
168af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell            mDisplayOpts = detectDisplayOptions();
1692aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell        }
17030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        a.recycle();
171e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
172e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        setDefaultNavigationContentDescription(defaultNavigationContentDescription);
173e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        mHomeDescription = mToolbar.getNavigationContentDescription();
1747901b2a54981b769bf27852c41ce612871a8e019Adam Powell
175e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
176e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            final ActionMenuItem mNavItem = new ActionMenuItem(mToolbar.getContext(),
177e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    0, android.R.id.home, 0, 0, mTitle);
178e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            @Override
179e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            public void onClick(View v) {
180e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                if (mWindowCallback != null && mMenuPrepared) {
181e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mWindowCallback.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, mNavItem);
182e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                }
183e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
184e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        });
185e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
186e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
187e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    @Override
188e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    public void setDefaultNavigationContentDescription(int defaultNavigationContentDescription) {
189e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        if (defaultNavigationContentDescription == mDefaultNavigationContentDescription) {
190e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            return;
191e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        }
192e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        mDefaultNavigationContentDescription = defaultNavigationContentDescription;
193e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        if (TextUtils.isEmpty(mToolbar.getNavigationContentDescription())) {
194e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            setNavigationContentDescription(mDefaultNavigationContentDescription);
195e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        }
196e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    }
197e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar
198af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell    private int detectDisplayOptions() {
199af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell        int opts = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME |
200af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell                ActionBar.DISPLAY_USE_LOGO;
201af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell        if (mToolbar.getNavigationIcon() != null) {
202af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell            opts |= ActionBar.DISPLAY_HOME_AS_UP;
20330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            mDefaultNavigationIcon = mToolbar.getNavigationIcon();
204af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell        }
205af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell        return opts;
206af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell    }
207af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell
208e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
209e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public ViewGroup getViewGroup() {
210e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar;
211e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
212e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
213e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
214e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public Context getContext() {
215e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.getContext();
216e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
217e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
218e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
219e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean isSplit() {
220e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return false;
221e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
222e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
223e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
224e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean hasExpandedActionView() {
225e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.hasExpandedActionView();
226e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
227e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
228e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
229e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void collapseActionView() {
230e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.collapseActionView();
231e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
232e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
233e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
234e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setWindowCallback(Window.Callback cb) {
235e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mWindowCallback = cb;
236e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
237e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
238e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
239e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setWindowTitle(CharSequence title) {
240e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        // "Real" title always trumps window title.
241e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (!mTitleSet) {
242e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            setTitleInt(title);
243e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
244e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
245e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
246e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
247e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public CharSequence getTitle() {
248e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.getTitle();
249e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
250e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
251e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
252e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setTitle(CharSequence title) {
253e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mTitleSet = true;
254e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        setTitleInt(title);
255e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
256e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
257e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private void setTitleInt(CharSequence title) {
258e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mTitle = title;
259e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) {
260e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mToolbar.setTitle(title);
261e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
262e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
263e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
264e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
265e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public CharSequence getSubtitle() {
266e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.getSubtitle();
267e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
268e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
269e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
270e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setSubtitle(CharSequence subtitle) {
271e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mSubtitle = subtitle;
272e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) {
273e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mToolbar.setSubtitle(subtitle);
274e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
275e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
276e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
277e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
278e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void initProgress() {
279e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        Log.i(TAG, "Progress display unsupported");
280e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
281e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
282e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
283e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void initIndeterminateProgress() {
284e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        Log.i(TAG, "Progress display unsupported");
285e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
286e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
287e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
288e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean canSplit() {
289e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return false;
290e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
291e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
292e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
293e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setSplitView(ViewGroup splitView) {
294e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
295e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
296e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
297e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setSplitToolbar(boolean split) {
298e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (split) {
299e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            throw new UnsupportedOperationException("Cannot split an android.widget.Toolbar");
300e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
301e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
302e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
303e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
304e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setSplitWhenNarrow(boolean splitWhenNarrow) {
305e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        // Ignore.
306e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
307e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
308e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
309e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean hasIcon() {
310e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mIcon != null;
311e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
312e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
313e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
314e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean hasLogo() {
315e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mLogo != null;
316e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
317e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
318e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
319e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setIcon(int resId) {
320e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        setIcon(resId != 0 ? getContext().getDrawable(resId) : null);
321e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
322e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
323e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
324e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setIcon(Drawable d) {
325e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mIcon = d;
326e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        updateToolbarLogo();
327e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
328e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
329e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
330e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setLogo(int resId) {
331e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        setLogo(resId != 0 ? getContext().getDrawable(resId) : null);
332e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
333e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
334e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
335e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setLogo(Drawable d) {
336e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mLogo = d;
337e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        updateToolbarLogo();
338e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
339e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
340e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    private void updateToolbarLogo() {
341e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        Drawable logo = null;
342e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_HOME) != 0) {
343e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            if ((mDisplayOpts & ActionBar.DISPLAY_USE_LOGO) != 0) {
344e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                logo = mLogo != null ? mLogo : mIcon;
345e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            } else {
346e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                logo = mIcon;
347e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
348e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
349e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.setLogo(logo);
350e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
351e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
352e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
353e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean canShowOverflowMenu() {
354e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.canShowOverflowMenu();
355e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
356e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
357e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
358e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean isOverflowMenuShowing() {
359e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.isOverflowMenuShowing();
360e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
361e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
362e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
363e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean isOverflowMenuShowPending() {
364e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.isOverflowMenuShowPending();
365e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
366e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
367e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
368e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean showOverflowMenu() {
369e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.showOverflowMenu();
370e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
371e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
372e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
373e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean hideOverflowMenu() {
374e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.hideOverflowMenu();
375e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
376e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
377e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
378e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setMenuPrepared() {
379e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mMenuPrepared = true;
380e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
381e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
382e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
383e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setMenu(Menu menu, MenuPresenter.Callback cb) {
384e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (mActionMenuPresenter == null) {
385e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mActionMenuPresenter = new ActionMenuPresenter(mToolbar.getContext());
386e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter);
387e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
388e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mActionMenuPresenter.setCallback(cb);
389e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.setMenu((MenuBuilder) menu, mActionMenuPresenter);
390e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
391e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
392e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
393e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void dismissPopupMenus() {
394e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.dismissPopupMenus();
395e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
396e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
397e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
398e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public int getDisplayOptions() {
399e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mDisplayOpts;
400e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
401e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
402e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
403e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setDisplayOptions(int newOpts) {
404e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        final int oldOpts = mDisplayOpts;
405e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        final int changed = oldOpts ^ newOpts;
406e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mDisplayOpts = newOpts;
407e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (changed != 0) {
408e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
409e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                if ((newOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
410e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar                    updateHomeAccessibility();
411e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                }
41230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar                updateNavigationIcon();
413e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
414e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
415e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            if ((changed & AFFECTS_LOGO_MASK) != 0) {
416e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                updateToolbarLogo();
417e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
418e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
419e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            if ((changed & ActionBar.DISPLAY_SHOW_TITLE) != 0) {
420e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                if ((newOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) {
421e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.setTitle(mTitle);
422e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.setSubtitle(mSubtitle);
423e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                } else {
424e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.setTitle(null);
425e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.setSubtitle(null);
426e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                }
427e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
428e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
429e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            if ((changed & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomView != null) {
430e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                if ((newOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) {
431e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.addView(mCustomView);
432e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                } else {
433e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    mToolbar.removeView(mCustomView);
434e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                }
435e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            }
436e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
437e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
438e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
439e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
440e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell    public void setEmbeddedTabView(ScrollingTabContainerView tabView) {
441e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell        if (mTabView != null && mTabView.getParent() == mToolbar) {
442e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            mToolbar.removeView(mTabView);
443e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell        }
444e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mTabView = tabView;
445e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell        if (tabView != null && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) {
446e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            mToolbar.addView(mTabView, 0);
447e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams();
448e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
449e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
450e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            lp.gravity = Gravity.START | Gravity.BOTTOM;
451e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell            tabView.setAllowCollapse(true);
452e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell        }
453e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
454e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
455e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
456e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean hasEmbeddedTabs() {
457e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mTabView != null;
458e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
459e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
460e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
461e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public boolean isTitleTruncated() {
462e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mToolbar.isTitleTruncated();
463e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
464e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
465e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
466e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setCollapsible(boolean collapsible) {
467360c1d89227570510de7bb11195c986300488464Adam Powell        mToolbar.setCollapsible(collapsible);
468e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
469e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
470e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
471e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setHomeButtonEnabled(boolean enable) {
472e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        // Ignore
473e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
474e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
475e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
476e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public int getNavigationMode() {
4776790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell        return mNavigationMode;
478e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
479e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
480e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
481e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setNavigationMode(int mode) {
4826790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell        final int oldMode = mNavigationMode;
4836790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell        if (mode != oldMode) {
4846790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            switch (oldMode) {
4856790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                case ActionBar.NAVIGATION_MODE_LIST:
4866790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    if (mSpinner != null && mSpinner.getParent() == mToolbar) {
4876790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                        mToolbar.removeView(mSpinner);
4886790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    }
4896790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    break;
490e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                case ActionBar.NAVIGATION_MODE_TABS:
491e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    if (mTabView != null && mTabView.getParent() == mToolbar) {
492e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        mToolbar.removeView(mTabView);
493e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    }
494e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    break;
4956790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            }
4966790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell
4976790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            mNavigationMode = mode;
4986790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell
4996790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            switch (mode) {
5006790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                case ActionBar.NAVIGATION_MODE_STANDARD:
5016790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    break;
5026790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                case ActionBar.NAVIGATION_MODE_LIST:
5036790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    ensureSpinner();
5046790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    mToolbar.addView(mSpinner, 0);
5056790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    break;
5066790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                case ActionBar.NAVIGATION_MODE_TABS:
507e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    if (mTabView != null) {
508e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        mToolbar.addView(mTabView, 0);
509e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams();
510e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
511e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
512e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                        lp.gravity = Gravity.START | Gravity.BOTTOM;
513e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    }
514e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell                    break;
5156790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                default:
5166790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    throw new IllegalArgumentException("Invalid navigation mode " + mode);
5176790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            }
518e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
519e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
520e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
5216790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell    private void ensureSpinner() {
522e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (mSpinner == null) {
523e178c93ff5457962cc694f44729dfa633de53f9bAlan Viverette            mSpinner = new Spinner(getContext(), null, R.attr.actionDropDownStyle);
5246790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            Toolbar.LayoutParams lp = new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
5256790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell                    ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL);
5266790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            mSpinner.setLayoutParams(lp);
527e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
5286790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell    }
5296790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell
5306790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell    @Override
5316790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell    public void setDropdownParams(SpinnerAdapter adapter,
5326790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell            AdapterView.OnItemSelectedListener listener) {
5336790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell        ensureSpinner();
534e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mSpinner.setAdapter(adapter);
535e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mSpinner.setOnItemSelectedListener(listener);
536e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
537e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
538e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
539e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setDropdownSelectedPosition(int position) {
540e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (mSpinner == null) {
541e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            throw new IllegalStateException(
542e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    "Can't set dropdown selected position without an adapter");
543e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
544e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mSpinner.setSelection(position);
545e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
546e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
547e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
548e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public int getDropdownSelectedPosition() {
549e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mSpinner != null ? mSpinner.getSelectedItemPosition() : 0;
550e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
551e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
552e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
553e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public int getDropdownItemCount() {
554e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mSpinner != null ? mSpinner.getCount() : 0;
555e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
556e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
557e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
558e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setCustomView(View view) {
559e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (mCustomView != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) {
560e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mToolbar.removeView(mCustomView);
561e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
562e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mCustomView = view;
563e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (view != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) {
564e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell            mToolbar.addView(mCustomView);
565e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
566e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
567e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
568e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
569e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public View getCustomView() {
570e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        return mCustomView;
571e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
572e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
573e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
574e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void animateToVisibility(int visibility) {
575e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        if (visibility == View.GONE) {
5762bbad0cddce213ffd3d1e0909f2dc74dd0038ba7Yigit Boyar            mToolbar.animate().alpha(0)
577e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    .setListener(new AnimatorListenerAdapter() {
578e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        private boolean mCanceled = false;
579e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        @Override
580e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        public void onAnimationEnd(Animator animation) {
581e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                            if (!mCanceled) {
582e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                                mToolbar.setVisibility(View.GONE);
583e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                            }
584e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        }
585e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
586e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        @Override
587e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        public void onAnimationCancel(Animator animation) {
588e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                            mCanceled = true;
589e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        }
590e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    });
591e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        } else if (visibility == View.VISIBLE) {
5922bbad0cddce213ffd3d1e0909f2dc74dd0038ba7Yigit Boyar            mToolbar.animate().alpha(1)
593e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    .setListener(new AnimatorListenerAdapter() {
594e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        @Override
595e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        public void onAnimationStart(Animator animation) {
596e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                            mToolbar.setVisibility(View.VISIBLE);
597e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                        }
598e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell                    });
599e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        }
600e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
601e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
602e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
603e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setNavigationIcon(Drawable icon) {
604e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mNavIcon = icon;
60530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        updateNavigationIcon();
606e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
607e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
608e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
609e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setNavigationIcon(int resId) {
6106bb10554ba3a0b6127402951a477412d961d1072Adam Powell        setNavigationIcon(resId != 0 ? mToolbar.getContext().getDrawable(resId) : null);
611e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
612e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
613e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
61430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    public void setDefaultNavigationIcon(Drawable defaultNavigationIcon) {
61530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        if (mDefaultNavigationIcon != defaultNavigationIcon) {
61630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            mDefaultNavigationIcon = defaultNavigationIcon;
61730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            updateNavigationIcon();
61830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        }
61930f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    }
62030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar
62130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    private void updateNavigationIcon() {
62230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
62330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            mToolbar.setNavigationIcon(mNavIcon != null ? mNavIcon : mDefaultNavigationIcon);
62430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        } else {
62530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar            mToolbar.setNavigationIcon(null);
62630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar        }
62730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    }
62830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar
62930f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar    @Override
630e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setNavigationContentDescription(CharSequence description) {
631e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        mHomeDescription = description;
632e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        updateHomeAccessibility();
633e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
634e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
635e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
636e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void setNavigationContentDescription(int resId) {
637e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        setNavigationContentDescription(resId == 0 ? null : getContext().getString(resId));
638e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    }
639e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar
640e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar    private void updateHomeAccessibility() {
641e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
642e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            if (TextUtils.isEmpty(mHomeDescription)) {
643e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar                mToolbar.setNavigationContentDescription(mDefaultNavigationContentDescription);
644e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            } else {
645e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar                mToolbar.setNavigationContentDescription(mHomeDescription);
646e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar            }
647e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar        }
648e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
649e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
650e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
651e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void saveHierarchyState(SparseArray<Parcelable> toolbarStates) {
652e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.saveHierarchyState(toolbarStates);
653e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
654e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
655e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    @Override
656e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    public void restoreHierarchyState(SparseArray<Parcelable> toolbarStates) {
657e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell        mToolbar.restoreHierarchyState(toolbarStates);
658e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell    }
659e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell
660fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
661fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public void setBackgroundDrawable(Drawable d) {
662fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        //noinspection deprecation
663fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        mToolbar.setBackgroundDrawable(d);
664fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
665fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
666fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
667fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public int getHeight() {
668fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        return mToolbar.getHeight();
669fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
670fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
671fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
672fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public void setVisibility(int visible) {
673fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        mToolbar.setVisibility(visible);
674fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
675fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
676fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
677fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public int getVisibility() {
678fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        return mToolbar.getVisibility();
679fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
680fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
681fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
682fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
683fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar            MenuBuilder.Callback menuBuilderCallback) {
684fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback);
685fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
686fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
687fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    @Override
688fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    public Menu getMenu() {
689fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar        return mToolbar.getMenu();
690fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar    }
691fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar
692e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell}
693