/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import WriteReviewOperation.MediaRef;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.content.DbEmbedSquare;
import com.galaxy.meetup.client.android.service.ImageResourceManager;
import com.galaxy.meetup.client.android.service.Resource;
import com.galaxy.meetup.client.util.LinksRenderUtils;
import com.galaxy.meetup.client.util.TextPaintUtils;
/**
*
* @author sihai
*
*/
public class SquareCardView extends StreamCardView {
private static ImageResourceManager sImageResourceManager;
protected static TextPaint sInvitationTextPaint;
private static boolean sSquareInviteCardViewInitialized;
protected static TextPaint sSquareNameTextPaint;
protected DbEmbedSquare mDbEmbedSquare;
protected Rect mDestRect;
protected Resource mImageResource;
protected MediaRef mMediaRef;
protected StaticLayout mSquareInvitationLayout;
protected StaticLayout mSquareNameLayout;
protected Rect mSrcRect;
public SquareCardView(Context context)
{
this(context, null);
}
public SquareCardView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
if(!sSquareInviteCardViewInitialized)
{
sSquareInviteCardViewInitialized = true;
sImageResourceManager = ImageResourceManager.getInstance(context);
Resources resources = context.getResources();
TextPaint textpaint = new TextPaint();
sInvitationTextPaint = textpaint;
textpaint.setAntiAlias(true);
sInvitationTextPaint.setColor(resources.getColor(R.color.card_square_invite_invitation_text));
sInvitationTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
sInvitationTextPaint.setTextSize(resources.getDimension(R.dimen.card_square_invite_invitation_text_size));
sInvitationTextPaint.setShadowLayer(resources.getDimension(R.dimen.card_square_invite_shadow_radius), resources.getDimension(R.dimen.card_square_invite_shadow_x), resources.getDimension(R.dimen.card_square_invite_shadow_y), resources.getColor(R.color.card_square_invite_shadow_text));
TextPaintUtils.registerTextPaint(sInvitationTextPaint, R.dimen.card_square_invite_invitation_text_size);
TextPaint textpaint1 = new TextPaint();
sSquareNameTextPaint = textpaint1;
textpaint1.setAntiAlias(true);
sSquareNameTextPaint.setColor(resources.getColor(R.color.card_square_invite_name_text));
sSquareNameTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
sSquareNameTextPaint.setTextSize(resources.getDimension(R.dimen.card_square_invite_name_text_size));
sSquareNameTextPaint.setShadowLayer(resources.getDimension(R.dimen.card_square_invite_shadow_radius), resources.getDimension(R.dimen.card_square_invite_shadow_x), resources.getDimension(R.dimen.card_square_invite_shadow_y), resources.getColor(R.color.card_square_invite_shadow_text));
TextPaintUtils.registerTextPaint(sSquareNameTextPaint, R.dimen.card_square_invite_name_text_size);
}
mSrcRect = new Rect();
mDestRect = new Rect();
}
protected final int draw(Canvas canvas, int i, int j, int k, int l)
{
Bitmap bitmap;
boolean flag;
int i1;
int j1;
int k1;
int l1;
int i2;
int j2;
if(mImageResource == null)
bitmap = null;
else
bitmap = (Bitmap)mImageResource.getResource();
if(bitmap != null)
flag = true;
else
flag = false;
drawMediaTopAreaStage(canvas, k, l, flag, mDestRect, sMediaTopAreaBackgroundPaint);
if(bitmap != null)
{
if(mSrcRect.isEmpty())
createSourceRectForMediaImage(mSrcRect, bitmap, k, l);
canvas.drawBitmap(bitmap, mSrcRect, mDestRect, sResizePaint);
}
canvas.drawRect(mDestRect, LinksRenderUtils.getTransparentOverlayPaint());
i1 = k + sXDoublePadding;
j1 = (int)((float)(l + sYDoublePadding) * getMediaHeightPercentage());
if(mPlusOneButton == null)
k1 = j1;
else
k1 = j1 - mPlusOneButton.getRect().height();
l1 = sSquareBitmap.getHeight() + sContentYPadding;
if(mSquareInvitationLayout != null)
l1 += mSquareInvitationLayout.getHeight() + sContentYPadding;
if(mSquareNameLayout != null)
l1 += mSquareNameLayout.getHeight() + sContentYPadding;
i2 = (k1 - l1) / 2;
canvas.drawBitmap(sSquareBitmap, (i1 - sSquareBitmap.getWidth()) / 2, i2, null);
j2 = i2 + (sSquareBitmap.getHeight() + sContentYPadding);
if(mSquareInvitationLayout != null)
{
canvas.translate(i, j2);
mSquareInvitationLayout.draw(canvas);
canvas.translate(-i, -j2);
j2 += mSquareInvitationLayout.getHeight() + sContentYPadding;
}
if(mSquareNameLayout != null)
{
canvas.translate(i, j2);
mSquareNameLayout.draw(canvas);
canvas.translate(-i, -j2);
mSquareNameLayout.getHeight();
int _tmp = sContentYPadding;
}
drawMediaTopAreaShadow(canvas, k, l);
drawPlusOneBar(canvas);
drawMediaBottomArea(canvas, i, k, l);
drawCornerIcon(canvas);
return l;
}
public final String getSquareId()
{
return mDbEmbedSquare.getAboutSquareId();
}
public final void init(Cursor cursor, int i, int j, android.view.View.OnClickListener onclicklistener, ItemClickListener itemclicklistener, StreamCardView.ViewedListener viewedlistener, StreamCardView.StreamPlusBarClickListener streamplusbarclicklistener,
StreamCardView.StreamMediaClickListener streammediaclicklistener)
{
super.init(cursor, i, j, onclicklistener, itemclicklistener, viewedlistener, streamplusbarclicklistener, streammediaclicklistener);
byte abyte0[] = cursor.getBlob(27);
if(abyte0 != null)
{
mDbEmbedSquare = DbEmbedSquare.deserialize(abyte0);
String s = mDbEmbedSquare.getImageUrl();
if(!TextUtils.isEmpty(s))
mMediaRef = new MediaRef(s, MediaRef.MediaType.IMAGE);
}
}
protected final int layoutElements(int i, int j, int k, int l)
{
int i1 = k + sXDoublePadding;
int j1 = (int)((float)(l + sYDoublePadding) * getMediaHeightPercentage());
mBackgroundRect.set(0, j1, getMeasuredWidth(), getMeasuredHeight());
createPlusOneBar(i, (j1 + sTopBorderPadding) - sYPadding, k);
createMediaBottomArea(i, j, k, l);
int k1;
int l1;
if(mPlusOneButton == null)
k1 = j1;
else
k1 = j1 - mPlusOneButton.getRect().height();
l1 = k1 - sSquareBitmap.getHeight() - 3 * sContentYPadding;
if(!TextUtils.isEmpty(mDbEmbedSquare.getAboutSquareName()))
{
int j2 = (l1 - j) / (int)(sSquareNameTextPaint.descent() - sSquareNameTextPaint.ascent());
if(j2 > 0)
{
mSquareNameLayout = TextPaintUtils.createConstrainedStaticLayout(sSquareNameTextPaint, mDbEmbedSquare.getAboutSquareName(), k, j2, android.text.Layout.Alignment.ALIGN_CENTER);
j += mSquareNameLayout.getHeight() + sContentYPadding;
}
}
if(mDbEmbedSquare.isInvitation())
{
int i2 = (l1 - j) / (int)(sInvitationTextPaint.descent() - sInvitationTextPaint.ascent());
if(i2 > 0)
{
mSquareInvitationLayout = TextPaintUtils.createConstrainedStaticLayout(sInvitationTextPaint, getContext().getString(R.string.card_square_invite_invitation), k, i2, android.text.Layout.Alignment.ALIGN_CENTER);
mSquareInvitationLayout.getHeight();
int _tmp = sContentYPadding;
}
}
mSrcRect.setEmpty();
mDestRect.set(sLeftBorderPadding, sTopBorderPadding, i1 + sLeftBorderPadding, j1 + sTopBorderPadding);
return l;
}
protected final void onBindResources()
{
super.onBindResources();
if(mMediaRef != null)
mImageResource = sImageResourceManager.getMedia(mMediaRef, 3, this);
}
public void onRecycle()
{
super.onRecycle();
mDbEmbedSquare = null;
mMediaRef = null;
mSrcRect.setEmpty();
mDestRect.setEmpty();
mSquareInvitationLayout = null;
mSquareNameLayout = null;
}
protected final void onUnbindResources()
{
super.onUnbindResources();
if(mImageResource != null)
{
mImageResource.unregister(this);
mImageResource = null;
}
}
}