Use attributes in demo media-player (#78461)

* Use attributes in demo media-player

* Use _attr_is_volume_muted

* Use _attr_shuffle

* Use _attr_sound_mode / _attr_sound_mode_list
This commit is contained in:
epenet 2022-09-16 23:04:29 +02:00 committed by GitHub
parent 047c3862d7
commit be17ba15db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -105,6 +105,7 @@ NETFLIX_PLAYER_SUPPORT = (
class AbstractDemoPlayer(MediaPlayerEntity):
"""A demo media players."""
_attr_sound_mode_list = SOUND_MODE_LIST
_attr_should_poll = False
# We only implement the methods that we support
@ -115,38 +116,12 @@ class AbstractDemoPlayer(MediaPlayerEntity):
"""Initialize the demo device."""
self._attr_name = name
self._attr_state = MediaPlayerState.PLAYING
self._volume_level = 1.0
self._volume_muted = False
self._shuffle = False
self._sound_mode_list = SOUND_MODE_LIST
self._sound_mode = DEFAULT_SOUND_MODE
self._attr_volume_level = 1.0
self._attr_is_volume_muted = False
self._attr_shuffle = False
self._attr_sound_mode = DEFAULT_SOUND_MODE
self._attr_device_class = device_class
@property
def volume_level(self) -> float:
"""Return the volume level of the media player (0..1)."""
return self._volume_level
@property
def is_volume_muted(self) -> bool:
"""Return boolean if volume is currently muted."""
return self._volume_muted
@property
def shuffle(self) -> bool:
"""Boolean if shuffling is enabled."""
return self._shuffle
@property
def sound_mode(self) -> str:
"""Return the current sound mode."""
return self._sound_mode
@property
def sound_mode_list(self) -> list[str]:
"""Return a list of available sound modes."""
return self._sound_mode_list
def turn_on(self) -> None:
"""Turn the media player on."""
self._attr_state = MediaPlayerState.PLAYING
@ -159,22 +134,24 @@ class AbstractDemoPlayer(MediaPlayerEntity):
def mute_volume(self, mute: bool) -> None:
"""Mute the volume."""
self._volume_muted = mute
self._attr_is_volume_muted = mute
self.schedule_update_ha_state()
def volume_up(self) -> None:
"""Increase volume."""
self._volume_level = min(1.0, self._volume_level + 0.1)
assert self.volume_level is not None
self._attr_volume_level = min(1.0, self.volume_level + 0.1)
self.schedule_update_ha_state()
def volume_down(self) -> None:
"""Decrease volume."""
self._volume_level = max(0.0, self._volume_level - 0.1)
assert self.volume_level is not None
self._attr_volume_level = max(0.0, self.volume_level - 0.1)
self.schedule_update_ha_state()
def set_volume_level(self, volume: float) -> None:
"""Set the volume level, range 0..1."""
self._volume_level = volume
self._attr_volume_level = volume
self.schedule_update_ha_state()
def media_play(self) -> None:
@ -194,12 +171,12 @@ class AbstractDemoPlayer(MediaPlayerEntity):
def set_shuffle(self, shuffle: bool) -> None:
"""Enable/disable shuffle mode."""
self._shuffle = shuffle
self._attr_shuffle = shuffle
self.schedule_update_ha_state()
def select_sound_mode(self, sound_mode: str) -> None:
"""Select sound mode."""
self._sound_mode = sound_mode
self._attr_sound_mode = sound_mode
self.schedule_update_ha_state()