diff options
Diffstat (limited to 'src/com/android/customization/picker/preview')
3 files changed, 34 insertions, 11 deletions
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt index a828f837..71dfe1da 100644 --- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt +++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt @@ -23,7 +23,6 @@ import android.graphics.Rect import android.view.TouchDelegate import android.view.View import android.view.View.OnAttachStateChangeListener -import android.view.ViewGroup import android.view.ViewStub import androidx.activity.ComponentActivity import androidx.constraintlayout.helper.widget.Carousel @@ -39,7 +38,9 @@ import com.android.customization.picker.clock.ui.fragment.ClockSettingsFragment import com.android.customization.picker.clock.ui.view.ClockCarouselView import com.android.customization.picker.clock.ui.view.ClockViewFactory import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel +import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor import com.android.wallpaper.R +import com.android.wallpaper.model.CustomizationSectionController import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController import com.android.wallpaper.model.WallpaperColorsViewModel import com.android.wallpaper.model.WallpaperPreviewNavigator @@ -49,6 +50,7 @@ import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInt import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewClickView import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewView +import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationPickerViewModel import com.android.wallpaper.util.DisplayUtils import kotlinx.coroutines.Job import kotlinx.coroutines.launch @@ -70,8 +72,10 @@ class PreviewWithClockCarouselSectionController( private val navigationController: CustomizationSectionNavigationController, wallpaperInteractor: WallpaperInteractor, themedIconInteractor: ThemedIconInteractor, + colorPickerInteractor: ColorPickerInteractor, wallpaperManager: WallpaperManager, private val isTwoPaneAndSmallWidth: Boolean, + customizationPickerViewModel: CustomizationPickerViewModel, ) : PreviewWithThemeSectionController( activity, @@ -83,8 +87,10 @@ class PreviewWithClockCarouselSectionController( wallpaperPreviewNavigator, wallpaperInteractor, themedIconInteractor, + colorPickerInteractor, wallpaperManager, isTwoPaneAndSmallWidth, + customizationPickerViewModel, ) { private val viewModel = @@ -98,8 +104,11 @@ class PreviewWithClockCarouselSectionController( override val hideLockScreenClockPreview = true - override fun createView(context: Context): ScreenPreviewView { - val view = super.createView(context) + override fun createView( + context: Context, + params: CustomizationSectionController.ViewCreationParams, + ): ScreenPreviewView { + val view = super.createView(context, params) if (screen == CustomizationSections.Screen.LOCK_SCREEN) { val screenPreviewClickView: ScreenPreviewClickView = view.requireViewById(R.id.screen_preview_click_view) @@ -146,12 +155,6 @@ class PreviewWithClockCarouselSectionController( guidelineEnd.layoutParams = layoutParams } - // TODO (b/270716937) We should handle the single clock case in the clock carousel - // itself - val singleClockViewStub: ViewStub = view.requireViewById(R.id.single_clock_view_stub) - singleClockViewStub.layoutResource = R.layout.single_clock_view - val singleClockView = singleClockViewStub.inflate() as ViewGroup - /** * Only bind after [Carousel.onAttachedToWindow]. This is to avoid the race condition * that the flow emits before attached to window where [Carousel.mMotionLayout] is still @@ -167,7 +170,6 @@ class PreviewWithClockCarouselSectionController( ClockCarouselViewBinder.bind( context = context, carouselView = carouselView, - singleClockView = singleClockView, screenPreviewClickView = screenPreviewClickView, viewModel = viewModel, clockViewFactory = clockViewFactory, diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt index 56c6c30a..c4d6be45 100644 --- a/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt +++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt @@ -22,6 +22,7 @@ import android.app.WallpaperManager import android.content.Context import androidx.lifecycle.LifecycleOwner import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor +import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor import com.android.customization.picker.preview.ui.viewmodel.PreviewWithThemeViewModel import com.android.wallpaper.R import com.android.wallpaper.model.WallpaperColorsViewModel @@ -30,6 +31,7 @@ import com.android.wallpaper.module.CurrentWallpaperInfoFactory import com.android.wallpaper.module.CustomizationSections import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController +import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationPickerViewModel import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel import com.android.wallpaper.util.DisplayUtils import com.android.wallpaper.util.PreviewUtils @@ -49,8 +51,10 @@ open class PreviewWithThemeSectionController( wallpaperPreviewNavigator: WallpaperPreviewNavigator, private val wallpaperInteractor: WallpaperInteractor, private val themedIconInteractor: ThemedIconInteractor, + private val colorPickerInteractor: ColorPickerInteractor, wallpaperManager: WallpaperManager, isTwoPaneAndSmallWidth: Boolean, + customizationPickerViewModel: CustomizationPickerViewModel, ) : ScreenPreviewSectionController( activity, @@ -62,7 +66,8 @@ open class PreviewWithThemeSectionController( wallpaperPreviewNavigator, wallpaperInteractor, wallpaperManager, - isTwoPaneAndSmallWidth + isTwoPaneAndSmallWidth, + customizationPickerViewModel, ) { override fun createScreenPreviewViewModel(context: Context): ScreenPreviewViewModel { return PreviewWithThemeViewModel( @@ -114,6 +119,7 @@ open class PreviewWithThemeSectionController( initialExtrasProvider = { getInitialExtras(isOnLockScreen) }, wallpaperInteractor = wallpaperInteractor, themedIconInteractor = themedIconInteractor, + colorPickerInteractor = colorPickerInteractor, screen = screen, ) } diff --git a/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt b/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt index 435878dc..83f986da 100644 --- a/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt +++ b/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt @@ -20,12 +20,14 @@ package com.android.customization.picker.preview.ui.viewmodel import android.app.WallpaperColors import android.os.Bundle import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor +import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor import com.android.wallpaper.model.WallpaperInfo import com.android.wallpaper.module.CustomizationSections import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel import com.android.wallpaper.util.PreviewUtils import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine /** A ThemePicker version of the [ScreenPreviewViewModel] */ class PreviewWithThemeViewModel( @@ -35,6 +37,7 @@ class PreviewWithThemeViewModel( onWallpaperColorChanged: (WallpaperColors?) -> Unit = {}, wallpaperInteractor: WallpaperInteractor, private val themedIconInteractor: ThemedIconInteractor? = null, + colorPickerInteractor: ColorPickerInteractor? = null, screen: CustomizationSections.Screen, ) : ScreenPreviewViewModel( @@ -46,4 +49,16 @@ class PreviewWithThemeViewModel( screen, ) { override fun workspaceUpdateEvents(): Flow<Boolean>? = themedIconInteractor?.isActivated + + private val wallpaperIsLoading = super.isLoading + + override val isLoading: Flow<Boolean> = + colorPickerInteractor?.let { + combine(wallpaperIsLoading, colorPickerInteractor.isApplyingSystemColor) { + wallpaperIsLoading, + colorIsLoading -> + wallpaperIsLoading || colorIsLoading + } + } + ?: wallpaperIsLoading } |