/**
* 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.text.TextUtils;
import android.view.View;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.content.AvatarRequest;
import com.galaxy.meetup.client.android.service.ImageCache;
import com.galaxy.meetup.client.android.service.ImageCache.ImageConsumer;
/**
*
* @author sihai
*
*/
public class ClickableUserImage implements ImageConsumer, ClickableItem {
private static Paint sImageSelectedPaint;
private final ImageCache mAvatarCache;
private boolean mAvatarInvalidated;
private boolean mAvatarLoaded;
private AvatarRequest mAvatarRequest;
private Bitmap mBitmap;
private final UserImageClickListener mClickListener;
private boolean mClicked;
private CharSequence mContentDescription;
private final Rect mContentRect;
private final String mUserId;
private final String mUserName;
private final View mView;
public ClickableUserImage(View view, String s, String s1, String s2, UserImageClickListener userimageclicklistener)
{
this(view, s, null, s2, userimageclicklistener, 1);
}
public ClickableUserImage(View view, String s, String s1, String s2, UserImageClickListener userimageclicklistener, int i)
{
mView = view;
Context context = view.getContext();
mContentRect = new Rect();
mClickListener = userimageclicklistener;
mUserId = s;
mUserName = s2;
mContentDescription = s2;
mAvatarCache = ImageCache.getInstance(context);
mAvatarRequest = new AvatarRequest(mUserId, s1, i, true);
mAvatarInvalidated = true;
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);
}
}
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()
{
if(mAvatarInvalidated)
{
mAvatarInvalidated = false;
mAvatarCache.refreshImage(this, mAvatarRequest);
}
return mBitmap;
}
public final CharSequence getContentDescription()
{
return mContentDescription;
}
public final Rect getRect()
{
return mContentRect;
}
public final boolean handleEvent(int i, int j, int k) {
if(3 == k) {
mClicked = false;
return true;
}
boolean flag = true;
if(!mContentRect.contains(i, j)) {
if(k == 1)
mClicked = false;
flag = false;
} else {
switch(k)
{
case 0: // '\0'
mClicked = flag;
break;
case 1: // '\001'
if(mClicked && mClickListener != null)
mClickListener.onUserImageClick(mUserId, mUserName);
mClicked = false;
break;
}
}
return flag;
}
public final boolean isClicked()
{
return mClicked;
}
public final void onAvatarChanged(String s)
{
if(TextUtils.equals(s, mUserId))
{
mAvatarInvalidated = true;
mAvatarLoaded = false;
mView.invalidate();
}
}
public final void setBitmap(Bitmap bitmap, boolean flag)
{
boolean flag1;
if(!flag)
flag1 = true;
else
flag1 = false;
mAvatarLoaded = flag1;
mBitmap = bitmap;
mView.invalidate();
}
public final void setRect(int i, int j, int k, int l)
{
mContentRect.set(i, j, k, l);
}
public static interface UserImageClickListener {
void onUserImageClick(String s, String s1);
}
}