diff --git a/lib/entity_class/media_player_entity.class.dart b/lib/entity_class/media_player_entity.class.dart index 482dd01..f0d86e1 100644 --- a/lib/entity_class/media_player_entity.class.dart +++ b/lib/entity_class/media_player_entity.class.dart @@ -73,6 +73,7 @@ class MediaPlayerEntity extends Entity { MediaPlayerEntity.SUPPORT_SELECT_SOUND_MODE); List get soundModeList => getStringListAttributeValue("sound_mode_list"); + List get sourceList => getStringListAttributeValue("source_list"); @override Widget _buildAdditionalControlsForPage(BuildContext context) { diff --git a/lib/entity_widgets/controls/media_player_widgets.dart b/lib/entity_widgets/controls/media_player_widgets.dart index ea0d9f3..ec51130 100644 --- a/lib/entity_widgets/controls/media_player_widgets.dart +++ b/lib/entity_widgets/controls/media_player_widgets.dart @@ -256,6 +256,7 @@ class _MediaPlayerControlsState extends State { double _newVolumeLevel; bool _changedHere = false; String _newSoundMode; + String _newSource; void _setVolume(double value, String entityId) { setState(() { @@ -285,6 +286,14 @@ class _MediaPlayerControlsState extends State { }); } + void _setSource(String source, String entityId) { + setState(() { + _newSource = source; + _changedHere = true; + eventBus.fire(ServiceCallEvent("media_player", "select_source", entityId, {"source": "$source"})); + }); + } + @override Widget build(BuildContext context) { final MediaPlayerEntity entity = EntityModel.of(context).entityWrapper.entity; @@ -372,6 +381,22 @@ class _MediaPlayerControlsState extends State { ); } + if (entity.supportSelectSource && entity.sourceList != null) { + if (!_changedHere) { + _newSource = entity.attributes["source"]; + } else { + _changedHere = false; + } + children.add( + ModeSelectorWidget( + options: entity.sourceList, + caption: "Source", + value: _newSource, + onChange: (value) => _setSource(value, entity.entityId) + ) + ); + } + } return Column( children: children,