Refactor ThemePickerCustomizationOptionBinder (1/2)
1. Strcitly require the views
2. Type all the view values
Test: Manually tested it's still wokring
Bug: 372281743
Flag: com.android.systemui.shared.new_customization_picker_ui
Change-Id: I90013bb347aa41053f20b88cde35c07c5f7c56f7
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index 4c31618..60925bf 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -90,62 +90,56 @@
navigateToColorContrastSettingsActivity,
)
- val optionClock =
+ val optionClock: View =
lockScreenCustomizationOptionEntries
- .find { it.first == ThemePickerLockCustomizationOption.CLOCK }
- ?.second
- val optionClockIcon = optionClock?.findViewById<ImageView>(R.id.option_entry_clock_icon)
+ .first { it.first == ThemePickerLockCustomizationOption.CLOCK }
+ .second
+ val optionClockIcon: ImageView = optionClock.requireViewById(R.id.option_entry_clock_icon)
- val optionShortcut =
+ val optionShortcut: View =
lockScreenCustomizationOptionEntries
- .find { it.first == ThemePickerLockCustomizationOption.SHORTCUTS }
- ?.second
- val optionShortcutDescription =
- optionShortcut?.findViewById<TextView>(
- R.id.option_entry_keyguard_quick_affordance_description
- )
- val optionShortcutIcon1 =
- optionShortcut?.findViewById<ImageView>(
- R.id.option_entry_keyguard_quick_affordance_icon_1
- )
- val optionShortcutIcon2 =
- optionShortcut?.findViewById<ImageView>(
- R.id.option_entry_keyguard_quick_affordance_icon_2
- )
+ .first { it.first == ThemePickerLockCustomizationOption.SHORTCUTS }
+ .second
+ val optionShortcutDescription: TextView =
+ optionShortcut.requireViewById(R.id.option_entry_keyguard_quick_affordance_description)
+ val optionShortcutIcon1: ImageView =
+ optionShortcut.requireViewById(R.id.option_entry_keyguard_quick_affordance_icon_1)
+ val optionShortcutIcon2: ImageView =
+ optionShortcut.requireViewById(R.id.option_entry_keyguard_quick_affordance_icon_2)
- val optionMoreLockScreenSettings =
+ val optionMoreLockScreenSettings: View =
lockScreenCustomizationOptionEntries
- .find { it.first == ThemePickerLockCustomizationOption.MORE_LOCK_SCREEN_SETTINGS }
- ?.second
- optionMoreLockScreenSettings?.setOnClickListener {
+ .first { it.first == ThemePickerLockCustomizationOption.MORE_LOCK_SCREEN_SETTINGS }
+ .second
+ optionMoreLockScreenSettings.setOnClickListener {
navigateToMoreLockScreenSettingsActivity.invoke()
}
- val optionColors =
+ val optionColors: View =
homeScreenCustomizationOptionEntries
- .find { it.first == ThemePickerHomeCustomizationOption.COLORS }
- ?.second
- val optionColorsIcon =
- optionColors?.findViewById<ColorOptionIconView2>(R.id.option_entry_colors_icon)
+ .first { it.first == ThemePickerHomeCustomizationOption.COLORS }
+ .second
+ val optionColorsIcon: ColorOptionIconView2 =
+ optionColors.requireViewById(R.id.option_entry_colors_icon)
- val optionShapeGrid =
+ val optionShapeGrid: View =
homeScreenCustomizationOptionEntries
- .find { it.first == ThemePickerHomeCustomizationOption.APP_SHAPE_GRID }
- ?.second
- val optionShapeGridDescription =
- optionShapeGrid?.findViewById<TextView>(R.id.option_entry_app_shape_grid_description)
- val optionShapeGridIcon =
- optionShapeGrid?.findViewById<ImageView>(R.id.option_entry_app_shape_grid_icon)
+ .first { it.first == ThemePickerHomeCustomizationOption.APP_SHAPE_GRID }
+ .second
+ val optionShapeGridDescription: TextView =
+ optionShapeGrid.requireViewById(R.id.option_entry_app_shape_grid_description)
+ val optionShapeGridIcon: ImageView =
+ optionShapeGrid.requireViewById(R.id.option_entry_app_shape_grid_icon)
- val optionColorContrast =
+ val optionColorContrast: View =
homeScreenCustomizationOptionEntries
- .find { it.first == ThemePickerHomeCustomizationOption.COLOR_CONTRAST }
- ?.second
- optionColorContrast?.setOnClickListener { navigateToColorContrastSettingsActivity.invoke() }
- val optionColorContrastDescription: TextView? =
- optionColorContrast?.findViewById(R.id.option_entry_color_contrast_description)
- val optionColorContrastIcon: ImageView? =
- optionColorContrast?.findViewById(R.id.option_entry_color_contrast_icon)
+ .first { it.first == ThemePickerHomeCustomizationOption.COLOR_CONTRAST }
+ .second
+ optionColorContrast.setOnClickListener { navigateToColorContrastSettingsActivity.invoke() }
+ val optionColorContrastDescription: TextView =
+ optionColorContrast.requireViewById(R.id.option_entry_color_contrast_description)
+ val optionColorContrastIcon: ImageView =
+ optionColorContrast.requireViewById(R.id.option_entry_color_contrast_icon)
val optionsViewModel =
viewModel.customizationOptionsViewModel as ThemePickerCustomizationOptionsViewModel
@@ -153,66 +147,67 @@
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
launch {
optionsViewModel.onCustomizeClockClicked.collect {
- optionClock?.setOnClickListener { _ -> it?.invoke() }
+ optionClock.setOnClickListener { _ -> it?.invoke() }
}
}
launch {
optionsViewModel.clockPickerViewModel.selectedClock.collect {
- optionClockIcon?.setImageDrawable(it.thumbnail)
+ optionClockIcon.setImageDrawable(it.thumbnail)
}
}
launch {
optionsViewModel.onCustomizeShortcutClicked.collect {
- optionShortcut?.setOnClickListener { _ -> it?.invoke() }
+ optionShortcut.setOnClickListener { _ -> it?.invoke() }
}
}
launch {
optionsViewModel.keyguardQuickAffordancePickerViewModel2.summary.collect {
summary ->
- optionShortcutDescription?.let {
+ optionShortcutDescription.let {
TextViewBinder.bind(view = it, viewModel = summary.description)
}
summary.icon1?.let { icon ->
- optionShortcutIcon1?.let {
+ optionShortcutIcon1.let {
IconViewBinder.bind(view = it, viewModel = icon)
}
}
- optionShortcutIcon1?.isVisible = summary.icon1 != null
+ optionShortcutIcon1.isVisible = summary.icon1 != null
summary.icon2?.let { icon ->
- optionShortcutIcon2?.let {
+ optionShortcutIcon2.let {
IconViewBinder.bind(view = it, viewModel = icon)
}
}
- optionShortcutIcon2?.isVisible = summary.icon2 != null
+ optionShortcutIcon2.isVisible = summary.icon2 != null
}
}
launch {
optionsViewModel.onCustomizeColorsClicked.collect {
- optionColors?.setOnClickListener { _ -> it?.invoke() }
+ optionColors.setOnClickListener { _ -> it?.invoke() }
}
}
launch {
optionsViewModel.onCustomizeShapeGridClicked.collect {
- optionShapeGrid?.setOnClickListener { _ -> it?.invoke() }
+ optionShapeGrid.setOnClickListener { _ -> it?.invoke() }
}
}
launch {
optionsViewModel.shapeGridPickerViewModel.selectedGridOption.collect {
gridOption ->
- optionShapeGridDescription?.let { TextViewBinder.bind(it, gridOption.text) }
+ TextViewBinder.bind(optionShapeGridDescription, gridOption.text)
gridOption.payload?.let { gridIconViewModel ->
- optionShapeGridIcon?.let {
- GridIconViewBinder.bind(view = it, viewModel = gridIconViewModel)
- }
+ GridIconViewBinder.bind(
+ view = optionShapeGridIcon,
+ viewModel = gridIconViewModel,
+ )
// TODO(b/363018910): Use ColorUpdateBinder to update color
- optionShapeGridIcon?.setColorFilter(
+ optionShapeGridIcon.setColorFilter(
ContextCompat.getColor(
view.context,
com.android.wallpaper.R.color.system_on_surface_variant,
@@ -225,17 +220,14 @@
launch {
optionsViewModel.colorContrastSectionViewModel.summary.collectLatest { summary
->
- optionColorContrastDescription?.let {
- TextViewBinder.bind(view = it, viewModel = summary.description)
+ TextViewBinder.bind(
+ view = optionColorContrastDescription,
+ viewModel = summary.description,
+ )
+ summary.icon?.let {
+ IconViewBinder.bind(view = optionColorContrastIcon, viewModel = it)
}
-
- if (summary.icon != null && optionColorContrastIcon != null) {
- IconViewBinder.bind(
- view = optionColorContrastIcon,
- viewModel = summary.icon,
- )
- }
- optionColorContrastIcon?.isVisible = summary.icon != null
+ optionColorContrastIcon.isVisible = summary.icon != null
}
}
@@ -243,14 +235,11 @@
optionsViewModel.colorPickerViewModel2.selectedColorOption.collect { colorOption
->
(colorOption as? ColorOptionImpl)?.let {
- optionColorsIcon?.let {
- ColorOptionIconBinder2.bind(
- view = it,
- viewModel =
- ColorOptionIconViewModel.fromColorOption(colorOption),
- darkTheme = view.resources.configuration.isNightModeActive,
- )
- }
+ ColorOptionIconBinder2.bind(
+ view = optionColorsIcon,
+ viewModel = ColorOptionIconViewModel.fromColorOption(colorOption),
+ darkTheme = view.resources.configuration.isNightModeActive,
+ )
}
}
}