From fac2538e463138a8a1a92bc94af3f310d28718b4 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Tue, 19 Jul 2016 14:13:37 -0400 Subject: [PATCH] QS: Make BT detail be more consistent with Settings - Show turning on as on - Disable switch when in a turning on/off state Change-Id: I55f977808d1b881f6dc27192dcc2e907b0576447 Fixes: 29237638 --- .../SystemUI/src/com/android/systemui/qs/QSDetail.java | 3 +++ .../SystemUI/src/com/android/systemui/qs/QSTile.java | 3 +++ .../com/android/systemui/qs/tiles/BluetoothTile.java | 7 +++++++ .../systemui/statusbar/policy/BluetoothController.java | 3 +++ .../statusbar/policy/BluetoothControllerImpl.java | 10 +++++++++- 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index 6206cef971b02..ee55a807443bc 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -249,6 +249,9 @@ public class QSDetail extends LinearLayout { return; } mQsDetailHeaderSwitch.setChecked(state); + final boolean toggleEnabled = mDetailAdapter != null && mDetailAdapter.getToggleEnabled(); + mQsDetailHeader.setEnabled(toggleEnabled); + mQsDetailHeaderSwitch.setEnabled(toggleEnabled); } private void handleScanStateChanged(boolean state) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java index ca853feb1a1f7..2fda6eac6e0bf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java @@ -148,6 +148,9 @@ public abstract class QSTile { public interface DetailAdapter { CharSequence getTitle(); Boolean getToggleState(); + default boolean getToggleEnabled() { + return true; + } View createDetailView(Context context, View convertView, ViewGroup parent); Intent getSettingsIntent(); void setToggleState(boolean state); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 794610e50f932..f1e8749fb03ad 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -16,6 +16,7 @@ package com.android.systemui.qs.tiles; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; @@ -207,6 +208,12 @@ public class BluetoothTile extends QSTile { return mState.value; } + @Override + public boolean getToggleEnabled() { + return mController.getBluetoothState() == BluetoothAdapter.STATE_OFF + || mController.getBluetoothState() == BluetoothAdapter.STATE_ON; + } + @Override public Intent getSettingsIntent() { return BLUETOOTH_SETTINGS; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java index e7e2ac2958aad..08675c4f027c7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java @@ -26,6 +26,9 @@ public interface BluetoothController { boolean isBluetoothSupported(); boolean isBluetoothEnabled(); + + int getBluetoothState(); + boolean isBluetoothConnected(); boolean isBluetoothConnecting(); String getLastDeviceName(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java index 014cc4944a743..4f880b446f2ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java @@ -49,6 +49,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa private CachedBluetoothDevice mLastDevice; private final H mHandler = new H(); + private int mState; public BluetoothControllerImpl(Context context, Looper bgLooper) { mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, null); @@ -119,6 +120,11 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa return mEnabled; } + @Override + public int getBluetoothState() { + return mState; + } + @Override public boolean isBluetoothConnected() { return mConnectionState == BluetoothAdapter.STATE_CONNECTED; @@ -192,7 +198,9 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa @Override public void onBluetoothStateChanged(int bluetoothState) { - mEnabled = bluetoothState == BluetoothAdapter.STATE_ON; + mEnabled = bluetoothState == BluetoothAdapter.STATE_ON + || bluetoothState == BluetoothAdapter.STATE_TURNING_ON; + mState = bluetoothState; mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED); }