Add volume to playback API of backends.
- Add volume get/setter to the playback provider. - Add volume property to the playback controller.
This commit is contained in:
parent
44e3cc03e7
commit
4c509c2e2c
@ -319,6 +319,14 @@ class PlaybackController(object):
|
||||
def _current_wall_time(self):
|
||||
return int(time.time() * 1000)
|
||||
|
||||
@property
|
||||
def volume(self):
|
||||
return self.provider.get_volume()
|
||||
|
||||
@volume.setter
|
||||
def volume(self, volume):
|
||||
self.provider.set_volume(volume)
|
||||
|
||||
def change_track(self, cp_track, on_error_step=1):
|
||||
"""
|
||||
Change to the given track, keeping the current playback state.
|
||||
@ -604,3 +612,27 @@ class BasePlaybackProvider(object):
|
||||
:rtype: :class:`True` if successful, else :class:`False`
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
# TODO: having these in the provider is stupid, but since we currently
|
||||
# don't have gstreamer exposed in a sensible way for this...
|
||||
# On the bright side it makes testing volume stuff less painful.
|
||||
def get_volume(self):
|
||||
"""
|
||||
Get current volume
|
||||
|
||||
*MUST be implemented by subclass.*
|
||||
|
||||
:rtype: int [0..100] or :class:`None`
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
def set_volume(self, volume):
|
||||
"""
|
||||
Get current volume
|
||||
|
||||
*MUST be implemented by subclass.*
|
||||
|
||||
:param: volume
|
||||
:type volume: int [0..100]
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
@ -56,6 +56,10 @@ class DummyLibraryProvider(BaseLibraryProvider):
|
||||
|
||||
|
||||
class DummyPlaybackProvider(BasePlaybackProvider):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DummyPlaybackProvider, self).__init__(*args, **kwargs)
|
||||
self._volume = None
|
||||
|
||||
def pause(self):
|
||||
return True
|
||||
|
||||
@ -72,6 +76,12 @@ class DummyPlaybackProvider(BasePlaybackProvider):
|
||||
def stop(self):
|
||||
return True
|
||||
|
||||
def get_volume(self):
|
||||
return self._volume
|
||||
|
||||
def set_volume(self, volume):
|
||||
self._volume = volume
|
||||
|
||||
|
||||
class DummyStoredPlaylistsProvider(BaseStoredPlaylistsProvider):
|
||||
def create(self, name):
|
||||
|
||||
@ -102,6 +102,12 @@ class LocalPlaybackProvider(BasePlaybackProvider):
|
||||
def stop(self):
|
||||
return self.backend.gstreamer.stop_playback().get()
|
||||
|
||||
def get_volume(self):
|
||||
return self.backend.gstreamer.get_volume().get()
|
||||
|
||||
def set_volume(self, volume):
|
||||
self.backend.gstreamer.set_volume(volume).get()
|
||||
|
||||
|
||||
class LocalStoredPlaylistsProvider(BaseStoredPlaylistsProvider):
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
@ -41,3 +41,9 @@ class SpotifyPlaybackProvider(BasePlaybackProvider):
|
||||
result = self.backend.gstreamer.stop_playback()
|
||||
self.backend.spotify.session.play(0)
|
||||
return result
|
||||
|
||||
def get_volume(self):
|
||||
return self.backend.gstreamer.get_volume()
|
||||
|
||||
def set_volume(self, volume):
|
||||
self.backend.gstreamer.set_volume(volume)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user