Merge "Controls UI - Support custom colors/icons" into rvc-dev am: 3d85095816
Change-Id: I2d0d385420d12cc2222f380ef8ae248e93f22c79
This commit is contained in:
@@ -186,22 +186,36 @@ class ControlViewHolder(
|
|||||||
val fg = context.resources.getColorStateList(ri.foreground, context.theme)
|
val fg = context.resources.getColorStateList(ri.foreground, context.theme)
|
||||||
val bg = context.resources.getColor(R.color.control_default_background, context.theme)
|
val bg = context.resources.getColor(R.color.control_default_background, context.theme)
|
||||||
val dimAlpha = if (dimmed) dimmedAlpha else 1f
|
val dimAlpha = if (dimmed) dimmedAlpha else 1f
|
||||||
var (clip, newAlpha) = if (enabled) {
|
var (newClipColor, newAlpha) = if (enabled) {
|
||||||
listOf(ri.enabledBackground, ALPHA_ENABLED)
|
// allow color overrides for the enabled state only
|
||||||
|
val color = cws.control?.getCustomColor()?.let {
|
||||||
|
val state = intArrayOf(android.R.attr.state_enabled)
|
||||||
|
it.getColorForState(state, it.getDefaultColor())
|
||||||
|
} ?: context.resources.getColor(ri.enabledBackground, context.theme)
|
||||||
|
listOf(color, ALPHA_ENABLED)
|
||||||
} else {
|
} else {
|
||||||
listOf(R.color.control_default_background, ALPHA_DISABLED)
|
listOf(
|
||||||
|
context.resources.getColor(R.color.control_default_background, context.theme),
|
||||||
|
ALPHA_DISABLED
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
status.setTextColor(fg)
|
status.setTextColor(fg)
|
||||||
icon.setImageDrawable(ri.icon)
|
|
||||||
|
|
||||||
// do not color app icons
|
cws.control?.getCustomIcon()?.let {
|
||||||
if (deviceType != DeviceTypes.TYPE_ROUTINE) {
|
// do not tint custom icons, assume the intended icon color is correct
|
||||||
icon.imageTintList = fg
|
icon.imageTintList = null
|
||||||
|
icon.setImageIcon(it)
|
||||||
|
} ?: run {
|
||||||
|
icon.setImageDrawable(ri.icon)
|
||||||
|
|
||||||
|
// do not color app icons
|
||||||
|
if (deviceType != DeviceTypes.TYPE_ROUTINE) {
|
||||||
|
icon.imageTintList = fg
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(clipLayer.getDrawable() as GradientDrawable).apply {
|
(clipLayer.getDrawable() as GradientDrawable).apply {
|
||||||
val newClipColor = context.resources.getColor(clip, context.theme)
|
|
||||||
val newBaseColor = if (behavior is ToggleRangeBehavior) {
|
val newBaseColor = if (behavior is ToggleRangeBehavior) {
|
||||||
ColorUtils.blendARGB(bg, newClipColor, toggleBackgroundIntensity)
|
ColorUtils.blendARGB(bg, newClipColor, toggleBackgroundIntensity)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user