# HG changeset patch # User nikita@nikita-laptop # Date 1266535865 -3600 # Node ID 803a4f1dc590c67dcaba8dede3570c6face0ef21 # Parent 47cd386089b31d7576a72992b61faf53420733fa better settings integration for autoaway diff -r 47cd386089b3 -r 803a4f1dc590 res/values-fr/strings.xml --- 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 @@ Default: 1080 Nom d\'utilisateur Mot de passe - away_chk_title - away_chk_sum - away_message_title - away_message_sum - away_message_hint + Activer l'absence automatique + Change votre status en Absent automatiquement quand l\'écran du telephone s\'éteind + Message d'asbence + Votre Message d'absence + Je suis absent car mon ecran est éteind Inscription acceptée diff -r 47cd386089b3 -r 803a4f1dc590 res/values/strings.xml --- 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 @@ Default: 1080 Username Password - away_chk_title - away_chk_sum - away_message_title - away_message_sum - away_message_hint + Enable Auto-away + Change status to Away when the screen is turned off + Away message + The away message that will be displayed + I'm away, my cellphone screen is off Subscription accepted diff -r 47cd386089b3 -r 803a4f1dc590 src/com/beem/project/beem/BeemService.java --- 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;