mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add MEDIA_ANNOUNCE to MediaPlayerEntityFeature (#95906)
This commit is contained in:
parent
7eb087a9d7
commit
87f284c7e9
@ -82,6 +82,7 @@ SUPPORTED_FEATURES = (
|
|||||||
| MediaPlayerEntityFeature.TURN_OFF
|
| MediaPlayerEntityFeature.TURN_OFF
|
||||||
| MediaPlayerEntityFeature.PLAY_MEDIA
|
| MediaPlayerEntityFeature.PLAY_MEDIA
|
||||||
| MediaPlayerEntityFeature.BROWSE_MEDIA
|
| MediaPlayerEntityFeature.BROWSE_MEDIA
|
||||||
|
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
|
||||||
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
||||||
)
|
)
|
||||||
SUPPORTED_FEATURES_ZONE = (
|
SUPPORTED_FEATURES_ZONE = (
|
||||||
|
@ -50,6 +50,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.event import async_track_state_change_event
|
from homeassistant.helpers.event import async_track_state_change_event
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
|
||||||
|
|
||||||
|
KEY_ANNOUNCE = "announce"
|
||||||
KEY_CLEAR_PLAYLIST = "clear_playlist"
|
KEY_CLEAR_PLAYLIST = "clear_playlist"
|
||||||
KEY_ENQUEUE = "enqueue"
|
KEY_ENQUEUE = "enqueue"
|
||||||
KEY_ON_OFF = "on_off"
|
KEY_ON_OFF = "on_off"
|
||||||
@ -116,6 +117,7 @@ class MediaPlayerGroup(MediaPlayerEntity):
|
|||||||
|
|
||||||
self._entities = entities
|
self._entities = entities
|
||||||
self._features: dict[str, set[str]] = {
|
self._features: dict[str, set[str]] = {
|
||||||
|
KEY_ANNOUNCE: set(),
|
||||||
KEY_CLEAR_PLAYLIST: set(),
|
KEY_CLEAR_PLAYLIST: set(),
|
||||||
KEY_ENQUEUE: set(),
|
KEY_ENQUEUE: set(),
|
||||||
KEY_ON_OFF: set(),
|
KEY_ON_OFF: set(),
|
||||||
@ -194,6 +196,10 @@ class MediaPlayerGroup(MediaPlayerEntity):
|
|||||||
self._features[KEY_VOLUME].add(entity_id)
|
self._features[KEY_VOLUME].add(entity_id)
|
||||||
else:
|
else:
|
||||||
self._features[KEY_VOLUME].discard(entity_id)
|
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:
|
if new_features & MediaPlayerEntityFeature.MEDIA_ENQUEUE:
|
||||||
self._features[KEY_ENQUEUE].add(entity_id)
|
self._features[KEY_ENQUEUE].add(entity_id)
|
||||||
else:
|
else:
|
||||||
@ -440,6 +446,8 @@ class MediaPlayerGroup(MediaPlayerEntity):
|
|||||||
| MediaPlayerEntityFeature.VOLUME_SET
|
| MediaPlayerEntityFeature.VOLUME_SET
|
||||||
| MediaPlayerEntityFeature.VOLUME_STEP
|
| MediaPlayerEntityFeature.VOLUME_STEP
|
||||||
)
|
)
|
||||||
|
if self._features[KEY_ANNOUNCE]:
|
||||||
|
supported_features |= MediaPlayerEntityFeature.MEDIA_ANNOUNCE
|
||||||
if self._features[KEY_ENQUEUE]:
|
if self._features[KEY_ENQUEUE]:
|
||||||
supported_features |= MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
supported_features |= MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
||||||
|
|
||||||
|
@ -199,6 +199,7 @@ class MediaPlayerEntityFeature(IntFlag):
|
|||||||
BROWSE_MEDIA = 131072
|
BROWSE_MEDIA = 131072
|
||||||
REPEAT_SET = 262144
|
REPEAT_SET = 262144
|
||||||
GROUPING = 524288
|
GROUPING = 524288
|
||||||
|
MEDIA_ANNOUNCE = 1048576
|
||||||
MEDIA_ENQUEUE = 2097152
|
MEDIA_ENQUEUE = 2097152
|
||||||
|
|
||||||
|
|
||||||
|
@ -172,6 +172,9 @@ play_media:
|
|||||||
announce:
|
announce:
|
||||||
name: Announce
|
name: Announce
|
||||||
description: If the media should be played as an announcement.
|
description: If the media should be played as an announcement.
|
||||||
|
filter:
|
||||||
|
supported_features:
|
||||||
|
- media_player.MediaPlayerEntityFeature.MEDIA_ANNOUNCE
|
||||||
required: false
|
required: false
|
||||||
example: "true"
|
example: "true"
|
||||||
selector:
|
selector:
|
||||||
|
@ -195,6 +195,7 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
|
|||||||
MediaPlayerEntityFeature.BROWSE_MEDIA
|
MediaPlayerEntityFeature.BROWSE_MEDIA
|
||||||
| MediaPlayerEntityFeature.CLEAR_PLAYLIST
|
| MediaPlayerEntityFeature.CLEAR_PLAYLIST
|
||||||
| MediaPlayerEntityFeature.GROUPING
|
| MediaPlayerEntityFeature.GROUPING
|
||||||
|
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
|
||||||
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
||||||
| MediaPlayerEntityFeature.NEXT_TRACK
|
| MediaPlayerEntityFeature.NEXT_TRACK
|
||||||
| MediaPlayerEntityFeature.PAUSE
|
| MediaPlayerEntityFeature.PAUSE
|
||||||
|
@ -192,7 +192,9 @@ async def test_supported_features(hass: HomeAssistant) -> None:
|
|||||||
| MediaPlayerEntityFeature.STOP
|
| MediaPlayerEntityFeature.STOP
|
||||||
)
|
)
|
||||||
play_media = (
|
play_media = (
|
||||||
MediaPlayerEntityFeature.PLAY_MEDIA | MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
MediaPlayerEntityFeature.PLAY_MEDIA
|
||||||
|
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
|
||||||
|
| MediaPlayerEntityFeature.MEDIA_ENQUEUE
|
||||||
)
|
)
|
||||||
volume = (
|
volume = (
|
||||||
MediaPlayerEntityFeature.VOLUME_MUTE
|
MediaPlayerEntityFeature.VOLUME_MUTE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user