diff --git a/lib/entity_class/const.dart b/lib/entity_class/const.dart index 0253c45..cb85503 100644 --- a/lib/entity_class/const.dart +++ b/lib/entity_class/const.dart @@ -35,4 +35,23 @@ class EntityTapAction { static const toggle = 'toggle'; static const callService = 'call-service'; static const none = 'none'; +} + +class CardType { + static const entities = "entities"; + static const glance = "glance"; + static const mediaControl = "media-control"; + static const weatherForecast = "weather-forecast"; + static const thermostat = "thermostat"; + static const sensor = "sensor"; + static const plantStatus = "plant-status"; + static const pictureEntity = "picture-entity"; + static const pictureElements = "picture-elements"; + static const picture = "picture"; + static const map = "map"; + static const iframe = "iframe"; + static const gauge = "gauge"; + static const entityButton = "entity-button"; + static const conditional = "conditional"; + static const alarmPanel = "alarm-panel"; } \ No newline at end of file diff --git a/lib/entity_widgets/entity_icon.dart b/lib/entity_widgets/entity_icon.dart index f94b0df..e8ba216 100644 --- a/lib/entity_widgets/entity_icon.dart +++ b/lib/entity_widgets/entity_icon.dart @@ -11,7 +11,7 @@ class EntityIcon extends StatelessWidget { @override Widget build(BuildContext context) { final entityModel = EntityModel.of(context); - return GestureDetector( + return InkWell( child: Padding( padding: padding, child: MaterialDesignIcons.createIconWidgetFromEntityData( diff --git a/lib/entity_widgets/entity_name.dart b/lib/entity_widgets/entity_name.dart index 4a73ef2..6108e51 100644 --- a/lib/entity_widgets/entity_name.dart +++ b/lib/entity_widgets/entity_name.dart @@ -13,7 +13,7 @@ class EntityName extends StatelessWidget { @override Widget build(BuildContext context) { final entityModel = EntityModel.of(context); - return GestureDetector( + return InkWell( child: Padding( padding: padding, child: Text( diff --git a/lib/entity_widgets/state/simple_state.dart b/lib/entity_widgets/state/simple_state.dart index ba72235..697584c 100644 --- a/lib/entity_widgets/state/simple_state.dart +++ b/lib/entity_widgets/state/simple_state.dart @@ -13,7 +13,7 @@ class SimpleEntityState extends StatelessWidget { final entityModel = EntityModel.of(context); Widget result = Padding( padding: padding, - child: GestureDetector( + child: InkWell( child: Text( "${entityModel.entityWrapper.entity.state}${entityModel.entityWrapper.entity.unitOfMeasurement}", textAlign: textAlign, diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index 2b50953..0de81c1 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -447,13 +447,19 @@ class HomeAssistant { } else { if (entities.isExist(rawEntity["entity"])) { Entity e = entities.get(rawEntity["entity"]); + String tapAction = EntityTapAction.moreInfo; + String holdAction = EntityTapAction.none; + if (card.type == CardType.glance) { + tapAction = rawEntity["tap_action"] ?? EntityTapAction.moreInfo; + holdAction = rawEntity["hold_action"] ?? EntityTapAction.none; + } card.entities.add( EntityWrapper( entity: e, displayName: rawEntity["name"], icon: rawEntity["icon"], - tapAction: rawEntity["tap_action"] ?? EntityTapAction.moreInfo, - holdAction: rawEntity["hold_action"] ?? EntityTapAction.none, + tapAction: tapAction, + holdAction: holdAction, tapActionService: rawEntity["service"], tapActionServiceData: rawEntity["service_data"] ?? {"entity_id": e.entityId} ) diff --git a/lib/ui_class/card.class.dart b/lib/ui_class/card.class.dart index 8991bdb..71c6e69 100644 --- a/lib/ui_class/card.class.dart +++ b/lib/ui_class/card.class.dart @@ -23,37 +23,37 @@ class HACard { Widget build(BuildContext context) { switch (type) { - case "entities": { + case CardType.entities: { return EntitiesCardWidget( card: this, ); } - case "glance": { + case CardType.glance: { return GlanceCardWidget( card: this, ); } - case "media-control": { + case CardType.mediaControl: { return MediaControlCardWidget( card: this, ); } - case "weather-forecast": - case "thermostat": - case "sensor": - case "plant-status": - case "picture-entity": - case "picture-elements": - case "picture": - case "map": - case "iframe": - case "gauge": - case "entity-button": - case "conditional": - case "alarm-panel": { + case CardType.weatherForecast: + case CardType.thermostat: + case CardType.sensor: + case CardType.plantStatus: + case CardType.pictureEntity: + case CardType.pictureElements: + case CardType.picture: + case CardType.map: + case CardType.iframe: + case CardType.gauge: + case CardType.entityButton: + case CardType.conditional: + case CardType.alarmPanel: { return UnsupportedCardWidget( card: this, );