/**
* 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.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import android.widget.TextView;
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 EventRsvpSpinnerLayout extends ExactLayout implements
OnClickListener, OnItemSelectedListener {
private static Drawable sAddPhotosDrawable;
private static String sAddPhotosText;
private static boolean sInitialized;
private static Drawable sInviteMoreDrawable;
private static String sInviteMoreText;
private static int sPadding;
private EventActionButtonLayout mActionButton;
private int mCurrentSelectionIndex;
private Event mEvent;
private EventActionListener mEventActionListener;
private boolean mEventOver;
private EventRsvpListener mListener;
private Spinner mRsvpSpinner;
private boolean mShowActionButton;
private RsvpSpinnerAdapter mSpinnerAdapter;
public EventRsvpSpinnerLayout(Context context)
{
super(context);
mCurrentSelectionIndex = -1;
init(context, null, 0);
}
public EventRsvpSpinnerLayout(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mCurrentSelectionIndex = -1;
init(context, attributeset, 0);
}
public EventRsvpSpinnerLayout(Context context, AttributeSet attributeset, int i)
{
super(context, attributeset, i);
mCurrentSelectionIndex = -1;
init(context, attributeset, i);
}
private void init(Context context, AttributeSet attributeset, int i)
{
if(!sInitialized)
{
Resources resources = context.getResources();
sPadding = resources.getDimensionPixelSize(R.dimen.event_card_details_padding);
sInviteMoreDrawable = resources.getDrawable(R.drawable.icn_events_rsvp_invite_more);
sInviteMoreText = resources.getString(R.string.event_button_invite_more_label);
sAddPhotosDrawable = resources.getDrawable(R.drawable.icn_events_rsvp_add_photo);
sAddPhotosText = resources.getString(R.string.event_button_add_photos_label);
sInitialized = true;
}
mRsvpSpinner = new Spinner(context);
mRsvpSpinner.setLayoutParams(new ExactLayout.LayoutParams(-1, -2));
addView(mRsvpSpinner);
mActionButton = new EventActionButtonLayout(context, attributeset, i);
mActionButton.setOnClickListener(this);
addView(mActionButton);
setPadding(sPadding, sPadding, sPadding, sPadding);
}
public final void bind(Event plusevent, EventActiveState eventactivestate, EventRsvpListener eventrsvplistener, EventActionListener eventactionlistener)
{
mListener = eventrsvplistener;
mEventActionListener = eventactionlistener;
mEvent = plusevent;
long l = System.currentTimeMillis();
mEventOver = EsEventData.isEventOver(mEvent, l);
mSpinnerAdapter = new RsvpSpinnerAdapter(getContext(), mEventOver);
mRsvpSpinner.setAdapter(mSpinnerAdapter);
String s;
boolean flag;
if(eventactivestate.temporalRsvpValue != null)
s = eventactivestate.temporalRsvpValue;
else
s = EsEventData.getRsvpType(plusevent);
mCurrentSelectionIndex = mSpinnerAdapter.access$000(s);
mRsvpSpinner.setSelection(mCurrentSelectionIndex);
mSpinnerAdapter.notifyDataSetChanged();
mRsvpSpinner.setOnItemSelectedListener(this);
mRsvpSpinner.setEnabled(eventactivestate.isRsvpEnabled);
if(mCurrentSelectionIndex == mSpinnerAdapter.access$000(s) && (mEventOver && EsEventData.canViewerAddPhotos(mEvent) || !mEventOver && eventactivestate.canInviteOthers))
flag = true;
else
flag = false;
mShowActionButton = flag;
}
protected void measureChildren(int i, int j)
{
int k = android.view.View.MeasureSpec.getSize(i);
int l;
if(!mShowActionButton)
l = k;
else
l = Math.max(0, (k - sPadding) / 2);
measure(mRsvpSpinner, l, 0x40000000, 0, 0);
setCorner(mRsvpSpinner, 0, 0);
if(mShowActionButton)
{
measure(mActionButton, l, 0x40000000, mRsvpSpinner.getMeasuredHeight(), 0x40000000);
setCorner(mActionButton, l + 0 + sPadding, 0);
mActionButton.setVisibility(0);
if(mEvent != null && mEventOver)
mActionButton.bind(sAddPhotosText, sAddPhotosDrawable);
else
mActionButton.bind(sInviteMoreText, sInviteMoreDrawable);
} else
{
mActionButton.setVisibility(8);
}
}
public void onClick(View view)
{
if(mEventActionListener != null && view == mActionButton)
if(mEventOver)
mEventActionListener.onAddPhotosClicked();
else
mEventActionListener.onInviteMoreClicked();
}
public void onItemSelected(AdapterView adapterview, View view, int i, long l)
{
if(mCurrentSelectionIndex == i)
return;
boolean flag;
if(mCurrentSelectionIndex == -1)
flag = true;
else
flag = false;
if(!flag) {
if(0 == i) {
mListener.onRsvpChanged("ATTENDING");
} else if(1 == i) {
String s;
if(mEventOver)
s = "NOT_ATTENDING";
else
s = "MAYBE";
mListener.onRsvpChanged(s);
} else if(2 == i) {
mListener.onRsvpChanged("NOT_ATTENDING");
}
}
mCurrentSelectionIndex = i;
boolean flag1;
EventRsvpListener eventrsvplistener;
String s;
if(mCurrentSelectionIndex == mSpinnerAdapter.access$000("ATTENDING"))
flag1 = true;
else
flag1 = false;
mShowActionButton = flag1;
requestLayout();
}
public void onNothingSelected(AdapterView adapterview)
{
}
private final class RsvpSpinnerAdapter extends BaseAdapter
{
private Context mContext;
private boolean mPast;
public RsvpSpinnerAdapter(Context context, boolean flag)
{
super();
mPast = flag;
mContext = context;
}
public final int getCount()
{
byte byte0;
if(mPast)
byte0 = 2;
else
byte0 = 3;
return byte0;
}
public final Object getItem(int i)
{
return Integer.valueOf(i);
}
public final long getItemId(int i)
{
return (long)i;
}
public final View getView(int i, View view, ViewGroup viewgroup)
{
String s = null;
View view1 = null;
if(0 == i) {
view1 = LayoutInflater.from(mContext).inflate(R.layout.event_rsvp_attending, viewgroup, false);
s = "ATTENDING";
} else if(1 == i) {
if(!mPast) {
view1 = LayoutInflater.from(mContext).inflate(R.layout.event_rsvp_maybe, viewgroup, false);
s = "MAYBE";
} else {
view1 = LayoutInflater.from(mContext).inflate(R.layout.event_rsvp_not_attending, viewgroup, false);
s = "NOT_ATTENDING";
}
} else if(2 == i) {
view1 = LayoutInflater.from(mContext).inflate(R.layout.event_rsvp_not_attending, viewgroup, false);
s = "NOT_ATTENDING";
}
if(view1 != null)
{
TextView textview = (TextView)((TextView)view1.findViewById(R.id.text)).findViewById(R.id.text);
if(textview != null)
{
Resources resources = getContext().getResources();
int j;
if("MAYBE".equals(s))
j = R.string.event_rsvp_maybe;
else
if("NOT_ATTENDING".equals(s))
{
j = R.string.event_rsvp_not_attending;
} else
{
boolean flag = "ATTENDING".equals(s);
j = 0;
if(flag)
j = R.string.event_rsvp_attending;
}
textview.setText(resources.getString(j));
}
}
return view1;
}
public int access$000(String s)
{
byte byte0 = -1;
if(!TextUtils.equals(s, "ATTENDING") && !TextUtils.equals(s, "CHECKIN")) {
if(TextUtils.equals(s, "MAYBE") || mPast && TextUtils.equals(s, "NOT_ATTENDING"))
byte0 = 1;
else
if(TextUtils.equals(s, "NOT_ATTENDING"))
byte0 = 2;
} else {
byte0 = 0;
}
return byte0;
}
}
}