/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.service.ImageResourceManager;
import com.galaxy.meetup.client.android.service.Resource;
import com.galaxy.meetup.client.android.service.ResourceConsumer;
/**
*
* @author sihai
*
*/
public class ClickableAvatar implements ResourceConsumer, ClickableItem {
private static Paint sImageSelectedPaint;
private Resource mAvatarResource;
private int mAvatarSizeCategory;
private String mAvatarUrl;
private final ClickableUserImage.UserImageClickListener mClickListener;
private boolean mClicked;
private CharSequence mContentDescription;
private final Rect mContentRect = new Rect();
private final String mGaiaId;
private final String mUserName;
private final View mView;
public ClickableAvatar(View view, String s, String s1, String s2, ClickableUserImage.UserImageClickListener userimageclicklistener, int i)
{
mView = view;
Context context = view.getContext();
mClickListener = userimageclicklistener;
mGaiaId = s;
mUserName = s2;
mContentDescription = s2;
mAvatarUrl = s1;
mAvatarSizeCategory = 2;
if(sImageSelectedPaint == null)
{
Paint paint = new Paint();
sImageSelectedPaint = paint;
paint.setAntiAlias(true);
sImageSelectedPaint.setStrokeWidth(4F);
sImageSelectedPaint.setColor(context.getApplicationContext().getResources().getColor(R.color.image_selected_stroke));
sImageSelectedPaint.setStyle(android.graphics.Paint.Style.STROKE);
}
}
@Override
public final void bindResources()
{
if(mAvatarUrl != null)
mAvatarResource = ImageResourceManager.getInstance(mView.getContext()).getAvatar(mAvatarUrl, mAvatarSizeCategory, true, this);
}
public final int compare(ClickableItem obj, ClickableItem obj1)
{
ClickableItem clickableitem = (ClickableItem)obj;
ClickableItem clickableitem1 = (ClickableItem)obj1;
return sComparator.compare(clickableitem, clickableitem1);
}
public final void drawSelectionRect(Canvas canvas)
{
canvas.drawCircle(mContentRect.centerX(), mContentRect.centerY(), mContentRect.width() / 2, sImageSelectedPaint);
}
public final Bitmap getBitmap()
{
Bitmap bitmap;
if(mAvatarResource != null && mAvatarResource.getStatus() == 1)
bitmap = (Bitmap)mAvatarResource.getResource();
else
bitmap = null;
return bitmap;
}
public final CharSequence getContentDescription()
{
return mContentDescription;
}
public final Rect getRect()
{
return mContentRect;
}
public final boolean handleEvent(int i, int j, int k) {
boolean flag = true;
if(3 == k) {
mClicked = false;
return false;
}
if(!mContentRect.contains(i, j)) {
if(k == 1)
mClicked = false;
return false;
}
switch(k) {
case 0: // '\0'
mClicked = flag;
break;
case 1: // '\001'
if(mClicked && mClickListener != null)
mClickListener.onUserImageClick(mGaiaId, mUserName);
mClicked = false;
break;
}
return flag;
}
public final boolean isClicked()
{
return mClicked;
}
public final void onResourceStatusChange(Resource resource)
{
mView.invalidate();
}
public final void setRect(int i, int j, int k, int l)
{
mContentRect.set(i, j, k, l);
}
public final void unbindResources()
{
if(mAvatarResource != null)
{
mAvatarResource.unregister(this);
mAvatarResource = null;
}
}
}