/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import java.util.ArrayList;
import java.util.Iterator;
import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.content.EsEventData;
/**
*
* @author sihai
*
*/
public class AvatarLineupLayout extends ExactLayout implements android.view.View.OnClickListener {
private static int sAvatarLineupItemPadding;
private static int sAvatarLineupItemSize;
private static int sDescriptionFontColor;
private static float sDescriptionFontSize;
private static boolean sInitialized;
private ArrayList mAvatars;
private EventActionListener mListener;
private TextView mOverflowText;
private ArrayList mPeople;
private int mTotalPeopleCount;
public AvatarLineupLayout(Context context)
{
super(context);
init(context, null, 0);
}
public AvatarLineupLayout(Context context, AttributeSet attributeset)
{
super(context, attributeset);
init(context, attributeset, 0);
}
public AvatarLineupLayout(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();
sAvatarLineupItemPadding = resources.getDimensionPixelSize(R.dimen.event_card_avatar_lineup_item_padding);
sAvatarLineupItemSize = resources.getDimensionPixelSize(R.dimen.event_card_avatar_lineup_item_size);
sDescriptionFontSize = resources.getDimension(R.dimen.event_card_avatar_lineup_overflow_text_size);
sDescriptionFontColor = resources.getColor(R.color.avatar_lineup_overflow_text_color);
sInitialized = true;
}
mOverflowText = TextViewUtils.createText(context, attributeset, i, sDescriptionFontSize, sDescriptionFontColor, false, true);
addView(mOverflowText);
mAvatars = new ArrayList();
}
public final void bind(ArrayList arraylist, EventActionListener eventactionlistener, int i)
{
ArrayList arraylist1 = new ArrayList();
for(Iterator iterator = arraylist.iterator(); iterator.hasNext(); arraylist1.add(((EsEventData.EventPerson)iterator.next()).gaiaId));
mPeople = arraylist1;
mListener = eventactionlistener;
mTotalPeopleCount = i;
requestLayout();
}
public final void bindIds(ArrayList arraylist, EventActionListener eventactionlistener, int i)
{
mPeople = arraylist;
mListener = eventactionlistener;
mTotalPeopleCount = i;
requestLayout();
}
public final void clear()
{
mPeople.clear();
int i = mAvatars.size();
for(int j = 0; j < i; j++)
{
AvatarView avatarview = (AvatarView)mAvatars.get(j);
avatarview.setVisibility(8);
avatarview.setGaiaId(null);
removeView(avatarview);
}
mAvatars.clear();
mListener = null;
}
protected void measureChildren(int i, int j)
{
int k = android.view.View.MeasureSpec.getSize(i);
int l = sAvatarLineupItemSize + sAvatarLineupItemPadding;
int i1 = k / l;
int j1 = mPeople.size();
int k1 = 0;
AvatarView avatarview;
boolean flag;
int k2;
int j2 = 0;
if(i1 < j1 || mTotalPeopleCount > j1)
{
do
{
int l1 = mTotalPeopleCount - j1;
Resources resources = getContext().getResources();
int i2 = R.plurals.event_invitee_other_count;
Object aobj[] = new Object[1];
aobj[0] = Integer.valueOf(l1);
String s = resources.getQuantityString(i2, l1, aobj);
mOverflowText.setText(s);
mOverflowText.measure(android.view.View.MeasureSpec.makeMeasureSpec(0, 0), android.view.View.MeasureSpec.makeMeasureSpec(sAvatarLineupItemSize, 0x80000000));
j2 = k - j1 * l;
if(mPeople.size() > 1 && j2 < mOverflowText.getMeasuredWidth())
flag = true;
else
flag = false;
if(flag)
j1--;
} while(flag);
mOverflowText.measure(android.view.View.MeasureSpec.makeMeasureSpec(j2, 0x80000000), android.view.View.MeasureSpec.makeMeasureSpec(sAvatarLineupItemSize, 0x80000000));
mOverflowText.setVisibility(0);
setCorner(mOverflowText, l * j1, Math.max(0, (sAvatarLineupItemSize - mOverflowText.getMeasuredHeight()) / 2));
} else
{
mOverflowText.setVisibility(8);
}
for(k2 = Math.max(0, j1 - mAvatars.size()); k2 > 0; k2--)
{
avatarview = new AvatarView(getContext());
avatarview.setOnClickListener(this);
avatarview.setAvatarSize(0);
addView(avatarview);
mAvatars.add(avatarview);
}
int l2 = mAvatars.size();
int i3 = 0;
while(i3 < l2)
{
AvatarView avatarview1 = (AvatarView)mAvatars.get(i3);
if(i3 < j1)
{
avatarview1.setGaiaId((String)mPeople.get(i3));
avatarview1.setVisibility(0);
avatarview1.measure(android.view.View.MeasureSpec.makeMeasureSpec(sAvatarLineupItemSize, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(sAvatarLineupItemSize, 0x40000000));
int j3;
int k3;
if(i3 > 0)
j3 = sAvatarLineupItemPadding;
else
j3 = 0;
k3 = k1 + j3;
setCorner(avatarview1, k3, 0);
k1 = k3 + sAvatarLineupItemSize;
} else
{
avatarview1.setGaiaId(null);
avatarview1.setVisibility(8);
}
i3++;
}
}
public void onClick(View view)
{
if((view instanceof AvatarView) && mListener != null)
mListener.onAvatarClicked(((AvatarView)view).getGaiaId());
}
}