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
This commit is contained in:
Jason Monk
2016-07-19 14:13:37 -04:00
parent e723ed8b51
commit fac2538e46
5 changed files with 25 additions and 1 deletions

View File

@@ -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) {

View File

@@ -148,6 +148,9 @@ public abstract class QSTile<TState extends State> {
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);

View File

@@ -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<QSTile.BooleanState> {
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;

View File

@@ -26,6 +26,9 @@ public interface BluetoothController {
boolean isBluetoothSupported();
boolean isBluetoothEnabled();
int getBluetoothState();
boolean isBluetoothConnected();
boolean isBluetoothConnecting();
String getLastDeviceName();

View File

@@ -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);
}