MPD: Support 'pause' without args to work with MPDroid

This commit is contained in:
Stein Magnus Jodal 2010-08-13 12:26:34 +02:00
parent 255d70d1ae
commit a3fb8a1f72
3 changed files with 30 additions and 8 deletions

View File

@ -24,6 +24,7 @@ Another great release.
- Search improvements, including support for multi-word search.
- Fixed ``play "-1"`` and ``playid "-1"`` behaviour when playlist is empty.
- Support ``plchanges "-1"`` to work better with MPDroid.
- Support ``pause`` without arguments to work better with MPDroid.
- Backend API:

View File

@ -86,16 +86,28 @@ def next_(frontend):
"""
return frontend.backend.playback.next()
@handle_pattern(r'^pause$')
@handle_pattern(r'^pause "(?P<state>[01])"$')
def pause(frontend, state):
def pause(frontend, state=None):
"""
*musicpd.org, playback section:*
``pause {PAUSE}``
Toggles pause/resumes playing, ``PAUSE`` is 0 or 1.
*MPDroid:*
- Calls ``pause`` without any arguments to toogle pause.
"""
if int(state):
if state is None:
if (frontend.backend.playback.state ==
frontend.backend.playback.PLAYING):
frontend.backend.playback.pause()
elif (frontend.backend.playback.state ==
frontend.backend.playback.PAUSED):
frontend.backend.playback.resume()
elif int(state):
frontend.backend.playback.pause()
else:
frontend.backend.playback.resume()

View File

@ -136,8 +136,7 @@ class PlaybackControlHandlerTest(unittest.TestCase):
self.assert_(u'OK' in result)
def test_pause_off(self):
track = Track()
self.b.current_playlist.load([track])
self.b.current_playlist.load([Track()])
self.h.handle_request(u'play "0"')
self.h.handle_request(u'pause "1"')
result = self.h.handle_request(u'pause "0"')
@ -145,16 +144,26 @@ class PlaybackControlHandlerTest(unittest.TestCase):
self.assertEqual(self.b.playback.PLAYING, self.b.playback.state)
def test_pause_on(self):
track = Track()
self.b.current_playlist.load([track])
self.b.current_playlist.load([Track()])
self.h.handle_request(u'play "0"')
result = self.h.handle_request(u'pause "1"')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.PAUSED, self.b.playback.state)
def test_pause_toggle(self):
self.b.current_playlist.load([Track()])
result = self.h.handle_request(u'play "0"')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.PLAYING, self.b.playback.state)
result = self.h.handle_request(u'pause')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.PAUSED, self.b.playback.state)
result = self.h.handle_request(u'pause')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.PLAYING, self.b.playback.state)
def test_play_without_pos(self):
track = Track()
self.b.current_playlist.load([track])
self.b.current_playlist.load([Track()])
self.b.playback.state = self.b.playback.PAUSED
result = self.h.handle_request(u'play')
self.assert_(u'OK' in result)