Merge "Allow disconnected BT profiles to be unchecked in Settings." into jb-mr1-dev
This commit is contained in:
@@ -241,7 +241,7 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
|
||||
mCachedDevice.setName((String) newValue);
|
||||
} else if (preference instanceof CheckBoxPreference) {
|
||||
LocalBluetoothProfile prof = getProfileOf(preference);
|
||||
onProfileClicked(prof);
|
||||
onProfileClicked(prof, (CheckBoxPreference) preference);
|
||||
return false; // checkbox will update from onDeviceAttributesChanged() callback
|
||||
} else {
|
||||
return false;
|
||||
@@ -250,7 +250,7 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
|
||||
return true;
|
||||
}
|
||||
|
||||
private void onProfileClicked(LocalBluetoothProfile profile) {
|
||||
private void onProfileClicked(LocalBluetoothProfile profile, CheckBoxPreference profilePref) {
|
||||
BluetoothDevice device = mCachedDevice.getDevice();
|
||||
|
||||
int status = profile.getConnectionStatus(device);
|
||||
@@ -260,8 +260,14 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
|
||||
if (isConnected) {
|
||||
askDisconnect(getActivity(), profile);
|
||||
} else {
|
||||
profile.setPreferred(device, true);
|
||||
mCachedDevice.connectProfile(profile);
|
||||
if (profile.isPreferred(device)) {
|
||||
// profile is preferred but not connected: disable auto-connect
|
||||
profile.setPreferred(device, false);
|
||||
refreshProfilePreference(profilePref, profile);
|
||||
} else {
|
||||
profile.setPreferred(device, true);
|
||||
mCachedDevice.connectProfile(profile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,8 +363,4 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
|
||||
private void unpairDevice() {
|
||||
mCachedDevice.unpair();
|
||||
}
|
||||
|
||||
private boolean getAutoConnect(LocalBluetoothProfile prof) {
|
||||
return prof.isPreferred(mCachedDevice.getDevice());
|
||||
}
|
||||
}
|
||||
|
@@ -106,7 +106,8 @@ final class PanProfile implements LocalBluetoothProfile {
|
||||
}
|
||||
|
||||
public boolean isPreferred(BluetoothDevice device) {
|
||||
return true;
|
||||
// return current connection status so profile checkbox is set correctly
|
||||
return getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED;
|
||||
}
|
||||
|
||||
public int getPreferred(BluetoothDevice device) {
|
||||
|
Reference in New Issue
Block a user