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

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

Issue 2951133003: Clean up tinted ImageView subclasses (Closed)
Patch Set: Comments Created 3 years, 6 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 c6587af53ac710365171711c89a48cba733e9b55..e2b5d39bdc68e69eafe56f720d753d84b7abafad 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
@@ -228,26 +228,31 @@ class AppMenuAdapter extends BaseAdapter {
break;
}
case TITLE_BUTTON_MENU_ITEM: {
+ assert item.hasSubMenu();
+ final MenuItem titleItem = item.getSubMenu().getItem(0);
+ final MenuItem subItem = item.getSubMenu().getItem(1);
+
TitleButtonMenuItemViewHolder holder = null;
if (convertView == null
|| !(convertView.getTag() instanceof TitleButtonMenuItemViewHolder)) {
- holder = new TitleButtonMenuItemViewHolder();
convertView = mInflater.inflate(R.layout.title_button_menu_item, parent, false);
+
+ holder = new TitleButtonMenuItemViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.title);
+ holder.checkbox = (AppMenuItemIcon) convertView.findViewById(R.id.checkbox);
holder.button = (TintedImageButton) convertView.findViewById(R.id.button);
holder.button.setTag(
R.id.menu_item_original_background, holder.button.getBackground());
- View animatedView = convertView;
convertView.setTag(holder);
convertView.setTag(R.id.menu_item_enter_anim_id,
- buildStandardItemEnterAnimator(animatedView, position));
+ buildStandardItemEnterAnimator(convertView, position));
convertView.setTag(
R.id.menu_item_original_background, convertView.getBackground());
} else {
holder = (TitleButtonMenuItemViewHolder) convertView.getTag();
}
- 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());
@@ -258,12 +263,22 @@ class AppMenuAdapter extends BaseAdapter {
}
});
- if (item.getSubMenu().getItem(1).getIcon() != null) {
+ if (subItem.isCheckable()) {
+ // Display a checkbox for the MenuItem.
+ holder.checkbox.setVisibility(View.VISIBLE);
+ holder.button.setVisibility(View.GONE);
+ setupCheckBox(holder.checkbox, subItem);
+ } else if (subItem.getIcon() != null) {
+ // Display an icon alongside the MenuItem.
+ holder.checkbox.setVisibility(View.GONE);
holder.button.setVisibility(View.VISIBLE);
- setupImageButton(holder.button, item.getSubMenu().getItem(1));
+ setupImageButton(holder.button, subItem);
} else {
+ // Display just the label of the MenuItem.
+ holder.checkbox.setVisibility(View.GONE);
holder.button.setVisibility(View.GONE);
}
+
convertView.setFocusable(false);
convertView.setEnabled(false);
break;
@@ -277,16 +292,33 @@ class AppMenuAdapter extends BaseAdapter {
return convertView;
}
+ private void setupCheckBox(AppMenuItemIcon button, final MenuItem item) {
+ button.setChecked(item.isChecked());
+
+ // The checkbox must be tinted to make Android consistently style it across OS versions.
+ // http://crbug.com/571445
+ button.setTint(ApiCompatibilityUtils.getColorStateList(
+ button.getResources(), R.color.checkbox_tint));
+
+ setupMenuButton(button, item);
+ }
+
private void setupImageButton(TintedImageButton button, final MenuItem item) {
// Store and recover the level of image as button.setimageDrawable
// resets drawable to default level.
int currentLevel = item.getIcon().getLevel();
button.setImageDrawable(item.getIcon());
item.getIcon().setLevel(currentLevel);
+
if (item.isChecked()) {
button.setTint(ApiCompatibilityUtils.getColorStateList(
button.getResources(), R.color.blue_mode_tint));
}
+
+ setupMenuButton(button, item);
+ }
+
+ private void setupMenuButton(View button, final MenuItem item) {
button.setEnabled(item.isEnabled());
button.setFocusable(item.isEnabled());
button.setContentDescription(item.getTitleCondensed());
@@ -497,6 +529,7 @@ class AppMenuAdapter extends BaseAdapter {
static class TitleButtonMenuItemViewHolder {
public TextView title;
+ public AppMenuItemIcon checkbox;
public TintedImageButton button;
}
}

Powered by Google App Engine
This is Rietveld 408576698