package com.appboy.ui.widget; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.appboy.Constants; import com.appboy.enums.Channel; import com.appboy.models.cards.CrossPromotionSmallCard; import com.appboy.support.StringUtils; import com.appboy.ui.R; import com.appboy.ui.actions.GooglePlayAppDetailsAction; import com.appboy.ui.actions.IAction; import com.facebook.drawee.view.SimpleDraweeView; import java.text.NumberFormat; import java.util.Locale; public class CrossPromotionSmallCardView extends BaseCardView<CrossPromotionSmallCard> { private final TextView mTitle; private final TextView mSubtitle; private final TextView mReviewCount; private final TextView mCaption; private final StarRatingView mStarRating; private ImageView mImage; private SimpleDraweeView mDrawee; private final Button mPrice; private IAction mPriceAction; private final float mAspectRatio = 1f; private static final String TAG = String.format("%s.%s", Constants.APPBOY, CrossPromotionSmallCardView.class.getName()); public CrossPromotionSmallCardView(Context context) { this(context, null); } public CrossPromotionSmallCardView(final Context context, CrossPromotionSmallCard card) { super(context); mTitle = (TextView) findViewById(R.id.com_appboy_cross_promotion_small_card_title); mSubtitle = (TextView) findViewById(R.id.com_appboy_cross_promotion_small_card_subtitle); mReviewCount = (TextView) findViewById(R.id.com_appboy_cross_promotion_small_card_review_count); mCaption = (TextView) findViewById(R.id.com_appboy_cross_promotion_small_card_recommendation_tab); mStarRating = (StarRatingView) findViewById(R.id.com_appboy_cross_promotion_small_card_star_rating); mPrice = (Button) findViewById(R.id.com_appboy_cross_promotion_small_card_price); if (canUseFresco()) { mDrawee = (SimpleDraweeView) getProperViewFromInflatedStub(R.id.com_appboy_cross_promotion_small_card_drawee_stub); } else { mImage = (ImageView) getProperViewFromInflatedStub(R.id.com_appboy_cross_promotion_small_card_imageview_stub); mImage.setScaleType(ImageView.ScaleType.CENTER_CROP); mImage.setAdjustViewBounds(true); } if (card != null) { setCard(card); } } @Override protected int getLayoutResource() { return R.layout.com_appboy_cross_promotion_small_card; } @Override public void onSetCard(final CrossPromotionSmallCard card) { mTitle.setText(card.getTitle()); if (card.getSubtitle() == null || card.getSubtitle().toUpperCase(Locale.getDefault()).equals("NULL")) { mSubtitle.setVisibility(View.GONE); } else { mSubtitle.setText(card.getSubtitle().toUpperCase(Locale.getDefault())); } mCaption.setText(card.getCaption().toUpperCase(Locale.getDefault())); // Kindle items do not have ratings, so they are set to 0 if (card.getRating() <= 0) { mReviewCount.setVisibility(View.GONE); mStarRating.setVisibility(View.GONE); } else { mReviewCount.setText(String.format("(%s)", NumberFormat.getInstance().format(card.getReviewCount()))); mStarRating.setRating((float) card.getRating()); } // If the server sends down the display price, use that, if (!StringUtils.isNullOrBlank(card.getDisplayPrice())) { mPrice.setText(card.getDisplayPrice()); } else { // else, format client-side. mPrice.setText(getPriceString(card.getPrice())); } mPriceAction = new GooglePlayAppDetailsAction(card.getPackage(), card.getOpenUriInWebView(), card.getAppStore(), card.getKindleId(), Channel.NEWS_FEED); mPrice.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { handleCardClick(mContext, card, mPriceAction, TAG); } }); if (canUseFresco()) { setSimpleDraweeToUrl(mDrawee, card.getImageUrl(), mAspectRatio, true); } else { setImageViewToUrl(mImage, card.getImageUrl(), mAspectRatio); } } private String getPriceString(double price) { if (price == 0.0) { return mContext.getString(R.string.com_appboy_recommendation_free); } else { return NumberFormat.getCurrencyInstance(Locale.US).format(price); } } }