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

Commit a672a7c5 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Menu callbacks for ToolbarActionBars, part 2" into lmp-dev

parents a88e8926 c4612504
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
    private boolean mReserveOverflow;
    private ActionMenuPresenter mPresenter;
    private MenuPresenter.Callback mActionMenuPresenterCallback;
    private MenuBuilder.Callback mMenuBuilderCallback;
    private boolean mFormatItems;
    private int mFormatItemsWidth;
    private int mMinCellSize;
@@ -623,8 +624,9 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
     * Must be called before the first call to getMenu()
     * @hide
     */
    public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) {
        mActionMenuPresenterCallback = cb;
    public void setMenuCallbacks(MenuPresenter.Callback pcb, MenuBuilder.Callback mcb) {
        mActionMenuPresenterCallback = pcb;
        mMenuBuilderCallback = mcb;
    }

    /**
@@ -730,6 +732,9 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo

        @Override
        public void onMenuModeChange(MenuBuilder menu) {
            if (mMenuBuilderCallback != null) {
                mMenuBuilderCallback.onMenuModeChange(menu);
            }
        }
    }

+5 −3
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ public class Toolbar extends ViewGroup {
    private ActionMenuPresenter mOuterActionMenuPresenter;
    private ExpandedActionViewMenuPresenter mExpandedMenuPresenter;
    private MenuPresenter.Callback mActionMenuPresenterCallback;
    private MenuBuilder.Callback mMenuBuilderCallback;

    private boolean mCollapsible;

@@ -827,7 +828,7 @@ public class Toolbar extends ViewGroup {
            mMenuView = new ActionMenuView(getContext());
            mMenuView.setPopupTheme(mPopupTheme);
            mMenuView.setOnMenuItemClickListener(mMenuViewItemClickListener);
            mMenuView.setActionMenuPresenterCallback(mActionMenuPresenterCallback);
            mMenuView.setMenuCallbacks(mActionMenuPresenterCallback, mMenuBuilderCallback);
            final LayoutParams lp = generateDefaultLayoutParams();
            lp.gravity = Gravity.END | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK);
            mMenuView.setLayoutParams(lp);
@@ -1684,8 +1685,9 @@ public class Toolbar extends ViewGroup {
     * Must be called before the menu is accessed
     * @hide
     */
    public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) {
        mActionMenuPresenterCallback = cb;
    public void setMenuCallbacks(MenuPresenter.Callback pcb, MenuBuilder.Callback mcb) {
        mActionMenuPresenterCallback = pcb;
        mMenuBuilderCallback = mcb;
    }

    /**
+21 −1
Original line number Diff line number Diff line
@@ -456,7 +456,7 @@ public class ToolbarActionBar extends ActionBar {

    void populateOptionsMenu() {
        if (!mMenuCallbackSet) {
            mToolbar.setActionMenuPresenterCallback(new ActionMenuPresenterCallback());
            mToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
            mMenuCallbackSet = true;
        }
        final Menu menu = mToolbar.getMenu();
@@ -547,4 +547,24 @@ public class ToolbarActionBar extends ActionBar {
            mClosingActionMenu = false;
        }
    }

    private final class MenuBuilderCallback implements MenuBuilder.Callback {

        @Override
        public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) {
            return false;
        }

        @Override
        public void onMenuModeChange(MenuBuilder menu) {
            if (mWindowCallback != null) {
                if (mToolbar.isOverflowMenuShowing()) {
                    mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
                } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL,
                        null, menu)) {
                    mWindowCallback.onMenuOpened(Window.FEATURE_ACTION_BAR, menu);
                }
            }
        }
    }
}