Loading src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import dagger.hilt.android.scopes.ViewModelScoped import javax.inject.Inject import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine @ViewModelScoped @ViewModelScoped Loading @@ -31,7 +32,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them private val isDarkMode = interactor.isDarkMode private val isDarkMode = interactor.isDarkMode val isEnabled = interactor.isEnabled val isEnabled = interactor.isEnabled private val overridingIsDarkMode = MutableStateFlow<Boolean?>(null) private val _overridingIsDarkMode = MutableStateFlow<Boolean?>(null) val overridingIsDarkMode = _overridingIsDarkMode.asStateFlow() val previewingIsDarkMode = val previewingIsDarkMode = combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled -> combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled -> if (isEnabled) { if (isEnabled) { Loading @@ -41,7 +43,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them val toggleDarkMode = val toggleDarkMode = combine(overridingIsDarkMode, isDarkMode) { override, current -> 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)?> = val onApply: Flow<(suspend () -> Unit)?> = Loading @@ -55,6 +58,6 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them } } fun resetPreview() { fun resetPreview() { overridingIsDarkMode.value = null _overridingIsDarkMode.value = null } } } } src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt +7 −4 Original line number Original line Diff line number Diff line Loading @@ -238,6 +238,7 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO context: Context, context: Context, clockHostView: View, clockHostView: View, viewModel: CustomizationPickerViewModel2, viewModel: CustomizationPickerViewModel2, colorUpdateViewModel: ColorUpdateViewModel, lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner, clockViewFactory: ClockViewFactory, clockViewFactory: ClockViewFactory, ) { ) { Loading Loading @@ -295,12 +296,12 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO clockPickerViewModel.previewingSeedColor, clockPickerViewModel.previewingSeedColor, clockPickerViewModel.previewingClock, clockPickerViewModel.previewingClock, clockPickerViewModel.previewingFontAxisMap, clockPickerViewModel.previewingFontAxisMap, ::Triple, colorUpdateViewModel.systemColorsUpdated, ::Quadruple, ) ) .collect { triple -> .collect { quadruple -> val (color, clock, axisMap) = triple val (color, clock, axisMap, _) = quadruple clockViewFactory.updateColor(clock.clockId, color) clockViewFactory.updateColor(clock.clockId, color) val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) } val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) } clockViewFactory.updateFontAxes(clock.clockId, axisList) clockViewFactory.updateFontAxes(clock.clockId, axisList) } } Loading @@ -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) } } src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt +10 −4 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptio import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel import com.android.wallpaper.model.Screen import com.android.wallpaper.model.Screen import com.android.wallpaper.picker.common.preview.ui.binder.WorkspaceCallbackBinder.Companion.sendMessage 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 com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel import javax.inject.Inject import javax.inject.Inject import javax.inject.Singleton import javax.inject.Singleton Loading @@ -56,12 +57,14 @@ constructor( override fun bind( override fun bind( workspaceCallback: Message, workspaceCallback: Message, viewModel: CustomizationOptionsViewModel, viewModel: CustomizationOptionsViewModel, colorUpdateViewModel: ColorUpdateViewModel, screen: Screen, screen: Screen, lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner, ) { ) { defaultWorkspaceCallbackBinder.bind( defaultWorkspaceCallbackBinder.bind( workspaceCallback = workspaceCallback, workspaceCallback = workspaceCallback, viewModel = viewModel, viewModel = viewModel, colorUpdateViewModel = colorUpdateViewModel, screen = screen, screen = screen, lifecycleOwner = lifecycleOwner, lifecycleOwner = lifecycleOwner, ) ) Loading Loading @@ -158,10 +161,11 @@ constructor( launch { launch { combine( combine( viewModel.colorPickerViewModel2.previewingColorOption, viewModel.colorPickerViewModel2.previewingColorOption, viewModel.darkModeViewModel.previewingIsDarkMode, viewModel.darkModeViewModel.overridingIsDarkMode, ::Pair, colorUpdateViewModel.systemColorsUpdated, ::Triple, ) ) .collect { (colorModel, darkMode) -> .collect { (colorModel, darkMode, _) -> val bundle = val bundle = Bundle().apply { Bundle().apply { if (colorModel != null) { if (colorModel != null) { Loading @@ -174,8 +178,10 @@ constructor( putIntArray(KEY_COLOR_VALUES, colors) putIntArray(KEY_COLOR_VALUES, colors) } } if (darkMode != null) { putBoolean(KEY_DARK_MODE, darkMode) putBoolean(KEY_DARK_MODE, darkMode) } } } workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle) workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle) } } } } Loading Loading
src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import dagger.hilt.android.scopes.ViewModelScoped import javax.inject.Inject import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine @ViewModelScoped @ViewModelScoped Loading @@ -31,7 +32,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them private val isDarkMode = interactor.isDarkMode private val isDarkMode = interactor.isDarkMode val isEnabled = interactor.isEnabled val isEnabled = interactor.isEnabled private val overridingIsDarkMode = MutableStateFlow<Boolean?>(null) private val _overridingIsDarkMode = MutableStateFlow<Boolean?>(null) val overridingIsDarkMode = _overridingIsDarkMode.asStateFlow() val previewingIsDarkMode = val previewingIsDarkMode = combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled -> combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled -> if (isEnabled) { if (isEnabled) { Loading @@ -41,7 +43,8 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them val toggleDarkMode = val toggleDarkMode = combine(overridingIsDarkMode, isDarkMode) { override, current -> 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)?> = val onApply: Flow<(suspend () -> Unit)?> = Loading @@ -55,6 +58,6 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them } } fun resetPreview() { fun resetPreview() { overridingIsDarkMode.value = null _overridingIsDarkMode.value = null } } } }
src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt +7 −4 Original line number Original line Diff line number Diff line Loading @@ -238,6 +238,7 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO context: Context, context: Context, clockHostView: View, clockHostView: View, viewModel: CustomizationPickerViewModel2, viewModel: CustomizationPickerViewModel2, colorUpdateViewModel: ColorUpdateViewModel, lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner, clockViewFactory: ClockViewFactory, clockViewFactory: ClockViewFactory, ) { ) { Loading Loading @@ -295,12 +296,12 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO clockPickerViewModel.previewingSeedColor, clockPickerViewModel.previewingSeedColor, clockPickerViewModel.previewingClock, clockPickerViewModel.previewingClock, clockPickerViewModel.previewingFontAxisMap, clockPickerViewModel.previewingFontAxisMap, ::Triple, colorUpdateViewModel.systemColorsUpdated, ::Quadruple, ) ) .collect { triple -> .collect { quadruple -> val (color, clock, axisMap) = triple val (color, clock, axisMap, _) = quadruple clockViewFactory.updateColor(clock.clockId, color) clockViewFactory.updateColor(clock.clockId, color) val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) } val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) } clockViewFactory.updateFontAxes(clock.clockId, axisList) clockViewFactory.updateFontAxes(clock.clockId, axisList) } } Loading @@ -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) } }
src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt +10 −4 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptio import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel import com.android.wallpaper.model.Screen import com.android.wallpaper.model.Screen import com.android.wallpaper.picker.common.preview.ui.binder.WorkspaceCallbackBinder.Companion.sendMessage 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 com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel import javax.inject.Inject import javax.inject.Inject import javax.inject.Singleton import javax.inject.Singleton Loading @@ -56,12 +57,14 @@ constructor( override fun bind( override fun bind( workspaceCallback: Message, workspaceCallback: Message, viewModel: CustomizationOptionsViewModel, viewModel: CustomizationOptionsViewModel, colorUpdateViewModel: ColorUpdateViewModel, screen: Screen, screen: Screen, lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner, ) { ) { defaultWorkspaceCallbackBinder.bind( defaultWorkspaceCallbackBinder.bind( workspaceCallback = workspaceCallback, workspaceCallback = workspaceCallback, viewModel = viewModel, viewModel = viewModel, colorUpdateViewModel = colorUpdateViewModel, screen = screen, screen = screen, lifecycleOwner = lifecycleOwner, lifecycleOwner = lifecycleOwner, ) ) Loading Loading @@ -158,10 +161,11 @@ constructor( launch { launch { combine( combine( viewModel.colorPickerViewModel2.previewingColorOption, viewModel.colorPickerViewModel2.previewingColorOption, viewModel.darkModeViewModel.previewingIsDarkMode, viewModel.darkModeViewModel.overridingIsDarkMode, ::Pair, colorUpdateViewModel.systemColorsUpdated, ::Triple, ) ) .collect { (colorModel, darkMode) -> .collect { (colorModel, darkMode, _) -> val bundle = val bundle = Bundle().apply { Bundle().apply { if (colorModel != null) { if (colorModel != null) { Loading @@ -174,8 +178,10 @@ constructor( putIntArray(KEY_COLOR_VALUES, colors) putIntArray(KEY_COLOR_VALUES, colors) } } if (darkMode != null) { putBoolean(KEY_DARK_MODE, darkMode) putBoolean(KEY_DARK_MODE, darkMode) } } } workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle) workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle) } } } } Loading