/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Point;
import android.text.TextPaint;
import android.text.style.URLSpan;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.TextView;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.util.TextPaintUtils;
/**
*
* @author sihai
*
*/
public class CardTitleDescriptionView extends ViewGroup implements
ItemClickListener {
private static TextPaint sDescriptionTextPaint;
private static boolean sInitialized;
private Point mDateCorner;
private TextView mDateTextView;
private Point mDescriptionCorner;
private ConstrainedTextView mDescriptionTextView;
private EventActionListener mListener;
private Point mTitleCorner;
private TextView mTitleTextView;
public CardTitleDescriptionView(Context context)
{
super(context);
init(context, null, 0);
}
public CardTitleDescriptionView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
init(context, attributeset, 0);
}
public CardTitleDescriptionView(Context context, AttributeSet attributeset, int i)
{
super(context, attributeset, i);
init(context, attributeset, i);
}
private void init(Context context, AttributeSet attributeset, int i)
{
Resources resources = context.getResources();
if(!sInitialized)
{
TextPaint textpaint = new TextPaint();
sDescriptionTextPaint = textpaint;
textpaint.setAntiAlias(true);
sDescriptionTextPaint.setColor(resources.getColor(R.color.event_card_activity_description_color));
sDescriptionTextPaint.setTextSize(resources.getDimension(R.dimen.event_card_activity_description_size));
sDescriptionTextPaint.linkColor = resources.getColor(R.color.comment_link);
TextPaintUtils.registerTextPaint(sDescriptionTextPaint, R.dimen.event_card_activity_description_size);
sInitialized = true;
}
mTitleCorner = new Point();
mTitleTextView = new TextView(context, attributeset, i);
mTitleTextView.setLayoutParams(new android.view.ViewGroup.LayoutParams(-2, -2));
mTitleTextView.setTextSize(0, resources.getDimensionPixelSize(R.dimen.event_card_activity_title_size));
mTitleTextView.setTypeface(null, 1);
mTitleTextView.setTextColor(resources.getColor(R.color.event_card_activity_title_color));
mTitleTextView.setSingleLine();
mTitleTextView.setEllipsize(android.text.TextUtils.TruncateAt.END);
addView(mTitleTextView);
mDateCorner = new Point();
mDateTextView = new TextView(context, attributeset, i);
mDateTextView.setLayoutParams(new android.view.ViewGroup.LayoutParams(-2, -2));
mDateTextView.setTextSize(0, resources.getDimensionPixelSize(R.dimen.event_card_activity_time_size));
mDateTextView.setTextColor(resources.getColor(R.color.event_card_activity_time_color));
mDateTextView.setSingleLine();
mDateTextView.setEllipsize(android.text.TextUtils.TruncateAt.END);
addView(mDateTextView);
mDescriptionCorner = new Point();
mDescriptionTextView = new ConstrainedTextView(context, attributeset, i);
mDescriptionTextView.setTextPaint(sDescriptionTextPaint);
mDescriptionTextView.setClickListener(this);
addView(mDescriptionTextView);
}
public final void clear()
{
mTitleTextView.setText(null);
mDateTextView.setText(null);
mDescriptionTextView.setText(null);
}
protected void onLayout(boolean flag, int i, int j, int k, int l)
{
mTitleTextView.layout(mTitleCorner.x, mTitleCorner.y, mTitleCorner.x + mTitleTextView.getMeasuredWidth(), mTitleCorner.y + mTitleTextView.getMeasuredHeight());
mDateTextView.layout(mDateCorner.x, mDateCorner.y, mDateCorner.x + mDateTextView.getMeasuredWidth(), mDateCorner.y + mDateTextView.getMeasuredHeight());
mDescriptionTextView.layout(mDescriptionCorner.x, mDescriptionCorner.y, mDescriptionCorner.x + mDescriptionTextView.getMeasuredWidth(), mDescriptionCorner.y + mDescriptionTextView.getMeasuredHeight());
}
protected void onMeasure(int i, int j)
{
int k = android.view.View.MeasureSpec.getSize(i);
int l = android.view.View.MeasureSpec.getSize(j);
int i1 = android.view.View.MeasureSpec.getMode(j);
mDateTextView.measure(android.view.View.MeasureSpec.makeMeasureSpec(k, 0x80000000), android.view.View.MeasureSpec.makeMeasureSpec(l, i1));
int j1 = mDateTextView.getMeasuredWidth();
int k1 = mDateTextView.getMeasuredHeight();
mDateCorner.x = k - j1;
mDateCorner.y = 0;
mTitleTextView.measure(android.view.View.MeasureSpec.makeMeasureSpec(mDateCorner.x, 0x80000000), android.view.View.MeasureSpec.makeMeasureSpec(l, i1));
int l1 = mTitleTextView.getMeasuredHeight();
mTitleCorner.x = 0;
mTitleCorner.y = 0;
Point point = mTitleCorner;
point.y = point.y + Math.max(0, k1 - l1);
Point point1 = mDateCorner;
point1.y = point1.y + Math.max(0, l1 - k1);
int i2 = 0 + (l1 + mTitleCorner.y);
if(mDescriptionTextView.getLength() > 0)
{
mDescriptionTextView.measure(android.view.View.MeasureSpec.makeMeasureSpec(k, 0x80000000), android.view.View.MeasureSpec.makeMeasureSpec(l - i2, i1));
int j2 = mDescriptionTextView.getMeasuredHeight();
mDescriptionCorner.x = 0;
mDescriptionCorner.y = i2;
i2 += j2;
}
setMeasuredDimension(resolveSize(k, i), resolveSize(i2, j));
}
public final void onSpanClick(URLSpan urlspan)
{
if(mListener != null)
mListener.onLinkClicked(urlspan.getURL());
}
public final void onUserImageClick(String s, String s1)
{
}
public void setListener(EventActionListener eventactionlistener)
{
mListener = eventactionlistener;
}
public void setText(CharSequence charsequence, CharSequence charsequence1, CharSequence charsequence2, boolean flag)
{
mTitleTextView.setText(charsequence);
mDateTextView.setText(charsequence1);
ConstrainedTextView constrainedtextview = mDescriptionTextView;
String s;
if(charsequence2 != null)
s = charsequence2.toString();
else
s = null;
constrainedtextview.setHtmlText(s, flag);
}
}