summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/AirplaneModeEnabler.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2011-01-26 09:56:44 -0800
committerAmith Yamasani <yamasani@google.com>2011-01-26 09:56:44 -0800
commitb98c00e710710d3aa96d5c950b51a60cfa48b51d (patch)
tree2cd5e1abce9aa33ee653622692d291a98689f9b5 /src/com/android/settings/AirplaneModeEnabler.java
parentf6ac42968f1b21ab6300bdc211a050fc4cada1af (diff)
downloadpackages_apps_Settings-b98c00e710710d3aa96d5c950b51a60cfa48b51d.zip
packages_apps_Settings-b98c00e710710d3aa96d5c950b51a60cfa48b51d.tar.gz
packages_apps_Settings-b98c00e710710d3aa96d5c950b51a60cfa48b51d.tar.bz2
Update airplane mode checkbox when toggled from system bar.
Bug: 3148095 Also fix an NPE crash I saw when exiting Settings immediately after toggling the airplane mode. Change-Id: I83eb2d90e203fd56b09269cf9fa8f74a4354834f
Diffstat (limited to 'src/com/android/settings/AirplaneModeEnabler.java')
-rw-r--r--src/com/android/settings/AirplaneModeEnabler.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index ccfe541..00c416f 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -20,6 +20,7 @@ import com.android.internal.telephony.PhoneStateIntentReceiver;
import android.content.Context;
import android.content.Intent;
+import android.database.ContentObserver;
import android.os.Handler;
import android.os.Message;
import android.os.SystemProperties;
@@ -51,6 +52,13 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
}
};
+ private ContentObserver mAirplaneModeObserver = new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ onAirplaneModeChanged();
+ }
+ };
+
public AirplaneModeEnabler(Context context, CheckBoxPreference airplaneModeCheckBoxPreference) {
mContext = context;
@@ -68,13 +76,17 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
mPhoneStateReceiver.registerIntent();
mCheckBoxPref.setOnPreferenceChangeListener(this);
+ mContext.getContentResolver().registerContentObserver(
+ Settings.System.getUriFor(Settings.System.AIRPLANE_MODE_ON), true,
+ mAirplaneModeObserver);
}
public void pause() {
mPhoneStateReceiver.unregisterIntent();
mCheckBoxPref.setOnPreferenceChangeListener(null);
+ mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver);
}
-
+
public static boolean isAirplaneModeOn(Context context) {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
@@ -84,7 +96,7 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
mCheckBoxPref.setSummary(enabling ? R.string.airplane_mode_turning_on
: R.string.airplane_mode_turning_off);
-
+
// Change the system setting
Settings.System.putInt(mContext.getContentResolver(), Settings.System.AIRPLANE_MODE_ON,
enabling ? 1 : 0);
@@ -106,8 +118,8 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
* - mobile does not send failure notification, fail on timeout.
*/
private void onAirplaneModeChanged() {
- ServiceState serviceState = mPhoneStateReceiver.getServiceState();
- boolean airplaneModeEnabled = serviceState.getState() == ServiceState.STATE_POWER_OFF;
+ boolean airplaneModeEnabled = isAirplaneModeOn(mContext);
+ mCheckBoxPref.setChecked(isAirplaneModeOn(mContext));
mCheckBoxPref.setSummary(airplaneModeEnabled ? null :
mContext.getString(R.string.airplane_mode_summary));
}