// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.explore_sites;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;

import org.chromium.chrome.R;
import org.chromium.chrome.browser.util.ViewUtils;
import org.chromium.chrome.browser.widget.RoundedIconGenerator;
import org.chromium.chrome.browser.widget.tile.TileWithTextView;

/**
 * View for a category name and site tiles.
 */
public class ExploreSitesTileView extends TileWithTextView {
    private final int mIconSizePx;
    private RoundedIconGenerator mIconGenerator;

    public ExploreSitesTileView(Context ctx, AttributeSet attrs) {
        super(ctx, attrs);
        mIconSizePx = getResources().getDimensionPixelSize(R.dimen.tile_view_icon_size);
    }

    public void initialize(RoundedIconGenerator generator) {
        mIconGenerator = generator;
    }

    public void updateIcon(Bitmap iconImage, String text) {
        setIconDrawable(getDrawableForBitmap(iconImage, text));
    }

    public Drawable getDrawableForBitmap(Bitmap image, String text) {
        if (image == null) {
            return new BitmapDrawable(getResources(), mIconGenerator.generateIconForText(text));
        }
        return ViewUtils.createRoundedBitmapDrawable(image, mIconSizePx / 2);
    }
}
