Links WPP clocks flag to SysUI's flag (1/3).
Bug: 261990616
Test: manually verified that setting or unsetting the flag in System UI
correctly shows or hides the "Custom Clock" section in Wallpaper Picker,
respectively.
Change-Id: Iaac6996a35c2ad2a7a7c945cb56d49802443d965
diff --git a/src/com/android/customization/model/clock/ClockSectionController.java b/src/com/android/customization/model/clock/ClockSectionController.java
deleted file mode 100644
index 545c1c4..0000000
--- a/src/com/android/customization/model/clock/ClockSectionController.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.model.clock;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.picker.clock.ClockCustomDemoFragment;
-import com.android.customization.picker.clock.ClockSectionView;
-import com.android.wallpaper.R;
-import com.android.wallpaper.config.Flags;
-import com.android.wallpaper.model.CustomizationSectionController;
-
-/** A {@link CustomizationSectionController} for clock customization. */
-public class ClockSectionController implements CustomizationSectionController<ClockSectionView> {
-
- private final CustomizationSectionNavigationController mNavigationController;
-
- public ClockSectionController(CustomizationSectionNavigationController navigationController) {
- mNavigationController = navigationController;
- }
-
- @Override
- public boolean isAvailable(@Nullable Context context) {
- return Flags.enableCustomClocks;
- }
-
- @Override
- public ClockSectionView createView(Context context) {
- ClockSectionView view = (ClockSectionView) LayoutInflater.from(context).inflate(
- R.layout.clock_section_view,
- null);
- view.setOnClickListener(v ->
- mNavigationController.navigateTo(new ClockCustomDemoFragment()));
- return view;
- }
-}
diff --git a/src/com/android/customization/model/clock/ClockSectionController.kt b/src/com/android/customization/model/clock/ClockSectionController.kt
new file mode 100644
index 0000000..e81fbce
--- /dev/null
+++ b/src/com/android/customization/model/clock/ClockSectionController.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.customization.model.clock
+
+import android.content.Context
+import android.view.LayoutInflater
+import com.android.customization.picker.clock.ClockCustomDemoFragment
+import com.android.customization.picker.clock.ClockSectionView
+import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient
+import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderContract as Contract
+import com.android.wallpaper.R
+import com.android.wallpaper.model.CustomizationSectionController
+import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
+import kotlinx.coroutines.runBlocking
+
+/** A [CustomizationSectionController] for clock customization. */
+class ClockSectionController(
+ private val navigationController: CustomizationSectionNavigationController,
+ private val keyguardQuickAffordanceProviderClient: KeyguardQuickAffordanceProviderClient,
+) : CustomizationSectionController<ClockSectionView?> {
+ override fun isAvailable(context: Context?): Boolean {
+ return runBlocking { keyguardQuickAffordanceProviderClient.queryFlags() }
+ .firstOrNull { it.name == Contract.FlagsTable.FLAG_NAME_CUSTOM_CLOCKS_ENABLED }
+ ?.value == true
+ }
+
+ override fun createView(context: Context): ClockSectionView {
+ val view =
+ LayoutInflater.from(context)
+ .inflate(
+ R.layout.clock_section_view,
+ null,
+ ) as ClockSectionView
+ view.setOnClickListener { navigationController.navigateTo(ClockCustomDemoFragment()) }
+ return view
+ }
+}
diff --git a/src/com/android/customization/module/ThemePickerInjector.java b/src/com/android/customization/module/ThemePickerInjector.java
index 9a304e9..43a104b 100644
--- a/src/com/android/customization/module/ThemePickerInjector.java
+++ b/src/com/android/customization/module/ThemePickerInjector.java
@@ -62,6 +62,7 @@
private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
private KeyguardQuickAffordancePickerViewModel.Factory
mKeyguardQuickAffordancePickerViewModelFactory;
+ private KeyguardQuickAffordanceProviderClient mKeyguardQuickAffordanceProviderClient;
private FragmentFactory mFragmentFactory;
@Override
@@ -141,7 +142,7 @@
Context context) {
if (mKeyguardQuickAffordancePickerInteractor == null) {
final KeyguardQuickAffordanceProviderClient client =
- new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
+ getKeyguardQuickAffordancePickerProviderClient(context);
mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
client);
@@ -170,4 +171,15 @@
}
return mFragmentFactory;
}
+
+ /** Returns the {@link KeyguardQuickAffordanceProviderClient}. */
+ public KeyguardQuickAffordanceProviderClient getKeyguardQuickAffordancePickerProviderClient(
+ Context context) {
+ if (mKeyguardQuickAffordanceProviderClient == null) {
+ mKeyguardQuickAffordanceProviderClient =
+ new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
+ }
+
+ return mKeyguardQuickAffordanceProviderClient;
+ }
}
diff --git a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
index 5846107..0209391 100644
--- a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
+++ b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
@@ -60,8 +60,11 @@
}
private fun List<Client.Flag>.isFeatureEnabled(): Boolean {
- return find { flag -> flag.name == Contract.FlagsTable.FLAG_NAME_FEATURE_ENABLED }?.value ==
- true
+ return find { flag ->
+ flag.name ==
+ Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED
+ }
+ ?.value == true
}
private fun Client.Slot.toModel(): SlotModel {
diff --git a/src_override/com/android/wallpaper/config/Flags.java b/src_override/com/android/wallpaper/config/Flags.java
index 42731de..d35d88f 100644
--- a/src_override/com/android/wallpaper/config/Flags.java
+++ b/src_override/com/android/wallpaper/config/Flags.java
@@ -16,5 +16,4 @@
package com.android.wallpaper.config;
public class Flags extends BaseFlags {
- public static boolean enableCustomClocks = false;
}