--- 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 @@
</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">
@@ -44,7 +49,8 @@
android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
</intent-filter>
</activity>
- <activity android:name=".jingle.demo.JingleCallActivity" android:label="JingleDemoCall">
+ <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" />
--- 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<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 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();
--- 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);
+ }
+ }
}