Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c86a4bd authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

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
parent 5ec382d4
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -13,40 +13,38 @@
 * 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;
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
    public ClockSectionView createView(Context context) {
        ClockSectionView view = (ClockSectionView) LayoutInflater.from(context).inflate(
    override fun createView(context: Context): ClockSectionView {
        val view =
            LayoutInflater.from(context)
                .inflate(
                    R.layout.clock_section_view,
                null);
        view.setOnClickListener(v ->
                mNavigationController.navigateTo(new ClockCustomDemoFragment()));
        return view;
                    null,
                ) as ClockSectionView
        view.setOnClickListener { navigationController.navigateTo(ClockCustomDemoFragment()) }
        return view
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ public class ThemePickerInjector extends WallpaperPicker2Injector
    private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
    private KeyguardQuickAffordancePickerViewModel.Factory
            mKeyguardQuickAffordancePickerViewModelFactory;
    private KeyguardQuickAffordanceProviderClient mKeyguardQuickAffordanceProviderClient;
    private FragmentFactory mFragmentFactory;

    @Override
@@ -141,7 +142,7 @@ public class ThemePickerInjector extends WallpaperPicker2Injector
            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 @@ public class ThemePickerInjector extends WallpaperPicker2Injector
        }
        return mFragmentFactory;
    }

    /** Returns the {@link KeyguardQuickAffordanceProviderClient}. */
    public KeyguardQuickAffordanceProviderClient getKeyguardQuickAffordancePickerProviderClient(
            Context context) {
        if (mKeyguardQuickAffordanceProviderClient == null) {
            mKeyguardQuickAffordanceProviderClient =
                    new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
        }

        return mKeyguardQuickAffordanceProviderClient;
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -60,8 +60,11 @@ class KeyguardQuickAffordancePickerRepository(
    }

    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 {
+0 −1
Original line number Diff line number Diff line
@@ -16,5 +16,4 @@
package com.android.wallpaper.config;

public class Flags extends BaseFlags {
    public static boolean enableCustomClocks = false;
}