From 3858036631fdcc1a9b4e9df586ff0ce9773bc703 Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Fri, 25 Jan 2019 23:48:31 +0200 Subject: [PATCH] Resolves #139 Trigger for automations --- lib/entity_class/automation_entity.dart | 24 +++++++++++ lib/entity_class/button_entity.class.dart | 4 +- lib/entity_collection.class.dart | 5 ++- .../common/flat_service_button.dart | 40 +++++++++++++++++++ lib/entity_widgets/state/button_state.dart | 27 ------------- lib/main.dart | 3 +- 6 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 lib/entity_class/automation_entity.dart create mode 100644 lib/entity_widgets/common/flat_service_button.dart delete mode 100644 lib/entity_widgets/state/button_state.dart diff --git a/lib/entity_class/automation_entity.dart b/lib/entity_class/automation_entity.dart new file mode 100644 index 0000000..25207af --- /dev/null +++ b/lib/entity_class/automation_entity.dart @@ -0,0 +1,24 @@ +part of '../main.dart'; + +class AutomationEntity extends Entity { + AutomationEntity(Map rawData) : super(rawData); + + @override + Widget _buildStatePart(BuildContext context) { + return SwitchStateWidget(); + } + + @override + Widget _buildAdditionalControlsForPage(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + FlatServiceButton( + text: "TRIGGER", + serviceName: "trigger", + ) + ], + ); + } +} \ No newline at end of file diff --git a/lib/entity_class/button_entity.class.dart b/lib/entity_class/button_entity.class.dart index 6b10656..c726910 100644 --- a/lib/entity_class/button_entity.class.dart +++ b/lib/entity_class/button_entity.class.dart @@ -5,6 +5,8 @@ class ButtonEntity extends Entity { @override Widget _buildStatePart(BuildContext context) { - return ButtonStateWidget(); + return FlatServiceButton( + text: "EXECUTE", + ); } } \ No newline at end of file diff --git a/lib/entity_collection.class.dart b/lib/entity_collection.class.dart index 2d21cc2..769d2e5 100644 --- a/lib/entity_collection.class.dart +++ b/lib/entity_collection.class.dart @@ -47,7 +47,10 @@ class EntityCollection { case 'lock': { return LockEntity(rawEntityData); } - case "automation": + case "automation": { + return AutomationEntity(rawEntityData); + } + case "input_boolean": case "switch": { return SwitchEntity(rawEntityData); diff --git a/lib/entity_widgets/common/flat_service_button.dart b/lib/entity_widgets/common/flat_service_button.dart new file mode 100644 index 0000000..ccda992 --- /dev/null +++ b/lib/entity_widgets/common/flat_service_button.dart @@ -0,0 +1,40 @@ +part of '../../main.dart'; + +class FlatServiceButton extends StatelessWidget { + + final String serviceDomain; + final String serviceName; + final String text; + final double fontSize; + + FlatServiceButton({ + Key key, + this.serviceDomain, + this.serviceName: "turn_on", + @required this.text, + this.fontSize: Sizes.stateFontSize + }) : super(key: key); + + void _setNewState(Entity entity) { + eventBus.fire(new ServiceCallEvent(serviceDomain ?? entity.domain, serviceName, entity.entityId, null)); + } + + @override + Widget build(BuildContext context) { + final entityModel = EntityModel.of(context); + return SizedBox( + height: fontSize*2.5, + child: FlatButton( + onPressed: (() { + _setNewState(entityModel.entityWrapper.entity); + }), + child: Text( + text, + textAlign: TextAlign.right, + style: + new TextStyle(fontSize: fontSize, color: Colors.blue), + ), + ) + ); + } +} \ No newline at end of file diff --git a/lib/entity_widgets/state/button_state.dart b/lib/entity_widgets/state/button_state.dart deleted file mode 100644 index 11db3d2..0000000 --- a/lib/entity_widgets/state/button_state.dart +++ /dev/null @@ -1,27 +0,0 @@ -part of '../../main.dart'; - -class ButtonStateWidget extends StatelessWidget { - - void _setNewState(Entity entity) { - eventBus.fire(new ServiceCallEvent(entity.domain, "turn_on", entity.entityId, null)); - } - - @override - Widget build(BuildContext context) { - final entityModel = EntityModel.of(context); - return SizedBox( - height: 34.0, - child: FlatButton( - onPressed: (() { - _setNewState(entityModel.entityWrapper.entity); - }), - child: Text( - "EXECUTE", - textAlign: TextAlign.right, - style: - new TextStyle(fontSize: Sizes.stateFontSize, color: Colors.blue), - ), - ) - ); - } -} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 9e9671b..6d054f9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -33,6 +33,7 @@ part 'entity_class/media_player_entity.class.dart'; part 'entity_class/lock_entity.class.dart'; part 'entity_class/group_entity.class.dart'; part 'entity_class/fan_entity.class.dart'; +part 'entity_class/automation_entity.dart'; part 'entity_widgets/common/badge.dart'; part 'entity_widgets/model_widgets.dart'; part 'entity_widgets/default_entity_container.dart'; @@ -45,6 +46,7 @@ part 'entity_widgets/common/last_updated.dart'; part 'entity_widgets/common/mode_swicth.dart'; part 'entity_widgets/common/mode_selector.dart'; part 'entity_widgets/common/universal_slider.dart'; +part 'entity_widgets/common/flat_service_button.dart'; part 'entity_widgets/entity_colors.class.dart'; part 'entity_widgets/entity_page_container.dart'; part 'entity_widgets/history_chart/entity_history.dart'; @@ -61,7 +63,6 @@ part 'entity_widgets/state/simple_state.dart'; part 'entity_widgets/state/climate_state.dart'; part 'entity_widgets/state/cover_state.dart'; part 'entity_widgets/state/date_time_state.dart'; -part 'entity_widgets/state/button_state.dart'; part 'entity_widgets/state/lock_state.dart'; part 'entity_widgets/controls/climate_controls.dart'; part 'entity_widgets/controls/cover_controls.dart';