GRos bug de la mort qui tue dans smack ...
authorMarseille
Sun, 05 Jul 2009 23:22:20 +0200
changeset 336 4dbd2caf2a6e
parent 335 13ec0e774524
child 338 ab6210103750
GRos bug de la mort qui tue dans smack ... Ma fois cest un probleme imaginaire alors je commit
src/com/beem/project/beem/ui/AddContact.java
src/com/beem/project/beem/ui/ContactList.java
src/com/beem/project/beem/ui/Login.java
--- a/src/com/beem/project/beem/ui/AddContact.java	Sun Jul 05 21:45:02 2009 +0200
+++ b/src/com/beem/project/beem/ui/AddContact.java	Sun Jul 05 23:22:20 2009 +0200
@@ -14,6 +14,7 @@
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
@@ -30,8 +31,6 @@
 public class AddContact extends Activity {
 
     protected static final String TAG = "AddContact";
-    private String mLogin;
-    private String mAlias;
     private final List<String> mGroup = new ArrayList<String>();
     private IXmppFacade xmppFacade;
     private final ServiceConnection mServConn = new BeemServiceConnection();
@@ -73,40 +72,39 @@
 
 	@Override
 	public void onClick(View v) {
-	    boolean valid = true;
-	    mLogin = getWidgetText(R.id.addc_login);
-	    boolean isEmail = Pattern.matches("[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+.)+[a-zA-Z]{2,4}", mLogin);
+	    String login;
+	    login = getWidgetText(R.id.addc_login);
+	    if (login.length() == 0) {
+		Toast.makeText(AddContact.this, getString(R.string.AddCBadForm), Toast.LENGTH_SHORT).show();
+		return;
+	    }
+	    boolean isEmail = Pattern.matches("[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+.)+[a-zA-Z]{2,4}", login);
 	    if (!isEmail) {
 		Toast.makeText(AddContact.this, getString(R.string.AddCContactAddedLoginError), Toast.LENGTH_SHORT)
 		    .show();
 		return;
 	    }
-	    mAlias = getWidgetText(R.id.addc_alias);
-	    if (mLogin.length() == 0)
-		valid = false;
+	    String alias;
+	    alias = getWidgetText(R.id.addc_alias);
 	    if (getWidgetText(R.id.addc_group).length() != 0)
 		mGroup.add(getWidgetText(R.id.addc_group));
-	    if (valid) {
-		try {
-		    if (xmppFacade.getRoster().getContact(mLogin) != null)
-			mGroup.addAll(xmppFacade.getRoster().getContact(mLogin).getGroups());
-		    if (xmppFacade.getRoster().addContact(mLogin, mAlias, mGroup.toArray(new String[mGroup.size()])) == null) {
+	    try {
+		if (xmppFacade != null) {
+		    if (xmppFacade.getRoster().getContact(login) != null)
+			mGroup.addAll(xmppFacade.getRoster().getContact(login).getGroups());
+		    if (xmppFacade.getRoster().addContact(login, alias, mGroup.toArray(new String[mGroup.size()])) == null) {
 			Toast.makeText(AddContact.this, getString(R.string.AddCContactAddedError), Toast.LENGTH_SHORT)
 			    .show();
 			return;
 		    } else {
 			Toast.makeText(AddContact.this, getString(R.string.AddCContactAdded), Toast.LENGTH_SHORT)
 			    .show();
+			finish();
 		    }
-		    finish();
-		} catch (RemoteException e) {
-		    Toast.makeText(AddContact.this, e.getMessage(), Toast.LENGTH_SHORT).show();
-		    e.printStackTrace();
 		}
-		setResult(RESULT_OK);
-	    } else {
-		Toast.makeText(AddContact.this, getString(R.string.AddCBadForm), Toast.LENGTH_SHORT).show();
-		setResult(RESULT_CANCELED);
+	    } catch (RemoteException e) {
+		Toast.makeText(AddContact.this, e.getMessage(), Toast.LENGTH_SHORT).show();
+		Log.e(TAG, "Problem adding contact", e);
 	    }
 
 	}
--- a/src/com/beem/project/beem/ui/ContactList.java	Sun Jul 05 21:45:02 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Sun Jul 05 23:22:20 2009 +0200
@@ -115,6 +115,7 @@
 
     @Override
     protected void onStop() {
+	Log.e(TAG, "UNBINSERVICE");
 	super.onStop();
 	unbindService(mServConn);
 	groupName.clear();
--- a/src/com/beem/project/beem/ui/Login.java	Sun Jul 05 21:45:02 2009 +0200
+++ b/src/com/beem/project/beem/ui/Login.java	Sun Jul 05 23:22:20 2009 +0200
@@ -138,19 +138,28 @@
 	@Override
 	public void connectionClosed() throws RemoteException {
 	    Log.e("Login", "CONNECTIONCLOSED");
+	    mIsConnected = false;
+	    if (xmppFacade != null) {
+		Login.this.unbindService(mServConn);
+		Login.this.stopService(SERVICE_INTENT);
+		xmppFacade = null;
+	    }
 	}
 
 	@Override
 	public void connectionClosedOnError() throws RemoteException {
 	    Log.e("Login", "CONNECTIONCLOSEONERROR");
+
 	}
 
 	@Override
 	public void connectionFailed(String errorMsg) throws RemoteException {
+	    Log.e("Login", "CONNECTIONFAILLED");
 	    mIsConnected = false;
 	    if (xmppFacade != null) {
 		Login.this.unbindService(mServConn);
 		Login.this.stopService(SERVICE_INTENT);
+		xmppFacade = null;
 	    }
 	    connectionHandler.post(new ErrorRunnable(errorMsg));
 	    dismissProgressDialog();