Update MPD frontend to use playback volume API.
This commit is contained in:
parent
14eeb20226
commit
4ffd06736e
@ -15,7 +15,6 @@ from mopidy.frontends.mpd.protocol import (audio_output, command_list,
|
|||||||
connection, current_playlist, empty, music_db, playback, reflection,
|
connection, current_playlist, empty, music_db, playback, reflection,
|
||||||
status, stickers, stored_playlists)
|
status, stickers, stored_playlists)
|
||||||
# pylint: enable = W0611
|
# pylint: enable = W0611
|
||||||
from mopidy.mixers.base import BaseMixer
|
|
||||||
from mopidy.utils import flatten
|
from mopidy.utils import flatten
|
||||||
|
|
||||||
logger = logging.getLogger('mopidy.frontends.mpd.dispatcher')
|
logger = logging.getLogger('mopidy.frontends.mpd.dispatcher')
|
||||||
@ -235,7 +234,6 @@ class MpdContext(object):
|
|||||||
self.events = set()
|
self.events = set()
|
||||||
self.subscriptions = set()
|
self.subscriptions = set()
|
||||||
self._backend = None
|
self._backend = None
|
||||||
self._mixer = None
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def backend(self):
|
def backend(self):
|
||||||
@ -248,14 +246,3 @@ class MpdContext(object):
|
|||||||
'Expected exactly one running backend.'
|
'Expected exactly one running backend.'
|
||||||
self._backend = backend_refs[0].proxy()
|
self._backend = backend_refs[0].proxy()
|
||||||
return self._backend
|
return self._backend
|
||||||
|
|
||||||
@property
|
|
||||||
def mixer(self):
|
|
||||||
"""
|
|
||||||
The mixer. An instance of :class:`mopidy.mixers.base.BaseMixer`.
|
|
||||||
"""
|
|
||||||
if self._mixer is None:
|
|
||||||
mixer_refs = ActorRegistry.get_by_class(BaseMixer)
|
|
||||||
assert len(mixer_refs) == 1, 'Expected exactly one running mixer.'
|
|
||||||
self._mixer = mixer_refs[0].proxy()
|
|
||||||
return self._mixer
|
|
||||||
|
|||||||
@ -353,7 +353,7 @@ def setvol(context, volume):
|
|||||||
volume = 0
|
volume = 0
|
||||||
if volume > 100:
|
if volume > 100:
|
||||||
volume = 100
|
volume = 100
|
||||||
context.mixer.volume = volume
|
context.backend.playback.volume = volume
|
||||||
|
|
||||||
@handle_request(r'^single (?P<state>[01])$')
|
@handle_request(r'^single (?P<state>[01])$')
|
||||||
@handle_request(r'^single "(?P<state>[01])"$')
|
@handle_request(r'^single "(?P<state>[01])"$')
|
||||||
|
|||||||
@ -168,7 +168,7 @@ def status(context):
|
|||||||
futures = {
|
futures = {
|
||||||
'current_playlist.length': context.backend.current_playlist.length,
|
'current_playlist.length': context.backend.current_playlist.length,
|
||||||
'current_playlist.version': context.backend.current_playlist.version,
|
'current_playlist.version': context.backend.current_playlist.version,
|
||||||
'mixer.volume': context.mixer.volume,
|
'playback.volume': context.backend.playback.volume,
|
||||||
'playback.consume': context.backend.playback.consume,
|
'playback.consume': context.backend.playback.consume,
|
||||||
'playback.random': context.backend.playback.random,
|
'playback.random': context.backend.playback.random,
|
||||||
'playback.repeat': context.backend.playback.repeat,
|
'playback.repeat': context.backend.playback.repeat,
|
||||||
@ -263,7 +263,7 @@ def _status_time_total(futures):
|
|||||||
return current_cp_track.track.length
|
return current_cp_track.track.length
|
||||||
|
|
||||||
def _status_volume(futures):
|
def _status_volume(futures):
|
||||||
volume = futures['mixer.volume'].get()
|
volume = futures['playback.volume'].get()
|
||||||
if volume is not None:
|
if volume is not None:
|
||||||
return volume
|
return volume
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -2,7 +2,6 @@ from mopidy.backends.dummy import DummyBackend
|
|||||||
from mopidy.frontends.mpd.dispatcher import MpdDispatcher
|
from mopidy.frontends.mpd.dispatcher import MpdDispatcher
|
||||||
from mopidy.frontends.mpd.exceptions import MpdAckError
|
from mopidy.frontends.mpd.exceptions import MpdAckError
|
||||||
from mopidy.frontends.mpd.protocol import request_handlers, handle_request
|
from mopidy.frontends.mpd.protocol import request_handlers, handle_request
|
||||||
from mopidy.mixers.dummy import DummyMixer
|
|
||||||
|
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
|
|
||||||
@ -10,12 +9,10 @@ from tests import unittest
|
|||||||
class MpdDispatcherTest(unittest.TestCase):
|
class MpdDispatcherTest(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.backend = DummyBackend.start().proxy()
|
self.backend = DummyBackend.start().proxy()
|
||||||
self.mixer = DummyMixer.start().proxy()
|
|
||||||
self.dispatcher = MpdDispatcher()
|
self.dispatcher = MpdDispatcher()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.backend.stop().get()
|
self.backend.stop().get()
|
||||||
self.mixer.stop().get()
|
|
||||||
|
|
||||||
def test_register_same_pattern_twice_fails(self):
|
def test_register_same_pattern_twice_fails(self):
|
||||||
func = lambda: None
|
func = lambda: None
|
||||||
|
|||||||
@ -3,7 +3,6 @@ import mock
|
|||||||
from mopidy import settings
|
from mopidy import settings
|
||||||
from mopidy.backends import dummy as backend
|
from mopidy.backends import dummy as backend
|
||||||
from mopidy.frontends import mpd
|
from mopidy.frontends import mpd
|
||||||
from mopidy.mixers import dummy as mixer
|
|
||||||
|
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
|
|
||||||
@ -23,7 +22,6 @@ class MockConnection(mock.Mock):
|
|||||||
class BaseTestCase(unittest.TestCase):
|
class BaseTestCase(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.backend = backend.DummyBackend.start().proxy()
|
self.backend = backend.DummyBackend.start().proxy()
|
||||||
self.mixer = mixer.DummyMixer.start().proxy()
|
|
||||||
|
|
||||||
self.connection = MockConnection()
|
self.connection = MockConnection()
|
||||||
self.session = mpd.MpdSession(self.connection)
|
self.session = mpd.MpdSession(self.connection)
|
||||||
@ -32,7 +30,6 @@ class BaseTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.backend.stop().get()
|
self.backend.stop().get()
|
||||||
self.mixer.stop().get()
|
|
||||||
settings.runtime.clear()
|
settings.runtime.clear()
|
||||||
|
|
||||||
def sendRequest(self, request):
|
def sendRequest(self, request):
|
||||||
|
|||||||
@ -76,37 +76,37 @@ class PlaybackOptionsHandlerTest(protocol.BaseTestCase):
|
|||||||
|
|
||||||
def test_setvol_below_min(self):
|
def test_setvol_below_min(self):
|
||||||
self.sendRequest(u'setvol "-10"')
|
self.sendRequest(u'setvol "-10"')
|
||||||
self.assertEqual(0, self.mixer.volume.get())
|
self.assertEqual(0, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_min(self):
|
def test_setvol_min(self):
|
||||||
self.sendRequest(u'setvol "0"')
|
self.sendRequest(u'setvol "0"')
|
||||||
self.assertEqual(0, self.mixer.volume.get())
|
self.assertEqual(0, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_middle(self):
|
def test_setvol_middle(self):
|
||||||
self.sendRequest(u'setvol "50"')
|
self.sendRequest(u'setvol "50"')
|
||||||
self.assertEqual(50, self.mixer.volume.get())
|
self.assertEqual(50, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_max(self):
|
def test_setvol_max(self):
|
||||||
self.sendRequest(u'setvol "100"')
|
self.sendRequest(u'setvol "100"')
|
||||||
self.assertEqual(100, self.mixer.volume.get())
|
self.assertEqual(100, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_above_max(self):
|
def test_setvol_above_max(self):
|
||||||
self.sendRequest(u'setvol "110"')
|
self.sendRequest(u'setvol "110"')
|
||||||
self.assertEqual(100, self.mixer.volume.get())
|
self.assertEqual(100, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_plus_is_ignored(self):
|
def test_setvol_plus_is_ignored(self):
|
||||||
self.sendRequest(u'setvol "+10"')
|
self.sendRequest(u'setvol "+10"')
|
||||||
self.assertEqual(10, self.mixer.volume.get())
|
self.assertEqual(10, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_setvol_without_quotes(self):
|
def test_setvol_without_quotes(self):
|
||||||
self.sendRequest(u'setvol 50')
|
self.sendRequest(u'setvol 50')
|
||||||
self.assertEqual(50, self.mixer.volume.get())
|
self.assertEqual(50, self.backend.playback.volume.get())
|
||||||
self.assertInResponse(u'OK')
|
self.assertInResponse(u'OK')
|
||||||
|
|
||||||
def test_single_off(self):
|
def test_single_off(self):
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
from mopidy.backends import dummy as backend
|
from mopidy.backends import dummy as backend
|
||||||
from mopidy.frontends.mpd import dispatcher
|
from mopidy.frontends.mpd import dispatcher
|
||||||
from mopidy.frontends.mpd.protocol import status
|
from mopidy.frontends.mpd.protocol import status
|
||||||
from mopidy.mixers import dummy as mixer
|
|
||||||
from mopidy.models import Track
|
from mopidy.models import Track
|
||||||
|
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
@ -17,13 +16,11 @@ STOPPED = backend.PlaybackController.STOPPED
|
|||||||
class StatusHandlerTest(unittest.TestCase):
|
class StatusHandlerTest(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.backend = backend.DummyBackend.start().proxy()
|
self.backend = backend.DummyBackend.start().proxy()
|
||||||
self.mixer = mixer.DummyMixer.start().proxy()
|
|
||||||
self.dispatcher = dispatcher.MpdDispatcher()
|
self.dispatcher = dispatcher.MpdDispatcher()
|
||||||
self.context = self.dispatcher.context
|
self.context = self.dispatcher.context
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.backend.stop().get()
|
self.backend.stop().get()
|
||||||
self.mixer.stop().get()
|
|
||||||
|
|
||||||
def test_stats_method(self):
|
def test_stats_method(self):
|
||||||
result = status.stats(self.context)
|
result = status.stats(self.context)
|
||||||
@ -48,7 +45,7 @@ class StatusHandlerTest(unittest.TestCase):
|
|||||||
self.assertEqual(int(result['volume']), -1)
|
self.assertEqual(int(result['volume']), -1)
|
||||||
|
|
||||||
def test_status_method_contains_volume(self):
|
def test_status_method_contains_volume(self):
|
||||||
self.mixer.volume = 17
|
self.backend.playback.volume = 17
|
||||||
result = dict(status.status(self.context))
|
result = dict(status.status(self.context))
|
||||||
self.assert_('volume' in result)
|
self.assert_('volume' in result)
|
||||||
self.assertEqual(int(result['volume']), 17)
|
self.assertEqual(int(result['volume']), 17)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user