Add state_color support
This commit is contained in:
parent
b029146bf3
commit
96b3e7c739
@ -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'] ?? [],
|
||||||
|
@ -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
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}) {
|
}) {
|
||||||
|
Reference in New Issue
Block a user