package com.malcom.library.android.module.campaign;
import android.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.loopj.android.image.SmartImageTask;
import com.loopj.android.image.SmartImageView;
import com.malcom.library.android.MCMDefines;
/**
* Created with IntelliJ IDEA.
* User: PedroDuran
* Date: 05/06/13
* Time: 10:09
* To change this template use File | Settings | File Templates.
*/
public class MCMCampaignBannerView extends SmartImageView {
private Activity activity;
private MCMCampaignDTO campaign;
private MCMCampaignBannerDelegate delegate;
private Integer loadingImageResId;
private boolean imageLoaded = false;
public MCMCampaignBannerView(Activity activity, MCMCampaignDTO campaign) {
super(activity.getApplicationContext());
this.activity = activity;
this.campaign = campaign;
//Set the layout params to force the call to onDraw() when parent's addView is called
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
setLayoutParams(layoutParams);
setScaleType(ImageView.ScaleType.FIT_XY);
}
public MCMCampaignBannerView(Activity activity, MCMCampaignDTO campaign, Integer loadingImageResId) {
this(activity,campaign);
this.loadingImageResId = loadingImageResId;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); //To change body of overridden methods use File | Settings | File Templates.
if (!imageLoaded){
Log.d(MCMCampaignDefines.LOG_TAG, "Downloading CampaignImage for: " + campaign.getName());
//Set the remote image
this.setImageUrl(campaign.getMedia(), null, loadingImageResId, new SmartImageTask.OnCompleteListener() {
@Override
public void onComplete() {
notifyBannerDidLoad();
imageLoaded = true;
// Config banner click actions
setOnClickListener(new MCMCampaignBannerListener(activity, campaign, delegate));
}
});
}
}
public void notifyBannerDidLoad() {
if (delegate != null) {
delegate.bannerDidLoad(campaign);
}
// Send Impression Hit event to Malcom
new MCMCampaignAsyncTasks.NotifyServer(getContext()).execute(MCMCampaignDefines.ATTR_IMPRESSION_HIT, campaign.getCampaignId());
}
public void notifyBannerFailLoading(String errorMessage) {
if (delegate != null) {
delegate.bannerDidFail(errorMessage);
}
Log.e(MCMDefines.LOG_TAG,"There was a problem loading the banner for campaign: "+campaign.getName());
}
public void setDelegate(MCMCampaignBannerDelegate delegate) {
this.delegate = delegate;
}
public MCMCampaignDTO getCampaign(){
return campaign;
}
public interface MCMCampaignBannerDelegate {
/**
* Notified delegate to indicate actions performed by the BannerView of Malcom.
*/
public void bannerDidLoad(MCMCampaignDTO campaign);
public void bannerDidFail(String errorMessage);
public void bannerClosed();
public void bannerPressed(MCMCampaignDTO campaign);
}
}