/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.content.DbEmbedMedia;
import com.galaxy.meetup.client.util.ImageUtils;
import com.galaxy.meetup.client.util.TextPaintUtils;
/**
*
* @author sihai
*
*/
public class TextCardView extends StreamCardView {
protected static Bitmap sCheckinIcon;
private static boolean sTextCardViewInitialized;
private boolean mIsCheckin;
private boolean mWrapContent;
public TextCardView(Context context)
{
this(context, null);
}
public TextCardView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
if(!sTextCardViewInitialized)
{
sTextCardViewInitialized = true;
sCheckinIcon = ImageUtils.decodeResource(context.getResources(), R.drawable.ic_checkin_small);
}
}
protected final int draw(Canvas canvas, int i, int j, int k, int l) {
drawAuthorImage(canvas);
int i1 = i + (sAvatarSize + sContentXPadding);
int j1 = k - (sAvatarSize + sContentXPadding);
int k1 = drawAuthorName(canvas, i1, j);
if(mRelativeTimeLayout != null)
drawRelativeTimeLayout(canvas, (i1 + j1) - mRelativeTimeLayout.getWidth(), k1 - mRelativeTimeLayout.getHeight() - sRelativeTimeYOffset);
int l1 = k1 + sContentYPadding;
if(mAttributionLayout != null)
{
canvas.translate(i1, l1);
mAttributionLayout.draw(canvas);
canvas.translate(-i1, -l1);
l1 += mAttributionLayout.getHeight() + sContentYPadding;
}
if(mContentLayout != null)
{
canvas.translate(i1, l1);
mContentLayout.draw(canvas);
canvas.translate(-i1, -l1);
l1 += mContentLayout.getHeight() + sContentYPadding;
}
if(mFillerContentLayout != null)
{
canvas.translate(i1, l1);
mFillerContentLayout.draw(canvas);
canvas.translate(-i1, -l1);
l1 += mFillerContentLayout.getHeight() + sContentYPadding;
}
if(mTagLayout != null)
{
if(mTagIcon != null)
{
int i2;
int j2;
if(mIsCheckin)
i2 = sTagIconYPaddingCheckin;
else
i2 = sTagIconYPaddingLocation;
j2 = l1 + i2;
canvas.drawBitmap(mTagIcon, i1, j2, null);
i1 += mTagIcon.getWidth() + sTagIconXPadding;
}
canvas.translate(i1, l1);
mTagLayout.draw(canvas);
canvas.translate(-i1, -l1);
mTagLayout.getHeight();
int _tmp = sContentYPadding;
}
drawPlusOneBar(canvas);
drawCornerIcon(canvas);
return l;
}
protected final String formatLocationName(String s)
{
return s;
}
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);
boolean flag;
byte abyte0[];
if((16L & cursor.getLong(15)) != 0L)
flag = true;
else
flag = false;
mIsCheckin = flag;
abyte0 = cursor.getBlob(22);
if(abyte0 != null)
{
DbEmbedMedia dbembedmedia = DbEmbedMedia.deserialize(abyte0);
if(dbembedmedia != null && !TextUtils.isEmpty(dbembedmedia.getContentUrl()) && TextUtils.isEmpty(mFillerContent) && !TextUtils.isEmpty(dbembedmedia.getTitle()))
mFillerContent = dbembedmedia.getTitle();
}
}
protected final int layoutElements(int i, int j, int k, int l)
{
createPlusOneBar(i, j + l, k);
int i1 = l - mPlusOneButton.getRect().height();
setAuthorImagePosition(i, j);
int _tmp = sAvatarSize;
int _tmp1 = sContentXPadding;
int j1 = k - (sAvatarSize + sContentXPadding);
int k1 = createAuthorNameAndRelativeTimeLayoutOnSameLine(j, j1) + sContentYPadding;
if(!TextUtils.isEmpty(mAttribution))
{
int k2 = (i1 - k1) / (int)(sAttributionTextPaint.descent() - sAttributionTextPaint.ascent());
if(k2 > 0)
{
mAttributionLayout = TextPaintUtils.createConstrainedStaticLayout(sAttributionTextPaint, mAttribution, j1, k2);
k1 += mAttributionLayout.getHeight() + sContentYPadding;
}
}
if(!TextUtils.isEmpty(mContent))
{
int j2 = (i1 - k1) / (int)(sDefaultTextPaint.descent() - sDefaultTextPaint.ascent());
if(j2 > 0)
{
mContentLayout = TextPaintUtils.createConstrainedStaticLayout(sDefaultTextPaint, mContent, j1, j2);
k1 += mContentLayout.getHeight() + sContentYPadding;
}
}
if(!TextUtils.isEmpty(mFillerContent))
{
int i2 = (i1 - k1) / (int)(sDefaultTextPaint.descent() - sDefaultTextPaint.ascent());
if(i2 > 0)
{
mFillerContentLayout = TextPaintUtils.createConstrainedStaticLayout(sDefaultTextPaint, mFillerContent, j1, i2);
k1 += mFillerContentLayout.getHeight() + sContentYPadding;
}
}
Rect rect;
Rect rect1;
Rect rect2;
if(!TextUtils.isEmpty(mTag))
{
int l1 = (i1 - k1) / (int)(sDefaultTextPaint.descent() - sDefaultTextPaint.ascent());
if(l1 > 0)
{
Bitmap bitmap;
if(mIsCheckin)
bitmap = sCheckinIcon;
else
bitmap = sTagLocationBitmaps[1];
mTagIcon = bitmap;
mTagLayout = TextPaintUtils.createConstrainedStaticLayout(sDefaultTextPaint, mTag, j1 - mTagIcon.getWidth(), l1);
k1 += mTagLayout.getHeight() + sContentYPadding;
}
}
if(mWrapContent)
{
rect = mPlusOneButton.getRect();
rect.offsetTo(rect.left, k1);
if(mReshareButton != null)
{
rect2 = mReshareButton.getRect();
rect2.offsetTo(rect2.left, k1);
}
if(mCommentsButton != null)
{
rect1 = mCommentsButton.getRect();
rect1.offsetTo(rect1.left, k1);
}
}
return mPlusOneButton.getRect().bottom;
}
protected void onMeasure(int i, int j)
{
int k = android.view.View.MeasureSpec.getSize(i);
int l = android.view.View.MeasureSpec.getSize(j);
mWrapContent = shouldWrapContent(j);
int i1;
boolean flag;
int j1;
int k1;
int l1;
int i2;
int j2;
if(mWrapContent)
i1 = k;
else
i1 = l;
flag = mPaddingEnabled;
j1 = 0;
k1 = 0;
l1 = 0;
i2 = 0;
if(flag)
{
k1 = sXPadding;
i2 = sYPadding;
j1 = sXDoublePadding;
l1 = sYDoublePadding;
}
j2 = layoutElements(k1 + sLeftBorderPadding, i2 + sTopBorderPadding, k - (j1 + sLeftBorderPadding + sRightBorderPadding), i1 - (l1 + sTopBorderPadding + sBottomBorderPadding));
if(mWrapContent)
setMeasuredDimension(k, l1 + (j2 + sTopBorderPadding) + sBottomBorderPadding);
else
setMeasuredDimension(k, i1);
createGraySpamBar(getMeasuredWidth() - sLeftBorderPadding - sRightBorderPadding);
mBackgroundRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
}
public void onRecycle()
{
super.onRecycle();
mWrapContent = false;
}
}