Implement setting of LoopStatus
This commit is contained in:
parent
9c0e139c17
commit
e407d8a4bb
@ -114,8 +114,7 @@ class MprisObject(dbus.service.Object):
|
||||
def _get_player_iface_properties(self):
|
||||
return {
|
||||
'PlaybackStatus': (self.get_PlaybackStatus, None),
|
||||
# TODO Set loop status
|
||||
'LoopStatus': (self.get_LoopStatus, None),
|
||||
'LoopStatus': (self.get_LoopStatus, self.set_LoopStatus),
|
||||
'Rate': (1.0, None),
|
||||
# TODO Get/set backend.playback.random
|
||||
'Shuffle': (False, None),
|
||||
@ -241,8 +240,8 @@ class MprisObject(dbus.service.Object):
|
||||
return 'Stopped'
|
||||
|
||||
def get_LoopStatus(self):
|
||||
single = self.backend.playback.single.get()
|
||||
repeat = self.backend.playback.repeat.get()
|
||||
single = self.backend.playback.single.get()
|
||||
if not repeat:
|
||||
return 'None'
|
||||
else:
|
||||
@ -251,6 +250,17 @@ class MprisObject(dbus.service.Object):
|
||||
else:
|
||||
return 'Playlist'
|
||||
|
||||
def set_LoopStatus(self, value):
|
||||
if value == 'None':
|
||||
self.backend.playback.repeat = False
|
||||
self.backend.playback.single = False
|
||||
elif value == 'Track':
|
||||
self.backend.playback.repeat = True
|
||||
self.backend.playback.single = True
|
||||
elif value == 'Playlist':
|
||||
self.backend.playback.repeat = True
|
||||
self.backend.playback.single = False
|
||||
|
||||
@dbus.service.method(dbus_interface=PLAYER_IFACE)
|
||||
def Next(self):
|
||||
logger.debug(u'%s.Next called', PLAYER_IFACE)
|
||||
|
||||
@ -56,6 +56,21 @@ class PlayerInterfaceTest(unittest.TestCase):
|
||||
result = self.mpris_object.Get(mpris.PLAYER_IFACE, 'LoopStatus')
|
||||
self.assertEqual('Playlist', result)
|
||||
|
||||
def test_set_loop_status_to_none_unsets_repeat_and_single(self):
|
||||
self.mpris_object.Set(mpris.PLAYER_IFACE, 'LoopStatus', 'None')
|
||||
self.assertEquals(self.backend.playback.repeat.get(), False)
|
||||
self.assertEquals(self.backend.playback.single.get(), False)
|
||||
|
||||
def test_set_loop_status_to_track_sets_repeat_and_single(self):
|
||||
self.mpris_object.Set(mpris.PLAYER_IFACE, 'LoopStatus', 'Track')
|
||||
self.assertEquals(self.backend.playback.repeat.get(), True)
|
||||
self.assertEquals(self.backend.playback.single.get(), True)
|
||||
|
||||
def test_set_loop_status_to_playlists_sets_repeat_and_not_single(self):
|
||||
self.mpris_object.Set(mpris.PLAYER_IFACE, 'LoopStatus', 'Playlist')
|
||||
self.assertEquals(self.backend.playback.repeat.get(), True)
|
||||
self.assertEquals(self.backend.playback.single.get(), False)
|
||||
|
||||
def test_next_when_playing_should_skip_to_next_track_and_keep_playing(self):
|
||||
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
|
||||
self.backend.playback.play()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user