From 24c7675fa4a09a514bd997caf7ece0aab31344c6 Mon Sep 17 00:00:00 2001 From: estevez-dev Date: Tue, 29 Jan 2019 11:54:26 +0200 Subject: [PATCH] Resolves #142 Alarm control panel support --- .../alarm_control_panel_controls.dart | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/lib/entity_widgets/controls/alarm_control_panel_controls.dart b/lib/entity_widgets/controls/alarm_control_panel_controls.dart index 0ba2e46..e09f82e 100644 --- a/lib/entity_widgets/controls/alarm_control_panel_controls.dart +++ b/lib/entity_widgets/controls/alarm_control_panel_controls.dart @@ -9,34 +9,71 @@ class AlarmControlPanelControlsWidget extends StatefulWidget { class _AlarmControlPanelControlsWidgetWidgetState extends State { - void _disarm(AlarmControlPanelEntity entity, String code) { + String code = ""; + + void _callService(AlarmControlPanelEntity entity, String service) { eventBus.fire(new ServiceCallEvent( - entity.domain, "alarm_disarm", entity.entityId, + entity.domain, service, entity.entityId, {"code": "$code"})); + setState(() { + code = ""; + }); } @override Widget build(BuildContext context) { final entityModel = EntityModel.of(context); final AlarmControlPanelEntity entity = entityModel.entityWrapper.entity; + List buttons = []; + if (entity.state == EntityState.alarm_disarmed) { + buttons.addAll([ + RaisedButton( + onPressed: () => _callService(entity, "alarm_arm_home"), + child: Text("ARM HOME"), + ), + RaisedButton( + onPressed: () => _callService(entity, "alarm_arm_away"), + child: Text("ARM AWAY"), + ) + ] + ); + } else { + buttons.add( + RaisedButton( + onPressed: () => _callService(entity, "alarm_disarm"), + child: Text("DISARM"), + ) + ); + } return Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - TextField( + Container( + width: 150.0, + child: TextField( //focusNode: _focusNode, - obscureText: true, - /*controller: new TextEditingController.fromValue( - new TextEditingValue( - text: _tmpValue, - selection: - new TextSelection.collapsed(offset: _tmpValue.length) - ) - ),*/ - onChanged: (value) { - Logger.d('Alarm code: $value'); - }) - ], + obscureText: true, + controller: new TextEditingController.fromValue( + new TextEditingValue( + text: code, + selection: + new TextSelection.collapsed(offset: code.length) + ) + ), + onChanged: (value) { + code = value; + } + ) + ), + Wrap( + alignment: WrapAlignment.center, + spacing: 10.0, + runSpacing: 1.0, + children: buttons + ) + ] + ); }