diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt index a2a08502a58fe..bb665fe3113b6 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt @@ -67,6 +67,7 @@ class ControlsControllerImpl @Inject constructor ( internal const val CONTROLS_AVAILABLE = "systemui.controls_available" internal val URI = Settings.Secure.getUriFor(CONTROLS_AVAILABLE) private const val USER_CHANGE_RETRY_DELAY = 500L // ms + private const val DEFAULT_ENABLED = 1 } // Map of map: ComponentName -> (String -> ControlInfo). @@ -79,7 +80,8 @@ class ControlsControllerImpl @Inject constructor ( private val contentResolver: ContentResolver get() = context.contentResolver - override var available = Settings.Secure.getInt(contentResolver, CONTROLS_AVAILABLE, 0) != 0 + override var available = Settings.Secure.getInt( + contentResolver, CONTROLS_AVAILABLE, DEFAULT_ENABLED) != 0 private set private var currentUser = context.user @@ -104,7 +106,7 @@ class ControlsControllerImpl @Inject constructor ( userContext.filesDir, ControlsFavoritePersistenceWrapper.FILE_NAME) persistenceWrapper.changeFile(fileName) available = Settings.Secure.getIntForUser(contentResolver, CONTROLS_AVAILABLE, - /* default */ 0, newUser.identifier) != 0 + /* default */ DEFAULT_ENABLED, newUser.identifier) != 0 synchronized(currentFavorites) { currentFavorites.clear() } @@ -140,7 +142,7 @@ class ControlsControllerImpl @Inject constructor ( return } available = Settings.Secure.getIntForUser(contentResolver, CONTROLS_AVAILABLE, - /* default */ 0, currentUserId) != 0 + /* default */ DEFAULT_ENABLED, currentUserId) != 0 synchronized(currentFavorites) { currentFavorites.clear() } diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 4fba83a4cc9ce..5da02dc572423 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -92,6 +92,7 @@ import com.android.systemui.MultiListLayout; import com.android.systemui.MultiListLayout.MultiListAdapter; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.colorextraction.SysuiColorExtractor; +import com.android.systemui.controls.management.ControlsListingController; import com.android.systemui.controls.ui.ControlsUiController; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; @@ -189,6 +190,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private ControlsUiController mControlsUiController; private final IWindowManager mIWindowManager; private final Executor mBackgroundExecutor; + private final ControlsListingController mControlsListingController; + private boolean mAnyControlsProviders = false; /** * @param context everything needs a context :( @@ -208,7 +211,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, IStatusBarService statusBarService, NotificationShadeWindowController notificationShadeWindowController, ControlsUiController controlsUiController, IWindowManager iWindowManager, - @Background Executor backgroundExecutor) { + @Background Executor backgroundExecutor, + ControlsListingController controlsListingController) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; @@ -232,6 +236,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mControlsUiController = controlsUiController; mIWindowManager = iWindowManager; mBackgroundExecutor = backgroundExecutor; + mControlsListingController = controlsListingController; // receive broadcasts IntentFilter filter = new IntentFilter(); @@ -268,6 +273,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } }); + + mControlsListingController.addCallback(list -> mAnyControlsProviders = !list.isEmpty()); } /** @@ -1914,6 +1921,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private boolean shouldShowControls() { return mKeyguardStateController.isUnlocked() - && mControlsUiController.getAvailable(); + && mControlsUiController.getAvailable() + && mAnyControlsProviders; } }