OSDN Git Service

When BT is off hide rename preference
[android-x86/packages-apps-Settings.git] / src / com / android / settings / bluetooth / BluetoothDeviceNamePreferenceController.java
index bf13e07..032ae4c 100644 (file)
@@ -50,7 +50,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
     @VisibleForTesting
     Preference mPreference;
     private LocalBluetoothManager mLocalManager;
-    private LocalBluetoothAdapter mLocalAdapter;
+    protected LocalBluetoothAdapter mLocalAdapter;
 
     public BluetoothDeviceNamePreferenceController(Context context, Lifecycle lifecycle) {
         this(context, (LocalBluetoothAdapter) null);
@@ -88,8 +88,10 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
 
     @Override
     public void onStart() {
-        mContext.registerReceiver(mReceiver,
-                new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED));
+        final IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
+        intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+        mContext.registerReceiver(mReceiver, intentFilter);
     }
 
     @Override
@@ -99,7 +101,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
 
     @Override
     public int getAvailabilityStatus() {
-        return mLocalAdapter != null ? AVAILABLE : DISABLED_UNSUPPORTED;
+        return mLocalAdapter != null ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
@@ -109,11 +111,11 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
 
     @Override
     public void updateState(Preference preference) {
-        updateDeviceName(preference);
+        updatePreferenceState(preference);
     }
 
     @Override
-    public String getSummary() {
+    public CharSequence getSummary() {
         String deviceName = getDeviceName();
         if (TextUtils.isEmpty(deviceName)) {
             return super.getSummary();
@@ -145,7 +147,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
      *
      * @param preference to set the summary for
      */
-    protected void updateDeviceName(final Preference preference) {
+    protected void updatePreferenceState(final Preference preference) {
         preference.setSelectable(false);
         preference.setSummary(getSummary());
     }
@@ -166,8 +168,10 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr
 
             if (TextUtils.equals(action, BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
                 if (mPreference != null && mLocalAdapter != null && mLocalAdapter.isEnabled()) {
-                    updateDeviceName(mPreference);
+                    updatePreferenceState(mPreference);
                 }
+            } else if (TextUtils.equals(action, BluetoothAdapter.ACTION_STATE_CHANGED)) {
+                updatePreferenceState(mPreference);
             }
         }
     };