/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import WriteReviewOperation.MediaRef;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.net.Uri;
import android.text.StaticLayout;
import android.text.TextUtils;
import android.util.AttributeSet;
import com.galaxy.meetup.client.android.content.DbEmbedDeepLink;
import com.galaxy.meetup.client.android.content.DbEmbedMedia;
import com.galaxy.meetup.client.android.service.ImageResourceManager;
import com.galaxy.meetup.client.android.service.Resource;
import com.galaxy.meetup.client.util.LinksRenderUtils;
/**
*
* @author sihai
*
*/
public class LinksCardView extends StreamCardView {
protected Rect mBackgroundDestRect;
protected Rect mBackgroundSrcRect;
protected String mCreationSource;
protected DbEmbedDeepLink mDbEmbedAppInvite;
protected DbEmbedMedia mDbEmbedMedia;
protected ClickableButton mDeepLinkButton;
protected Rect mImageBorderRect;
protected int mImageDimension;
protected Rect mImageRect;
protected Resource mImageResource;
protected Rect mImageSourceRect;
protected boolean mIsReshare;
protected StaticLayout mLinkTitleLayout;
protected String mLinkUrl;
protected StaticLayout mLinkUrlLayout;
protected MediaRef mMediaRef;
public LinksCardView(Context context)
{
this(context, null);
}
public LinksCardView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mImageDimension = 0;
mBackgroundSrcRect = new Rect();
mBackgroundDestRect = new Rect();
mImageRect = new Rect();
mImageBorderRect = new Rect();
mImageSourceRect = new Rect();
}
public static String makeLinkUrl(String s) {
if(TextUtils.isEmpty(s))
return null;
String s2 = Uri.parse(s).getHost();
if(TextUtils.isEmpty(s2)) {
return null;
}
String s1;
if(s2.startsWith("www."))
s2 = s2.substring(4);
return s2.toLowerCase();
}
protected final int draw(Canvas canvas, int i, int j, int k, int l)
{
Bitmap bitmap;
int l2;
if(mImageResource == null)
bitmap = null;
else
bitmap = (Bitmap)mImageResource.getResource();
int i1;
Rect rect;
Rect rect1;
Rect rect2;
Rect rect3;
Rect rect4;
boolean flag;
if(mMediaRef != null)
{
if(bitmap != null)
flag = true;
else
flag = false;
drawMediaTopAreaStage(canvas, k, l, flag, mBackgroundDestRect, LinksRenderUtils.getLinksTopAreaBackgroundPaint());
} else
{
canvas.drawRect(mBackgroundDestRect, LinksRenderUtils.getAppInviteTopAreaBackgroundPaint());
}
if(bitmap != null)
{
if(mImageSourceRect.isEmpty())
{
LinksRenderUtils.createImageSourceRect(bitmap, mImageSourceRect);
LinksRenderUtils.createBackgroundSourceRect(bitmap, mBackgroundDestRect, mBackgroundSrcRect);
}
rect = mImageSourceRect;
rect1 = mBackgroundSrcRect;
rect2 = mBackgroundDestRect;
rect3 = mImageRect;
rect4 = mImageBorderRect;
LinksRenderUtils.drawBitmap(canvas, bitmap, rect, rect1, rect2, rect3, rect4);
}
i1 = sLeftBorderPadding + mImageRect.width();
if(mLinkTitleLayout != null || mDeepLinkButton != null || mLinkUrlLayout != null)
{
int j1 = (int)((float)(l + sYDoublePadding) * getMediaHeightPercentage());
int k1;
int l1;
int i2;
int j2;
int k2;
if(mPlusOneButton == null)
k1 = j1;
else
k1 = j1 - mPlusOneButton.getRect().height();
if(mLinkTitleLayout != null)
l1 = (int)mLinkTitleLayout.getPaint().descent();
else
if(mDeepLinkButton != null)
l1 = 0;
else
l1 = (int)mLinkUrlLayout.getPaint().descent();
if(mLinkTitleLayout == null)
i2 = 0;
else
i2 = mLinkTitleLayout.getHeight();
if(mDeepLinkButton == null)
j2 = 0;
else
j2 = mDeepLinkButton.getRect().height();
if(mLinkUrlLayout == null)
k2 = 0;
else
k2 = mLinkUrlLayout.getHeight();
l2 = l1 + (k1 - i2 - j2 - k2) / 2;
} else
{
l2 = 0;
}
LinksRenderUtils.drawTitleDeepLinkAndUrl(canvas, i1, l2, mLinkTitleLayout, mDeepLinkButton, mLinkUrlLayout, sTagLinkBitmaps[0]);
drawMediaTopAreaShadow(canvas, k, l);
drawPlusOneBar(canvas);
drawMediaBottomArea(canvas, i, k, l);
drawCornerIcon(canvas);
return l;
}
public final String getDeepLinkLabel()
{
String s;
if(mDbEmbedAppInvite == null)
s = null;
else
s = mDbEmbedAppInvite.getLabelOrDefault(getContext());
return s;
}
public final String getLinkTitle()
{
String s3;
if(mDbEmbedMedia == null)
{
s3 = null;
} else
{
android.content.res.Resources resources = getResources();
String s = mCreationSource;
String s1 = mDbEmbedMedia.getTitle();
String s2 = mDbEmbedMedia.getDescription();
boolean flag = mIsReshare;
boolean flag1;
if(mDbEmbedAppInvite != null)
flag1 = true;
else
flag1 = false;
s3 = LinksRenderUtils.getLinkTitle(resources, s, s1, s2, flag, flag1);
}
return s3;
}
public final String getLinkUrl()
{
return mLinkUrl;
}
public final String getMediaLinkUrl()
{
return mDbEmbedMedia.getContentUrl();
}
public final MediaRef getMediaRef()
{
return mMediaRef;
}
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);
mCreationSource = cursor.getString(21);
boolean flag;
byte abyte0[];
if(!TextUtils.isEmpty(cursor.getString(18)))
flag = true;
else
flag = false;
mIsReshare = flag;
abyte0 = cursor.getBlob(22);
if(abyte0 != null)
{
mDbEmbedMedia = DbEmbedMedia.deserialize(abyte0);
if(mDbEmbedMedia.getImageUrl() != null)
mMediaRef = new MediaRef(null, 0L, mDbEmbedMedia.getImageUrl(), null, MediaRef.MediaType.IMAGE);
mLinkUrl = makeLinkUrl(mDbEmbedMedia.getContentUrl());
}
if((0x20000L & cursor.getLong(15)) != 0L)
{
byte abyte1[] = cursor.getBlob(26);
if(abyte1 != null)
mDbEmbedAppInvite = DbEmbedDeepLink.deserialize(abyte1);
}
}
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;
int i2;
StaticLayout staticlayout;
int j2;
if(mPlusOneButton == null)
k1 = j1;
else
k1 = j1 - mPlusOneButton.getRect().height();
l1 = LinksRenderUtils.getMaxImageDimension();
if(mImageDimension == 0)
{
mImageDimension = Math.min((int)((float)i1 * LinksRenderUtils.getImageMaxWidthPercentage()), Math.min(l1, k1));
bindResources();
}
LinksRenderUtils.createBackgroundDestRect(sLeftBorderPadding, sTopBorderPadding, i1 + sLeftBorderPadding, j1 + sTopBorderPadding, mBackgroundDestRect);
if(mMediaRef == null)
{
mImageRect.setEmpty();
mImageBorderRect.setEmpty();
} else
{
LinksRenderUtils.createImageRects(k1, mImageDimension, sLeftBorderPadding, sTopBorderPadding, mImageRect, mImageBorderRect);
}
i2 = i1 - 2 * sLeftBorderPadding - mImageRect.width();
mLinkTitleLayout = LinksRenderUtils.createTitle(getLinkTitle(), mImageDimension, i2);
staticlayout = mLinkTitleLayout;
j2 = 0;
if(staticlayout != null)
j2 = 0 + mLinkTitleLayout.getHeight();
if(mDbEmbedAppInvite != null)
{
Context context = getContext();
mDeepLinkButton = LinksRenderUtils.createDeepLinkButton(context, mDbEmbedAppInvite.getLabelOrDefault(context), mImageRect.right + sLeftBorderPadding, j2 + mImageRect.top, i2, null);
} else
{
mLinkUrlLayout = LinksRenderUtils.createUrl(mLinkUrl, mImageDimension, i2 - sTagLinkBitmaps[0].getWidth(), j2);
}
mImageSourceRect.setEmpty();
mBackgroundSrcRect.setEmpty();
return l;
}
protected final void onBindResources()
{
super.onBindResources();
if(mMediaRef != null && mImageDimension != 0)
mImageResource = ImageResourceManager.getInstance(getContext()).getMedia(mMediaRef, mImageDimension, mImageDimension, 0, this);
}
public void onRecycle()
{
super.onRecycle();
mCreationSource = null;
mIsReshare = false;
mDbEmbedMedia = null;
mDbEmbedAppInvite = null;
mLinkTitleLayout = null;
mDeepLinkButton = null;
mLinkUrl = null;
mLinkUrlLayout = null;
mMediaRef = null;
mBackgroundSrcRect.setEmpty();
mBackgroundDestRect.setEmpty();
mImageSourceRect.setEmpty();
mImageRect.setEmpty();
mImageBorderRect.setEmpty();
}
protected final void onUnbindResources()
{
super.onUnbindResources();
if(mImageResource != null)
{
mImageResource.unregister(this);
mImageResource = null;
}
mImageSourceRect.setEmpty();
}
}