Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2025)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java

Issue 381133003: Add menu button to menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698