setup avatar + status in contactlist
authorVincent V. <marseille@beem-project.com>
Thu, 05 Jan 2012 23:26:33 +0100
changeset 926 7c079b0f146a
parent 925 6a4029cc7882
child 927 039fe4e3534f
setup avatar + status in contactlist bug : w8ing DaRisk sync to debug
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/ui/ContactList.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 {
--- 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.