Add MEDIA_ANNOUNCE to MediaPlayerEntityFeature (#95906)

This commit is contained in:
Erik Montnemery 2023-07-10 12:58:53 +02:00 committed by GitHub
parent 7eb087a9d7
commit 87f284c7e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 1 deletions

View file

@ -82,6 +82,7 @@ SUPPORTED_FEATURES = (
| MediaPlayerEntityFeature.TURN_OFF
| MediaPlayerEntityFeature.PLAY_MEDIA
| MediaPlayerEntityFeature.BROWSE_MEDIA
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
)
SUPPORTED_FEATURES_ZONE = (

View file

@ -50,6 +50,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.event import async_track_state_change_event
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
KEY_ANNOUNCE = "announce"
KEY_CLEAR_PLAYLIST = "clear_playlist"
KEY_ENQUEUE = "enqueue"
KEY_ON_OFF = "on_off"
@ -116,6 +117,7 @@ class MediaPlayerGroup(MediaPlayerEntity):
self._entities = entities
self._features: dict[str, set[str]] = {
KEY_ANNOUNCE: set(),
KEY_CLEAR_PLAYLIST: set(),
KEY_ENQUEUE: set(),
KEY_ON_OFF: set(),
@ -194,6 +196,10 @@ class MediaPlayerGroup(MediaPlayerEntity):
self._features[KEY_VOLUME].add(entity_id)
else:
self._features[KEY_VOLUME].discard(entity_id)
if new_features & MediaPlayerEntityFeature.MEDIA_ANNOUNCE:
self._features[KEY_ANNOUNCE].add(entity_id)
else:
self._features[KEY_ANNOUNCE].discard(entity_id)
if new_features & MediaPlayerEntityFeature.MEDIA_ENQUEUE:
self._features[KEY_ENQUEUE].add(entity_id)
else:
@ -440,6 +446,8 @@ class MediaPlayerGroup(MediaPlayerEntity):
| MediaPlayerEntityFeature.VOLUME_SET
| MediaPlayerEntityFeature.VOLUME_STEP
)
if self._features[KEY_ANNOUNCE]:
supported_features |= MediaPlayerEntityFeature.MEDIA_ANNOUNCE
if self._features[KEY_ENQUEUE]:
supported_features |= MediaPlayerEntityFeature.MEDIA_ENQUEUE

View file

@ -199,6 +199,7 @@ class MediaPlayerEntityFeature(IntFlag):
BROWSE_MEDIA = 131072
REPEAT_SET = 262144
GROUPING = 524288
MEDIA_ANNOUNCE = 1048576
MEDIA_ENQUEUE = 2097152

View file

@ -172,6 +172,9 @@ play_media:
announce:
name: Announce
description: If the media should be played as an announcement.
filter:
supported_features:
- media_player.MediaPlayerEntityFeature.MEDIA_ANNOUNCE
required: false
example: "true"
selector:

View file

@ -195,6 +195,7 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
MediaPlayerEntityFeature.BROWSE_MEDIA
| MediaPlayerEntityFeature.CLEAR_PLAYLIST
| MediaPlayerEntityFeature.GROUPING
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
| MediaPlayerEntityFeature.NEXT_TRACK
| MediaPlayerEntityFeature.PAUSE

View file

@ -192,7 +192,9 @@ async def test_supported_features(hass: HomeAssistant) -> None:
| MediaPlayerEntityFeature.STOP
)
play_media = (
MediaPlayerEntityFeature.PLAY_MEDIA | MediaPlayerEntityFeature.MEDIA_ENQUEUE
MediaPlayerEntityFeature.PLAY_MEDIA
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
)
volume = (
MediaPlayerEntityFeature.VOLUME_MUTE