Chromium Code Reviews| 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 d8d789237fe2d71367319130ad29610b26a007dd..2d15c04a4fa1c2ab605861bb47de4ba1f2ff9191 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 |
| @@ -9,6 +9,7 @@ import android.animation.AnimatorListenerAdapter; |
| import android.animation.AnimatorSet; |
| import android.animation.ObjectAnimator; |
| import android.graphics.drawable.Drawable; |
| +import android.text.TextUtils; |
| import android.view.LayoutInflater; |
| import android.view.MenuItem; |
| import android.view.View; |
| @@ -21,6 +22,7 @@ import android.widget.TextView; |
| import org.chromium.base.ApiCompatibilityUtils; |
| import org.chromium.chrome.R; |
| +import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; |
| import org.chromium.chrome.browser.widget.TintedImageButton; |
| import org.chromium.ui.base.LocalizationUtils; |
| import org.chromium.ui.interpolators.BakedBezierInterpolator; |
| @@ -50,9 +52,14 @@ class AppMenuAdapter extends BaseAdapter { |
| private static final int FOUR_BUTTON_MENU_ITEM = 3; |
|
gone
2015/12/08 22:24:23
nit: either remove the newline here or add newline
Theresa
2015/12/10 03:53:18
Done.
|
| /** |
| + * Menu item for updating Chrome; uses a custom layout. |
| + */ |
| + private static final int UPDATE_MENU_ITEM = 4; |
| + |
| + /** |
| * The number of view types specified above. If you add a view type you MUST increment this. |
| */ |
| - private static final int VIEW_TYPE_COUNT = 4; |
| + private static final int VIEW_TYPE_COUNT = 5; |
| /** MenuItem Animation Constants */ |
| private static final int ENTER_ITEM_DURATION_MS = 350; |
| @@ -90,7 +97,9 @@ class AppMenuAdapter extends BaseAdapter { |
| MenuItem item = getItem(position); |
| int viewCount = item.hasSubMenu() ? item.getSubMenu().size() : 1; |
| - if (viewCount == 4) { |
| + if (item.getItemId() == R.id.update_menu_id) { |
| + return UPDATE_MENU_ITEM; |
| + } else if (viewCount == 4) { |
| return FOUR_BUTTON_MENU_ITEM; |
| } else if (viewCount == 3) { |
| return THREE_BUTTON_MENU_ITEM; |
| @@ -131,25 +140,33 @@ class AppMenuAdapter extends BaseAdapter { |
| holder = (StandardMenuItemViewHolder) convertView.getTag(); |
| } |
| - convertView.setOnClickListener(new OnClickListener() { |
| - @Override |
| - public void onClick(View v) { |
| - mAppMenu.onItemClick(item); |
| - } |
| - }); |
| - // Set up the icon. |
| - Drawable icon = item.getIcon(); |
| - holder.image.setImageDrawable(icon); |
| - holder.image.setVisibility(icon == null ? View.GONE : View.VISIBLE); |
| - holder.image.setChecked(item.isChecked()); |
| - holder.text.setText(item.getTitle()); |
| - holder.text.setContentDescription(item.getTitleCondensed()); |
| - |
| - boolean isEnabled = item.isEnabled(); |
| - // Set the text color (using a color state list). |
| - holder.text.setEnabled(isEnabled); |
| - // This will ensure that the item is not highlighted when selected. |
| - convertView.setEnabled(isEnabled); |
| + setupStandardMenuItemViewHolder(holder, convertView, item); |
| + break; |
| + } |
| + case UPDATE_MENU_ITEM: { |
| + CustomMenuItemViewHolder holder = null; |
| + if (convertView == null) { |
|
gone
2015/12/08 22:24:23
if (!(convertView instanceof CustomMenuItemViewHol
Theresa
2015/12/10 03:53:17
Added to the check here and to the other cases. Th
|
| + holder = new CustomMenuItemViewHolder(); |
| + convertView = mInflater.inflate(R.layout.update_menu_item, parent, false); |
| + holder.text = (TextView) convertView.findViewById(R.id.menu_item_text); |
| + holder.image = (AppMenuItemIcon) convertView.findViewById(R.id.menu_item_icon); |
| + holder.summary = (TextView) convertView.findViewById(R.id.menu_item_summary); |
| + convertView.setTag(holder); |
| + convertView.setTag(R.id.menu_item_enter_anim_id, |
| + buildStandardItemEnterAnimator(convertView, position)); |
| + } else { |
| + holder = (CustomMenuItemViewHolder) convertView.getTag(); |
| + } |
| + |
| + setupStandardMenuItemViewHolder(holder, convertView, item); |
| + String summary = UpdateMenuItemHelper.getInstance().getMenuItemSummaryText( |
| + mInflater.getContext()); |
| + if (TextUtils.isEmpty(summary)) { |
| + holder.summary.setVisibility(View.GONE); |
| + } else { |
| + holder.summary.setText(summary); |
| + } |
| + |
| break; |
| } |
| case THREE_BUTTON_MENU_ITEM: { |
| @@ -269,6 +286,30 @@ class AppMenuAdapter extends BaseAdapter { |
| }); |
| } |
| + private void setupStandardMenuItemViewHolder(StandardMenuItemViewHolder holder, |
| + View convertView, final MenuItem item) { |
| + // Set up the icon. |
| + Drawable icon = item.getIcon(); |
| + holder.image.setImageDrawable(icon); |
| + holder.image.setVisibility(icon == null ? View.GONE : View.VISIBLE); |
| + holder.image.setChecked(item.isChecked()); |
| + holder.text.setText(item.getTitle()); |
| + holder.text.setContentDescription(item.getTitleCondensed()); |
| + |
| + boolean isEnabled = item.isEnabled(); |
| + // Set the text color (using a color state list). |
| + holder.text.setEnabled(isEnabled); |
| + // This will ensure that the item is not highlighted when selected. |
| + convertView.setEnabled(isEnabled); |
| + |
| + convertView.setOnClickListener(new OnClickListener() { |
| + @Override |
| + public void onClick(View v) { |
| + mAppMenu.onItemClick(item); |
| + } |
| + }); |
| + } |
| + |
| /** |
| * This builds an {@link Animator} for the enter animation of a standard menu item. This means |
| * it will animate the alpha from 0 to 1 and translate the view from -10dp to 0dp on the y axis. |
| @@ -348,6 +389,10 @@ class AppMenuAdapter extends BaseAdapter { |
| public AppMenuItemIcon image; |
| } |
| + static class CustomMenuItemViewHolder extends StandardMenuItemViewHolder { |
| + public TextView summary; |
| + } |
| + |
| static class ThreeButtonMenuItemViewHolder { |
| public TintedImageButton[] buttons = new TintedImageButton[3]; |
| } |