# HG changeset patch # User Nikita Kozlov # Date 1253894030 -7200 # Node ID d9737e4bc517fa6a9c3a313bba5602f260701491 # Parent 228b20eb8b44f9e6f9263b5c17e9524890cdd727 debut de la gestion du disconnect diff -r 228b20eb8b44 -r d9737e4bc517 AndroidManifest.xml --- a/AndroidManifest.xml Fri Sep 25 00:05:26 2009 +0200 +++ b/AndroidManifest.xml Fri Sep 25 17:53:50 2009 +0200 @@ -10,18 +10,38 @@ + + + - - + android:launchMode="singleTop"> + + + + + + + + + + + + + + - + mGroup = new ArrayList(); 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(); + } + } } diff -r 228b20eb8b44 -r d9737e4bc517 src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Fri Sep 25 00:05:26 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactList.java Fri Sep 25 17:53:50 2009 +0200 @@ -65,6 +65,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. */ @@ -151,7 +156,6 @@ */ @Override protected void onStop() { - Log.e(TAG, "UNBINSERVICE"); super.onStop(); unbindService(mServConn); } @@ -480,7 +484,7 @@ break; default: imageDrawable = getResources().getDrawable(R.drawable.error); - break; + break; } imgV.setImageDrawable(imageDrawable); @@ -617,12 +621,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(); } - } } diff -r 228b20eb8b44 -r d9737e4bc517 src/com/beem/project/beem/ui/Login.java --- a/src/com/beem/project/beem/ui/Login.java Fri Sep 25 00:05:26 2009 +0200 +++ b/src/com/beem/project/beem/ui/Login.java Fri Sep 25 17:53:50 2009 +0200 @@ -3,7 +3,9 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.BroadcastReceiver; import android.content.ComponentName; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; @@ -46,6 +48,7 @@ private SharedPreferences mSettings; private boolean mIsConfigured; + private BroadcastReceiver mReceiver; /** * Constructor. @@ -78,6 +81,7 @@ mSettings = getSharedPreferences(getString(R.string.settings_filename), MODE_PRIVATE); setContentView(R.layout.login); mProgressDialog = new ProgressDialog(this); + mReceiver = new BeemBroadcastReceiver(); } @Override @@ -172,12 +176,12 @@ */ @Override public void connectionClosed() throws RemoteException { - mIsConnected = false; + /*mIsConnected = false; if (mXmppFacade != null) { Login.this.unbindService(mServConn); Login.this.stopService(SERVICE_INTENT); mXmppFacade = null; - } + }*/ } @Override @@ -303,5 +307,15 @@ mXmppFacade = null; } } + + private class BeemBroadcastReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + unbindService(mServConn); + stopService(SERVICE_INTENT); + mIsConnected = false; + mXmppFacade = null; + } + } } diff -r 228b20eb8b44 -r d9737e4bc517 src/com/beem/project/beem/ui/SendIM.java --- a/src/com/beem/project/beem/ui/SendIM.java Fri Sep 25 00:05:26 2009 +0200 +++ b/src/com/beem/project/beem/ui/SendIM.java Fri Sep 25 17:53:50 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(); + } + } }