Resolves #111: Assumed state
This commit is contained in:
@ -3,7 +3,7 @@ part of '../main.dart';
|
|||||||
class _ButtonEntityWidgetState extends _EntityWidgetState {
|
class _ButtonEntityWidgetState extends _EntityWidgetState {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void sendNewState(newValue) {
|
void setNewState(newValue) {
|
||||||
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "turn_on", widget.entity.entityId, null));
|
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) {
|
Widget _buildActionWidget(bool inCard, BuildContext context) {
|
||||||
return FlatButton(
|
return FlatButton(
|
||||||
onPressed: (() {
|
onPressed: (() {
|
||||||
sendNewState(null);
|
setNewState(null);
|
||||||
}),
|
}),
|
||||||
child: Text(
|
child: Text(
|
||||||
"EXECUTE",
|
"EXECUTE",
|
||||||
|
@ -28,7 +28,7 @@ class _DateTimeEntityWidgetState extends _EntityWidgetState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void sendNewState(newValue) {
|
void setNewState(newValue) {
|
||||||
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_datetime", widget.entity.entityId,
|
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_datetime", widget.entity.entityId,
|
||||||
newValue));
|
newValue));
|
||||||
}
|
}
|
||||||
@ -56,17 +56,17 @@ class _DateTimeEntityWidgetState extends _EntityWidgetState {
|
|||||||
if (date != null) {
|
if (date != null) {
|
||||||
if (hasTime) {
|
if (hasTime) {
|
||||||
_showTimePicker(context).then((time){
|
_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 {
|
} else {
|
||||||
sendNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}"});
|
setNewState({"date": "${formatDate(date, [yyyy, '-', mm, '-', dd])}"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (hasTime) {
|
} else if (hasTime) {
|
||||||
_showTimePicker(context).then((time){
|
_showTimePicker(context).then((time){
|
||||||
if (time != null) {
|
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 {
|
} else {
|
||||||
|
@ -22,6 +22,7 @@ class Entity {
|
|||||||
String _domain;
|
String _domain;
|
||||||
String _entityId;
|
String _entityId;
|
||||||
String _state;
|
String _state;
|
||||||
|
String assumedState;
|
||||||
DateTime _lastUpdated;
|
DateTime _lastUpdated;
|
||||||
|
|
||||||
String get displayName =>
|
String get displayName =>
|
||||||
@ -52,6 +53,7 @@ class Entity {
|
|||||||
_domain = rawData["entity_id"].split(".")[0];
|
_domain = rawData["entity_id"].split(".")[0];
|
||||||
_entityId = rawData["entity_id"];
|
_entityId = rawData["entity_id"];
|
||||||
_state = rawData["state"];
|
_state = rawData["state"];
|
||||||
|
assumedState = _state;
|
||||||
_lastUpdated = DateTime.tryParse(rawData["last_updated"]);
|
_lastUpdated = DateTime.tryParse(rawData["last_updated"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +181,7 @@ class _EntityWidgetState extends State<EntityWidget> {
|
|||||||
eventBus.fire(new ShowEntityPageEvent(widget.entity));
|
eventBus.fire(new ShowEntityPageEvent(widget.entity));
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendNewState(newState) {
|
void setNewState(newState) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ class _SelectEntityWidgetState extends _EntityWidgetState {
|
|||||||
List<String> _listOptions = [];
|
List<String> _listOptions = [];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void sendNewState(newValue) {
|
void setNewState(newValue) {
|
||||||
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "select_option", widget.entity.entityId,
|
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "select_option", widget.entity.entityId,
|
||||||
{"option": "$newValue"}));
|
{"option": "$newValue"}));
|
||||||
}
|
}
|
||||||
@ -28,7 +28,7 @@ class _SelectEntityWidgetState extends _EntityWidgetState {
|
|||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
onChanged: (_) {
|
onChanged: (_) {
|
||||||
sendNewState(_);
|
setNewState(_);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -14,7 +14,7 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void sendNewState(newValue) {
|
void setNewState(newValue) {
|
||||||
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
|
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
|
||||||
{"value": "${newValue.toString()}"}));
|
{"value": "${newValue.toString()}"}));
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
|
|||||||
(value.roundToDouble() / _multiplier).toString(), true));*/
|
(value.roundToDouble() / _multiplier).toString(), true));*/
|
||||||
},
|
},
|
||||||
onChangeEnd: (value) {
|
onChangeEnd: (value) {
|
||||||
sendNewState(value.roundToDouble() / _multiplier);
|
setNewState(value.roundToDouble() / _multiplier);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -8,7 +8,15 @@ class _SwitchEntityWidgetState extends _EntityWidgetState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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(
|
eventBus.fire(new ServiceCallEvent(
|
||||||
widget.entity.domain, (newValue as bool) ? "turn_on" : "turn_off", widget.entity.entityId, null));
|
widget.entity.domain, (newValue as bool) ? "turn_on" : "turn_off", widget.entity.entityId, null));
|
||||||
}
|
}
|
||||||
@ -16,12 +24,9 @@ class _SwitchEntityWidgetState extends _EntityWidgetState {
|
|||||||
@override
|
@override
|
||||||
Widget _buildActionWidget(bool inCard, BuildContext context) {
|
Widget _buildActionWidget(bool inCard, BuildContext context) {
|
||||||
return Switch(
|
return Switch(
|
||||||
value: widget.entity.isOn,
|
value: widget.entity.assumedState == 'on',
|
||||||
onChanged: ((switchState) {
|
onChanged: ((switchState) {
|
||||||
sendNewState(switchState);
|
setNewState(switchState);
|
||||||
setState(() {
|
|
||||||
widget.entity.state = switchState ? 'on' : 'off';
|
|
||||||
});
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void sendNewState(newValue) {
|
void setNewState(newValue) {
|
||||||
if (validate(newValue)) {
|
if (validate(newValue)) {
|
||||||
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
|
eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_value", widget.entity.entityId,
|
||||||
{"value": "$newValue"}));
|
{"value": "$newValue"}));
|
||||||
@ -43,7 +43,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
|
|||||||
|
|
||||||
void _focusListener() {
|
void _focusListener() {
|
||||||
if (!_focusNode.hasFocus && (_tmpValue != widget.entity.state)) {
|
if (!_focusNode.hasFocus && (_tmpValue != widget.entity.state)) {
|
||||||
sendNewState(_tmpValue);
|
setNewState(_tmpValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user