Reinsert avatar on chat activity. the support was removed in a bad merge.
--- 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() {