Merge "Fix color picker section showing no wallpaper color on build" into tm-qpr-dev
diff --git a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
index 5e1e542..5784855 100644
--- a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
+++ b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
@@ -74,76 +74,99 @@
.toMap()
}
- /** The list of all available wallpaper colors */
- private val wallpaperColorOptions: Flow<List<ColorOptionViewModel>> =
+ /** The list of all color options mapped by their color type */
+ private val allColorOptions: Flow<Map<ColorType, List<ColorOptionViewModel>>> =
interactor.colorOptions.map { colorOptions ->
- colorOptions[ColorType.WALLPAPER_COLOR]!!.map { colorOptionModel ->
- val colorSeedOption: ColorSeedOption =
- colorOptionModel.colorOption as ColorSeedOption
- val colors = colorSeedOption.previewInfo.resolveColors(context.resources)
- ColorOptionViewModel(
- color0 = colors[0],
- color1 = colors[1],
- color2 = colors[2],
- color3 = colors[3],
- contentDescription = colorSeedOption.getContentDescription(context).toString(),
- isSelected = colorOptionModel.isSelected,
- onClick =
- if (colorOptionModel.isSelected) {
- null
- } else {
- { viewModelScope.launch { interactor.select(colorOptionModel) } }
+ colorOptions
+ .map { colorOptionEntry ->
+ colorOptionEntry.key to
+ when (colorOptionEntry.key) {
+ ColorType.WALLPAPER_COLOR -> {
+ colorOptionEntry.value.map { colorOptionModel ->
+ val colorSeedOption: ColorSeedOption =
+ colorOptionModel.colorOption as ColorSeedOption
+ val colors =
+ colorSeedOption.previewInfo.resolveColors(context.resources)
+ ColorOptionViewModel(
+ color0 = colors[0],
+ color1 = colors[1],
+ color2 = colors[2],
+ color3 = colors[3],
+ contentDescription =
+ colorSeedOption
+ .getContentDescription(context)
+ .toString(),
+ isSelected = colorOptionModel.isSelected,
+ onClick =
+ if (colorOptionModel.isSelected) {
+ null
+ } else {
+ {
+ viewModelScope.launch {
+ interactor.select(colorOptionModel)
+ }
+ }
+ }
+ )
+ }
+ }
+ ColorType.BASIC_COLOR -> {
+ colorOptionEntry.value.map { colorOptionModel ->
+ val colorBundle: ColorBundle =
+ colorOptionModel.colorOption as ColorBundle
+ val primaryColor =
+ colorBundle.previewInfo.resolvePrimaryColor(
+ context.resources
+ )
+ val secondaryColor =
+ colorBundle.previewInfo.resolveSecondaryColor(
+ context.resources
+ )
+ ColorOptionViewModel(
+ color0 = primaryColor,
+ color1 = secondaryColor,
+ color2 = primaryColor,
+ color3 = secondaryColor,
+ contentDescription =
+ colorBundle.getContentDescription(context).toString(),
+ isSelected = colorOptionModel.isSelected,
+ onClick =
+ if (colorOptionModel.isSelected) {
+ null
+ } else {
+ {
+ viewModelScope.launch {
+ interactor.select(colorOptionModel)
+ }
+ }
+ },
+ )
+ }
+ }
}
- )
- }
- }
-
- /** The list of all available preset colors */
- private val presetColorOptions: Flow<List<ColorOptionViewModel>> =
- interactor.colorOptions.map { colorOptions ->
- colorOptions[ColorType.BASIC_COLOR]!!.map { colorOptionModel ->
- val colorBundle: ColorBundle = colorOptionModel.colorOption as ColorBundle
- val primaryColor = colorBundle.previewInfo.resolvePrimaryColor(context.resources)
- val secondaryColor =
- colorBundle.previewInfo.resolveSecondaryColor(context.resources)
- ColorOptionViewModel(
- color0 = primaryColor,
- color1 = secondaryColor,
- color2 = primaryColor,
- color3 = secondaryColor,
- contentDescription = colorBundle.getContentDescription(context).toString(),
- isSelected = colorOptionModel.isSelected,
- onClick =
- if (colorOptionModel.isSelected) {
- null
- } else {
- { viewModelScope.launch { interactor.select(colorOptionModel) } }
- },
- )
- }
+ }
+ .toMap()
}
/** The list of all available color options for the selected Color Type. */
val colorOptions: Flow<List<ColorOptionViewModel>> =
- combine(wallpaperColorOptions, presetColorOptions, selectedColorTypeId) {
- wallpaperOptions,
- presetOptions,
- selectedColorTypeIdOrNull ->
- when (selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR) {
- ColorType.WALLPAPER_COLOR -> wallpaperOptions
- ColorType.BASIC_COLOR -> presetOptions
- }
+ combine(allColorOptions, selectedColorTypeId) { allColorOptions, selectedColorTypeIdOrNull
+ ->
+ val selectedColorTypeId = selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR
+ allColorOptions[selectedColorTypeId]!!
}
/** The list of color options for the color section */
val colorSectionOptions: Flow<List<ColorOptionViewModel>> =
- combine(wallpaperColorOptions, presetColorOptions) { wallpaperOptions, presetOptions ->
+ allColorOptions.map { allColorOptions ->
+ val wallpaperOptions = allColorOptions[ColorType.WALLPAPER_COLOR]
+ val presetOptions = allColorOptions[ColorType.BASIC_COLOR]
val subOptions =
- wallpaperOptions.subList(0, min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size))
+ wallpaperOptions!!.subList(0, min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size))
// Add additional options based on preset colors if size of wallpaper color options is
// less than COLOR_SECTION_OPTION_SIZE
val additionalSubOptions =
- presetOptions.subList(
+ presetOptions!!.subList(
0,
min(
max(0, COLOR_SECTION_OPTION_SIZE - wallpaperOptions.size),