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]; |
} |