merge
authorNikita Kozlov <nikita@mbdsys.com>
Mon, 06 Dec 2010 01:06:44 +0100
changeset 814 2ef1c6096069
parent 813 bcafceecd837 (diff)
parent 812 9d3a7af41ec2 (current diff)
child 815 ca323cff3ac9
merge
res/values/strings.xml
src/com/beem/project/beem/service/BeemChatManager.java
src/com/beem/project/beem/service/ChatAdapter.java
src/com/beem/project/beem/service/aidl/IMessageListener.aidl
src/com/beem/project/beem/ui/Chat.java
--- a/res/values/strings.xml	Sun Dec 05 18:45:54 2010 +0100
+++ b/res/values/strings.xml	Mon Dec 06 01:06:44 2010 +0100
@@ -258,6 +258,9 @@
 	<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="chat_otrstate_plaintext">PLAINTEXT</string>
+	<string name="chat_otrstate_encrypted">ENCRYPTED</string>
+	<string name="chat_otrstate_finished">FINISHED</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/BeemChatManager.java	Sun Dec 05 18:45:54 2010 +0100
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Mon Dec 06 01:06:44 2010 +0100
@@ -309,6 +309,8 @@
 
 	@Override
 	public void otrStateChanged(String otrState) throws RemoteException {
+		// TODO Auto-generated method stub
+		
 	}
     }
 }
--- a/src/com/beem/project/beem/service/ChatAdapter.java	Sun Dec 05 18:45:54 2010 +0100
+++ b/src/com/beem/project/beem/service/ChatAdapter.java	Mon Dec 06 01:06:44 2010 +0100
@@ -47,6 +47,9 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import net.java.otr4j.OtrEngineListener;
+import net.java.otr4j.session.SessionID;
+
 import org.jivesoftware.smack.Chat;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smackx.ChatState;
@@ -87,6 +90,14 @@
 	mMessages = new LinkedList<Message>();
 	mAdaptee.addMessageListener(mMsgListener);
 	mOtrManager = new BeemOtrManager(this, mParticipant.getJIDWithRes(), mParticipant.getJID());
+	mOtrManager.setOtrEngineListener(new OtrEngineListener() {
+		
+		@Override
+		public void sessionStatusChanged(SessionID sessionID) {
+			mMsgListener.otrStateChanged(mOtrManager.status());
+			Log.d(TAG,  "OTR status changed " + mOtrManager.status());
+		}
+	});
 	Log.d(TAG, "new chat, with otr " + mOtrManager.status());
     }
 
@@ -265,6 +276,24 @@
 	    }
 	    mRemoteListeners.finishBroadcast();
 	}
+	
+	/**
+	 * This method is executed when the otr session status change.
+	 * @param otrState the new state of otr session.
+	 */
+	void otrStateChanged(final String otrState) {
+	    final int n = mRemoteListeners.beginBroadcast();
+
+	    for (int i = 0; i < n; i++) {
+		IMessageListener listener = mRemoteListeners.getBroadcastItem(i);
+		try {
+		    listener.otrStateChanged(otrState);
+		} catch (RemoteException e) {
+		    Log.w(TAG, e.getMessage());
+		}
+	    }
+	    mRemoteListeners.finishBroadcast();		
+	}
     }
 
 	@Override
--- a/src/com/beem/project/beem/service/aidl/IMessageListener.aidl	Sun Dec 05 18:45:54 2010 +0100
+++ b/src/com/beem/project/beem/service/aidl/IMessageListener.aidl	Mon Dec 06 01:06:44 2010 +0100
@@ -61,11 +61,9 @@
 	 * @param chat the chat changed.
 	 */
 	void stateChanged(in IChat chat);
-	
 	/**
 	 * This method is executed when the otr session status change.
 	 * @param otrState the new state of otr session.
 	 */
 	void otrStateChanged(in String otrState);
-	
 }
--- a/src/com/beem/project/beem/ui/Chat.java	Sun Dec 05 18:45:54 2010 +0100
+++ b/src/com/beem/project/beem/ui/Chat.java	Mon Dec 06 01:06:44 2010 +0100
@@ -577,11 +577,11 @@
 		public void run() {
 		    String text = null;
 		    if ("PLAINTEXT".equals(otrState)) {
-			text = Chat.this.getString(R.string.chat_state_active);
+			text = Chat.this.getString(R.string.chat_otrstate_plaintext);
 		    } else if ("ENCRYPTED".equals(otrState)) {
-			text = Chat.this.getString(R.string.chat_state_composing);
+			text = Chat.this.getString(R.string.chat_otrstate_encrypted);
 		    } else if ("FINISHED".equals(otrState)) {
-			text = Chat.this.getString(R.string.chat_state_active);
+			text = Chat.this.getString(R.string.chat_otrstate_finished);
 		    }
 		    mContactOtrState.setText(text);
 		}
--- a/src/com/zadov/beem/BeemOtrManager.java	Sun Dec 05 18:45:54 2010 +0100
+++ b/src/com/zadov/beem/BeemOtrManager.java	Mon Dec 06 01:06:44 2010 +0100
@@ -2,6 +2,7 @@
 
 import net.java.otr4j.OtrEngineHostImpl;
 import net.java.otr4j.OtrEngineImpl;
+import net.java.otr4j.OtrEngineListener;
 import net.java.otr4j.OtrPolicy;
 import net.java.otr4j.OtrPolicyImpl;
 import net.java.otr4j.session.SessionID;
@@ -25,6 +26,10 @@
 		aliceSessionID = new SessionID(jidres,jid, "XMMP");
 		usAlice = new OtrEngineImpl(myHost);
 	}
+	
+	public void setOtrEngineListener(OtrEngineListener listener) {
+		usAlice.addOtrEngineListener(listener);
+	}
 
 	public void startSession() {
 		usAlice.startSession(aliceSessionID);