package us.pinguo.shareelementdemo.advanced.list;

import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import androidx.annotation.NonNull;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.request.RequestOptions;
import us.pinguo.shareelementdemo.R;
import us.pinguo.shareelementdemo.advanced.Image;

/**
 * Created by huangwei on 2018/9/19 0019.
 */
public class ImageListCell extends BaseListCell<Image, RecyclerView.ViewHolder> {

    public ImageListCell(Image image) {
        super(image);
    }

    @Override
    protected void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        super.onBindViewHolder(holder, position);
        ImageView imageView = holder.itemView.findViewById(R.id.list_item_img);
        ViewCompat.setTransitionName(imageView, mData.url);
        setSize(holder.itemView);

        Glide.with(imageView)
                .load(mData.url)
                .apply(new RequestOptions()
                        .diskCacheStrategy(DiskCacheStrategy.NONE)
                        .transform(new FitCenter())
                        .placeholder(new ColorDrawable(Color.GRAY)))
                .into(imageView);
    }

    @Override
    protected RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_image, parent, false);
        return new BaseViewHolder(view);
    }

    protected void setSize(View view) {
        int width = (view.getResources().getDisplayMetrics().widthPixels -
                view.getResources().getDimensionPixelSize(R.dimen.divider) * 2) / 2;
        int height = width;//(int) (mData.height / (float) mData.width * width);
        ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
        layoutParams.height = height;
        view.setLayoutParams(layoutParams);
    }

    @Override
    protected int getType() {
        return 0;
    }

    @Override
    public View getShareElement() {
        return mViewHolder.itemView.findViewById(R.id.list_item_img);
    }

    @Override
    public Bitmap getThumbnail() {
        if (mViewHolder == null || mViewHolder.itemView == null) {
            return null;
        }
        ImageView imageView = mViewHolder.itemView.findViewById(R.id.list_item_img);
        if (imageView.getDrawable() instanceof BitmapDrawable) {
            return ((BitmapDrawable) imageView.getDrawable()).getBitmap();
        }
        return null;
    }
}