--- 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();
+ }
+ }
}
}