src/com/beem/project/beem/ui/Chat.java
changeset 840 01807f5df796
parent 833 97a429f938ae
child 841 b5a404ef40f6
equal deleted inserted replaced
839:5fed871bb54f 840:01807f5df796
    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() {