Resolves #139 Trigger for automations
This commit is contained in:
		
							
								
								
									
										24
									
								
								lib/entity_class/automation_entity.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lib/entity_class/automation_entity.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -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: <Widget>[ | ||||||
|  |         FlatServiceButton( | ||||||
|  |           text: "TRIGGER", | ||||||
|  |           serviceName: "trigger", | ||||||
|  |         ) | ||||||
|  |       ], | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -5,6 +5,8 @@ class ButtonEntity extends Entity { | |||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Widget _buildStatePart(BuildContext context) { |   Widget _buildStatePart(BuildContext context) { | ||||||
|     return ButtonStateWidget(); |     return FlatServiceButton( | ||||||
|  |       text: "EXECUTE", | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -47,7 +47,10 @@ class EntityCollection { | |||||||
|       case 'lock': { |       case 'lock': { | ||||||
|         return LockEntity(rawEntityData); |         return LockEntity(rawEntityData); | ||||||
|       } |       } | ||||||
|       case "automation": |       case "automation": { | ||||||
|  |         return AutomationEntity(rawEntityData); | ||||||
|  |       } | ||||||
|  |  | ||||||
|       case "input_boolean": |       case "input_boolean": | ||||||
|       case "switch": { |       case "switch": { | ||||||
|         return SwitchEntity(rawEntityData); |         return SwitchEntity(rawEntityData); | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								lib/entity_widgets/common/flat_service_button.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lib/entity_widgets/common/flat_service_button.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -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), | ||||||
|  |           ), | ||||||
|  |         ) | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -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), |  | ||||||
|         ), |  | ||||||
|       ) |  | ||||||
|     ); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -33,6 +33,7 @@ part 'entity_class/media_player_entity.class.dart'; | |||||||
| part 'entity_class/lock_entity.class.dart'; | part 'entity_class/lock_entity.class.dart'; | ||||||
| part 'entity_class/group_entity.class.dart'; | part 'entity_class/group_entity.class.dart'; | ||||||
| part 'entity_class/fan_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/common/badge.dart'; | ||||||
| part 'entity_widgets/model_widgets.dart'; | part 'entity_widgets/model_widgets.dart'; | ||||||
| part 'entity_widgets/default_entity_container.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_swicth.dart'; | ||||||
| part 'entity_widgets/common/mode_selector.dart'; | part 'entity_widgets/common/mode_selector.dart'; | ||||||
| part 'entity_widgets/common/universal_slider.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_colors.class.dart'; | ||||||
| part 'entity_widgets/entity_page_container.dart'; | part 'entity_widgets/entity_page_container.dart'; | ||||||
| part 'entity_widgets/history_chart/entity_history.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/climate_state.dart'; | ||||||
| part 'entity_widgets/state/cover_state.dart'; | part 'entity_widgets/state/cover_state.dart'; | ||||||
| part 'entity_widgets/state/date_time_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/state/lock_state.dart'; | ||||||
| part 'entity_widgets/controls/climate_controls.dart'; | part 'entity_widgets/controls/climate_controls.dart'; | ||||||
| part 'entity_widgets/controls/cover_controls.dart'; | part 'entity_widgets/controls/cover_controls.dart'; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user