# HG changeset patch # User Vincent V. # Date 1325802393 -3600 # Node ID 7c079b0f146ab919f749d01f5bfc2fafc7ddf76e # Parent 6a4029cc7882a06d319adf9e970e5f20a81357b4 setup avatar + status in contactlist bug : w8ing DaRisk sync to debug diff -r 6a4029cc7882 -r 7c079b0f146a src/com/beem/project/beem/BeemService.java --- a/src/com/beem/project/beem/BeemService.java Thu Jan 05 22:12:25 2012 +0100 +++ b/src/com/beem/project/beem/BeemService.java Thu Jan 05 23:26:33 2012 +0100 @@ -580,8 +580,6 @@ // Create a MultiUserChat using a Connection for a room MultiUserChat muc2 = new MultiUserChat(xmppCo, bookmarkedConference.getJid()); - // User2 joins the new room using a password and specifying - // the amount of history to receive. In this example we are requesting the last 5 messages. DiscussionHistory history = new DiscussionHistory(); history.setMaxStanzas(5); try { diff -r 6a4029cc7882 -r 7c079b0f146a src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Thu Jan 05 22:12:25 2012 +0100 +++ b/src/com/beem/project/beem/ui/ContactList.java Thu Jan 05 23:26:33 2012 +0100 @@ -28,6 +28,8 @@ */ package com.beem.project.beem.ui; +import java.io.IOException; + import android.app.Activity; import android.content.ContentUris; import android.content.Context; @@ -35,6 +37,10 @@ import android.content.SharedPreferences; import android.database.ContentObserver; import android.database.Cursor; +import android.graphics.BitmapFactory; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -54,6 +60,7 @@ import android.widget.Filter; import android.widget.Filterable; import android.widget.Gallery; +import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; @@ -61,6 +68,7 @@ import com.beem.project.beem.BeemApplication; import com.beem.project.beem.BeemIntent; import com.beem.project.beem.R; +import com.beem.project.beem.service.BeemAvatarCache; import com.beem.project.beem.ui.wizard.AccountConfigure; /** @@ -311,6 +319,7 @@ private Context mContext; private int mLayout; + private BeemAvatarCache mBeemAvatarCache; private final ContactFilter mContactFilter = new ContactFilter(); private final GroupFilter mGroupFilter = new GroupFilter(); @@ -318,6 +327,7 @@ super(context, layout, c, from, to); mContext = context; mLayout = layout; + mBeemAvatarCache = new BeemAvatarCache(context); } @Override @@ -337,7 +347,6 @@ new String[] { ContactsContract.RawContacts.SOURCE_ID, ContactsContract.RawContacts.Entity.DATA_ID, ContactsContract.RawContacts.Entity.MIMETYPE, ContactsContract.RawContacts.Entity.DATA1 }, null, null, null); - Log.e(TAG, "BINDVIEW"); try { while (cursorContact.moveToNext()) { if (!cursorContact.isNull(1)) { @@ -346,7 +355,7 @@ if (mimeType.equals(ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) { TextView nameText = (TextView) view.findViewById(R.id.contactlistpseudo); nameText.setText(data); - } + } //else if other mimetype } @@ -359,12 +368,11 @@ String jid = cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.SOURCE_ID)); view.setTag(jid); - // ImageView img = (ImageView) view.findViewById(R.id.avatar); - // String avatarId = curContact.getAvatarId(); - // int contactStatus = curContact.getStatus(); - // Drawable avatar = getAvatarStatusDrawable(avatarId); - // img.setImageDrawable(avatar); - // img.setImageLevel(contactStatus); + ImageView img = (ImageView) view.findViewById(R.id.avatar); + int contactStatus = 1; + Drawable avatar = getAvatarStatusDrawable(jid); + img.setImageDrawable(avatar); + img.setImageLevel(contactStatus); } public Filter getContactFilter() { @@ -381,33 +389,23 @@ * @param avatarId the avatar id to retrieve or null to get default * @return a LayerDrawable */ - // private Drawable getAvatarStatusDrawable(String avatarId) { - // Drawable avatarDrawable = null; - // if (avatarId != null) { - // Uri uri = - // AvatarProvider.CONTENT_URI.buildUpon().appendPath(avatarId).build(); - // InputStream in = null; - // try { - // try { - // in = getContentResolver().openInputStream(uri); - // avatarDrawable = Drawable.createFromStream(in, avatarId); - // } finally { - // if (in != null) - // in.close(); - // } - // } catch (IOException e) { - // Log.w(TAG, "Error while setting the avatar", e); - // } - // } - // if (avatarDrawable == null) - // avatarDrawable = - // getResources().getDrawable(R.drawable.beem_launcher_icon_silver); - // LayerDrawable ld = (LayerDrawable) - // getResources().getDrawable(R.drawable.avatar_status); - // ld.setLayerInset(1, 36, 36, 0, 0); - // ld.setDrawableByLayerId(R.id.avatar, avatarDrawable); - // return ld; - // } + private Drawable getAvatarStatusDrawable(String jid) { + Drawable avatarDrawable = null; + if (jid != null) { + try { + byte[] bb = mBeemAvatarCache.get(jid); + avatarDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(bb, 0, bb.length)); + } catch (IOException e) { + Log.w(TAG, "Error while setting the avatar", e); + } + } + if (avatarDrawable == null) + avatarDrawable = mContext.getResources().getDrawable(R.drawable.beem_launcher_icon_silver); + LayerDrawable ld = (LayerDrawable) mContext.getResources().getDrawable(R.drawable.avatar_status); + ld.setLayerInset(1, 36, 36, 0, 0); + ld.setDrawableByLayerId(R.id.avatar, avatarDrawable); + return ld; + } /** * A Filter which select Contact to display by searching in ther Jid.