Merge "Update UWB toggle display after lifecycle events." into sc-qpr1-dev am: faf452bf94 am: b097e09dd7 am: cc6de81b52

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16047401

Change-Id: I7b10e68e133c04feff0fc1729cccc921ddfc1b50
diff --git a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
index a2cad1b..b58d9c3 100644
--- a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
@@ -25,6 +25,7 @@
 import com.android.settings.nfc.AndroidBeamPreferenceController;
 import com.android.settings.print.PrintSettingPreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.uwb.UwbPreferenceController;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.search.SearchIndexable;
@@ -42,6 +43,7 @@
     private static final String TAG = "AdvancedConnectedDeviceFrag";
 
     static final String KEY_BLUETOOTH = "bluetooth_settings";
+    static final String KEY_UWB = "uwb_settings";
 
     @Override
     public int getMetricsCategory() {
@@ -64,6 +66,15 @@
     }
 
     @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class);
+        if (uwbPreferenceController != null && getSettingsLifecycle() != null) {
+            getSettingsLifecycle().addObserver(uwbPreferenceController);
+        }
+    }
+
+    @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         return buildControllers(context, getSettingsLifecycle());
     }
diff --git a/src/com/android/settings/uwb/UwbPreferenceController.java b/src/com/android/settings/uwb/UwbPreferenceController.java
index 877c9f2..8b330a9 100644
--- a/src/com/android/settings/uwb/UwbPreferenceController.java
+++ b/src/com/android/settings/uwb/UwbPreferenceController.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
+import android.os.Handler;
 import android.provider.Settings;
 import android.uwb.UwbManager;
 import android.uwb.UwbManager.AdapterStateCallback;
@@ -52,11 +53,13 @@
     @VisibleForTesting
     private final BroadcastReceiver mAirplaneModeChangedReceiver;
     private final Executor mExecutor;
+    private final Handler mHandler;
     private Preference mPreference;
 
     public UwbPreferenceController(Context context, String key) {
         super(context, key);
         mExecutor = Executors.newSingleThreadExecutor();
+        mHandler = new Handler(context.getMainLooper());
         if (isUwbSupportedOnDevice()) {
             mUwbManager = context.getSystemService(UwbManager.class);
         }
@@ -65,6 +68,8 @@
         mAirplaneModeChangedReceiver = new BroadcastReceiver() {
             @Override
             public void onReceive(Context context, Intent intent) {
+                mAirplaneModeOn = Settings.Global.getInt(mContext.getContentResolver(),
+                        Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
                 updateState(mPreference);
             }
         };
@@ -114,6 +119,8 @@
 
     @Override
     public void onStateChanged(int state, int reason) {
+        Runnable runnable = () -> updateState(mPreference);
+        mHandler.post(runnable);
     }
 
     /** Called when activity starts being displayed to user. */