# HG changeset patch # User Nikita Kozlov # Date 1253895917 -7200 # Node ID 73f7707528f015917c360321b705575f71565490 # Parent 6dd5e802c6fbe610392c083b2f8c917a6f349720 debug diff -r 6dd5e802c6fb -r 73f7707528f0 AndroidManifest.xml --- a/AndroidManifest.xml Fri Sep 25 17:57:55 2009 +0200 +++ b/AndroidManifest.xml Fri Sep 25 18:25:17 2009 +0200 @@ -35,7 +35,12 @@ - + + + + + @@ -44,7 +49,8 @@ android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" /> - + diff -r 6dd5e802c6fb -r 73f7707528f0 src/com/beem/project/beem/ui/ChangeStatus.java --- a/src/com/beem/project/beem/ui/ChangeStatus.java Fri Sep 25 17:57:55 2009 +0200 +++ b/src/com/beem/project/beem/ui/ChangeStatus.java Fri Sep 25 18:25:17 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 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(); + } + } + } diff -r 6dd5e802c6fb -r 73f7707528f0 src/com/beem/project/beem/ui/ContactList.java --- a/src/com/beem/project/beem/ui/ContactList.java Fri Sep 25 17:57:55 2009 +0200 +++ b/src/com/beem/project/beem/ui/ContactList.java Fri Sep 25 18:25:17 2009 +0200 @@ -78,6 +78,9 @@ } + /** + * {@inheritDoc} + */ @Override protected void onCreate(Bundle saveBundle) { super.onCreate(saveBundle); @@ -87,12 +90,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(); diff -r 6dd5e802c6fb -r 73f7707528f0 src/com/beem/project/beem/ui/EditSettings.java --- a/src/com/beem/project/beem/ui/EditSettings.java Fri Sep 25 17:57:55 2009 +0200 +++ b/src/com/beem/project/beem/ui/EditSettings.java Fri Sep 25 18:25:17 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,11 @@ 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); + } + } }