From 438449cad877cbcf9922ce77fb91fa69c9e7608d Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Sun, 18 Nov 2018 13:24:05 +0200 Subject: [PATCH] Handling taps on entity name and state for glance card --- lib/entity_widgets/entity_name.dart | 46 ++++++++++++++++++++-- lib/entity_widgets/state/simple_state.dart | 45 +++++++++++++++++++-- 2 files changed, 84 insertions(+), 7 deletions(-) diff --git a/lib/entity_widgets/entity_name.dart b/lib/entity_widgets/entity_name.dart index dc59175..4f41154 100644 --- a/lib/entity_widgets/entity_name.dart +++ b/lib/entity_widgets/entity_name.dart @@ -24,10 +24,48 @@ class EntityName extends StatelessWidget { textAlign: textAlign, ), ), - onTap: () => - entityModel.handleTap - ? eventBus.fire(new ShowEntityPageEvent(entityModel.entityWrapper.entity)) - : null, + onLongPress: () { + if (entityModel.handleTap) { + switch (entityModel.entityWrapper.holdAction) { + case EntityTapAction.toggle: { + eventBus.fire( + ServiceCallEvent("homeassistant", "toggle", entityModel.entityWrapper.entity.entityId, null)); + break; + } + + default: { + eventBus.fire( + new ShowEntityPageEvent(entityModel.entityWrapper.entity)); + break; + } + } + + } + }, + onTap: () { + if (entityModel.handleTap) { + switch (entityModel.entityWrapper.tapAction) { + case EntityTapAction.toggle: { + eventBus.fire( + ServiceCallEvent("homeassistant", "toggle", entityModel.entityWrapper.entity.entityId, null)); + break; + } + + case EntityTapAction.callService: { + eventBus.fire( + ServiceCallEvent(entityModel.entityWrapper.actionService.split(".")[0], entityModel.entityWrapper.actionService.split(".")[1], null, entityModel.entityWrapper.actionServiceData)); + break; + } + + default: { + eventBus.fire( + new ShowEntityPageEvent(entityModel.entityWrapper.entity)); + break; + } + } + + } + } ); } } \ No newline at end of file diff --git a/lib/entity_widgets/state/simple_state.dart b/lib/entity_widgets/state/simple_state.dart index 0a42a7b..7f1e7e7 100644 --- a/lib/entity_widgets/state/simple_state.dart +++ b/lib/entity_widgets/state/simple_state.dart @@ -23,9 +23,48 @@ class SimpleEntityState extends StatelessWidget { style: new TextStyle( fontSize: Sizes.stateFontSize, )), - onTap: () => entityModel.handleTap - ? eventBus.fire(new ShowEntityPageEvent(entityModel.entityWrapper.entity)) - : null, + onLongPress: () { + if (entityModel.handleTap) { + switch (entityModel.entityWrapper.holdAction) { + case EntityTapAction.toggle: { + eventBus.fire( + ServiceCallEvent("homeassistant", "toggle", entityModel.entityWrapper.entity.entityId, null)); + break; + } + + default: { + eventBus.fire( + new ShowEntityPageEvent(entityModel.entityWrapper.entity)); + break; + } + } + + } + }, + onTap: () { + if (entityModel.handleTap) { + switch (entityModel.entityWrapper.tapAction) { + case EntityTapAction.toggle: { + eventBus.fire( + ServiceCallEvent("homeassistant", "toggle", entityModel.entityWrapper.entity.entityId, null)); + break; + } + + case EntityTapAction.callService: { + eventBus.fire( + ServiceCallEvent(entityModel.entityWrapper.actionService.split(".")[0], entityModel.entityWrapper.actionService.split(".")[1], null, entityModel.entityWrapper.actionServiceData)); + break; + } + + default: { + eventBus.fire( + new ShowEntityPageEvent(entityModel.entityWrapper.entity)); + break; + } + } + + } + } ) ); if (expanded) {