Add bluetooth visible item

Show "Visible as [Device name]". Also remove the menuitem for
changing device name.

This cl creates a preference controller to handle the logic for
device name preference.

Bug: 35876447
Test: RunSettingsRoboTests

Change-Id: I9ab6c9d2df5b053d15b8ff887073ef82616243a4
This commit is contained in:
jackqdyulei
2017-04-25 13:32:02 -07:00
parent 41aa446c7f
commit ae86781edd
5 changed files with 337 additions and 36 deletions

View File

@@ -28,6 +28,7 @@ import android.content.res.Resources;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen;
@@ -75,8 +76,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
private static final String TAG = "BluetoothSettings";
private static final int MENU_ID_SCAN = Menu.FIRST;
private static final int MENU_ID_RENAME_DEVICE = Menu.FIRST + 1;
private static final int MENU_ID_SHOW_RECEIVED = Menu.FIRST + 2;
private static final int MENU_ID_SHOW_RECEIVED = Menu.FIRST + 1;
/* Private intent to show the list of received files */
private static final String BTOPP_ACTION_OPEN_RECEIVED_FILES =
@@ -92,6 +92,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
private PreferenceGroup mPairedDevicesCategory;
private PreferenceGroup mAvailableDevicesCategory;
private Preference mDeviceNamePreference;
private boolean mAvailableDevicesCategoryIsPresent;
private boolean mInitialScanStarted;
@@ -100,6 +101,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
private SwitchBar mSwitchBar;
private final IntentFilter mIntentFilter;
private BluetoothDeviceNamePreferenceController mDeviceNamePrefController;
// For Search
private static final String DATA_KEY_REFERENCE = "main_toggle_bluetooth";
@@ -114,25 +116,10 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
final int state =
intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
updateDeviceName(context);
}
if (state == BluetoothAdapter.STATE_ON) {
mInitiateDiscoverable = true;
}
}
private void updateDeviceName(Context context) {
if (mLocalAdapter.isEnabled() && mMyDevicePreference != null) {
final Resources res = context.getResources();
final Locale locale = res.getConfiguration().getLocales().get(0);
final BidiFormatter bidiFormatter = BidiFormatter.getInstance(locale);
mMyDevicePreference.setTitle(res.getString(
R.string.bluetooth_is_visible_message,
bidiFormatter.unicodeWrap(mLocalAdapter.getName())));
}
}
};
public BluetoothSettings() {
@@ -170,14 +157,18 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
@Override
void addPreferencesForActivity() {
final Context prefContext = getPrefContext();
mDeviceNamePreference = mDeviceNamePrefController.createBluetoothDeviceNamePreference(
getPreferenceScreen(), 1 /* order */);
mPairedDevicesCategory = new PreferenceCategory(prefContext);
mPairedDevicesCategory.setKey(KEY_PAIRED_DEVICES);
mPairedDevicesCategory.setOrder(1);
mPairedDevicesCategory.setOrder(2);
getPreferenceScreen().addPreference(mPairedDevicesCategory);
mAvailableDevicesCategory = new BluetoothProgressCategory(prefContext);
mAvailableDevicesCategory.setSelectable(false);
mAvailableDevicesCategory.setOrder(2);
mAvailableDevicesCategory.setOrder(3);
getPreferenceScreen().addPreference(mAvailableDevicesCategory);
mMyDevicePreference = mFooterPreferenceMixin.createFooterPreference();
@@ -242,9 +233,6 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
menu.add(Menu.NONE, MENU_ID_SCAN, 0, textId)
.setEnabled(bluetoothIsEnabled && !isDiscovering)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_RENAME_DEVICE, 0, R.string.bluetooth_rename_device)
.setEnabled(bluetoothIsEnabled)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
super.onCreateOptionsMenu(menu, inflater);
@@ -261,13 +249,6 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
}
return true;
case MENU_ID_RENAME_DEVICE:
mMetricsFeatureProvider.action(getActivity(),
MetricsEvent.ACTION_BLUETOOTH_RENAME);
new BluetoothNameDialogFragment().show(
getFragmentManager(), "rename device");
return true;
case MENU_ID_SHOW_RECEIVED:
mMetricsFeatureProvider.action(getActivity(),
MetricsEvent.ACTION_BLUETOOTH_FILES);
@@ -332,6 +313,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
break;
}
getPreferenceScreen().removeAll();
getPreferenceScreen().addPreference(mDeviceNamePreference);
getPreferenceScreen().addPreference(mPairedDevicesCategory);
getPreferenceScreen().addPreference(mAvailableDevicesCategory);
getPreferenceScreen().addPreference(mMyDevicePreference);
@@ -529,7 +511,12 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
@Override
protected List<PreferenceController> getPreferenceControllers(Context context) {
return null;
List<PreferenceController> controllers = new ArrayList<>();
mDeviceNamePrefController = new BluetoothDeviceNamePreferenceController(context,
this, getLifecycle());
controllers.add(mDeviceNamePrefController);
return controllers;
}
@VisibleForTesting