Merge.
authorVincent Veronis <veroni_v@epitech.net>
Fri, 25 Sep 2009 17:15:14 +0200
changeset 395 172ed4d2b2c7
parent 394 1bc22fb59ff0 (current diff)
parent 393 571b95fa452c (diff)
child 397 73e2c848e08d
Merge.
src/com/beem/project/beem/ui/ContactList.java
--- a/AndroidManifest.xml	Fri Sep 25 19:10:48 2009 +0200
+++ b/AndroidManifest.xml	Fri Sep 25 17:15:14 2009 +0200
@@ -10,18 +10,50 @@
 				<action android:name="android.intent.action.MAIN" />
 				<category android:name="android.intent.category.LAUNCHER" />
 			</intent-filter>
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
 		</activity>
 		<activity android:name=".ui.SendIM" android:label="@string/SendIMActTitle"
-			android:launchMode="singleTop" />
-		<activity android:name=".ui.ChangeStatus" android:label="@string/ChangeStatusActTitle" />
-		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle" />
+			android:launchMode="singleTop">
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
+		<activity android:name=".ui.ChangeStatus" android:label="@string/ChangeStatusActTitle">
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
+		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle">
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
 		<activity android:name=".ui.Subscription" android:label="@string/app_name" />
-		<activity android:name=".ui.EditSettings" android:label="@string/edit_settings_name" />
+		<activity android:name=".ui.EditSettings" android:label="@string/edit_settings_name">
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
 		<activity android:name=".ui.CreateAccount" android:label="@string/create_account_name" />
 		<activity android:name=".ui.ContactList" android:label="@string/contact_list_name"
 			android:launchMode="singleTask">
 			<intent-filter android:label="Beem Connection">
-				<action android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
+		<activity android:name=".jingle.demo.JingleCallActivity"
+			android:label="JingleDemoCall">
+			<intent-filter>
+				<action android:name="android.intent.action.MAIN" />
+				<category android:name="android.intent.category.LAUNCHER" />
 			</intent-filter>
 		</activity>
 		<service android:name="BeemService" android:enabled="true"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/layout/jingle_call_activity.xml	Fri Sep 25 17:15:14 2009 +0200
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	android:layout_width="wrap_content" android:layout_height="wrap_content"
+	android:orientation="vertical">
+	<TextView android:text="Jid:" android:id="@+id/jingledemocalljidlabel"
+		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
+	<EditText android:id="@+id/jingledemocalljid"
+		android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
+	<TextView android:text="Password:" android:id="@+id/jingledemocallpasswordlabel"
+		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
+	<EditText android:id="@+id/jingledemocallpassword"
+		android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPassword" ></EditText>
+
+	<Button android:text="Connexion" android:id="@+id/jingledemocallconnectbutton"
+		android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
+	<TextView android:text="Call who :" android:id="@+id/jingledemocallreceiverlabel"
+		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
+
+<EditText android:text="" android:id="@+id/jingledemocallreceiver" android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
+
+<Button android:text="Call" android:id="@+id/jingledemocallbutton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
+</LinearLayout>
--- a/src/com/beem/project/beem/jingle/JingleService.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/jingle/JingleService.java	Fri Sep 25 17:15:14 2009 +0200
@@ -40,9 +40,6 @@
 
 	mMediaManagers = new ArrayList<JingleMediaManager>();
 	mMediaManagers.add(new MicrophoneRTPManager(bt));
-	//mJingleManager = new JingleManager(xmppConnection, mMediaManagers);
-	//mJingleManager.addJingleSessionRequestListener(new BeemJingleSessionRequestListener());
-
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/jingle/demo/JingleCallActivity.java	Fri Sep 25 17:15:14 2009 +0200
@@ -0,0 +1,88 @@
+package com.beem.project.beem.jingle.demo;
+
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+import org.jivesoftware.smack.util.StringUtils;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.beem.project.beem.R;
+import com.beem.project.beem.jingle.JingleService;
+
+/**
+ * Activity used to test Jingle call.
+ * @author darisk
+ */
+public class JingleCallActivity extends Activity {
+
+    private XMPPConnection mConnection;
+    private ConnectionConfiguration mConf;
+    private JingleService mJingle;
+
+    private Button mBtconnect;
+    private Button mBtcall;
+    private EditText mEdJID;
+    private EditText mEdPassword;
+    private EditText mEdReceiver;
+
+    /**
+     * Constructor.
+     */
+    public JingleCallActivity() {
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+	// TODO Auto-generated method stub
+	super.onCreate(savedInstanceState);
+	setContentView(R.layout.jingle_call_activity);
+	// localhost
+	mConf = new ConnectionConfiguration("10.0.2.2", 5222);
+	mEdJID = (EditText) findViewById(R.id.jingledemocalljid);
+	mEdPassword = (EditText) findViewById(R.id.jingledemocallpassword);
+	mEdReceiver = (EditText) findViewById(R.id.jingledemocallreceiver);
+	mBtconnect = (Button) findViewById(R.id.jingledemocallconnectbutton);
+	mBtconnect.setOnClickListener(new OnClickListener() {
+
+	    @Override
+	    public void onClick(View arg0) {
+		String jid = mEdJID.getText().toString();
+		String login = StringUtils.parseName(jid);
+		mConnection = new XMPPConnection(mConf);
+		String password = mEdPassword.getText().toString();
+		try {
+		    mConnection.connect();
+	            mConnection.login(login, password);
+	            mJingle = new JingleService(mConnection);
+	            mBtcall.setEnabled(true);
+                } catch (XMPPException e) {
+	            // TODO Auto-generated catch block
+	            e.printStackTrace();
+                }
+	    }
+
+	});
+	mBtcall = (Button) findViewById(R.id.jingledemocallbutton);
+	mBtcall.setOnClickListener(new OnClickListener() {
+	    @Override
+	    public void onClick(View arg0) {
+		String jid = mEdReceiver.getText().toString();
+		if (!"".equals(jid)) {
+		    mJingle.call(jid);
+		    Toast.makeText(JingleCallActivity.this, "Appel en cours", Toast.LENGTH_SHORT);
+		} else
+		    Toast.makeText(JingleCallActivity.this, "Remplir le champ (JID complet en  toto@tutu.com/truc)",
+			    Toast.LENGTH_SHORT);
+	    }
+	});
+
+    }
+
+}
--- a/src/com/beem/project/beem/ui/AddContact.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/AddContact.java	Fri Sep 25 17:15:14 2009 +0200
@@ -4,8 +4,11 @@
 import java.util.List;
 import java.util.regex.Pattern;
 import android.app.Activity;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -18,8 +21,8 @@
 import android.widget.Toast;
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
+import com.beem.project.beem.service.XmppConnectionAdapter;
 import com.beem.project.beem.service.aidl.IXmppFacade;
-
 /**
  * This activity is used to add a contact.
  * @author nikita
@@ -30,6 +33,12 @@
     private final List<String> mGroup = new ArrayList<String>();
     private IXmppFacade mXmppFacade;
     private final ServiceConnection mServConn = new BeemServiceConnection();
+    private BroadcastReceiver mReceiver;
+
+    private static final Intent SERVICE_INTENT = new Intent();
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
 
     /**
      * Constructor.
@@ -45,7 +54,7 @@
 	setContentView(R.layout.addcontact);
 	Button ok = (Button) findViewById(R.id.addc_ok);
 	ok.setOnClickListener(mOkListener);
-	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
+	mReceiver = new BeemBroadcastReceiver();
     }
 
     /**
@@ -56,6 +65,25 @@
 	super.onStop();
 	unbindService(mServConn);
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onResume() {
+	super.onResume();
+	this.registerReceiver(mReceiver, new IntentFilter(XmppConnectionAdapter.BEEM_CONNECTION_CLOSED));
+	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onPause() {
+	super.onPause();
+	this.unregisterReceiver(mReceiver);
+    }
 
     /**
      * The ServiceConnection used to connect to the Beem service.
@@ -101,7 +129,7 @@
 	    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();
+		.show();
 		return;
 	    }
 	    String alias;
@@ -113,13 +141,13 @@
 		    if (mXmppFacade.getRoster().getContact(login) != null)
 			mGroup.addAll(mXmppFacade.getRoster().getContact(login).getGroups());
 		    if (mXmppFacade.getRoster().addContact(login, alias,
-				mGroup.toArray(new String[mGroup.size()])) == null) {
+			mGroup.toArray(new String[mGroup.size()])) == null) {
 			Toast.makeText(AddContact.this, getString(R.string.AddCContactAddedError), Toast.LENGTH_SHORT)
-			    .show();
+			.show();
 			return;
 		    } else {
 			Toast.makeText(AddContact.this, getString(R.string.AddCContactAdded), Toast.LENGTH_SHORT)
-			    .show();
+			.show();
 			finish();
 		    }
 		}
@@ -130,4 +158,14 @@
 
 	}
     };
+    
+    private class BeemBroadcastReceiver extends BroadcastReceiver {
+	@Override
+	public void onReceive(Context context, Intent intent) {
+	    Log.d(TAG, "broadcast received");
+	    stopService(SERVICE_INTENT);
+	    startActivity(new Intent(AddContact.this, Login.class));
+	    finish();
+	}
+    }
 }
--- a/src/com/beem/project/beem/ui/ChangeStatus.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/ChangeStatus.java	Fri Sep 25 17:15:14 2009 +0200
@@ -1,8 +1,11 @@
 package com.beem.project.beem.ui;
 
 import android.app.Activity;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
@@ -19,6 +22,7 @@
 
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
+import com.beem.project.beem.service.XmppConnectionAdapter;
 import com.beem.project.beem.service.aidl.IXmppFacade;
 import com.beem.project.beem.utils.Status;
 
@@ -43,7 +47,13 @@
     private ArrayAdapter<String> mAdapter;
     private IXmppFacade mXmppFacade = null;
     private final ServiceConnection mServConn = new BeemServiceConnection();
-    private final OnClickListener mOnClickOk = new MyOnClickListener();
+    private final OnClickListener mOnClickOk = new MyOnClickListener();    
+    private BroadcastReceiver mReceiver;
+
+    private static final Intent SERVICE_INTENT = new Intent();
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
 
     private int getPreferenceStatusIndex() {
 	return mSettings.getInt(getString(R.string.PreferenceStatus), 0);
@@ -80,6 +90,9 @@
 	return res;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onCreate(Bundle savedInstanceState) {
 	super.onCreate(savedInstanceState);
@@ -97,19 +110,36 @@
 	mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 	mSpinner.setAdapter(mAdapter);
 	mToast = Toast.makeText(this, R.string.ChangeStatusOk, Toast.LENGTH_LONG);
+	mReceiver = new BeemBroadcastReceiver();
 	showSettings();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onDestroy() {
 	super.onDestroy();
 	unbindService(mServConn);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onResume() {
 	super.onResume();
 	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
+	this.registerReceiver(mReceiver, new IntentFilter(XmppConnectionAdapter.BEEM_CONNECTION_CLOSED));
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onPause() {
+	super.onPause();
+	this.unregisterReceiver(mReceiver);
     }
 
     private void showSettings() {
@@ -170,4 +200,12 @@
 	}
     }
 
+    private class BeemBroadcastReceiver extends BroadcastReceiver {
+	@Override
+	public void onReceive(Context context, Intent intent) {
+	    stopService(SERVICE_INTENT);
+	    finish();
+	}
+    }
+    
 }
--- a/src/com/beem/project/beem/ui/ContactList.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Fri Sep 25 17:15:14 2009 +0200
@@ -66,6 +66,11 @@
     private final ServiceConnection mServConn = new BeemServiceConnection();
     private BroadcastReceiver mReceiver;
 
+    private static final Intent SERVICE_INTENT = new Intent();
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
+
     /**
      * Constructor.
      */
@@ -73,6 +78,9 @@
 
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onCreate(Bundle saveBundle) {
 	super.onCreate(saveBundle);
@@ -83,12 +91,18 @@
 	mReceiver = new BeemBroadcastReceiver();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onResume() {
 	super.onResume();
 	this.registerReceiver(mReceiver, new IntentFilter(XmppConnectionAdapter.BEEM_CONNECTION_CLOSED));
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected void onPause() {
 	super.onPause();
@@ -153,7 +167,6 @@
      */
     @Override
     protected void onStop() {
-	Log.e(TAG, "UNBINSERVICE");
 	super.onStop();
 	unbindService(mServConn);
     }
@@ -500,7 +513,7 @@
 			break;
 		    default:
 			imageDrawable = getResources().getDrawable(R.drawable.error);
-			break;
+		    break;
 		}
 		imgV.setImageDrawable(imageDrawable);
 
@@ -644,12 +657,12 @@
     }
 
     private class BeemBroadcastReceiver extends BroadcastReceiver {
-
 	@Override
 	public void onReceive(Context context, Intent intent) {
 	    Log.d(TAG, "broadcast received");
-
+	    stopService(SERVICE_INTENT);
+	    startActivity(new Intent(ContactList.this, Login.class));
+	    finish();
 	}
-
     }
 }
--- a/src/com/beem/project/beem/ui/EditSettings.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/EditSettings.java	Fri Sep 25 17:15:14 2009 +0200
@@ -3,7 +3,11 @@
 import java.util.ArrayList;
 
 import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.util.Log;
@@ -21,6 +25,7 @@
 import android.widget.Toast;
 
 import com.beem.project.beem.R;
+import com.beem.project.beem.service.XmppConnectionAdapter;
 
 /**
  * This class represents an activity which allows the user to change his account or proxy parameters.
@@ -56,6 +61,12 @@
     private EditText mProxyPortField;
     private EditText mProxyUsernameField;
     private EditText mProxyPasswordField;
+    private BroadcastReceiver mReceiver;
+
+    private static final Intent SERVICE_INTENT = new Intent();
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
 
     /**
      * Constructor.
@@ -356,6 +367,7 @@
 	initTabbedWindow();
 	initFields();
 	mSettings = getSharedPreferences(getString(R.string.settings_filename), MODE_PRIVATE);
+	mReceiver = new BeemBroadcastReceiver();
     }
 
     /**
@@ -380,6 +392,7 @@
 		startActivity(i);
 		return true;
 	    case R.id.settings_menu_login:
+		setResult(69);
 		finish();
 		return true;
 	    default:
@@ -393,6 +406,7 @@
     @Override
     public void onResume() {
 	super.onResume();
+	this.registerReceiver(mReceiver, new IntentFilter(XmppConnectionAdapter.BEEM_CONNECTION_CLOSED));
 	refreshAccountTabFields();
 	refreshXMPPTabFields();
 	refreshProxyTabFields();
@@ -400,6 +414,14 @@
 	if (!mProxyUseCheckBox.isChecked())
 	    disableProxyParameters();
     }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onPause() {
+	super.onPause();
+	this.unregisterReceiver(mReceiver);
+    }
 
     /**
      * {@inheritDoc}
@@ -525,4 +547,12 @@
 	    Log.i(getString(R.string.edit_settings_tag), LOG_MSG_SETTINGS_SAVED);
 	}
     }
+    
+    private class BeemBroadcastReceiver extends BroadcastReceiver {
+	@Override
+	public void onReceive(Context context, Intent intent) {
+	    stopService(SERVICE_INTENT);
+	    EditSettings.this.setResult(69);
+	}
+    }
 }
--- a/src/com/beem/project/beem/ui/Login.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/Login.java	Fri Sep 25 17:15:14 2009 +0200
@@ -83,7 +83,7 @@
     @Override
     protected void onDestroy() {
 	super.onDestroy();
-	if (mIsConfigured && (mIsConnected || mXmppFacade == null)) {
+	if (mIsConfigured && (mIsConnected || mXmppFacade != null)) {
 	    unbindService(mServConn);
 	}
     }
@@ -174,8 +174,6 @@
 	public void connectionClosed() throws RemoteException {
 	    mIsConnected = false;
 	    if (mXmppFacade != null) {
-		Login.this.unbindService(mServConn);
-		Login.this.stopService(SERVICE_INTENT);
 		mXmppFacade = null;
 	    }
 	}
@@ -302,6 +300,5 @@
 	    mIsConnected = false;
 	    mXmppFacade = null;
 	}
-    }
-
+    }    
 }
--- a/src/com/beem/project/beem/ui/SendIM.java	Fri Sep 25 19:10:48 2009 +0200
+++ b/src/com/beem/project/beem/ui/SendIM.java	Fri Sep 25 17:15:14 2009 +0200
@@ -5,8 +5,11 @@
 import org.jivesoftware.smack.util.StringUtils;
 
 import android.app.Activity;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.graphics.drawable.Drawable;
@@ -33,6 +36,7 @@
 import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.service.Message;
 import com.beem.project.beem.service.PresenceAdapter;
+import com.beem.project.beem.service.XmppConnectionAdapter;
 import com.beem.project.beem.service.aidl.IBeemRosterListener;
 import com.beem.project.beem.service.aidl.IChat;
 import com.beem.project.beem.service.aidl.IChatManager;
@@ -69,6 +73,12 @@
     private final ServiceConnection mServConn = new BeemServiceConnection();
     private IXmppFacade mXmppFacade;
     private TextView mStatusText;
+    private BroadcastReceiver mReceiver;
+
+    private static final Intent SERVICE_INTENT = new Intent();
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
 
     /**
      * Constructor.
@@ -115,6 +125,7 @@
 	mScrolling = (ScrollView) findViewById(R.id.sendimscroll);
 	mStatusText = (TextView) findViewById(R.id.sendimstatus);
 	setViewHeader();
+	mReceiver = new BeemBroadcastReceiver();
     }
 
     /**
@@ -211,11 +222,11 @@
 		// TODO start the jingle call 
 		// Bug a besoin du jid complet (resource compris)
 		try {
-	            mXmppFacade.call(mContact.getJID());
-                } catch (RemoteException e) {
-	            // TODO Auto-generated catch block
-	            e.printStackTrace();
-                }
+		    mXmppFacade.call(mContact.getJID());
+		} catch (RemoteException e) {
+		    // TODO Auto-generated catch block
+		    e.printStackTrace();
+		}
 		return true;
 	    default:
 		return false;
@@ -228,6 +239,7 @@
     @Override
     protected void onPause() {
 	super.onPause();
+	this.unregisterReceiver(mReceiver);
 	try {
 	    if (mChat != null)
 		mChat.setOpen(false);
@@ -243,6 +255,7 @@
     @Override
     protected void onResume() {
 	super.onResume();
+	this.registerReceiver(mReceiver, new IntentFilter(XmppConnectionAdapter.BEEM_CONNECTION_CLOSED));
 	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
 	mScrolling.fullScroll(ScrollView.FOCUS_DOWN);
     }
@@ -262,7 +275,6 @@
 	    e.printStackTrace();
 	}
 	setViewHeader();
-
     }
 
     /**
@@ -429,10 +441,10 @@
 	}
 
 	@Override
-        public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
+	public void onEntryDeleteFromGroup(String group, String jid) throws RemoteException {
 	    // TODO Auto-generated method stub
 
-        }
+	}
 
 	@Override
 	public void onPresenceChanged(PresenceAdapter presence) throws RemoteException {
@@ -523,4 +535,13 @@
 	}
     }
 
+    private class BeemBroadcastReceiver extends BroadcastReceiver {
+	@Override
+	public void onReceive(Context context, Intent intent) {
+	    Log.d(TAG, "broadcast received");
+	    stopService(SERVICE_INTENT);
+	    startActivity(new Intent(SendIM.this, Login.class));
+	    finish();
+	}
+    }
 }