# HG changeset patch # User Da Risk # Date 1294000718 -3600 # Node ID 01807f5df796b04993c54464698a1918379557e3 # Parent 5fed871bb54f2cf7bf5d282bbc1d6dfdb7e03898 Reinsert avatar on chat activity. the support was removed in a bad merge. diff -r 5fed871bb54f -r 01807f5df796 src/com/beem/project/beem/ui/Chat.java --- a/src/com/beem/project/beem/ui/Chat.java Sun Jan 02 19:52:45 2011 +0100 +++ b/src/com/beem/project/beem/ui/Chat.java Sun Jan 02 21:38:38 2011 +0100 @@ -60,6 +60,8 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.SharedPreferences; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; @@ -86,6 +88,8 @@ import android.widget.ListView; import android.widget.TextView; +import java.io.ByteArrayInputStream; + import com.beem.project.beem.R; import com.beem.project.beem.service.Contact; import com.beem.project.beem.service.Message; @@ -121,6 +125,7 @@ private TextView mContactStatusMsgTextView; private TextView mContactChatState; private ImageView mContactStatusIcon; + private LayerDrawable mAvatarStatusDrawable; private ListView mMessagesListView; private EditText mInputField; private Button mSendButton; @@ -164,6 +169,8 @@ mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg); mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state); mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon); + mAvatarStatusDrawable = (LayerDrawable) mContactStatusIcon.getDrawable(); + mAvatarStatusDrawable.setLayerInset(1, 36, 36, 0, 0); } else { setContentView(R.layout.chat_compact); } @@ -573,15 +580,42 @@ } } + + /** * Update the contact status icon. */ private void updateContactStatusIcon() { - if (!mCompact) - mContactStatusIcon.setImageLevel(mContact.getStatus()); + if (mCompact) + return ; + Drawable avatar = getAvatarDrawable(mContact.getAvatarId()); + mAvatarStatusDrawable.setDrawableByLayerId(R.id.avatar, avatar); + mContactStatusIcon.setImageLevel(mContact.getStatus()); } /** + * Get a Drawable containing the avatar icon. + * + * @param avatarId the avatar id to retrieve or null to get default + * @return a Drawable + */ + private Drawable getAvatarDrawable(String avatarId) { + Drawable avatarDrawable = null; + try { + byte[] avatar = mXmppFacade.getAvatar(avatarId); + if (avatar != null) { + ByteArrayInputStream in = new ByteArrayInputStream(avatar); + avatarDrawable = Drawable.createFromStream(in, avatarId); + } + } catch (RemoteException e) { + Log.e(TAG, "Error while setting the avatar", e); + } + if (avatarDrawable == null) + avatarDrawable = getResources().getDrawable(R.drawable.beem_launcher_icon_silver); + return avatarDrawable; + } + + /** * Prepare the status icons map. */ private void prepareIconsStatus() {