Finish reception of Chat State message.
authorDa Risk <darisk972@gmail.com>
Sat, 13 Mar 2010 18:06:22 +0100
changeset 704 e310d3275d5d
parent 703 8cd09cb7b00b
child 705 2850c2c88d9a
Finish reception of Chat State message.
res/layout/chat.xml
res/values-fr/strings.xml
res/values/strings.xml
src/com/beem/project/beem/service/ChatAdapter.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/service/aidl/IMessageListener.aidl
src/com/beem/project/beem/ui/Chat.java
--- a/res/layout/chat.xml	Sun Mar 07 21:33:13 2010 +0100
+++ b/res/layout/chat.xml	Sat Mar 13 18:06:22 2010 +0100
@@ -20,6 +20,9 @@
 				android:layout_width="fill_parent" android:layout_height="wrap_content"
 				android:autoLink="all" android:textSize="12sp" android:textColor="#FFFFFF"
 				android:textColorLink="#FFFFFF" />
+			<TextView android:id="@+id/chat_contact_chat_state"
+				android:layout_width="fill_parent" android:layout_height="wrap_content"
+				android:textStyle="italic" android:textSize="12sp" />
 		</LinearLayout>
 	</LinearLayout>
 	<View android:layout_width="fill_parent" android:layout_height="2dp"
--- a/res/values-fr/strings.xml	Sun Mar 07 21:33:13 2010 +0100
+++ b/res/values-fr/strings.xml	Sat Mar 13 18:06:22 2010 +0100
@@ -55,20 +55,6 @@
 	<string name="AddCBadForm">Mauvais formulaire</string>
 	<string name="AddCContactAlready">Contact déjà ajouté</string>
 
-	<!--  SendIM class -->
-	<string name="SendIMActTitle">Beem - Chat</string>
-
-	<string name="SendIMSays"> %s dit :\n%s\n</string>
-	<string name="SendIMYouSay">Vous dites :\n%s\n</string>
-	<string name="SendIMSameSpeaker">%s\n</string>
-	<string name="SendIMToSendHint">Tapez votre texte ici</string>
-	<string name="SendIMState">Est : </string>
-	<string name="SendIMErrorMsg">Erreur : %s\n</string>
-	<string name="SendIMFrom">et est en train de parler depuis : </string>
-	<string name="SendIMSmiley">Insérer un sourire</string>
-	<string name="SendIMLoginHint">Nom d\'utilisateur</string>
-	<string name="SendIMNoStatusSet">Aucun statut défini</string>
-
 	<!--  ChangeStatus class -->
 	<string name="ChangeStatusActTitle">Beem - Changer mon statut</string>
 	<string name="ChangeStatusType">Mon statut</string>
@@ -286,6 +272,10 @@
 	<string name="chat_dialog_change_chat_title">Conversations en cours</string>
 	<string name="chat_menu_close_chat">Fermer cette conversation</string>
 	<string name="chat_no_more_chats">Aucune conversation en cours</string>
+	<string name="chat_state_composing">est en train d\'écrire un message</string>
+	<string name="chat_state_gone">a quitté la conversation</string>
+	<string name="chat_state_active">prête attention à la conversation</string>
+	<string name="chat_state_inactive">fait quelque chose d\'autre</string>
 
 	<string name="contact_status_msg_available">Disponible</string>
 	<string name="contact_status_msg_available_chat">Disponible pour discuter</string>
--- a/res/values/strings.xml	Sun Mar 07 21:33:13 2010 +0100
+++ b/res/values/strings.xml	Sat Mar 13 18:06:22 2010 +0100
@@ -55,20 +55,6 @@
 	<string name="AddCBadForm">Bad form</string>
 	<string name="AddCContactAlready">Contact already exist</string>
 
-	<!--  SendIM class -->
-	<string name="SendIMActTitle">Beem - Chat</string>
-
-	<string name="SendIMSays"> %s says :\n%s\n</string>
-	<string name="SendIMYouSay">You say :\n%s\n</string>
-	<string name="SendIMSameSpeaker">%s\n</string>
-	<string name="SendIMToSendHint">Tip text here</string>
-	<string name="SendIMState">Is : </string>
-	<string name="SendIMErrorMsg">Error : %s\n</string>
-	<string name="SendIMFrom">and is speaking from : </string>
-	<string name="SendIMSmiley">Insert a smiley</string>
-	<string name="SendIMLoginHint">login</string>
-	<string name="SendIMNoStatusSet">No status set</string>
-
 	<!--  ChangeStatus class -->
 	<string name="ChangeStatusActTitle">Beem - Change my status</string>
 	<string name="ChangeStatusType">My status</string>
@@ -271,6 +257,10 @@
 	<string name="chat_dialog_change_chat_title">Opened chats</string>
 	<string name="chat_menu_close_chat">Close this chat</string>
 	<string name="chat_no_more_chats">No more active chats</string>
+	<string name="chat_state_composing">is composing a message</string>
+	<string name="chat_state_gone">has left the conversation</string>
+	<string name="chat_state_active">pays attention to the conversation</string>
+	<string name="chat_state_inactive">is doing another thing</string>
 
 	<string name="contact_status_msg_available">Available</string>
 	<string name="contact_status_msg_available_chat">Available to chat</string>
--- a/src/com/beem/project/beem/service/ChatAdapter.java	Sun Mar 07 21:33:13 2010 +0100
+++ b/src/com/beem/project/beem/service/ChatAdapter.java	Sat Mar 13 18:06:22 2010 +0100
@@ -49,7 +49,6 @@
 
 import org.jivesoftware.smack.Chat;
 import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smackx.ChatStateListener;
 import org.jivesoftware.smackx.ChatState;
 
@@ -197,7 +196,7 @@
     /**
      * Listener.
      */
-    private class MsgListener implements MessageListener, ChatStateListener {
+    private class MsgListener implements ChatStateListener {
 	/**
 	 * Constructor.
 	 */
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Sun Mar 07 21:33:13 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Sat Mar 13 18:06:22 2010 +0100
@@ -101,9 +101,11 @@
     private int mPreviousMode;
     private String mPreviousStatus;
     private PrivacyListManagerAdapter mPrivacyListManager;
+    private ChatStateManager mChatStateManager;
     private final BeemService mService;
     private BeemApplication mApplication;
-    private final RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
+    private final RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
+	new RemoteCallbackList<IBeemConnectionListener>();
     private final SubscribePacketListener mSubscribePacketListener = new SubscribePacketListener();
 
     private final ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
@@ -207,7 +209,6 @@
 
 	    this.initFeatures(); // pour declarer les features xmpp qu'on
 	    // supporte
-	    ChatStateManager.getInstance(mAdaptee);
 
 	    PacketFilter filter = new PacketFilter() {
 
@@ -388,6 +389,7 @@
 	    sdm = new ServiceDiscoveryManager(mAdaptee);
 	sdm.addFeature("http://jabber.org/protocol/disco#info");
 	sdm.addFeature("jabber:iq:privacy");
+	mChatStateManager = ChatStateManager.getInstance(mAdaptee);
     }
 
     /**
--- a/src/com/beem/project/beem/service/aidl/IMessageListener.aidl	Sun Mar 07 21:33:13 2010 +0100
+++ b/src/com/beem/project/beem/service/aidl/IMessageListener.aidl	Sat Mar 13 18:06:22 2010 +0100
@@ -48,10 +48,17 @@
 
 interface IMessageListener {
 
+	/**
+	 * This method is executed when a chat receive a message.
+	 * @param chat the chat receiving the message.
+	 * @param msg the message received in the chat.
+	 */
 	void processMessage(in IChat chat, in Message msg);
 
 	/**
-	* le chatState se trouve dans le IChat
-	*/
+	 * This method is executed when a new ChatState is received by the chat.
+	 * You can use IChat.getState() in order to get the new state.
+	 * @param chat the chat changed.
+	 */
 	void stateChanged(in IChat chat);
 }
--- a/src/com/beem/project/beem/ui/Chat.java	Sun Mar 07 21:33:13 2010 +0100
+++ b/src/com/beem/project/beem/ui/Chat.java	Sat Mar 13 18:06:22 2010 +0100
@@ -114,6 +114,7 @@
 
     private TextView mContactNameTextView;
     private TextView mContactStatusMsgTextView;
+    private TextView mContactChatState;
     private ImageView mContactStatusIcon;
     private ListView mMessagesListView;
     private EditText mInputField;
@@ -152,6 +153,7 @@
 	// UI
 	mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name);
 	mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg);
+	mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state);
 	mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon);
 	mMessagesListView = (ListView) findViewById(R.id.chat_messages);
 	mMessagesListView.setAdapter(mMessagesListAdapter);
@@ -539,7 +541,26 @@
 	 */
 	@Override
 	public void stateChanged(IChat chat) throws RemoteException {
-	    //TODO
+	    final String state = chat.getState();
+	    mHandler.post(new Runnable() {
+		@Override
+		public void run() {
+		    String text = null;
+		    if ("active".equals(state)) {
+			text = Chat.this.getString(R.string.chat_state_active);
+		    } else if ("composing".equals(state)) {
+			text = Chat.this.getString(R.string.chat_state_composing);
+		    } else if ("gone".equals(state)) {
+			text = Chat.this.getString(R.string.chat_state_gone);
+		    } else if ("inactive".equals(state)) {
+			text = Chat.this.getString(R.string.chat_state_inactive);
+		    } else if ("paused".equals(state)) {
+			text = Chat.this.getString(R.string.chat_state_active);
+		    }
+		    mContactChatState.setText(text);
+		}
+	    });
+
 	}
     }