58 import android.content.ComponentName; |
58 import android.content.ComponentName; |
59 import android.content.Intent; |
59 import android.content.Intent; |
60 import android.content.IntentFilter; |
60 import android.content.IntentFilter; |
61 import android.content.ServiceConnection; |
61 import android.content.ServiceConnection; |
62 import android.content.SharedPreferences; |
62 import android.content.SharedPreferences; |
|
63 import android.graphics.drawable.Drawable; |
|
64 import android.graphics.drawable.LayerDrawable; |
63 import android.graphics.Bitmap; |
65 import android.graphics.Bitmap; |
64 import android.graphics.BitmapFactory; |
66 import android.graphics.BitmapFactory; |
65 import android.graphics.Color; |
67 import android.graphics.Color; |
66 import android.os.Bundle; |
68 import android.os.Bundle; |
67 import android.os.Handler; |
69 import android.os.Handler; |
84 import android.widget.EditText; |
86 import android.widget.EditText; |
85 import android.widget.ImageView; |
87 import android.widget.ImageView; |
86 import android.widget.ListView; |
88 import android.widget.ListView; |
87 import android.widget.TextView; |
89 import android.widget.TextView; |
88 |
90 |
|
91 import java.io.ByteArrayInputStream; |
|
92 |
89 import com.beem.project.beem.R; |
93 import com.beem.project.beem.R; |
90 import com.beem.project.beem.service.Contact; |
94 import com.beem.project.beem.service.Contact; |
91 import com.beem.project.beem.service.Message; |
95 import com.beem.project.beem.service.Message; |
92 import com.beem.project.beem.service.PresenceAdapter; |
96 import com.beem.project.beem.service.PresenceAdapter; |
93 import com.beem.project.beem.service.aidl.IBeemRosterListener; |
97 import com.beem.project.beem.service.aidl.IBeemRosterListener; |
119 |
123 |
120 private TextView mContactNameTextView; |
124 private TextView mContactNameTextView; |
121 private TextView mContactStatusMsgTextView; |
125 private TextView mContactStatusMsgTextView; |
122 private TextView mContactChatState; |
126 private TextView mContactChatState; |
123 private ImageView mContactStatusIcon; |
127 private ImageView mContactStatusIcon; |
|
128 private LayerDrawable mAvatarStatusDrawable; |
124 private ListView mMessagesListView; |
129 private ListView mMessagesListView; |
125 private EditText mInputField; |
130 private EditText mInputField; |
126 private Button mSendButton; |
131 private Button mSendButton; |
127 private final Map<Integer, Bitmap> mStatusIconsMap = new HashMap<Integer, Bitmap>(); |
132 private final Map<Integer, Bitmap> mStatusIconsMap = new HashMap<Integer, Bitmap>(); |
128 |
133 |
162 setContentView(R.layout.chat); |
167 setContentView(R.layout.chat); |
163 mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name); |
168 mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name); |
164 mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg); |
169 mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg); |
165 mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state); |
170 mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state); |
166 mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon); |
171 mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon); |
|
172 mAvatarStatusDrawable = (LayerDrawable) mContactStatusIcon.getDrawable(); |
|
173 mAvatarStatusDrawable.setLayerInset(1, 36, 36, 0, 0); |
167 } else { |
174 } else { |
168 setContentView(R.layout.chat_compact); |
175 setContentView(R.layout.chat_compact); |
169 } |
176 } |
170 mMessagesListView = (ListView) findViewById(R.id.chat_messages); |
177 mMessagesListView = (ListView) findViewById(R.id.chat_messages); |
171 mMessagesListView.setAdapter(mMessagesListAdapter); |
178 mMessagesListView.setAdapter(mMessagesListAdapter); |
571 Mode m = Status.getPresenceModeFromStatus(mContact.getStatus()); |
578 Mode m = Status.getPresenceModeFromStatus(mContact.getStatus()); |
572 setTitle(getString(R.string.chat_name) + " " + mContact.getName() + " (" + m.name() + ")"); |
579 setTitle(getString(R.string.chat_name) + " " + mContact.getName() + " (" + m.name() + ")"); |
573 } |
580 } |
574 } |
581 } |
575 |
582 |
|
583 |
|
584 |
576 /** |
585 /** |
577 * Update the contact status icon. |
586 * Update the contact status icon. |
578 */ |
587 */ |
579 private void updateContactStatusIcon() { |
588 private void updateContactStatusIcon() { |
580 if (!mCompact) |
589 if (mCompact) |
581 mContactStatusIcon.setImageLevel(mContact.getStatus()); |
590 return ; |
582 } |
591 Drawable avatar = getAvatarDrawable(mContact.getAvatarId()); |
|
592 mAvatarStatusDrawable.setDrawableByLayerId(R.id.avatar, avatar); |
|
593 mContactStatusIcon.setImageLevel(mContact.getStatus()); |
|
594 } |
|
595 |
|
596 /** |
|
597 * Get a Drawable containing the avatar icon. |
|
598 * |
|
599 * @param avatarId the avatar id to retrieve or null to get default |
|
600 * @return a Drawable |
|
601 */ |
|
602 private Drawable getAvatarDrawable(String avatarId) { |
|
603 Drawable avatarDrawable = null; |
|
604 try { |
|
605 byte[] avatar = mXmppFacade.getAvatar(avatarId); |
|
606 if (avatar != null) { |
|
607 ByteArrayInputStream in = new ByteArrayInputStream(avatar); |
|
608 avatarDrawable = Drawable.createFromStream(in, avatarId); |
|
609 } |
|
610 } catch (RemoteException e) { |
|
611 Log.e(TAG, "Error while setting the avatar", e); |
|
612 } |
|
613 if (avatarDrawable == null) |
|
614 avatarDrawable = getResources().getDrawable(R.drawable.beem_launcher_icon_silver); |
|
615 return avatarDrawable; |
|
616 } |
583 |
617 |
584 /** |
618 /** |
585 * Prepare the status icons map. |
619 * Prepare the status icons map. |
586 */ |
620 */ |
587 private void prepareIconsStatus() { |
621 private void prepareIconsStatus() { |