From 04ceb83c9445cb9dd1cfd2674135a9e54c82de73 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 28 Feb 2010 23:22:12 +0100 Subject: [PATCH] Implement _playback_single and add 'single' field to BasePlaybackController --- mopidy/backends/__init__.py | 6 ++++++ mopidy/mpd/handler.py | 7 +++---- tests/mpd/handlertest.py | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index e800f6b2..f8eb8845 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -249,6 +249,12 @@ class BasePlaybackController(object): #: The current track is played once. repeat = False + #: :class:`True` + #: Playback is stopped after current song, unless in repeat mode. + #: :class:`False` + #: Playback continues after current song. + single = False + def __init__(self, backend, mixer=alsaaudio.Mixer): self.backend = backend self._state = self.STOPPED diff --git a/mopidy/mpd/handler.py b/mopidy/mpd/handler.py index ef5e55d4..885aeb18 100644 --- a/mopidy/mpd/handler.py +++ b/mopidy/mpd/handler.py @@ -888,11 +888,10 @@ class MpdHandler(object): single is activated, playback is stopped after current song, or song is repeated if the ``repeat`` mode is enabled. """ - state = int(state) - if state: - raise MpdNotImplemented # TODO + if int(state): + self.backend.playback.single = True else: - raise MpdNotImplemented # TODO + self.backend.playback.single = False @handle_pattern(r'^stop$') def _playback_stop(self): diff --git a/tests/mpd/handlertest.py b/tests/mpd/handlertest.py index 6f3c7bf2..27a57c90 100644 --- a/tests/mpd/handlertest.py +++ b/tests/mpd/handlertest.py @@ -371,11 +371,13 @@ class PlaybackOptionsHandlerTest(unittest.TestCase): def test_single_off(self): result = self.h.handle_request(u'single "0"') - self.assert_(u'ACK Not implemented' in result) + self.assertFalse(self.b.playback.single) + self.assert_(u'OK' in result) def test_single_on(self): result = self.h.handle_request(u'single "1"') - self.assert_(u'ACK Not implemented' in result) + self.assertTrue(self.b.playback.single) + self.assert_(u'OK' in result) def test_replay_gain_mode_off(self): result = self.h.handle_request(u'replay_gain_mode "off"')