am 1a4c4334: Merge "Fix bug 5396097 - menu theme consistency" into ics-mr0

* commit '1a4c4334f02152c96cfc71136dc31085826c6894':
  Fix bug 5396097 - menu theme consistency
This commit is contained in:
Adam Powell
2011-10-11 15:33:33 -07:00
committed by Android Git Automerger
6 changed files with 22 additions and 20 deletions

View File

@ -31,9 +31,6 @@ import android.view.View;
import android.view.View.MeasureSpec; import android.view.View.MeasureSpec;
import android.view.ViewConfiguration; import android.view.ViewConfiguration;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageButton; import android.widget.ImageButton;
import java.util.ArrayList; import java.util.ArrayList;
@ -71,8 +68,8 @@ public class ActionMenuPresenter extends BaseMenuPresenter
final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback(); final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback();
int mOpenSubMenuId; int mOpenSubMenuId;
public ActionMenuPresenter() { public ActionMenuPresenter(Context context) {
super(com.android.internal.R.layout.action_menu_layout, super(context, com.android.internal.R.layout.action_menu_layout,
com.android.internal.R.layout.action_menu_item_layout); com.android.internal.R.layout.action_menu_item_layout);
} }
@ -98,7 +95,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
int width = mWidthLimit; int width = mWidthLimit;
if (mReserveOverflow) { if (mReserveOverflow) {
if (mOverflowButton == null) { if (mOverflowButton == null) {
mOverflowButton = new OverflowMenuButton(mContext); mOverflowButton = new OverflowMenuButton(mSystemContext);
final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
mOverflowButton.measure(spec, spec); mOverflowButton.measure(spec, spec);
} }
@ -215,7 +212,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
if (hasOverflow) { if (hasOverflow) {
if (mOverflowButton == null) { if (mOverflowButton == null) {
mOverflowButton = new OverflowMenuButton(mContext); mOverflowButton = new OverflowMenuButton(mSystemContext);
} }
ViewGroup parent = (ViewGroup) mOverflowButton.getParent(); ViewGroup parent = (ViewGroup) mOverflowButton.getParent();
if (parent != mMenuView) { if (parent != mMenuView) {

View File

@ -29,8 +29,10 @@ import java.util.ArrayList;
* be reused if possible when items change. * be reused if possible when items change.
*/ */
public abstract class BaseMenuPresenter implements MenuPresenter { public abstract class BaseMenuPresenter implements MenuPresenter {
protected Context mSystemContext;
protected Context mContext; protected Context mContext;
protected MenuBuilder mMenu; protected MenuBuilder mMenu;
protected LayoutInflater mSystemInflater;
protected LayoutInflater mInflater; protected LayoutInflater mInflater;
private Callback mCallback; private Callback mCallback;
@ -44,10 +46,13 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
/** /**
* Construct a new BaseMenuPresenter. * Construct a new BaseMenuPresenter.
* *
* @param context Context for generating system-supplied views
* @param menuLayoutRes Layout resource ID for the menu container view * @param menuLayoutRes Layout resource ID for the menu container view
* @param itemLayoutRes Layout resource ID for a single item view * @param itemLayoutRes Layout resource ID for a single item view
*/ */
public BaseMenuPresenter(int menuLayoutRes, int itemLayoutRes) { public BaseMenuPresenter(Context context, int menuLayoutRes, int itemLayoutRes) {
mSystemContext = context;
mSystemInflater = LayoutInflater.from(context);
mMenuLayoutRes = menuLayoutRes; mMenuLayoutRes = menuLayoutRes;
mItemLayoutRes = itemLayoutRes; mItemLayoutRes = itemLayoutRes;
} }
@ -62,7 +67,7 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
@Override @Override
public MenuView getMenuView(ViewGroup root) { public MenuView getMenuView(ViewGroup root) {
if (mMenuView == null) { if (mMenuView == null) {
mMenuView = (MenuView) mInflater.inflate(mMenuLayoutRes, root, false); mMenuView = (MenuView) mSystemInflater.inflate(mMenuLayoutRes, root, false);
mMenuView.initialize(mMenu); mMenuView.initialize(mMenu);
updateMenuView(true); updateMenuView(true);
} }
@ -138,7 +143,7 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
* @return The new item view * @return The new item view
*/ */
public MenuView.ItemView createItemView(ViewGroup parent) { public MenuView.ItemView createItemView(ViewGroup parent) {
return (MenuView.ItemView) mInflater.inflate(mItemLayoutRes, parent, false); return (MenuView.ItemView) mSystemInflater.inflate(mItemLayoutRes, parent, false);
} }
/** /**

View File

@ -43,8 +43,8 @@ public class IconMenuPresenter extends BaseMenuPresenter {
private static final String VIEWS_TAG = "android:menu:icon"; private static final String VIEWS_TAG = "android:menu:icon";
private static final String OPEN_SUBMENU_KEY = "android:menu:icon:submenu"; private static final String OPEN_SUBMENU_KEY = "android:menu:icon:submenu";
public IconMenuPresenter() { public IconMenuPresenter(Context context) {
super(com.android.internal.R.layout.icon_menu_layout, super(context, com.android.internal.R.layout.icon_menu_layout,
com.android.internal.R.layout.icon_menu_item_layout); com.android.internal.R.layout.icon_menu_item_layout);
} }

View File

@ -207,7 +207,7 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi
}); });
final MenuBuilder menu = (MenuBuilder) mode.getMenu(); final MenuBuilder menu = (MenuBuilder) mode.getMenu();
mActionMenuPresenter = new ActionMenuPresenter(); mActionMenuPresenter = new ActionMenuPresenter(mContext);
mActionMenuPresenter.setReserveOverflow(true); mActionMenuPresenter.setReserveOverflow(true);
final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,

View File

@ -373,7 +373,7 @@ public class ActionBarView extends AbsActionBarView {
} }
} }
if (mActionMenuPresenter == null) { if (mActionMenuPresenter == null) {
mActionMenuPresenter = new ActionMenuPresenter(); mActionMenuPresenter = new ActionMenuPresenter(mContext);
mActionMenuPresenter.setCallback(cb); mActionMenuPresenter.setCallback(cb);
mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter); mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter);
mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter(); mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter();

View File

@ -1084,8 +1084,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
} }
MenuView menuView = st.isInListMode() MenuView menuView = st.isInListMode()
? st.getListMenuView(mPanelMenuPresenterCallback) ? st.getListMenuView(getContext(), mPanelMenuPresenterCallback)
: st.getIconMenuView(mPanelMenuPresenterCallback); : st.getIconMenuView(getContext(), mPanelMenuPresenterCallback);
st.shownPanelView = (View) menuView; st.shownPanelView = (View) menuView;
@ -3251,11 +3251,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
} }
} }
MenuView getListMenuView(MenuPresenter.Callback cb) { MenuView getListMenuView(Context context, MenuPresenter.Callback cb) {
if (menu == null) return null; if (menu == null) return null;
if (!isCompact) { if (!isCompact) {
getIconMenuView(cb); // Need this initialized to know where our offset goes getIconMenuView(context, cb); // Need this initialized to know where our offset goes
} }
if (listMenuPresenter == null) { if (listMenuPresenter == null) {
@ -3275,11 +3275,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
return result; return result;
} }
MenuView getIconMenuView(MenuPresenter.Callback cb) { MenuView getIconMenuView(Context context, MenuPresenter.Callback cb) {
if (menu == null) return null; if (menu == null) return null;
if (iconMenuPresenter == null) { if (iconMenuPresenter == null) {
iconMenuPresenter = new IconMenuPresenter(); iconMenuPresenter = new IconMenuPresenter(context);
iconMenuPresenter.setCallback(cb); iconMenuPresenter.setCallback(cb);
iconMenuPresenter.setId(com.android.internal.R.id.icon_menu_presenter); iconMenuPresenter.setId(com.android.internal.R.id.icon_menu_presenter);
menu.addMenuPresenter(iconMenuPresenter); menu.addMenuPresenter(iconMenuPresenter);