Merge "Replace reflection with Suppliers." into tm-dev

This commit is contained in:
Dave Mankoff
2022-03-02 15:14:38 +00:00
committed by Android (Google) Code Review

View File

@@ -54,7 +54,7 @@ import com.android.systemui.animation.Interpolators
import com.android.systemui.controls.ControlsMetricsLogger
import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.util.concurrency.DelayableExecutor
import kotlin.reflect.KClass
import java.util.function.Supplier
/**
* Wraps the widgets that make up the UI representation of a {@link Control}. Updates to the view
@@ -90,20 +90,20 @@ class ControlViewHolder(
status: Int,
template: ControlTemplate,
deviceType: Int
): KClass<out Behavior> {
): Supplier<out Behavior> {
return when {
status != Control.STATUS_OK -> StatusBehavior::class
template == ControlTemplate.NO_TEMPLATE -> TouchBehavior::class
template is ThumbnailTemplate -> ThumbnailBehavior::class
status != Control.STATUS_OK -> Supplier { StatusBehavior() }
template == ControlTemplate.NO_TEMPLATE -> Supplier { TouchBehavior() }
template is ThumbnailTemplate -> Supplier { ThumbnailBehavior() }
// Required for legacy support, or where cameras do not use the new template
deviceType == DeviceTypes.TYPE_CAMERA -> TouchBehavior::class
template is ToggleTemplate -> ToggleBehavior::class
template is StatelessTemplate -> TouchBehavior::class
template is ToggleRangeTemplate -> ToggleRangeBehavior::class
template is RangeTemplate -> ToggleRangeBehavior::class
template is TemperatureControlTemplate -> TemperatureControlBehavior::class
else -> DefaultBehavior::class
deviceType == DeviceTypes.TYPE_CAMERA -> Supplier { TouchBehavior() }
template is ToggleTemplate -> Supplier { ToggleBehavior() }
template is StatelessTemplate -> Supplier { TouchBehavior() }
template is ToggleRangeTemplate -> Supplier { ToggleRangeBehavior() }
template is RangeTemplate -> Supplier { ToggleRangeBehavior() }
template is TemperatureControlTemplate -> Supplier { TemperatureControlBehavior() }
else -> Supplier { DefaultBehavior() }
}
}
}
@@ -253,13 +253,14 @@ class ControlViewHolder(
fun bindBehavior(
existingBehavior: Behavior?,
clazz: KClass<out Behavior>,
supplier: Supplier<out Behavior>,
offset: Int = 0
): Behavior {
val behavior = if (existingBehavior == null || existingBehavior!!::class != clazz) {
val newBehavior = supplier.get()
val behavior = if (existingBehavior == null ||
existingBehavior::class != newBehavior::class) {
// Behavior changes can signal a change in template from the app or
// first time setup
val newBehavior = clazz.java.newInstance()
newBehavior.initialize(this)
// let behaviors define their own, if necessary, and clear any existing ones