diff --git a/lib/cards/card.class.dart b/lib/cards/card.class.dart index ab9bc49..e13f0be 100644 --- a/lib/cards/card.class.dart +++ b/lib/cards/card.class.dart @@ -7,6 +7,7 @@ class CardData { List conditions; bool showEmpty; List stateFilter; + bool stateColor = true; EntityWrapper get entity => entities.isNotEmpty ? entities[0] : null; @@ -152,7 +153,6 @@ class EntitiesCardData extends CardData { String title; String icon; bool showHeaderToggle; - bool stateColor; @override Widget buildCardWidget() { @@ -163,8 +163,8 @@ class EntitiesCardData extends CardData { //Parsing card data title = rawData["title"]; icon = rawData['icon']; - showHeaderToggle = rawData['show_header_toggle'] ?? false; - stateColor = rawData['state_color'] ?? true; + stateColor = rawData['state_color'] ?? false; + showHeaderToggle = rawData['show_header_toggle'] ?? false; //Parsing entities var rawEntities = rawData["entities"] ?? []; rawEntities.forEach((rawEntity) { @@ -191,13 +191,14 @@ class EntitiesCardData extends CardData { entities.add( EntityWrapper( entity: Entity.callService( - icon: rawEntity["icon"], - name: rawEntity["name"], - service: rawEntity["service"], - actionName: rawEntity["action_name"] - ), - uiAction: EntityUIAction(rawEntityData: uiActionData) - ) + icon: rawEntity["icon"], + name: rawEntity["name"], + service: rawEntity["service"], + actionName: rawEntity["action_name"] + ), + stateColor: rawEntity["state_color"] ?? stateColor, + uiAction: EntityUIAction(rawEntityData: uiActionData) + ) ); } else if (rawEntity["type"] == "weblink") { Map uiActionData = { @@ -213,6 +214,7 @@ class EntitiesCardData extends CardData { name: rawEntity["name"], url: rawEntity["url"] ), + stateColor: rawEntity["state_color"] ?? stateColor, uiAction: EntityUIAction(rawEntityData: uiActionData) ) ); @@ -221,6 +223,7 @@ class EntitiesCardData extends CardData { entities.add( EntityWrapper( entity: e, + stateColor: rawEntity["state_color"] ?? stateColor, overrideName: rawEntity["name"], overrideIcon: rawEntity["icon"], stateFilter: rawEntity['state_filter'] ?? [], @@ -256,6 +259,7 @@ class AlarmPanelCardData extends CardData { if (HomeAssistant().entities.isExist(entitiId)) { entities.add(EntityWrapper( entity: HomeAssistant().entities.get(entitiId), + stateColor: true, overrideName: name )); } else { @@ -287,6 +291,7 @@ class ButtonCardData extends CardData { icon = rawData['icon']; showName = rawData['show_name'] ?? true; showIcon = rawData['show_icon'] ?? true; + stateColor = rawData['state_color'] ?? true; if (rawData.containsKey('icon_height')) { String rawHeight = rawData['icon_height']; if (rawHeight.contains('px')) { @@ -305,6 +310,7 @@ class ButtonCardData extends CardData { entity: HomeAssistant().entities.get(entitiId), overrideName: name, overrideIcon: icon, + stateColor: stateColor, uiAction: EntityUIAction( rawEntityData: rawData ) @@ -319,6 +325,7 @@ class ButtonCardData extends CardData { name, icon, ), + stateColor: stateColor, uiAction: EntityUIAction( rawEntityData: rawData ) @@ -404,6 +411,7 @@ class GlanceCardData extends CardData { entities.add( EntityWrapper( entity: e, + stateColor: stateColor, overrideName: rawEntity["name"], overrideIcon: rawEntity["icon"], stateFilter: rawEntity['state_filter'] ?? [], diff --git a/lib/entities/entity_icon.widget.dart b/lib/entities/entity_icon.widget.dart index efd2429..824e048 100644 --- a/lib/entities/entity_icon.widget.dart +++ b/lib/entities/entity_icon.widget.dart @@ -60,11 +60,19 @@ class EntityIcon extends StatelessWidget { @override Widget build(BuildContext context) { 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( padding: padding, child: buildIcon( entityWrapper, - color ?? HAClientTheme().getColorByEntityState(entityWrapper.entity.state, context) + iconColor ), ); } diff --git a/lib/entities/entity_wrapper.class.dart b/lib/entities/entity_wrapper.class.dart index ff5a20b..2750082 100644 --- a/lib/entities/entity_wrapper.class.dart +++ b/lib/entities/entity_wrapper.class.dart @@ -4,6 +4,7 @@ class EntityWrapper { String overrideName; final String overrideIcon; + final bool stateColor; EntityUIAction uiAction; Entity entity; String unitOfMeasurementOverride; @@ -18,6 +19,7 @@ class EntityWrapper { this.entity, this.overrideIcon, this.overrideName, + this.stateColor: true, this.uiAction, this.stateFilter }) {