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
1849c78900da0d43140fb602431fb93212bd7f6c70Chris Banespackage android.support.v7.internal.widget;
1949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
2049c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.content.Context;
2149c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.graphics.drawable.Drawable;
2249c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.os.Parcelable;
2349c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.support.v7.internal.app.WindowCallback;
246aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyarimport android.support.v7.internal.view.menu.MenuBuilder;
2549c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.support.v7.internal.view.menu.MenuPresenter;
2649c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.util.SparseArray;
2749c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.Menu;
2849c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.View;
2949c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.ViewGroup;
3049c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.widget.SpinnerAdapter;
3149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
3249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes/**
3349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Common interface for a toolbar that sits as part of the window decor.
3449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Layouts that control window decor use this as a point of interaction with different
3549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * bar implementations.
3649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes *
3749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @hide
3849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */
3949c78900da0d43140fb602431fb93212bd7f6c70Chris Banespublic interface DecorToolbar {
4049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    ViewGroup getViewGroup();
4149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    Context getContext();
4249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isSplit();
4349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasExpandedActionView();
4449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void collapseActionView();
4549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setWindowCallback(WindowCallback cb);
4649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setWindowTitle(CharSequence title);
4749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    CharSequence getTitle();
4849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setTitle(CharSequence title);
4949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    CharSequence getSubtitle();
5049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setSubtitle(CharSequence subtitle);
5149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void initProgress();
5249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void initIndeterminateProgress();
5349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean canSplit();
5449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setSplitView(ViewGroup splitView);
5549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setSplitToolbar(boolean split);
5649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setSplitWhenNarrow(boolean splitWhenNarrow);
5749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasIcon();
5849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasLogo();
5949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setIcon(int resId);
6049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setIcon(Drawable d);
6149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setLogo(int resId);
6249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setLogo(Drawable d);
6349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean canShowOverflowMenu();
6449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isOverflowMenuShowing();
6549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isOverflowMenuShowPending();
6649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean showOverflowMenu();
6749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hideOverflowMenu();
6849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setMenuPrepared();
6949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setMenu(Menu menu, MenuPresenter.Callback cb);
7049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void dismissPopupMenus();
7149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes
7249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDisplayOptions();
7349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setDisplayOptions(int opts);
7449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setEmbeddedTabView(ScrollingTabContainerView tabView);
7549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean hasEmbeddedTabs();
7649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    boolean isTitleTruncated();
7749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setCollapsible(boolean collapsible);
7849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setHomeButtonEnabled(boolean enable);
7949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getNavigationMode();
8049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationMode(int mode);
8149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setDropdownParams(SpinnerAdapter adapter, AdapterViewCompat.OnItemSelectedListener listener);
8249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setDropdownSelectedPosition(int position);
8349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDropdownSelectedPosition();
8449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    int getDropdownItemCount();
8549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setCustomView(View view);
8649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    View getCustomView();
8749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void animateToVisibility(int visibility);
8849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationIcon(Drawable icon);
8949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationIcon(int resId);
9049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationContentDescription(CharSequence description);
9149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void setNavigationContentDescription(int resId);
92b3813e08451b31c599f47ebaf14c9467043cedbcYigit Boyar    void setDefaultNavigationContentDescription(int defaultNavigationContentDescription);
93acf94897e0924ff5fcd3c5b371ab1aa620cb1dc6Chris Banes    void setDefaultNavigationIcon(Drawable icon);
9449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void saveHierarchyState(SparseArray<Parcelable> toolbarStates);
9549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes    void restoreHierarchyState(SparseArray<Parcelable> toolbarStates);
966aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setBackgroundDrawable(Drawable d);
976aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    int getHeight();
986aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setVisibility(int visible);
996aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    int getVisibility();
1006aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
1016aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar            MenuBuilder.Callback menuBuilderCallback);
1026aadbd39814a5ae41e1fadfab06657cdf901e625Yigit Boyar    Menu getMenu();
10346dfe0c53492ef0cb59873123ca141906fbb7dccChris Banes    int getPopupTheme();
10449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes}