Improve media switching
This commit is contained in:
@ -22,10 +22,6 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> {
|
||||
@override
|
||||
initState() {
|
||||
super.initState();
|
||||
if (HomeAssistant().savedPlayerPosition != null) {
|
||||
_savedPosition = HomeAssistant().savedPlayerPosition;
|
||||
HomeAssistant().savedPlayerPosition = null;
|
||||
}
|
||||
_timer = Timer.periodic(Duration(seconds: 1), (_) {
|
||||
if (!_seekStarted && !_changedHere) {
|
||||
setState(() {});
|
||||
@ -33,22 +29,16 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> {
|
||||
});
|
||||
}
|
||||
|
||||
void _switchTo(entity) {
|
||||
eventBus.fire(ServiceCallEvent("media_player", "turn_off", entity.entityId, null));
|
||||
HomeAssistant().savedPlayerPosition = entity.getActualPosition().toInt();
|
||||
HomeAssistant().savedPlayerId = entity.entityId;
|
||||
Navigator.of(context).pushNamed("/play-media", arguments: {"url": entity.attributes["media_content_id"], "type": entity.attributes["media_content_type"]});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final EntityModel entityModel = EntityModel.of(context);
|
||||
final MediaPlayerEntity entity = entityModel.entityWrapper.entity;
|
||||
|
||||
if (entity.canCalculateActualPosition()) {
|
||||
if (HomeAssistant().savedPlayerId != entity.entityId && HomeAssistant().savedPlayerPosition != null) {
|
||||
if (HomeAssistant().sendToPlayerId == entity.entityId && HomeAssistant().savedPlayerPosition != null) {
|
||||
_savedPosition = HomeAssistant().savedPlayerPosition;
|
||||
HomeAssistant().savedPlayerPosition = null;
|
||||
HomeAssistant().sendToPlayerId = null;
|
||||
}
|
||||
if (entity.state == EntityState.playing && !_seekStarted &&
|
||||
!_changedHere) {
|
||||
@ -77,14 +67,6 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> {
|
||||
)
|
||||
);
|
||||
}
|
||||
buttons.add(
|
||||
RaisedButton(
|
||||
child: Text("Switch to..."),
|
||||
color: Colors.blue,
|
||||
textColor: Colors.white,
|
||||
onPressed: () => _switchTo(entity),
|
||||
)
|
||||
);
|
||||
return Padding(
|
||||
padding: EdgeInsets.fromLTRB(Sizes.leftWidgetPadding, 20, Sizes.rightWidgetPadding, 0),
|
||||
child: Column(
|
||||
|
@ -403,6 +403,24 @@ class _MediaPlayerControlsState extends State<MediaPlayerControls> {
|
||||
)
|
||||
);
|
||||
}
|
||||
children.add(
|
||||
ButtonBar(
|
||||
children: <Widget>[
|
||||
RaisedButton(
|
||||
child: Text("Duplicate to"),
|
||||
color: Colors.blue,
|
||||
textColor: Colors.white,
|
||||
onPressed: () => _duplicateTo(entity),
|
||||
),
|
||||
RaisedButton(
|
||||
child: Text("Switch to"),
|
||||
color: Colors.blue,
|
||||
textColor: Colors.white,
|
||||
onPressed: () => _switchTo(entity),
|
||||
)
|
||||
],
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
return Column(
|
||||
@ -410,4 +428,21 @@ class _MediaPlayerControlsState extends State<MediaPlayerControls> {
|
||||
);
|
||||
}
|
||||
|
||||
void _duplicateTo(entity) {
|
||||
HomeAssistant().savedPlayerPosition = entity.getActualPosition().toInt();
|
||||
if (MediaQuery.of(context).size.width < Sizes.tabletMinWidth) {
|
||||
Navigator.of(context).popAndPushNamed("/play-media", arguments: {"url": entity.attributes["media_content_id"], "type": entity.attributes["media_content_type"]});
|
||||
} else {
|
||||
Navigator.of(context).pushNamed("/play-media", arguments: {
|
||||
"url": entity.attributes["media_content_id"],
|
||||
"type": entity.attributes["media_content_type"]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _switchTo(entity) {
|
||||
eventBus.fire(ServiceCallEvent(entity.domain, "turn_off", entity.entityId, null));
|
||||
_duplicateTo(entity);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user