Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69bfcfca authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

Merge "Replace reflection with Suppliers." into tm-dev am: 7081ab5b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17050003

Change-Id: Iaa1c82c80777a4a169e8b45e69404a111ad0e7b3
parents 9c637ef0 7081ab5b
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -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