Resolves #111: Assumed state

This commit is contained in:
estevez
2018-10-02 23:10:40 +03:00
parent 98d716109b
commit 8a0d5581d9
7 changed files with 26 additions and 19 deletions

View File

@ -3,7 +3,7 @@ part of '../main.dart';
class _ButtonEntityWidgetState extends _EntityWidgetState {
@override
void sendNewState(newValue) {
void setNewState(newValue) {
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "turn_on", widget.entity.entityId, null));
}
@ -11,7 +11,7 @@ class _ButtonEntityWidgetState extends _EntityWidgetState {
Widget _buildActionWidget(bool inCard, BuildContext context) {
return FlatButton(
onPressed: (() {
sendNewState(null);
setNewState(null);
}),
child: Text(
"EXECUTE",

View File

@ -28,7 +28,7 @@ class _DateTimeEntityWidgetState extends _EntityWidgetState {
}
@override
void sendNewState(newValue) {
void setNewState(newValue) {
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_datetime", widget.entity.entityId,
newValue));
}
@ -56,17 +56,17 @@ class _DateTimeEntityWidgetState extends _EntityWidgetState {
if (date != null) {
if (hasTime) {
_showTimePicker(context).then((time){
sendNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}", "time": "${formatDate(DateTime(1970, 1, 1, time.hour, time.minute), [HH, ':', nn])}"});
setNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}", "time": "${formatDate(DateTime(1970, 1, 1, time.hour, time.minute), [HH, ':', nn])}"});
});
} else {
sendNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}"});
setNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}"});
}
}
});
} else if (hasTime) {
_showTimePicker(context).then((time){
if (time != null) {
sendNewState({"time": "${formatDate(DateTime(1970, 1, 1, time.hour, time.minute), [HH, ':', nn])}"});
setNewState({"time": "${formatDate(DateTime(1970, 1, 1, time.hour, time.minute), [HH, ':', nn])}"});
}
});
} else {

View File

@ -22,6 +22,7 @@ class Entity {
String _domain;
String _entityId;
String _state;
String assumedState;
DateTime _lastUpdated;
String get displayName =>
@ -52,6 +53,7 @@ class Entity {
_domain = rawData["entity_id"].split(".")[0];
_entityId = rawData["entity_id"];
_state = rawData["state"];
assumedState = _state;
_lastUpdated = DateTime.tryParse(rawData["last_updated"]);
}
@ -179,7 +181,7 @@ class _EntityWidgetState extends State<EntityWidget> {
eventBus.fire(new ShowEntityPageEvent(widget.entity));
}
void sendNewState(newState) {
void setNewState(newState) {
return;
}

View File

@ -4,7 +4,7 @@ class _SelectEntityWidgetState extends _EntityWidgetState {
List<String> _listOptions = [];
@override
void sendNewState(newValue) {
void setNewState(newValue) {
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "select_option", widget.entity.entityId,
{"option": "$newValue"}));
}
@ -28,7 +28,7 @@ class _SelectEntityWidgetState extends _EntityWidgetState {
);
}).toList(),
onChanged: (_) {
sendNewState(_);
setNewState(_);
},
),
);

View File

@ -14,7 +14,7 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
}
@override
void sendNewState(newValue) {
void setNewState(newValue) {
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
{"value": "${newValue.toString()}"}));
}
@ -46,7 +46,7 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
(value.roundToDouble() / _multiplier).toString(), true));*/
},
onChangeEnd: (value) {
sendNewState(value.roundToDouble() / _multiplier);
setNewState(value.roundToDouble() / _multiplier);
},
),
),

View File

@ -8,7 +8,15 @@ class _SwitchEntityWidgetState extends _EntityWidgetState {
}
@override
void sendNewState(newValue) {
void setNewState(newValue) {
setState(() {
widget.entity.assumedState = newValue ? 'on' : 'off';
});
Timer(Duration(seconds: 2), (){
setState(() {
widget.entity.assumedState = widget.entity.state;
});
});
eventBus.fire(new ServiceCallEvent(
widget.entity.domain, (newValue as bool) ? "turn_on" : "turn_off", widget.entity.entityId, null));
}
@ -16,12 +24,9 @@ class _SwitchEntityWidgetState extends _EntityWidgetState {
@override
Widget _buildActionWidget(bool inCard, BuildContext context) {
return Switch(
value: widget.entity.isOn,
value: widget.entity.assumedState == 'on',
onChanged: ((switchState) {
sendNewState(switchState);
setState(() {
widget.entity.state = switchState ? 'on' : 'off';
});
setNewState(switchState);
}),
);
}

View File

@ -19,7 +19,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
}
@override
void sendNewState(newValue) {
void setNewState(newValue) {
if (validate(newValue)) {
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
{"value": "$newValue"}));
@ -43,7 +43,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
void _focusListener() {
if (!_focusNode.hasFocus && (_tmpValue != widget.entity.state)) {
sendNewState(_tmpValue);
setNewState(_tmpValue);
}
}