| Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
|
| index 0a56bcdf563308d0a074a2a10a2ecb82ac3aaf72..26e1b70b0c97ac28151ca1213562df9c0688ecdd 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
|
| @@ -5,24 +5,49 @@
|
| package org.chromium.chrome.browser.history;
|
|
|
| import android.content.Context;
|
| +import android.graphics.Bitmap;
|
| +import android.graphics.drawable.BitmapDrawable;
|
| +import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
|
| +import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
|
| import android.util.AttributeSet;
|
| import android.view.View;
|
| +import android.widget.ImageView;
|
| import android.widget.TextView;
|
|
|
| +import org.chromium.base.ApiCompatibilityUtils;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback;
|
| +import org.chromium.chrome.browser.widget.RoundedIconGenerator;
|
| import org.chromium.chrome.browser.widget.TintedImageButton;
|
| import org.chromium.chrome.browser.widget.selection.SelectableItemView;
|
|
|
| /**
|
| * The SelectableItemView for items displayed in the browsing history UI.
|
| */
|
| -public class HistoryItemView extends SelectableItemView<HistoryItem> {
|
| +public class HistoryItemView extends SelectableItemView<HistoryItem> implements LargeIconCallback {
|
| private TextView mTitle;
|
| private TextView mDomain;
|
| private TintedImageButton mRemoveButton;
|
| + private ImageView mIconImageView;
|
| +
|
| + private HistoryManager mHistoryManager;
|
| + private final RoundedIconGenerator mIconGenerator;
|
| +
|
| + private final int mMinIconSize;
|
| + private final int mDisplayedIconSize;
|
| + private final int mCornerRadius;
|
|
|
| public HistoryItemView(Context context, AttributeSet attrs) {
|
| super(context, attrs);
|
| +
|
| + mCornerRadius = getResources().getDimensionPixelSize(R.dimen.default_favicon_corner_radius);
|
| + mMinIconSize = getResources().getDimensionPixelSize(R.dimen.default_favicon_min_size);
|
| + mDisplayedIconSize = getResources().getDimensionPixelSize(R.dimen.default_favicon_size);
|
| + int textSize = getResources().getDimensionPixelSize(R.dimen.default_favicon_icon_text_size);
|
| + int iconColor = ApiCompatibilityUtils.getColor(
|
| + getResources(), R.color.default_favicon_background_color);
|
| + mIconGenerator = new RoundedIconGenerator(mDisplayedIconSize , mDisplayedIconSize,
|
| + mCornerRadius, iconColor, textSize);
|
| }
|
|
|
| @Override
|
| @@ -30,6 +55,7 @@ public class HistoryItemView extends SelectableItemView<HistoryItem> {
|
| super.onFinishInflate();
|
| mTitle = (TextView) findViewById(R.id.title);
|
| mDomain = (TextView) findViewById(R.id.domain);
|
| + mIconImageView = (ImageView) findViewById(R.id.icon_view);
|
| mRemoveButton = (TintedImageButton) findViewById(R.id.remove);
|
| mRemoveButton.setOnClickListener(new OnClickListener() {
|
| @Override
|
| @@ -41,9 +67,14 @@ public class HistoryItemView extends SelectableItemView<HistoryItem> {
|
|
|
| @Override
|
| public void setItem(HistoryItem item) {
|
| + if (getItem() == item) return;
|
| +
|
| super.setItem(item);
|
| +
|
| mTitle.setText(item.getTitle());
|
| mDomain.setText(item.getDomain());
|
| + mIconImageView.setImageResource(R.drawable.default_favicon);
|
| + if (mHistoryManager != null) requestIcon();
|
| }
|
|
|
| /**
|
| @@ -51,6 +82,10 @@ public class HistoryItemView extends SelectableItemView<HistoryItem> {
|
| */
|
| public void setHistoryManager(HistoryManager manager) {
|
| getItem().setHistoryManager(manager);
|
| + if (mHistoryManager == manager) return;
|
| +
|
| + mHistoryManager = manager;
|
| + requestIcon();
|
| }
|
|
|
| /**
|
| @@ -64,4 +99,26 @@ public class HistoryItemView extends SelectableItemView<HistoryItem> {
|
| protected void onClick() {
|
| if (getItem() != null) getItem().open();
|
| }
|
| +
|
| + @Override
|
| + public void onLargeIconAvailable(Bitmap icon, int fallbackColor,
|
| + boolean isFallbackColorDefault) {
|
| + // TODO(twellington): move this somewhere that can be shared with bookmarks.
|
| + if (icon == null) {
|
| + mIconGenerator.setBackgroundColor(fallbackColor);
|
| + icon = mIconGenerator.generateIconForUrl(getItem().getUrl());
|
| + mIconImageView.setImageDrawable(new BitmapDrawable(getResources(), icon));
|
| + } else {
|
| + RoundedBitmapDrawable roundedIcon = RoundedBitmapDrawableFactory.create(
|
| + getResources(),
|
| + Bitmap.createScaledBitmap(icon, mDisplayedIconSize, mDisplayedIconSize, false));
|
| + roundedIcon.setCornerRadius(mCornerRadius);
|
| + mIconImageView.setImageDrawable(roundedIcon);
|
| + }
|
| + }
|
| +
|
| + private void requestIcon() {
|
| + mHistoryManager.getLargeIconBridge().getLargeIconForUrl(
|
| + getItem().getUrl(), mMinIconSize, this);
|
| + }
|
| }
|
|
|