/** * 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.Canvas; import android.graphics.Paint; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.animation.AlphaAnimation; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsEventData; import com.galaxy.meetup.client.android.ui.fragments.EventActiveState; import com.galaxy.meetup.server.client.v2.domain.Event; /** * * @author sihai * */ public class EventRsvpLayout extends ExactLayout implements EventRsvpListener { private static int sBackgroundColor; private static Paint sDividerPaint; private static boolean sInitialized; private static int sRsvpSectionHeight; private boolean mEventOver; private EventActionListener mListener; private int mMeasuredWidth; private EventRsvpButtonLayout mRsvpButtonLayout; private EventRsvpSpinnerLayout mRsvpSpinnerLayout; public EventRsvpLayout(Context context) { super(context); init(context, null, 0); } public EventRsvpLayout(Context context, AttributeSet attributeset) { super(context, attributeset); init(context, attributeset, 0); } public EventRsvpLayout(Context context, AttributeSet attributeset, int i) { super(context, attributeset, i); init(context, attributeset, i); } private void init(Context context, AttributeSet attributeset, int i) { if(!sInitialized) { Resources resources = context.getResources(); sBackgroundColor = resources.getColor(R.color.event_card_details_rsvp_background); Paint paint = new Paint(); sDividerPaint = paint; paint.setColor(resources.getColor(R.color.card_event_divider)); sDividerPaint.setStrokeWidth(resources.getDimension(R.dimen.event_card_divider_stroke_width)); Paint paint1 = new Paint(); sDividerPaint = paint1; paint1.setColor(resources.getColor(R.color.card_event_divider)); sDividerPaint.setStrokeWidth(resources.getDimension(R.dimen.event_card_divider_stroke_width)); sRsvpSectionHeight = resources.getDimensionPixelSize(R.dimen.event_card_details_rsvp_height); sInitialized = true; } setBackgroundColor(sBackgroundColor); mRsvpButtonLayout = (EventRsvpButtonLayout)((LayoutInflater)context.getSystemService("layout_inflater")).inflate(R.layout.event_rsvp_button_layout, null); addView(mRsvpButtonLayout); mRsvpSpinnerLayout = new EventRsvpSpinnerLayout(context, attributeset, i); mRsvpSpinnerLayout.setVisibility(4); addView(mRsvpSpinnerLayout); setWillNotDraw(false); } private void setRsvpView(String s, boolean flag) { boolean flag1; if(TextUtils.equals("MAYBE", s) || TextUtils.equals("NOT_RESPONDED", s)) flag1 = true; else flag1 = false; if(!TextUtils.equals("NOT_RESPONDED", s) && (!mEventOver || !flag1)) { int i = mRsvpButtonLayout.getVisibility(); mRsvpButtonLayout.setVisibility(4); mRsvpSpinnerLayout.setVisibility(0); if(flag && i == 0) { AlphaAnimation alphaanimation = new AlphaAnimation(1.0F, 0.0F); alphaanimation.setDuration(500L); alphaanimation.setFillAfter(true); AlphaAnimation alphaanimation1 = new AlphaAnimation(0.0F, 1.0F); alphaanimation1.setDuration(500L); alphaanimation1.setFillAfter(true); mRsvpButtonLayout.startAnimation(alphaanimation); mRsvpSpinnerLayout.startAnimation(alphaanimation1); } } else { mRsvpButtonLayout.setVisibility(0); mRsvpSpinnerLayout.setVisibility(4); } } public final void bind(Event event, EventActiveState eventactivestate, EventActionListener eventactionlistener) { mListener = eventactionlistener; mEventOver = EsEventData.isEventOver(event, System.currentTimeMillis()); mRsvpSpinnerLayout.bind(event, eventactivestate, this, eventactionlistener); mRsvpButtonLayout.bind(this, mEventOver); setRsvpView(EsEventData.getRsvpType(event), false); } protected void measureChildren(int i, int j) { mMeasuredWidth = android.view.View.MeasureSpec.getSize(i); int k = sRsvpSectionHeight; measure(mRsvpButtonLayout, mMeasuredWidth, 0x40000000, 0, 0); int l = Math.max(k, mRsvpButtonLayout.getMeasuredHeight()); measure(mRsvpSpinnerLayout, mMeasuredWidth, 0x40000000, 0, 0); int i1 = Math.max(l, mRsvpSpinnerLayout.getMeasuredHeight()); measure(mRsvpButtonLayout, mMeasuredWidth, 0x40000000, i1, 0x40000000); setCorner(mRsvpButtonLayout, 0, 0 + Math.max(0, (i1 - mRsvpButtonLayout.getMeasuredHeight()) / 2)); measure(mRsvpSpinnerLayout, mMeasuredWidth, 0x40000000, i1, 0x40000000); setCorner(mRsvpSpinnerLayout, 0, 0 + Math.max(0, (i1 - mRsvpSpinnerLayout.getMeasuredHeight()) / 2)); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawLine(0.0F, 0.0F, mMeasuredWidth, 0.0F, sDividerPaint); } public final void onRsvpChanged(String s) { if(mListener != null) { setRsvpView(s, true); mListener.onRsvpChanged(s); } } }