summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZhihai Xu <zhihaixu@google.com>2012-10-17 16:32:56 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-17 16:32:57 -0700
commit6ec44ff0642bdca94c12f849552aa101e93313b9 (patch)
tree7ac2bb17412ace39b42b3ad4b2d92c3c23e8e12e /src
parent7a1c4cdfae66e8b110de3988e65586871a969c04 (diff)
parent0b21b3d725935c03a4ca4ab8476da2b0675a53cd (diff)
downloadpackages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.zip
packages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.tar.gz
packages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.tar.bz2
Merge "bluetooth won't turn on after turn Airplane mode off on setting screen on manta(tablet)" into jb-mr1-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/settings/bluetooth/BluetoothEnabler.java42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index f08e083..87cf4ee 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -37,7 +37,7 @@ import com.android.settings.WirelessSettings;
public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeListener {
private final Context mContext;
private Switch mSwitch;
-
+ private boolean mValidListener;
private final LocalBluetoothAdapter mLocalAdapter;
private final IntentFilter mIntentFilter;
@@ -52,6 +52,7 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
public BluetoothEnabler(Context context, Switch switch_) {
mContext = context;
mSwitch = switch_;
+ mValidListener = false;
LocalBluetoothManager manager = LocalBluetoothManager.getInstance(context);
if (manager == null) {
@@ -74,7 +75,10 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
handleStateChanged(mLocalAdapter.getBluetoothState());
mContext.registerReceiver(mReceiver, mIntentFilter);
- mSwitch.setOnCheckedChangeListener(this);
+ synchronized(this) {
+ mSwitch.setOnCheckedChangeListener(this);
+ mValidListener = true;
+ }
}
public void pause() {
@@ -83,20 +87,26 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
}
mContext.unregisterReceiver(mReceiver);
- mSwitch.setOnCheckedChangeListener(null);
+ synchronized(this) {
+ mSwitch.setOnCheckedChangeListener(null);
+ mValidListener = false;
+ }
}
public void setSwitch(Switch switch_) {
if (mSwitch == switch_) return;
- mSwitch.setOnCheckedChangeListener(null);
- mSwitch = switch_;
- mSwitch.setOnCheckedChangeListener(this);
int bluetoothState = BluetoothAdapter.STATE_OFF;
if (mLocalAdapter != null) bluetoothState = mLocalAdapter.getBluetoothState();
boolean isOn = bluetoothState == BluetoothAdapter.STATE_ON;
boolean isOff = bluetoothState == BluetoothAdapter.STATE_OFF;
- mSwitch.setChecked(isOn);
+
+ synchronized(this) {
+ mSwitch.setOnCheckedChangeListener(null);
+ mSwitch = switch_;
+ mSwitch.setOnCheckedChangeListener(null);
+ }
+ setChecked(isOn);
mSwitch.setEnabled(isOn || isOff);
}
@@ -121,19 +131,31 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
mSwitch.setEnabled(false);
break;
case BluetoothAdapter.STATE_ON:
- mSwitch.setChecked(true);
+ setChecked(true);
mSwitch.setEnabled(true);
break;
case BluetoothAdapter.STATE_TURNING_OFF:
mSwitch.setEnabled(false);
break;
case BluetoothAdapter.STATE_OFF:
- mSwitch.setChecked(false);
+ setChecked(false);
mSwitch.setEnabled(true);
break;
default:
- mSwitch.setChecked(false);
+ setChecked(false);
mSwitch.setEnabled(true);
}
}
+
+ private synchronized void setChecked(boolean isChecked) {
+ // set listener to null, so onCheckedChanged won't be called
+ // if the checked status on Switch isn't changed by user click
+ if (mValidListener) {
+ mSwitch.setOnCheckedChangeListener(null);
+ }
+ mSwitch.setChecked(isChecked);
+ if (mValidListener) {
+ mSwitch.setOnCheckedChangeListener(this);
+ }
+ }
}