/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.view; import java.util.List; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.Checkable; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAvatarData; /** * * @author sihai * */ public class ConversationListItemView extends RelativeLayout implements Checkable { private static Drawable sBackgroundChecked; private static int sBackgroundUnchecked; private static Bitmap sDefaultUserImage; private static boolean sInitialized; private AvatarView mAvatarFullView; private AvatarView mAvatarLeftFullView; private AvatarView mAvatarLowerLeftView; private AvatarView mAvatarLowerRightView; private AvatarView mAvatarUpperLeftView; private AvatarView mAvatarUpperRightView; private boolean mChecked; private TextView mLastMessageTextView; private boolean mMuted; private ImageView mMutedIcon; private TextView mNameTextView; private int mPosition; private TextView mTimeSinceTextView; private int mUnreadCount; private TextView mUnreadCountTextView; public ConversationListItemView(Context context) { this(context, null); } public ConversationListItemView(Context context, AttributeSet attributeset) { super(context, attributeset); if(!sInitialized) { sInitialized = true; Resources resources = context.getApplicationContext().getResources(); sBackgroundChecked = resources.getDrawable(R.drawable.list_selected_holo); sBackgroundUnchecked = resources.getColor(R.color.clear); } mUnreadCount = 0; mMuted = false; if(sDefaultUserImage == null) sDefaultUserImage = EsAvatarData.getMediumDefaultAvatar(context); } private void refreshUnreadCountView() { if(mUnreadCount == 0) mUnreadCountTextView.setVisibility(8); else mUnreadCountTextView.setVisibility(0); } public final void clear() { mNameTextView.setText(null); mLastMessageTextView.setText(null); mTimeSinceTextView.setText(null); mUnreadCountTextView.setText(null); } public boolean isChecked() { return mChecked; } public void onFinishInflate() { mAvatarFullView = (AvatarView)findViewById(R.id.avatarFull); mAvatarLeftFullView = (AvatarView)findViewById(R.id.avatarLeftFull); mAvatarUpperLeftView = (AvatarView)findViewById(R.id.avatarUpperLeft); mAvatarLowerLeftView = (AvatarView)findViewById(R.id.avatarLowerLeft); mAvatarUpperRightView = (AvatarView)findViewById(R.id.avatarUpperRight); mAvatarLowerRightView = (AvatarView)findViewById(R.id.avatarLowerRight); mNameTextView = (TextView)findViewById(R.id.conversationName); mLastMessageTextView = (TextView)findViewById(R.id.lastMessage); mTimeSinceTextView = (TextView)findViewById(R.id.timeSince); mUnreadCountTextView = (TextView)findViewById(R.id.unreadCount); mMutedIcon = (ImageView)findViewById(R.id.mutedIcon); } public void setChecked(boolean flag) { if(flag != mChecked) { mChecked = flag; if(flag) setBackgroundDrawable(sBackgroundChecked); else setBackgroundColor(sBackgroundUnchecked); invalidate(); } } public void setConversationName(CharSequence charsequence) { mNameTextView.setText(charsequence); } public void setLastMessage(CharSequence charsequence) { mLastMessageTextView.setText(charsequence); } public void setMuted(boolean flag) { if(mMuted != flag) { mMuted = flag; if(mMuted) mMutedIcon.setVisibility(0); else mMutedIcon.setVisibility(8); refreshUnreadCountView(); } } public void setParticipantsId(List list, String s) { if(list != null && list.size() != 0) { if(list.size() == 1) { mAvatarFullView.setVisibility(0); mAvatarFullView.setGaiaId((String)list.get(0)); mAvatarLeftFullView.setVisibility(8); mAvatarUpperLeftView.setVisibility(8); mAvatarLowerLeftView.setVisibility(8); mAvatarUpperRightView.setVisibility(8); mAvatarLowerRightView.setVisibility(8); } else if(list.size() == 2 || list.size() == 3) { mAvatarFullView.setVisibility(8); mAvatarLeftFullView.setGaiaId((String)list.get(0)); mAvatarLeftFullView.setVisibility(0); mAvatarUpperLeftView.setVisibility(8); mAvatarLowerLeftView.setVisibility(8); mAvatarUpperRightView.setGaiaId((String)list.get(1)); mAvatarUpperRightView.setVisibility(0); if(list.size() == 2) mAvatarLowerRightView.setGaiaId(s); else mAvatarLowerRightView.setGaiaId((String)list.get(2)); mAvatarLowerRightView.setVisibility(0); } else if(list.size() >= 4) { mAvatarFullView.setVisibility(8); mAvatarLeftFullView.setVisibility(8); mAvatarUpperLeftView.setVisibility(0); mAvatarLowerLeftView.setVisibility(0); mAvatarUpperRightView.setVisibility(0); mAvatarLowerRightView.setVisibility(0); mAvatarUpperLeftView.setGaiaId((String)list.get(0)); mAvatarLowerLeftView.setGaiaId((String)list.get(1)); mAvatarUpperRightView.setGaiaId((String)list.get(2)); mAvatarLowerRightView.setGaiaId((String)list.get(3)); } } else { mAvatarFullView.setVisibility(0); mAvatarFullView.setGaiaId(s); mAvatarLeftFullView.setVisibility(8); mAvatarUpperLeftView.setVisibility(8); mAvatarLowerLeftView.setVisibility(8); mAvatarUpperRightView.setVisibility(8); mAvatarLowerRightView.setVisibility(8); } } public void setPosition(int i) { mPosition = i; } public void setTimeSince(CharSequence charsequence) { mTimeSinceTextView.setText(charsequence); } public void setUnreadCount(int i) { mUnreadCount = i; mUnreadCountTextView.setText(String.valueOf(i)); refreshUnreadCountView(); } public void toggle() { boolean flag; if(!mChecked) flag = true; else flag = false; setChecked(flag); } public final void updateContentDescription() { StringBuilder stringbuilder = new StringBuilder(); Resources resources = getResources(); if(mMuted) { stringbuilder.append(resources.getString(R.string.realtimechat_conversation_description_muted)); stringbuilder.append(" "); } if(mUnreadCount > 0) { int i = R.string.realtimechat_conversation_description_unread_count; Object aobj[] = new Object[1]; aobj[0] = Integer.valueOf(mUnreadCount); stringbuilder.append(resources.getString(i, aobj)); stringbuilder.append(" "); } CharSequence charsequence = mNameTextView.getText(); if(charsequence != null && charsequence.length() > 0) { stringbuilder.append(resources.getString(R.string.realtimechat_conversation_description_title, new Object[] { charsequence })); stringbuilder.append(" "); } CharSequence charsequence1 = mTimeSinceTextView.getText(); if(charsequence1 != null && charsequence1.length() > 0) { stringbuilder.append(resources.getString(R.string.realtimechat_conversation_description_time_since, new Object[] { charsequence1 })); stringbuilder.append(" "); } CharSequence charsequence2 = mLastMessageTextView.getText(); if(charsequence2 != null && charsequence2.length() > 0) { stringbuilder.append(resources.getString(R.string.realtimechat_conversation_description_message, new Object[] { charsequence2 })); stringbuilder.append(" "); } setContentDescription(stringbuilder.toString()); } }