merge.
authormarseille@KungFuh
Tue, 07 Apr 2009 20:14:42 +0200
changeset 87 84cad8522aa6
parent 86 23a0dfdff589 (current diff)
parent 80 29f0d6a23321 (diff)
child 88 7b2a869e9ef8
merge.
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/ui/ContactList.java
--- a/res/values/strings.xml	Tue Apr 07 19:57:37 2009 +0200
+++ b/res/values/strings.xml	Tue Apr 07 20:14:42 2009 +0200
@@ -17,6 +17,15 @@
 	<string name="PreferenceHostKey">host</string>
 	<string name="PreferenceJID">Jabber ID</string><string name="PreferenceLoginKey">login</string><string name="PreferencePasswordKey">password</string>
 	<string name="PreferencePortKey">port</string>
+	<string name="PreferenceProxyHost">proxy_host</string>
+	<string name="PreferenceProxyPort">proxy_port</string>
+	<string name="PreferenceUseProxy">use_proxy</string>
+	<string name="PreferenceProxyType">proxy_type</string>
+	<string name="PreferenceProxyUser">proxy_user</string>
+	<string name="PreferenceProxyPassword">proxy_password</string>
+	<string name="PreferenceProxyTypeHttp">HTTP</string>
+	<string name="PreferenceProxyTypeSocks4">SOCKS4</string>
+	<string name="PreferenceProxyTypeSocks5">SOCKS5</string>
 
 	<!--  SendIM class -->
 	<string name="SendIMSays">says :\n</string>
--- a/src/com/beem/project/beem/BeemService.java	Tue Apr 07 19:57:37 2009 +0200
+++ b/src/com/beem/project/beem/BeemService.java	Tue Apr 07 20:14:42 2009 +0200
@@ -1,20 +1,19 @@
 package com.beem.project.beem;
 
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.proxy.ProxyInfo;
+import org.jivesoftware.smack.proxy.ProxyInfo.ProxyType;
 import android.app.Notification;
 import android.app.NotificationManager;
-import android.app.PendingIntent;
 import android.app.Service;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.IBinder;
 import android.os.RemoteException;
-import android.widget.Toast;
-
 import com.beem.project.beem.service.XmppConnectionAdapter;
 import com.beem.project.beem.service.XmppFacade;
-import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IXmppConnection;
 import com.beem.project.beem.service.aidl.IXmppFacade;
-import com.beem.project.beem.service.aidl.IXmppConnection;
 
 /**
  * This class is for the Beem service.
@@ -35,8 +34,9 @@
     private String mLogin;
     private String mPassword;
     private String mHost;
-
-
+    private ConnectionConfiguration mConnectionConfiguration;
+    private ProxyInfo mProxyInfo;
+    private boolean mUseProxy;
     private IXmppFacade.Stub mBind;
 
     /**
@@ -65,12 +65,36 @@
 	mLogin = mSettings.getString(getString(R.string.PreferenceLoginKey), "");
 	mPassword = mSettings.getString(getString(R.string.PreferencePasswordKey), "");
 	mHost = mSettings.getString(getString(R.string.PreferenceHostKey), "");
+	mHost = "10.0.2.2";
+	initConnectionConfig();
 	mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-	mConnection = new XmppConnectionAdapter("10.0.2.2", mLogin, mPassword); // address
+	mConnection = new XmppConnectionAdapter(mConnectionConfiguration, mLogin, mPassword);
 	mBind = new XmppFacade(mConnection, this);
     }
 
     /**
+     * Initialise la configuration de la connexion.
+     */
+    private void initConnectionConfig() {
+	//TODO mettre a false par defaut et remplacer les valeurs par defaut
+	mUseProxy = mSettings.getBoolean(getString(R.string.PreferenceUseProxy), false);
+	if (mUseProxy) {
+	    String stype = mSettings.getString(getString(R.string.PreferenceProxyType),
+		getString(R.string.PreferenceProxyTypeHttp));
+	    String phost = mSettings.getString(getString(R.string.PreferenceProxyHost), "");
+	    String puser = mSettings.getString(getString(R.string.PreferenceProxyUser), "");
+	    String ppass = mSettings.getString(getString(R.string.PreferenceProxyPassword), "");
+	    int pport =  mSettings.getInt(getString(R.string.PreferenceProxyPort), 3128);
+	    ProxyInfo.ProxyType type = ProxyType.valueOf(stype);
+	    mProxyInfo = new ProxyInfo(type, phost, pport, puser, ppass);
+	    mConnectionConfiguration = new ConnectionConfiguration(mHost, mProxyInfo);
+	} else {
+	    mConnectionConfiguration = new ConnectionConfiguration(mHost);
+	}
+	mConnectionConfiguration.setSendPresence(true);
+    }
+
+    /**
      * {@inheritDoc}
      */
     @Override
--- a/src/com/beem/project/beem/service/RosterAdapter.java	Tue Apr 07 19:57:37 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Tue Apr 07 20:14:42 2009 +0200
@@ -46,16 +46,22 @@
 	roster.addRosterListener(mRosterListener);
 	for (RosterEntry entry : roster.getEntries()) {
 	    String user = StringUtils.parseBareAddress(entry.getUser());
-	    if ( !mContacts.containsKey(user))
+	    if (!mContacts.containsKey(user))
 		mContacts.put(user, new Contact(user));
 	}
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public void createGroup(String groupname) throws RemoteException {
 	mAdaptee.createGroup(groupname);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public Contact addContact(String user, String name, String[] groups) throws RemoteException {
 	try {
@@ -76,18 +82,27 @@
 	mContacts.remove(contact.getJID());
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public void addConnectionListener(IBeemRosterListener listen) throws RemoteException {
 	if (listen != null)
 	    mRemoteRosListeners.register(listen);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public void removeConnectionListener(IBeemRosterListener listen) throws RemoteException {
 	if (listen != null)
 	    mRemoteRosListeners.unregister(listen);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public Contact getContact(String jid) throws RemoteException {
 	return mContacts.get(jid);
@@ -103,8 +118,24 @@
 	return res;
     }
 
+    /**
+     * Listener for the roster events.
+     * It will call the remote listeners registered.
+     * @author darisk
+     *
+     */
     private class RosterListenerAdapter implements RosterListener {
 
+	/**
+	 * Constructor.
+	 */
+	public RosterListenerAdapter() {
+	    // TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void entriesAdded(Collection<String> addresses) {
 	    Log.i(TAG, "Ajout de l'entry");
@@ -125,6 +156,9 @@
 	    mRemoteRosListeners.finishBroadcast();
 	}
 
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void entriesDeleted(Collection<String> addresses) {
 	    Log.i(TAG, "Suppression de l'entry");
@@ -142,9 +176,12 @@
 		    Log.w(TAG, "Error while deleting roster entries", e);
 		}
 	    }
-	    mRemoteRosListeners.finishBroadcast();			
+	    mRemoteRosListeners.finishBroadcast();
 	}
 
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void entriesUpdated(Collection<String> addresses) {
 	    Log.i(TAG, "Update de l'entry");
@@ -162,15 +199,18 @@
 		    Log.w(TAG, "Error while updating roster entries", e);
 		}
 	    }
-	    mRemoteRosListeners.finishBroadcast();			
+	    mRemoteRosListeners.finishBroadcast();
 	}
 
+	/**
+	 * {@inheritDoc}
+	 */
 	@Override
 	public void presenceChanged(Presence presence) {
 	    Log.i(TAG, "Changement de Presence");
 	    /* gestion du roster coter sedirvice */
 	    String user = StringUtils.parseBareAddress(presence.getFrom());
-	    Log.d(TAG, "User : "+user);
+	    Log.d(TAG, "User : " + user);
 	    Contact c = mContacts.get(StringUtils.parseBareAddress(user));
 	    if (c == null) {
 		c = new Contact(user);
@@ -191,7 +231,7 @@
 		    Log.w(TAG, "Error while updating roster entries", e);
 		}
 	    }
-	    mRemoteRosListeners.finishBroadcast();			
+	    mRemoteRosListeners.finishBroadcast();
 	}
     }
 
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Apr 07 19:57:37 2009 +0200
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Apr 07 20:14:42 2009 +0200
@@ -73,20 +73,21 @@
      */
     @Override
     public boolean connectSync() throws RemoteException {
-	    try {
-		mAdaptee.connect();
-		mAdaptee.addConnectionListener(mConListener);
-		mAdaptee.login(mLogin, mPassword, "BEEM");
-		mChatManager = new BeemChatManager(mAdaptee.getChatManager());
-		// TODO find why this cause a null pointer exception
-		// this.initFeatures(); // pour declarer les features xmpp qu'on supporte
-		mLastException = null;
-		triggerAsynchronousConnectEvent();
-		return true;
-	    } catch (XMPPException e) {
-		mLastException = new BeemException(e);
-	    }
-	    return false;
+	try {
+	    mAdaptee.connect();
+	    mAdaptee.addConnectionListener(mConListener);
+	    mAdaptee.login(mLogin, mPassword, "BEEM");
+	    mChatManager = new BeemChatManager(mAdaptee.getChatManager());
+	    // TODO find why this cause a null pointer exception
+	    // this.initFeatures(); // pour declarer les features xmpp qu'on supporte
+	    mLastException = null;
+	    triggerAsynchronousConnectEvent();
+	    return true;
+	} catch (XMPPException e) {
+	    Log.e(TAG, "Error while connecting", e);
+	    mLastException = new BeemException(e);
+	}
+	return false;
     }
 
     /**
@@ -106,10 +107,10 @@
     public IRoster getRoster() throws RemoteException {
 	if (mRoster != null)
 	    return mRoster;
-	    Roster adap = mAdaptee.getRoster();
-	    if (adap == null)
-		return null;
-	    mRoster = new RosterAdapter(adap);
+	Roster adap = mAdaptee.getRoster();
+	if (adap == null)
+	    return null;
+	mRoster = new RosterAdapter(adap);
 	return mRoster;
     }
 
@@ -264,6 +265,7 @@
 		} catch (RemoteException e) {
 		    // The RemoteCallbackList will take care of removing the
 		    // dead listeners.
+		    Log.w(TAG, "Error while triggering remote connection listeners", e);
 		}
 	    }
 	    mRemoteConnListeners.finishBroadcast();
@@ -311,7 +313,11 @@
 
     }
 
-    public boolean isAuthentificated() throws RemoteException {
+    /**
+     * Returns true if currently authenticated by successfully calling the login method.
+     * @return true when successfully authenticated
+     */
+    public boolean isAuthentificated() {
 	return mAdaptee.isAuthenticated();
     }
 
--- a/src/com/beem/project/beem/ui/ContactList.java	Tue Apr 07 19:57:37 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Tue Apr 07 20:14:42 2009 +0200
@@ -282,7 +282,7 @@
 		 */
 		v = (TextView) view.findViewById(to[2]);
 		if (v != null) {
-		    v.setText(c.getMMsgState());
+		    v.setText(c.getMsgState());
 		}
 
 		/*