Add state_color support

This commit is contained in:
Yegor Vialov 2020-04-28 21:03:00 +00:00
parent b029146bf3
commit 96b3e7c739
3 changed files with 29 additions and 11 deletions

View File

@ -7,6 +7,7 @@ class CardData {
List conditions; List conditions;
bool showEmpty; bool showEmpty;
List stateFilter; List stateFilter;
bool stateColor = true;
EntityWrapper get entity => entities.isNotEmpty ? entities[0] : null; EntityWrapper get entity => entities.isNotEmpty ? entities[0] : null;
@ -152,7 +153,6 @@ class EntitiesCardData extends CardData {
String title; String title;
String icon; String icon;
bool showHeaderToggle; bool showHeaderToggle;
bool stateColor;
@override @override
Widget buildCardWidget() { Widget buildCardWidget() {
@ -163,8 +163,8 @@ class EntitiesCardData extends CardData {
//Parsing card data //Parsing card data
title = rawData["title"]; title = rawData["title"];
icon = rawData['icon']; icon = rawData['icon'];
showHeaderToggle = rawData['show_header_toggle'] ?? false; stateColor = rawData['state_color'] ?? false;
stateColor = rawData['state_color'] ?? true; showHeaderToggle = rawData['show_header_toggle'] ?? false;
//Parsing entities //Parsing entities
var rawEntities = rawData["entities"] ?? []; var rawEntities = rawData["entities"] ?? [];
rawEntities.forEach((rawEntity) { rawEntities.forEach((rawEntity) {
@ -191,13 +191,14 @@ class EntitiesCardData extends CardData {
entities.add( entities.add(
EntityWrapper( EntityWrapper(
entity: Entity.callService( entity: Entity.callService(
icon: rawEntity["icon"], icon: rawEntity["icon"],
name: rawEntity["name"], name: rawEntity["name"],
service: rawEntity["service"], service: rawEntity["service"],
actionName: rawEntity["action_name"] actionName: rawEntity["action_name"]
), ),
uiAction: EntityUIAction(rawEntityData: uiActionData) stateColor: rawEntity["state_color"] ?? stateColor,
) uiAction: EntityUIAction(rawEntityData: uiActionData)
)
); );
} else if (rawEntity["type"] == "weblink") { } else if (rawEntity["type"] == "weblink") {
Map uiActionData = { Map uiActionData = {
@ -213,6 +214,7 @@ class EntitiesCardData extends CardData {
name: rawEntity["name"], name: rawEntity["name"],
url: rawEntity["url"] url: rawEntity["url"]
), ),
stateColor: rawEntity["state_color"] ?? stateColor,
uiAction: EntityUIAction(rawEntityData: uiActionData) uiAction: EntityUIAction(rawEntityData: uiActionData)
) )
); );
@ -221,6 +223,7 @@ class EntitiesCardData extends CardData {
entities.add( entities.add(
EntityWrapper( EntityWrapper(
entity: e, entity: e,
stateColor: rawEntity["state_color"] ?? stateColor,
overrideName: rawEntity["name"], overrideName: rawEntity["name"],
overrideIcon: rawEntity["icon"], overrideIcon: rawEntity["icon"],
stateFilter: rawEntity['state_filter'] ?? [], stateFilter: rawEntity['state_filter'] ?? [],
@ -256,6 +259,7 @@ class AlarmPanelCardData extends CardData {
if (HomeAssistant().entities.isExist(entitiId)) { if (HomeAssistant().entities.isExist(entitiId)) {
entities.add(EntityWrapper( entities.add(EntityWrapper(
entity: HomeAssistant().entities.get(entitiId), entity: HomeAssistant().entities.get(entitiId),
stateColor: true,
overrideName: name overrideName: name
)); ));
} else { } else {
@ -287,6 +291,7 @@ class ButtonCardData extends CardData {
icon = rawData['icon']; icon = rawData['icon'];
showName = rawData['show_name'] ?? true; showName = rawData['show_name'] ?? true;
showIcon = rawData['show_icon'] ?? true; showIcon = rawData['show_icon'] ?? true;
stateColor = rawData['state_color'] ?? true;
if (rawData.containsKey('icon_height')) { if (rawData.containsKey('icon_height')) {
String rawHeight = rawData['icon_height']; String rawHeight = rawData['icon_height'];
if (rawHeight.contains('px')) { if (rawHeight.contains('px')) {
@ -305,6 +310,7 @@ class ButtonCardData extends CardData {
entity: HomeAssistant().entities.get(entitiId), entity: HomeAssistant().entities.get(entitiId),
overrideName: name, overrideName: name,
overrideIcon: icon, overrideIcon: icon,
stateColor: stateColor,
uiAction: EntityUIAction( uiAction: EntityUIAction(
rawEntityData: rawData rawEntityData: rawData
) )
@ -319,6 +325,7 @@ class ButtonCardData extends CardData {
name, name,
icon, icon,
), ),
stateColor: stateColor,
uiAction: EntityUIAction( uiAction: EntityUIAction(
rawEntityData: rawData rawEntityData: rawData
) )
@ -404,6 +411,7 @@ class GlanceCardData extends CardData {
entities.add( entities.add(
EntityWrapper( EntityWrapper(
entity: e, entity: e,
stateColor: stateColor,
overrideName: rawEntity["name"], overrideName: rawEntity["name"],
overrideIcon: rawEntity["icon"], overrideIcon: rawEntity["icon"],
stateFilter: rawEntity['state_filter'] ?? [], stateFilter: rawEntity['state_filter'] ?? [],

View File

@ -60,11 +60,19 @@ class EntityIcon extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final EntityWrapper entityWrapper = EntityModel.of(context).entityWrapper; final EntityWrapper entityWrapper = EntityModel.of(context).entityWrapper;
Color iconColor;
if (color != null) {
iconColor = color;
} else if (entityWrapper.stateColor) {
iconColor = HAClientTheme().getColorByEntityState(entityWrapper.entity.state, context);
} else {
iconColor = HAClientTheme().getOffStateColor(context);
}
return Padding( return Padding(
padding: padding, padding: padding,
child: buildIcon( child: buildIcon(
entityWrapper, entityWrapper,
color ?? HAClientTheme().getColorByEntityState(entityWrapper.entity.state, context) iconColor
), ),
); );
} }

View File

@ -4,6 +4,7 @@ class EntityWrapper {
String overrideName; String overrideName;
final String overrideIcon; final String overrideIcon;
final bool stateColor;
EntityUIAction uiAction; EntityUIAction uiAction;
Entity entity; Entity entity;
String unitOfMeasurementOverride; String unitOfMeasurementOverride;
@ -18,6 +19,7 @@ class EntityWrapper {
this.entity, this.entity,
this.overrideIcon, this.overrideIcon,
this.overrideName, this.overrideName,
this.stateColor: true,
this.uiAction, this.uiAction,
this.stateFilter this.stateFilter
}) { }) {