/** * 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.text.TextUtils; import android.util.AttributeSet; import android.view.View; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.util.Dates; /** * * @author sihai * */ public class EventActivityUpdateCardLayout extends CardViewLayout implements android.view.View.OnClickListener { private static int sAvatarMarginLeft; private static int sAvatarMarginTop; private static int sAvatarSize; private static int sDescriptionMarginBottom; private static int sDescriptionMarginLeft; private static int sDescriptionMarginRight; private static float sDescriptionTopAvatarHeightPercentage; private static boolean sInitialized; private AvatarView mAvatarView; private EventActionListener mListener; private CardTitleDescriptionView mTextDescriptionView; private EventUpdate mUpdate; public EventActivityUpdateCardLayout(Context context) { super(context); } public EventActivityUpdateCardLayout(Context context, AttributeSet attributeset) { super(context, attributeset); } public EventActivityUpdateCardLayout(Context context, AttributeSet attributeset, int i) { super(context, attributeset, i); } public final void bind(EventUpdate eventupdate, EventActionListener eventactionlistener, boolean flag) { if(eventupdate != null) { mUpdate = eventupdate; mTextDescriptionView.setText(mUpdate.ownerName, Dates.getRelativeTimeSpanString(getContext(), mUpdate.timestamp), mUpdate.comment, flag); if(!TextUtils.isEmpty(mUpdate.gaiaId)) mAvatarView.setGaiaId(mUpdate.gaiaId); mListener = eventactionlistener; mTextDescriptionView.setListener(mListener); } } protected final void init(Context context, AttributeSet attributeset, int i) { super.init(context, attributeset, i); if(!sInitialized) { Resources resources = context.getResources(); sDescriptionMarginLeft = resources.getDimensionPixelSize(R.dimen.event_card_activity_text_margin_left); sDescriptionMarginRight = resources.getDimensionPixelSize(R.dimen.event_card_activity_text_margin_right); sDescriptionMarginBottom = resources.getDimensionPixelSize(R.dimen.event_card_activity_padding_bottom); sAvatarMarginLeft = resources.getDimensionPixelSize(R.dimen.event_card_activity_avatar_margin_left); sAvatarMarginTop = resources.getDimensionPixelSize(R.dimen.event_card_activity_avatar_magin_top); sDescriptionTopAvatarHeightPercentage = resources.getDimension(R.dimen.event_card_activity_text_top_avatar_percentage); sAvatarSize = resources.getDimensionPixelSize(R.dimen.event_card_activity_avatar_size); sInitialized = true; } addPadding(sAvatarMarginLeft, sAvatarMarginTop, sDescriptionMarginRight, sDescriptionMarginBottom); mAvatarView = new AvatarView(context, attributeset, i); mAvatarView.setRounded(true); mAvatarView.setOnClickListener(this); addView(mAvatarView); mTextDescriptionView = new CardTitleDescriptionView(context, attributeset, i); addView(mTextDescriptionView); setOnClickListener(this); } protected void measureChildren(int i, int j) { int k = android.view.View.MeasureSpec.getSize(i); int l = android.view.View.MeasureSpec.getSize(j); int i1 = k + 0; int j1 = l + 0; mAvatarView.measure(android.view.View.MeasureSpec.makeMeasureSpec(sAvatarSize, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(sAvatarSize, 0x40000000)); setCorner(mAvatarView, 0, 0); int k1 = 0 + Math.round(sDescriptionTopAvatarHeightPercentage * (float)mAvatarView.getMeasuredHeight()); int l1 = 0 + mAvatarView.getMeasuredWidth() + sDescriptionMarginLeft; int i2 = i1 - l1; int j2 = j1 - k1; boolean flag; CardTitleDescriptionView cardtitledescriptionview; int k2; int l2; boolean flag1; if(android.view.View.MeasureSpec.getMode(j) == 0) flag = true; else flag = false; cardtitledescriptionview = mTextDescriptionView; k2 = android.view.View.MeasureSpec.makeMeasureSpec(i2, 0x40000000); if(flag) l2 = 0; else l2 = 0x80000000; cardtitledescriptionview.measure(k2, android.view.View.MeasureSpec.makeMeasureSpec(j2, l2)); setCorner(mTextDescriptionView, l1, k1); if(!flag) flag1 = true; else flag1 = false; setClickable(flag1); } public void onClick(View view) { if(mListener != null) if(view instanceof AvatarView) mListener.onAvatarClicked(((AvatarView)view).getGaiaId()); else mListener.onUpdateCardClicked(mUpdate); } public void onRecycle() { super.onRecycle(); mListener = null; mTextDescriptionView.setText(null, null, null, false); mTextDescriptionView.setListener(null); mAvatarView.setGaiaId(null); } }