better settings integration for autoaway
authornikita@nikita-laptop
Fri, 19 Feb 2010 00:31:05 +0100
changeset 680 803a4f1dc590
parent 679 47cd386089b3
child 681 9ca0e29b386f
better settings integration for autoaway
res/values-fr/strings.xml
res/values/strings.xml
src/com/beem/project/beem/BeemService.java
--- a/res/values-fr/strings.xml	Thu Feb 18 02:02:30 2010 +0100
+++ b/res/values-fr/strings.xml	Fri Feb 19 00:31:05 2010 +0100
@@ -130,11 +130,11 @@
 	<string name="comments_proxy_port">Default: 1080</string>
 	<string name="settings_proxy_username">Nom d\'utilisateur</string>
 	<string name="settings_proxy_password">Mot de passe</string>
-	<string name="away_chk_title">away_chk_title</string>
-	<string name="away_chk_sum">away_chk_sum</string>
-	<string name="away_message_title">away_message_title</string>
-	<string name="away_message_sum">away_message_sum</string>
-	<string name="away_message_hint">away_message_hint</string>
+	<string name="away_chk_title">Activer l'absence automatique</string>
+	<string name="away_chk_sum">Change votre status en Absent automatiquement quand l\'écran du telephone s\'éteind</string>
+	<string name="away_message_title">Message d'asbence</string>
+	<string name="away_message_sum">Votre Message d'absence</string>
+	<string name="away_message_hint">Je suis absent car mon ecran est éteind</string>
 	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Inscription acceptée</string>
--- a/res/values/strings.xml	Thu Feb 18 02:02:30 2010 +0100
+++ b/res/values/strings.xml	Fri Feb 19 00:31:05 2010 +0100
@@ -130,11 +130,11 @@
 	<string name="comments_proxy_port">Default: 1080</string>
 	<string name="settings_proxy_username">Username</string>
 	<string name="settings_proxy_password">Password</string>
-	<string name="away_chk_title">away_chk_title</string>
-	<string name="away_chk_sum">away_chk_sum</string>
-	<string name="away_message_title">away_message_title</string>
-	<string name="away_message_sum">away_message_sum</string>
-	<string name="away_message_hint">away_message_hint</string>
+	<string name="away_chk_title">Enable Auto-away</string>
+	<string name="away_chk_sum">Change status to Away when the screen is turned off</string>
+	<string name="away_message_title">Away message</string>
+	<string name="away_message_sum">The away message that will be displayed</string>
+	<string name="away_message_hint">I'm away, my cellphone screen is off</string>
 	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Subscription accepted</string>
--- a/src/com/beem/project/beem/BeemService.java	Thu Feb 18 02:02:30 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Fri Feb 19 00:31:05 2010 +0100
@@ -105,6 +105,7 @@
 
     private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
     private BeemServiceBroadcastReceiver mOnOffReceiver = new BeemServiceBroadcastReceiver();
+    private BeemServicePreferenceListener mPreferenceListener = new BeemServicePreferenceListener();
 
     private boolean mOnOffReceiverIsRegistered;
 
@@ -164,8 +165,8 @@
 	}
 	return true;
     }
-    
-    
+
+
 
     /**
      * {@inheritDoc}
@@ -174,13 +175,13 @@
     public void onCreate() {
 	super.onCreate();
 	registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
-	if (mSettings.getBoolean("settings_away_chk",false)) {
+	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
+	mSettings.registerOnSharedPreferenceChangeListener(mPreferenceListener);
+	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", "");
 	mLogin = StringUtils.parseName(tmpJid);
 	mPassword = mSettings.getString("settings_key_account_password", "");
@@ -219,6 +220,7 @@
 	Log.d("Service", "onDestroy");
 	mNotificationManager.cancelAll();
 	unregisterReceiver(mReceiver);
+	mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
 	if (mOnOffReceiverIsRegistered)
 	    unregisterReceiver(mOnOffReceiver);
 	if (mConnection.isAuthentificated() && BeemConnectivity.isConnected(this))
@@ -380,6 +382,22 @@
 	 */
     }
 
+    private class BeemServicePreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
+	@Override
+	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+	    if (key.equals("settings_away_chk")) {
+		if (sharedPreferences.getBoolean("settings_away_chk", false)) {
+		    mOnOffReceiverIsRegistered = true;
+		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+		} else {
+		    mOnOffReceiverIsRegistered = false;
+		    unregisterReceiver(mOnOffReceiver);
+		}
+	    }	    
+	}	
+    }
+
     private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
 
 	private String mOldStatus;