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

Commit 4d0b8742 authored by George Lin's avatar George Lin Committed by Android (Google) Code Review
Browse files

Merge "Make preview smartspace corresponds to the selected clock (1/3)" into main

parents 28ef0109 e09c7a0d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -52,7 +52,6 @@ import javax.inject.Inject
import javax.inject.Singleton
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.launch

@Singleton
@@ -259,7 +258,7 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO
            lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
                launch {
                    combine(
                            clockPickerViewModel.previewingClock.filterNotNull(),
                            clockPickerViewModel.previewingClock,
                            clockPickerViewModel.previewingClockSize,
                        ) { clock, size ->
                            clock to size
+4 −2
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn

/** View model for the clock customization screen. */
@@ -120,8 +121,9 @@ constructor(
    val selectedClock = clockPickerInteractor.selectedClock
    val previewingClock =
        combine(overridingClock, selectedClock) { overridingClock, selectedClock ->
            overridingClock ?: selectedClock
                (overridingClock ?: selectedClock)
            }
            .shareIn(viewModelScope, SharingStarted.WhileSubscribed(), 1)

    data class ClockStyleModel(val thumbnail: Drawable, val showEditButton: StateFlow<Boolean>)

+52 −0
Original line number Diff line number Diff line
@@ -25,13 +25,21 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.android.customization.model.grid.DefaultShapeGridManager.Companion.COL_GRID_NAME
import com.android.customization.model.grid.DefaultShapeGridManager.Companion.COL_SHAPE_KEY
import com.android.customization.picker.clock.shared.ClockSize
import com.android.customization.picker.clock.ui.view.ClockViewFactory
import com.android.customization.picker.color.data.util.MaterialColorsGenerator
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.CLOCK_SIZE_DYNAMIC
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.CLOCK_SIZE_SMALL
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_CLOCK_SIZE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_HIDE_SMART_SPACE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_QUICK_AFFORDANCE_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEY_SLOT_ID
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_DEFAULT_PREVIEW
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_HIDE_SMART_SPACE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_PREVIEW_CLOCK_SIZE
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_PREVIEW_QUICK_AFFORDANCE_SELECTED
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.MESSAGE_ID_START_CUSTOMIZING_QUICK_AFFORDANCES
@@ -60,6 +68,7 @@ constructor(
        colorUpdateViewModel: ColorUpdateViewModel,
        screen: Screen,
        lifecycleOwner: LifecycleOwner,
        clockViewFactory: ClockViewFactory,
    ) {
        defaultWorkspaceCallbackBinder.bind(
            workspaceCallback = workspaceCallback,
@@ -67,6 +76,7 @@ constructor(
            colorUpdateViewModel = colorUpdateViewModel,
            screen = screen,
            lifecycleOwner = lifecycleOwner,
            clockViewFactory = clockViewFactory,
        )

        if (viewModel !is ThemePickerCustomizationOptionsViewModel) {
@@ -135,6 +145,48 @@ constructor(
                                    }
                                }
                        }

                        launch {
                            combine(
                                    viewModel.clockPickerViewModel.previewingClock,
                                    viewModel.clockPickerViewModel.previewingClockSize,
                                    ::Pair,
                                )
                                .collect { (previewingClock, previewingClockSize) ->
                                    val hideSmartspace =
                                        clockViewFactory
                                            .getController(previewingClock.clockId)
                                            .let {
                                                when (previewingClockSize) {
                                                    ClockSize.DYNAMIC ->
                                                        it.largeClock.config
                                                            .hasCustomWeatherDataDisplay
                                                    ClockSize.SMALL ->
                                                        it.smallClock.config
                                                            .hasCustomWeatherDataDisplay
                                                }
                                            }
                                    workspaceCallback.sendMessage(
                                        MESSAGE_ID_HIDE_SMART_SPACE,
                                        Bundle().apply {
                                            putBoolean(KEY_HIDE_SMART_SPACE, hideSmartspace)
                                        },
                                    )

                                    workspaceCallback.sendMessage(
                                        MESSAGE_ID_PREVIEW_CLOCK_SIZE,
                                        Bundle().apply {
                                            putString(
                                                KEY_CLOCK_SIZE,
                                                when (previewingClockSize) {
                                                    ClockSize.DYNAMIC -> CLOCK_SIZE_DYNAMIC
                                                    ClockSize.SMALL -> CLOCK_SIZE_SMALL
                                                },
                                            )
                                        },
                                    )
                                }
                        }
                    }
                }
            Screen.HOME_SCREEN ->