149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes/*
249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Copyright (C) 2014 The Android Open Source Project
349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *
449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * you may not use this file except in compliance with the License.
649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * You may obtain a copy of the License at
749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *
849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *
1049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Unless required by applicable law or agreed to in writing, software
1149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * See the License for the specific language governing permissions and
1449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * limitations under the License.
1549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */
1649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
1749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
1866698bb15ba0f873aa1c2290cc50d6bb839a474aChris Banespackage android.support.v7.widget;
1949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
2049c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.content.Context;
2149c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.graphics.drawable.Drawable;
2249c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.os.Parcelable;
23acce58688e2c3e5abd0b13e78dcf2c26710eabd0Chris Banesimport android.support.v4.view.ViewPropertyAnimatorCompat;
2466698bb15ba0f873aa1c2290cc50d6bb839a474aChris Banesimport android.support.v7.view.menu.MenuBuilder;
2566698bb15ba0f873aa1c2290cc50d6bb839a474aChris Banesimport android.support.v7.view.menu.MenuPresenter;
2649c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.util.SparseArray;
2749c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.Menu;
2849c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.View;
2949c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.ViewGroup;
30f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.Window;
31f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.widget.AdapterView;
3249c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.widget.SpinnerAdapter;
3349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
3449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes/**
3549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Common interface for a toolbar that sits as part of the window decor.
3649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Layouts that control window decor use this as a point of interaction with different
3749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * bar implementations.
3849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *
3949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @hide
4049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */
4149c78900da0d43140fb602431fb93212bd7f6c70Chris Banespublic interface DecorToolbar {
4249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    ViewGroup getViewGroup();
4349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    Context getContext();
4449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasExpandedActionView();
4549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void collapseActionView();
46f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    void setWindowCallback(Window.Callback cb);
4749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setWindowTitle(CharSequence title);
4849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    CharSequence getTitle();
4949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setTitle(CharSequence title);
5049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    CharSequence getSubtitle();
5149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setSubtitle(CharSequence subtitle);
5249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void initProgress();
5349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void initIndeterminateProgress();
5449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasIcon();
5549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasLogo();
5649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setIcon(int resId);
5749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setIcon(Drawable d);
5849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setLogo(int resId);
5949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setLogo(Drawable d);
6049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean canShowOverflowMenu();
6149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isOverflowMenuShowing();
6249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isOverflowMenuShowPending();
6349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean showOverflowMenu();
6449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hideOverflowMenu();
6549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setMenuPrepared();
6649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setMenu(Menu menu, MenuPresenter.Callback cb);
6749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void dismissPopupMenus();
6849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
6949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDisplayOptions();
7049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setDisplayOptions(int opts);
7149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setEmbeddedTabView(ScrollingTabContainerView tabView);
7249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasEmbeddedTabs();
7349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isTitleTruncated();
7449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setCollapsible(boolean collapsible);
7549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setHomeButtonEnabled(boolean enable);
7649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getNavigationMode();
7749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationMode(int mode);
78f933672168f6deff5e3636584bec735416b5a93bChris Banes    void setDropdownParams(SpinnerAdapter adapter, AdapterView.OnItemSelectedListener listener);
7949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setDropdownSelectedPosition(int position);
8049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDropdownSelectedPosition();
8149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDropdownItemCount();
8249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setCustomView(View view);
8349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    View getCustomView();
8449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void animateToVisibility(int visibility);
85acce58688e2c3e5abd0b13e78dcf2c26710eabd0Chris Banes    ViewPropertyAnimatorCompat setupAnimatorToVisibility(int visibility, long duration);
8649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationIcon(Drawable icon);
8749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationIcon(int resId);
8849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationContentDescription(CharSequence description);
8949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationContentDescription(int resId);
90b3813e08451b31c599f47ebaf14c9467043cedbcYigit Boyar    void setDefaultNavigationContentDescription(int defaultNavigationContentDescription);
91acf94897e0924ff5fcd3c5b371ab1aa620cb1dc6Chris Banes    void setDefaultNavigationIcon(Drawable icon);
9249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void saveHierarchyState(SparseArray<Parcelable> toolbarStates);
9349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void restoreHierarchyState(SparseArray<Parcelable> toolbarStates);
946aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setBackgroundDrawable(Drawable d);
956aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    int getHeight();
966aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setVisibility(int visible);
976aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    int getVisibility();
986aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
996aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar            MenuBuilder.Callback menuBuilderCallback);
1006aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    Menu getMenu();
10149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes}