src/com/beem/project/beem/service/BeemChatManager.java
changeset 99 8de21ac527ce
parent 98 4d6ff785605d
child 108 c60aa2237865
--- a/src/com/beem/project/beem/service/BeemChatManager.java	Thu Apr 09 20:02:26 2009 +0200
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Thu Apr 09 20:26:58 2009 +0200
@@ -11,6 +11,8 @@
 import org.jivesoftware.smack.ChatManagerListener;
 import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smack.packet.Message;
+import org.jivesoftware.smackx.ChatState;
+import org.jivesoftware.smackx.ChatStateListener;
 
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
@@ -88,7 +90,7 @@
     public void removeChatCreationListener(IChatManagerListener listener) throws RemoteException {
 	mRemoteChatCreationListeners.unregister(listener);
     }
-    
+
     private IChat getChat(Chat chat) {
 	if (mChats.containsKey(chat.getParticipant())) {
 	    return mChats.get(chat.getParticipant());
@@ -102,13 +104,12 @@
      * A listener for all the chat creation event that happens on the connection.
      * @author darisk
      */
-    private class ChatListener implements ChatManagerListener, MessageListener {
+    private class ChatListener implements ChatStateListener, ChatManagerListener, MessageListener {
 
 	/**
 	 * Constructor.
 	 */
 	public ChatListener() {
-	    // TODO Auto-generated constructor stub
 	}
 
 	/**
@@ -138,8 +139,8 @@
 	@Override
 	public void processMessage(Chat chat, Message message) {
 	    IChat newchat = getChat(chat);
-	   final int n = mRemoteMessageListeners.beginBroadcast();
-	   for (int i = 0; i < n; i++) {
+	    final int n = mRemoteMessageListeners.beginBroadcast();
+	    for (int i = 0; i < n; i++) {
 		IMessageListener listener = mRemoteMessageListeners.getBroadcastItem(i);
 		try {
 		    listener.processMessage(newchat, new com.beem.project.beem.service.Message(message));
@@ -152,6 +153,15 @@
 	    }
 	    mRemoteMessageListeners.finishBroadcast();
 	}
+
+	@Override
+	public void stateChanged(Chat chat, ChatState state) {
+	    try {
+		mChats.get(chat.getParticipant()).setState(state.name());
+	    } catch (RemoteException e) {
+		e.printStackTrace();
+	    }
+	}
     }
 
 }