Adapt all screen previews to recent changes (2/2)
Adapt wallpaper picker screen preview binders and view models to changes
that would allow screen previews to reload when the preview is dirty.
Bug: 270193793
Test: Manually verified anywhere the preview is used
Test: Adjusted view model test to screen preview changes, test still
passes
Change-Id: Idff31e7742d9e94f6758b45de8b1df434c620261
diff --git a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt b/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
index d8cad82..4368c5b 100644
--- a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
+++ b/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
@@ -122,10 +122,10 @@
}
},
wallpaperInteractor = wallpaperInteractor,
+ screen = CustomizationSections.Screen.HOME_SCREEN,
),
lifecycleOwner = this,
offsetToStart = false,
- screen = CustomizationSections.Screen.HOME_SCREEN,
onPreviewDirty = { activity?.recreate() },
)
}
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index 2d36db4..050c7b2 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -262,6 +262,7 @@
?: KeyguardQuickAffordancePickerViewModel.Factory(
context,
getKeyguardQuickAffordancePickerInteractor(context),
+ getWallpaperInteractor(context),
getCurrentWallpaperInfoFactory(context),
) { intent ->
context.startActivity(intent)
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index fc1e018..7233c80 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -26,6 +26,7 @@
import com.android.customization.picker.clock.ui.binder.ClockSettingsBinder
import com.android.systemui.shared.clocks.shared.model.ClockPreviewConstants
import com.android.wallpaper.R
+import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.AppbarFragment
import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
@@ -106,9 +107,12 @@
)
}
},
+ wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+ screen = CustomizationSections.Screen.LOCK_SCREEN,
),
lifecycleOwner = this,
offsetToStart = displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(activity),
+ onPreviewDirty = { activity.recreate() },
)
ClockSettingsBinder.bind(
diff --git a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
index c6b2023..b2b9c66 100644
--- a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
+++ b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
@@ -27,6 +27,7 @@
import com.android.customization.module.ThemePickerInjector
import com.android.customization.picker.color.ui.binder.ColorPickerBinder
import com.android.wallpaper.R
+import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.AppbarFragment
import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
@@ -103,10 +104,13 @@
onWallpaperColorChanged = { colors ->
wcViewModel.setLockWallpaperColors(colors)
},
+ wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+ screen = CustomizationSections.Screen.LOCK_SCREEN,
),
lifecycleOwner = this,
offsetToStart =
displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(requireActivity()),
+ onPreviewDirty = { activity?.recreate() },
)
ScreenPreviewBinder.bind(
activity = requireActivity(),
@@ -135,10 +139,13 @@
onWallpaperColorChanged = { colors ->
wcViewModel.setLockWallpaperColors(colors)
},
+ wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+ screen = CustomizationSections.Screen.HOME_SCREEN,
),
lifecycleOwner = this,
offsetToStart =
displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(requireActivity()),
+ onPreviewDirty = { activity?.recreate() },
)
val darkModeToggleContainerView: FrameLayout =
view.requireViewById(R.id.dark_mode_toggle_container)
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
index 67c63b7..f63f666 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
@@ -49,6 +49,7 @@
lifecycleOwner = lifecycleOwner,
offsetToStart = offsetToStart,
dimWallpaper = true,
+ onPreviewDirty = { activity.recreate() },
)
previewView.contentDescription =
@@ -62,9 +63,7 @@
.collect { slotId ->
binding.sendMessage(
KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED,
- Bundle().apply {
- putString(KeyguardPreviewConstants.KEY_SLOT_ID, slotId)
- },
+ Bundle().apply { putString(KeyguardPreviewConstants.KEY_SLOT_ID, slotId) },
)
}
}
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index 397d3a9..029d76e 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -32,11 +32,13 @@
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
import com.android.wallpaper.R
import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonStyle
import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonViewModel
import com.android.wallpaper.picker.common.dialog.ui.viewmodel.DialogViewModel
import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
import com.android.wallpaper.util.PreviewUtils
@@ -60,6 +62,7 @@
private constructor(
context: Context,
private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+ private val wallpaperInteractor: WallpaperInteractor,
private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
activityStarter: (Intent) -> Unit,
) : ViewModel() {
@@ -98,6 +101,8 @@
)
}
},
+ wallpaperInteractor = wallpaperInteractor,
+ screen = CustomizationSections.Screen.LOCK_SCREEN,
)
/** A locally-selected slot, if the user ever switched from the original one. */
@@ -455,6 +460,7 @@
class Factory(
private val context: Context,
private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+ private val wallpaperInteractor: WallpaperInteractor,
private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
private val activityStarter: (Intent) -> Unit,
) : ViewModelProvider.Factory {
@@ -463,6 +469,7 @@
return KeyguardQuickAffordancePickerViewModel(
context = context,
quickAffordanceInteractor = quickAffordanceInteractor,
+ wallpaperInteractor = wallpaperInteractor,
wallpaperInfoFactory = wallpaperInfoFactory,
activityStarter = activityStarter,
)
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index 103ae84..155b912 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -34,10 +34,14 @@
import com.android.wallpaper.module.InjectorProvider
import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
+import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
import com.android.wallpaper.testing.FakeSnapshotStore
+import com.android.wallpaper.testing.FakeWallpaperClient
import com.android.wallpaper.testing.TestCurrentWallpaperInfoFactory
import com.android.wallpaper.testing.TestInjector
+import com.android.wallpaper.testing.TestWallpaperPreferences
import com.android.wallpaper.testing.collectLastValue
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
@@ -66,6 +70,7 @@
private lateinit var testScope: TestScope
private lateinit var client: FakeCustomizationProviderClient
private lateinit var quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor
+ private lateinit var wallpaperInteractor: WallpaperInteractor
private var latestStartedActivityIntent: Intent? = null
@@ -94,10 +99,21 @@
.apply { runBlocking { setUpSnapshotRestorer(FakeSnapshotStore()) } }
},
)
+ wallpaperInteractor =
+ WallpaperInteractor(
+ repository =
+ WallpaperRepository(
+ scope = testScope.backgroundScope,
+ client = FakeWallpaperClient(),
+ wallpaperPreferences = TestWallpaperPreferences(),
+ backgroundDispatcher = testDispatcher,
+ ),
+ )
underTest =
KeyguardQuickAffordancePickerViewModel.Factory(
context = context,
quickAffordanceInteractor = quickAffordanceInteractor,
+ wallpaperInteractor = wallpaperInteractor,
wallpaperInfoFactory = TestCurrentWallpaperInfoFactory(context),
activityStarter = { intent -> latestStartedActivityIntent = intent },
)