Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe6d57c3 authored by Yigit Boyar's avatar Yigit Boyar
Browse files

Move all actionbar related methods to DecorToolbar

   Bug: 17999561

Change-Id: I36af443cf245aedd64a079726c1a2e6f6068f221
parent db41880d
Loading
Loading
Loading
Loading
+23 −25
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.internal.widget.ToolbarWidgetWrapper;
import java.util.ArrayList;

public class ToolbarActionBar extends ActionBar {
    private Toolbar mToolbar;
    private DecorToolbar mDecorToolbar;
    private boolean mToolbarMenuPrepared;
    private Window.Callback mWindowCallback;
@@ -66,7 +65,6 @@ public class ToolbarActionBar extends ActionBar {
    };

    public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) {
        mToolbar = toolbar;
        mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false);
        mWindowCallback = new ToolbarCallbackWrapper(windowCallback);
        mDecorToolbar.setWindowCallback(mWindowCallback);
@@ -91,8 +89,8 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public void setCustomView(int resId) {
        final LayoutInflater inflater = LayoutInflater.from(mToolbar.getContext());
        setCustomView(inflater.inflate(resId, mToolbar, false));
        final LayoutInflater inflater = LayoutInflater.from(mDecorToolbar.getContext());
        setCustomView(inflater.inflate(resId, mDecorToolbar.getViewGroup(), false));
    }

    @Override
@@ -132,17 +130,17 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public void setElevation(float elevation) {
        mToolbar.setElevation(elevation);
        mDecorToolbar.getViewGroup().setElevation(elevation);
    }

    @Override
    public float getElevation() {
        return mToolbar.getElevation();
        return mDecorToolbar.getViewGroup().getElevation();
    }

    @Override
    public Context getThemedContext() {
        return mToolbar.getContext();
        return mDecorToolbar.getContext();
    }

    @Override
@@ -152,12 +150,12 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public void setHomeAsUpIndicator(Drawable indicator) {
        mToolbar.setNavigationIcon(indicator);
        mDecorToolbar.setNavigationIcon(indicator);
    }

    @Override
    public void setHomeAsUpIndicator(int resId) {
        mToolbar.setNavigationIcon(resId);
        mDecorToolbar.setNavigationIcon(resId);
    }

    @Override
@@ -280,7 +278,7 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public void setBackgroundDrawable(@Nullable Drawable d) {
        mToolbar.setBackground(d);
        mDecorToolbar.setBackgroundDrawable(d);
    }

    @Override
@@ -290,12 +288,12 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public CharSequence getTitle() {
        return mToolbar.getTitle();
        return mDecorToolbar.getTitle();
    }

    @Override
    public CharSequence getSubtitle() {
        return mToolbar.getSubtitle();
        return mDecorToolbar.getSubtitle();
    }

    @Override
@@ -389,44 +387,44 @@ public class ToolbarActionBar extends ActionBar {

    @Override
    public int getHeight() {
        return mToolbar.getHeight();
        return mDecorToolbar.getHeight();
    }

    @Override
    public void show() {
        // TODO: Consider a better transition for this.
        // Right now use no automatic transition so that the app can supply one if desired.
        mToolbar.setVisibility(View.VISIBLE);
        mDecorToolbar.setVisibility(View.VISIBLE);
    }

    @Override
    public void hide() {
        // TODO: Consider a better transition for this.
        // Right now use no automatic transition so that the app can supply one if desired.
        mToolbar.setVisibility(View.GONE);
        mDecorToolbar.setVisibility(View.GONE);
    }

    @Override
    public boolean isShowing() {
        return mToolbar.getVisibility() == View.VISIBLE;
        return mDecorToolbar.getVisibility() == View.VISIBLE;
    }

    @Override
    public boolean openOptionsMenu() {
        return mToolbar.showOverflowMenu();
        return mDecorToolbar.showOverflowMenu();
    }

    @Override
    public boolean invalidateOptionsMenu() {
        mToolbar.removeCallbacks(mMenuInvalidator);
        mToolbar.postOnAnimation(mMenuInvalidator);
        mDecorToolbar.getViewGroup().removeCallbacks(mMenuInvalidator);
        mDecorToolbar.getViewGroup().postOnAnimation(mMenuInvalidator);
        return true;
    }

    @Override
    public boolean collapseActionView() {
        if (mToolbar.hasExpandedActionView()) {
            mToolbar.collapseActionView();
        if (mDecorToolbar.hasExpandedActionView()) {
            mDecorToolbar.collapseActionView();
            return true;
        }
        return false;
@@ -434,10 +432,10 @@ public class ToolbarActionBar extends ActionBar {

    void populateOptionsMenu() {
        if (!mMenuCallbackSet) {
            mToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
            mDecorToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
            mMenuCallbackSet = true;
        }
        final Menu menu = mToolbar.getMenu();
        final Menu menu = mDecorToolbar.getMenu();
        final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null;
        if (mb != null) {
            mb.stopDispatchingItemsChanged();
@@ -518,7 +516,7 @@ public class ToolbarActionBar extends ActionBar {
            }

            mClosingActionMenu = true;
            mToolbar.dismissPopupMenus();
            mDecorToolbar.dismissPopupMenus();
            if (mWindowCallback != null) {
                mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
            }
@@ -536,7 +534,7 @@ public class ToolbarActionBar extends ActionBar {
        @Override
        public void onMenuModeChange(MenuBuilder menu) {
            if (mWindowCallback != null) {
                if (mToolbar.isOverflowMenuShowing()) {
                if (mDecorToolbar.isOverflowMenuShowing()) {
                    mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
                } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL,
                        null, menu)) {
+16 −0
Original line number Diff line number Diff line
@@ -1341,6 +1341,22 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar {
        updateHomeAccessibility(mUpGoerFive.isEnabled());
    }

    @Override
    public void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback) {
        if (mActionMenuPresenter != null) {
            mActionMenuPresenter.setCallback(presenterCallback);
        }
        if (mOptionsMenu != null) {
            mOptionsMenu.setCallback(menuBuilderCallback);
        }
    }

    @Override
    public Menu getMenu() {
        return mOptionsMenu;
    }

    static class SavedState extends BaseSavedState {
        int expandedMenuItemId;
        boolean isOverflowOpen;
+9 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.SpinnerAdapter;

import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.view.menu.MenuPresenter;

/**
@@ -93,4 +95,11 @@ public interface DecorToolbar {
    void setDefaultNavigationIcon(Drawable icon);
    void saveHierarchyState(SparseArray<Parcelable> toolbarStates);
    void restoreHierarchyState(SparseArray<Parcelable> toolbarStates);
    void setBackgroundDrawable(Drawable d);
    int getHeight();
    void setVisibility(int visible);
    int getVisibility();
    void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback);
    Menu getMenu();
}
+32 −0
Original line number Diff line number Diff line
@@ -657,4 +657,36 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
        mToolbar.restoreHierarchyState(toolbarStates);
    }

    @Override
    public void setBackgroundDrawable(Drawable d) {
        //noinspection deprecation
        mToolbar.setBackgroundDrawable(d);
    }

    @Override
    public int getHeight() {
        return mToolbar.getHeight();
    }

    @Override
    public void setVisibility(int visible) {
        mToolbar.setVisibility(visible);
    }

    @Override
    public int getVisibility() {
        return mToolbar.getVisibility();
    }

    @Override
    public void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback) {
        mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback);
    }

    @Override
    public Menu getMenu() {
        return mToolbar.getMenu();
    }

}