use the settings_away_chk pref at startup, i need to add a listener for runtime now
authornikita@nikita-laptop
Thu, 18 Feb 2010 02:02:30 +0100
changeset 679 47cd386089b3
parent 678 d1a599ccf879
child 680 803a4f1dc590
use the settings_away_chk pref at startup, i need to add a listener for runtime now
src/com/beem/project/beem/BeemService.java
--- a/src/com/beem/project/beem/BeemService.java	Wed Feb 17 02:29:11 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Thu Feb 18 02:02:30 2010 +0100
@@ -57,6 +57,7 @@
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.Service;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -102,7 +103,10 @@
     private boolean mUseProxy;
     private IXmppFacade.Stub mBind;
 
-    private BeemServiceBroadcastReceiver mReceiver = new BeemServiceBroadcastReceiver();
+    private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
+    private BeemServiceBroadcastReceiver mOnOffReceiver = new BeemServiceBroadcastReceiver();
+
+    private boolean mOnOffReceiverIsRegistered;
 
     /**
      * Constructor.
@@ -111,7 +115,7 @@
     }
 
     /**
-     * Initialise la configuration de la connexion.
+     * Initialize the connection.
      */
     private void initConnectionConfig() {
 	mUseProxy = mSettings.getBoolean("settings_key_proxy_use", false);
@@ -160,6 +164,8 @@
 	}
 	return true;
     }
+    
+    
 
     /**
      * {@inheritDoc}
@@ -168,8 +174,11 @@
     public void onCreate() {
 	super.onCreate();
 	registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
-	registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
-	registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+	if (mSettings.getBoolean("settings_away_chk",false)) {
+	    mOnOffReceiverIsRegistered = true;
+	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+	}
 
 	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
 	String tmpJid = mSettings.getString("settings_key_account_username", "");
@@ -210,6 +219,8 @@
 	Log.d("Service", "onDestroy");
 	mNotificationManager.cancelAll();
 	unregisterReceiver(mReceiver);
+	if (mOnOffReceiverIsRegistered)
+	    unregisterReceiver(mOnOffReceiver);
 	if (mConnection.isAuthentificated() && BeemConnectivity.isConnected(this))
 	    mConnection.disconnect();
 	Log.d(TAG, "ONDESTROY");
@@ -247,7 +258,7 @@
     }
 
     /**
-     * Reset the status to online after a deconnection.
+     * Reset the status to online after a disconnect.
      */
     public void resetStatus() {
 	Editor edit = mSettings.edit();
@@ -369,17 +380,16 @@
 	 */
     }
 
-    private class BeemServiceBroadcastReceiver extends BeemBroadcastReceiver {
-	
+    private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
+
 	private String mOldStatus;
 	private int mOldMode;
-	
+
 	public BeemServiceBroadcastReceiver() {
 	}
 
 	@Override
 	public void onReceive(final Context context, final Intent intent) {
-	    super.onReceive(context, intent);
 	    String intentAction = intent.getAction();
 	    if (intentAction.equals(Intent.ACTION_SCREEN_OFF)) {
 		mOldMode = mConnection.getPreviousMode();