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

Commit c82bff09 authored by Catherine Liang's avatar Catherine Liang Committed by Android (Google) Code Review
Browse files

Merge "Update previews on color config change (2/2)" into main

parents 6e58824b 71492246
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import dagger.hilt.android.scopes.ViewModelScoped
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.combine

@ViewModelScoped
@@ -31,7 +32,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them
    private val isDarkMode = interactor.isDarkMode
    val isEnabled = interactor.isEnabled

    private val overridingIsDarkMode = MutableStateFlow<Boolean?>(null)
    private val _overridingIsDarkMode = MutableStateFlow<Boolean?>(null)
    val overridingIsDarkMode = _overridingIsDarkMode.asStateFlow()
    val previewingIsDarkMode =
        combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled ->
            if (isEnabled) {
@@ -41,7 +43,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them

    val toggleDarkMode =
        combine(overridingIsDarkMode, isDarkMode) { override, current ->
            { overridingIsDarkMode.value = override?.not() ?: !current }
            // Only set override if its value is different from current, else set to null
            { _overridingIsDarkMode.value = if (override == null) !current else null }
        }

    val onApply: Flow<(suspend () -> Unit)?> =
@@ -55,6 +58,6 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them
        }

    fun resetPreview() {
        overridingIsDarkMode.value = null
        _overridingIsDarkMode.value = null
    }
}
+7 −4
Original line number Diff line number Diff line
@@ -238,6 +238,7 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO
        context: Context,
        clockHostView: View,
        viewModel: CustomizationPickerViewModel2,
        colorUpdateViewModel: ColorUpdateViewModel,
        lifecycleOwner: LifecycleOwner,
        clockViewFactory: ClockViewFactory,
    ) {
@@ -295,12 +296,12 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO
                            clockPickerViewModel.previewingSeedColor,
                            clockPickerViewModel.previewingClock,
                            clockPickerViewModel.previewingFontAxisMap,
                            ::Triple,
                            colorUpdateViewModel.systemColorsUpdated,
                            ::Quadruple,
                        )
                        .collect { triple ->
                            val (color, clock, axisMap) = triple
                        .collect { quadruple ->
                            val (color, clock, axisMap, _) = quadruple
                            clockViewFactory.updateColor(clock.clockId, color)

                            val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) }
                            clockViewFactory.updateFontAxes(clock.clockId, axisList)
                        }
@@ -308,4 +309,6 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO
            }
        }
    }

    data class Quadruple<A, B, C, D>(val first: A, val second: B, val third: C, val fourth: D)
}
+10 −4
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptio
import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel
import com.android.wallpaper.model.Screen
import com.android.wallpaper.picker.common.preview.ui.binder.WorkspaceCallbackBinder.Companion.sendMessage
import com.android.wallpaper.picker.customization.ui.viewmodel.ColorUpdateViewModel
import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel
import javax.inject.Inject
import javax.inject.Singleton
@@ -56,12 +57,14 @@ constructor(
    override fun bind(
        workspaceCallback: Message,
        viewModel: CustomizationOptionsViewModel,
        colorUpdateViewModel: ColorUpdateViewModel,
        screen: Screen,
        lifecycleOwner: LifecycleOwner,
    ) {
        defaultWorkspaceCallbackBinder.bind(
            workspaceCallback = workspaceCallback,
            viewModel = viewModel,
            colorUpdateViewModel = colorUpdateViewModel,
            screen = screen,
            lifecycleOwner = lifecycleOwner,
        )
@@ -158,10 +161,11 @@ constructor(
                        launch {
                            combine(
                                    viewModel.colorPickerViewModel2.previewingColorOption,
                                    viewModel.darkModeViewModel.previewingIsDarkMode,
                                    ::Pair,
                                    viewModel.darkModeViewModel.overridingIsDarkMode,
                                    colorUpdateViewModel.systemColorsUpdated,
                                    ::Triple,
                                )
                                .collect { (colorModel, darkMode) ->
                                .collect { (colorModel, darkMode, _) ->
                                    val bundle =
                                        Bundle().apply {
                                            if (colorModel != null) {
@@ -174,8 +178,10 @@ constructor(
                                                putIntArray(KEY_COLOR_VALUES, colors)
                                            }

                                            if (darkMode != null) {
                                                putBoolean(KEY_DARK_MODE, darkMode)
                                            }
                                        }
                                    workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle)
                                }
                        }