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

This commit is contained in:
Adam Powell
2014-09-05 02:40:18 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 6 deletions

View File

@@ -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);
}
}
}

View File

@@ -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;
}
/**

View File

@@ -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);
}
}
}
}
}