/*
* Copyright 2014 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.example.leanback.fastlane;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.Presenter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.example.leanback.R;
import com.android.example.leanback.data.Video;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
/**
* Created by anirudhd on 11/2/14.
*/
public class CardPresenter extends Presenter {
private static int CARD_WIDTH = 200;
private static int CARD_HEIGHT = 200;
private static Context mContext;
static class ViewHolder extends Presenter.ViewHolder {
private ImageCardView mCardView;
private Drawable mDefaultCardImage;
private PicassoImageCardViewTarget mImageCardViewTarget;
public ViewHolder(View view) {
super(view);
mCardView = (ImageCardView) view;
mImageCardViewTarget = new PicassoImageCardViewTarget(mCardView);
mDefaultCardImage = mContext.getResources().getDrawable(R.drawable.filmi);
}
public ImageCardView getCardView() {
return mCardView;
}
protected void updateCardViewImage(String url) {
Picasso.with(mContext)
.load(url)
.resize(CARD_WIDTH, CARD_HEIGHT)
.centerCrop()
.error(mDefaultCardImage)
.into(mImageCardViewTarget);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
Log.d("onCreateViewHolder", "creating viewholder");
mContext = viewGroup.getContext();
ImageCardView cardView = new ImageCardView(mContext);
cardView.setFocusable(true);
cardView.setFocusableInTouchMode(true);
((TextView)cardView.findViewById(R.id.content_text)).setTextColor(Color.LTGRAY);
return new ViewHolder(cardView);
}
@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object o) {
Video video = (Video) o;
((ViewHolder) viewHolder).mCardView.setTitleText(video.getTitle());
((ViewHolder) viewHolder).mCardView.setContentText(video.getDescription());
((ViewHolder) viewHolder).mCardView.setMainImageDimensions(CARD_WIDTH * 2 , CARD_HEIGHT * 2);
((ViewHolder) viewHolder).updateCardViewImage(video.getThumbUrl());
}
@Override
public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
}
public static class PicassoImageCardViewTarget implements Target {
private ImageCardView mImageCardView;
public PicassoImageCardViewTarget(ImageCardView mImageCardView) {
this.mImageCardView = mImageCardView;
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
Drawable bitmapDrawable = new BitmapDrawable(mContext.getResources(), bitmap);
mImageCardView.setMainImage(bitmapDrawable);
}
@Override
public void onBitmapFailed(Drawable drawable) {
mImageCardView.setMainImage(drawable);
}
@Override
public void onPrepareLoad(Drawable drawable) {
// Do nothing, default_background manager has its own transitions
}
}
}