/** * 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.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class MessageListItemView extends RelativeLayout implements OnClickListener { private static int sFailedAuthorColor; private static int sFailedMessageColor; private static boolean sInitialized; private static int sNormalAuthorColor; private static int sNormalMessageColor; private ImageView mAuthorArrow; private TextView mAuthorNameTextView; private AvatarView mAvatarView; private TextView mCancelButton; private String mGaiaId; private MessageClickListener mMessageClickListener; private long mMessageRowId; private int mMessageStatus; private TextView mMessageTextView; private int mPosition; private TextView mRetryButton; private boolean mShowAuthor; private boolean mShowStatus; private ImageView mStatusImage; private TextView mTimeSinceTextView; public MessageListItemView(Context context) { super(context); if(!sInitialized) { Resources resources = getContext().getApplicationContext().getResources(); sNormalAuthorColor = resources.getColor(R.color.realtimechat_message_author); sNormalMessageColor = resources.getColor(R.color.realtimechat_message_text); sFailedAuthorColor = resources.getColor(R.color.realtimechat_message_author_failed); sFailedMessageColor = resources.getColor(R.color.realtimechat_message_text_failed); sInitialized = true; } } public MessageListItemView(Context context, AttributeSet attributeset) { super(context, attributeset); if(!sInitialized) { Resources resources = getContext().getApplicationContext().getResources(); sNormalAuthorColor = resources.getColor(R.color.realtimechat_message_author); sNormalMessageColor = resources.getColor(R.color.realtimechat_message_text); sFailedAuthorColor = resources.getColor(R.color.realtimechat_message_author_failed); sFailedMessageColor = resources.getColor(R.color.realtimechat_message_text_failed); sInitialized = true; } } private void updateStatusImages() { if(mShowStatus) { switch(mMessageStatus) { case 0: case 1: case 7: mStatusImage.setImageResource(R.drawable.ic_huddle_sending); mStatusImage.setVisibility(0); break; case 2: case 8: mStatusImage.setVisibility(8); break; case 3: case 4: mStatusImage.setImageResource(R.drawable.ic_huddle_sent); mStatusImage.setVisibility(0); break; case 5: mStatusImage.setImageResource(R.drawable.ic_huddle_read); mStatusImage.setVisibility(0); break; case 6: default: mStatusImage.setVisibility(8); mRetryButton.setVisibility(8); mCancelButton.setVisibility(8); mTimeSinceTextView.setVisibility(8); break; } } else { mStatusImage.setVisibility(8); } } public final void clear() { mAuthorNameTextView.setText(null); mMessageTextView.setText(null); mTimeSinceTextView.setText(null); mGaiaId = null; mStatusImage.setVisibility(8); mRetryButton.setVisibility(8); } public final CharSequence getMessage() { return mMessageTextView.getText(); } public final void hideAuthor() { mShowAuthor = false; mAvatarView.setVisibility(8); mAuthorNameTextView.setVisibility(8); mAuthorArrow.setVisibility(8); updateStatusImages(); } public void onClick(View view) { if(view != mAvatarView || mMessageClickListener == null) { if(view == mRetryButton && mMessageClickListener != null) mMessageClickListener.onRetryButtonClicked(mMessageRowId); else if(view == mCancelButton && mMessageClickListener != null) mMessageClickListener.onCancelButtonClicked(mMessageRowId); } else { mMessageClickListener.onUserImageClicked(mGaiaId); } } public void onFinishInflate() { mAvatarView = (AvatarView)findViewById(R.id.avatar_image); mAuthorArrow = (ImageView)findViewById(R.id.authorArrow); mAvatarView.setOnClickListener(this); mAuthorNameTextView = (TextView)findViewById(R.id.authorName); mMessageTextView = (TextView)findViewById(R.id.messageText); mTimeSinceTextView = (TextView)findViewById(R.id.timeSince); mStatusImage = (ImageView)findViewById(R.id.message_status); mRetryButton = (TextView)findViewById(R.id.retry_send); mRetryButton.setOnClickListener(this); mCancelButton = (TextView)findViewById(R.id.cancel_send); mCancelButton.setOnClickListener(this); mShowStatus = true; mShowAuthor = true; } public void setAuthorName(CharSequence charsequence) { mAuthorNameTextView.setText(charsequence); } public void setGaiaId(String s) { mGaiaId = s; mAvatarView.setGaiaId(s); } public void setMessage(CharSequence charsequence) { mMessageTextView.setText(charsequence); mMessageTextView.setVisibility(0); setBackgroundResource(R.color.clear); } public void setMessageClickListener(MessageClickListener messageclicklistener) { mMessageClickListener = messageclicklistener; } public void setMessageRowId(long l) { mMessageRowId = l; } public void setMessageStatus(int i, boolean flag) { mMessageStatus = i; mShowStatus = flag; updateStatusImages(); } public void setPosition(int i) { mPosition = i; } public void setTimeSince(CharSequence charsequence) { mTimeSinceTextView.setText(charsequence); } public final void showAuthor() { mShowAuthor = true; mAvatarView.setVisibility(0); mAuthorNameTextView.setVisibility(0); mAuthorArrow.setVisibility(0); updateStatusImages(); } public final void updateContentDescription() { StringBuilder stringbuilder = new StringBuilder(); Resources resources = getResources(); if(mShowAuthor) { CharSequence charsequence2 = mAuthorNameTextView.getText(); if(charsequence2 != null && charsequence2.length() > 0) { stringbuilder.append(resources.getString(R.string.realtimechat_message_description_author, new Object[] { charsequence2 })); stringbuilder.append(" "); } } CharSequence charsequence = mTimeSinceTextView.getText(); if(charsequence != null && charsequence.length() > 0) { stringbuilder.append(resources.getString(R.string.realtimechat_message_description_time_since, new Object[] { charsequence })); stringbuilder.append(" "); } CharSequence charsequence1 = mMessageTextView.getText(); if(charsequence1 != null && charsequence1.length() > 0) stringbuilder.append(resources.getString(R.string.realtimechat_message_description_message, new Object[] { charsequence1 })); setContentDescription(stringbuilder.toString()); } }