| Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
|
| index d31dcf4bb0c4013e64a052da29bc36a6d255d92f..a15c1561e9a5ebc1c0c9fb14d2527547ddaeff8c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
|
| @@ -47,12 +47,15 @@ class AppMenuAdapter extends BaseAdapter {
|
| private final LayoutInflater mInflater;
|
| private final List<MenuItem> mMenuItems;
|
| private final int mNumMenuItems;
|
| + private final boolean mShowMenuButton;
|
|
|
| - public AppMenuAdapter(AppMenu appMenu, List<MenuItem> menuItems, LayoutInflater inflater) {
|
| + public AppMenuAdapter(AppMenu appMenu, List<MenuItem> menuItems, LayoutInflater inflater,
|
| + boolean showMenuButton) {
|
| mAppMenu = appMenu;
|
| mMenuItems = menuItems;
|
| mInflater = inflater;
|
| mNumMenuItems = menuItems.size();
|
| + mShowMenuButton = showMenuButton;
|
| }
|
|
|
| @Override
|
| @@ -67,14 +70,16 @@ class AppMenuAdapter extends BaseAdapter {
|
|
|
| @Override
|
| public int getItemViewType(int position) {
|
| - if (getItem(position).hasSubMenu()) {
|
| - if (getItem(position).getSubMenu().size() == 4) {
|
| - return FOUR_BUTTON_MENU_ITEM;
|
| - } else if (getItem(position).getSubMenu().size() == 3) {
|
| - return THREE_BUTTON_MENU_ITEM;
|
| - } else if (getItem(position).getSubMenu().size() == 2) {
|
| - return TITLE_BUTTON_MENU_ITEM;
|
| - }
|
| + MenuItem item = getItem(position);
|
| + int viewCount = item.hasSubMenu() ? item.getSubMenu().size() : 1;
|
| + if (mShowMenuButton && position == 0) viewCount++;
|
| +
|
| + if (viewCount == 4) {
|
| + return FOUR_BUTTON_MENU_ITEM;
|
| + } else if (viewCount == 3) {
|
| + return THREE_BUTTON_MENU_ITEM;
|
| + } else if (viewCount == 2) {
|
| + return TITLE_BUTTON_MENU_ITEM;
|
| }
|
| return STANDARD_MENU_ITEM;
|
| }
|
| @@ -142,7 +147,12 @@ class AppMenuAdapter extends BaseAdapter {
|
| }
|
| setupImageButton(holder.buttonOne, item.getSubMenu().getItem(0));
|
| setupImageButton(holder.buttonTwo, item.getSubMenu().getItem(1));
|
| - setupImageButton(holder.buttonThree, item.getSubMenu().getItem(2));
|
| +
|
| + if (mShowMenuButton && position == 0) {
|
| + setupMenuButton(holder.buttonThree);
|
| + } else {
|
| + setupImageButton(holder.buttonThree, item.getSubMenu().getItem(2));
|
| + }
|
| convertView.setFocusable(false);
|
| convertView.setEnabled(false);
|
| break;
|
| @@ -163,7 +173,12 @@ class AppMenuAdapter extends BaseAdapter {
|
| setupImageButton(holder.buttonOne, item.getSubMenu().getItem(0));
|
| setupImageButton(holder.buttonTwo, item.getSubMenu().getItem(1));
|
| setupImageButton(holder.buttonThree, item.getSubMenu().getItem(2));
|
| - setupImageButton(holder.buttonFour, item.getSubMenu().getItem(3));
|
| +
|
| + if (mShowMenuButton && position == 0) {
|
| + setupMenuButton(holder.buttonFour);
|
| + } else {
|
| + setupImageButton(holder.buttonFour, item.getSubMenu().getItem(3));
|
| + }
|
| convertView.setFocusable(false);
|
| convertView.setEnabled(false);
|
| break;
|
| @@ -179,7 +194,7 @@ class AppMenuAdapter extends BaseAdapter {
|
| } else {
|
| holder = (TitleButtonMenuItemViewHolder) convertView.getTag();
|
| }
|
| - final MenuItem titleItem = item.getSubMenu().getItem(0);
|
| + final MenuItem titleItem = item.hasSubMenu() ? item.getSubMenu().getItem(0) : item;
|
| holder.title.setText(titleItem.getTitle());
|
| holder.title.setEnabled(titleItem.isEnabled());
|
| holder.title.setFocusable(titleItem.isEnabled());
|
| @@ -189,7 +204,11 @@ class AppMenuAdapter extends BaseAdapter {
|
| mAppMenu.onItemClick(titleItem);
|
| }
|
| });
|
| - if (item.getSubMenu().getItem(1).getIcon() != null) {
|
| +
|
| + if (mShowMenuButton && position == 0) {
|
| + holder.button.setVisibility(View.VISIBLE);
|
| + setupMenuButton(holder.button);
|
| + } else if (item.getSubMenu().getItem(1).getIcon() != null) {
|
| holder.button.setVisibility(View.VISIBLE);
|
| setupImageButton(holder.button, item.getSubMenu().getItem(1));
|
| } else {
|
| @@ -222,6 +241,19 @@ class AppMenuAdapter extends BaseAdapter {
|
| });
|
| }
|
|
|
| + private void setupMenuButton(ImageButton button) {
|
| + button.setImageResource(R.drawable.btn_menu_pressed);
|
| + button.setContentDescription(button.getResources().getString(R.string.menu_dismiss_btn));
|
| + button.setEnabled(true);
|
| + button.setFocusable(true);
|
| + button.setOnClickListener(new OnClickListener() {
|
| + @Override
|
| + public void onClick(View v) {
|
| + mAppMenu.dismiss();
|
| + }
|
| + });
|
| + }
|
| +
|
| static class StandardMenuItemViewHolder {
|
| public TextView text;
|
| public AppMenuItemIcon image;
|
|
|