diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 43494a67..2adc2398 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -103,6 +103,7 @@ class BasePlaybackController(object): def __init__(self, backend): self.backend = backend self.current_track = None + self._volume = None def play(self, id=None, position=None): raise NotImplementedError @@ -146,3 +147,7 @@ class BasePlaybackController(object): return playlist.tracks.index(self.current_track) except ValueError: return None + + @property + def volume(self): + return self._volume diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 48c1690b..7c474bd8 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -87,3 +87,11 @@ class GStreamerPlaybackController(BasePlaybackController): else: next_track = playlist.tracks[self.playlist_position+1] self.play(next_track) + + @property + def volume(self): + return self.bin.get_property('volume') * 100 + + @volume.setter + def volume(self, value): + return self.bin.set_property('volume', float(value) / 100) diff --git a/tests/backends/basetests.py b/tests/backends/basetests.py index 702ea80d..ea56d507 100644 --- a/tests/backends/basetests.py +++ b/tests/backends/basetests.py @@ -190,6 +190,7 @@ class BaseCurrentPlaylistControllerTest(object): class BasePlaybackControllerTest(object): uris = [] backend_class = None + supports_volume = False def setUp(self): self.backend = self.backend_class() @@ -369,7 +370,14 @@ class BasePlaybackControllerTest(object): raise NotImplementedError def test_volume(self): - raise NotImplementedError + if not self.supports_volume: + self.assertEqual(self.playback.volume, None) + else: + self.assertEqual(self.playback.volume, 100) + self.playback.volume = 50 + self.assertEqual(self.playback.volume, 50) + self.playback.volume = 0 + self.assertEqual(self.playback.volume, 0) def test_play_with_consume(self): raise NotImplementedError diff --git a/tests/backends/gstreamer.py b/tests/backends/gstreamer.py index f6c4244d..0a61f21a 100644 --- a/tests/backends/gstreamer.py +++ b/tests/backends/gstreamer.py @@ -20,6 +20,7 @@ class GStreamerPlaybackControllerTest(BasePlaybackControllerTest, unittest.TestC ] backend_class = GStreamerBackend + supports_volume = True if __name__ == '__main__': unittest.main()