Make LocalPlaybackProvider the default implementation of BasePlaybackProvider

This commit is contained in:
Stein Magnus Jodal 2012-09-14 02:08:23 +02:00
parent 2321a77e37
commit fd60d42be6
3 changed files with 18 additions and 51 deletions

View File

@ -13,73 +13,75 @@ class BasePlaybackProvider(object):
"""
Pause playback.
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:rtype: :class:`True` if successful, else :class:`False`
"""
raise NotImplementedError
return self.backend.audio.pause_playback().get()
def play(self, track):
"""
Play given track.
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:param track: the track to play
:type track: :class:`mopidy.models.Track`
:rtype: :class:`True` if successful, else :class:`False`
"""
raise NotImplementedError
self.backend.audio.prepare_change()
self.backend.audio.set_uri(track.uri).get()
return self.backend.audio.start_playback().get()
def resume(self):
"""
Resume playback at the same time position playback was paused.
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:rtype: :class:`True` if successful, else :class:`False`
"""
raise NotImplementedError
return self.backend.audio.start_playback().get()
def seek(self, time_position):
"""
Seek to a given time position.
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:param time_position: time position in milliseconds
:type time_position: int
:rtype: :class:`True` if successful, else :class:`False`
"""
raise NotImplementedError
return self.backend.audio.set_position(time_position).get()
def stop(self):
"""
Stop playback.
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:rtype: :class:`True` if successful, else :class:`False`
"""
raise NotImplementedError
return self.backend.audio.stop_playback().get()
def get_volume(self):
"""
Get current volume
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:rtype: int [0..100] or :class:`None`
"""
raise NotImplementedError
return self.backend.audio.get_volume().get()
def set_volume(self, volume):
"""
Get current volume
*MUST be implemented by subclass.*
*MAY be reimplemented by subclass.*
:param: volume
:type volume: int [0..100]
"""
raise NotImplementedError
self.backend.audio.set_volume(volume)

View File

@ -47,7 +47,7 @@ class LocalBackend(ThreadingActor, base.Backend):
self.library = core.LibraryController(backend=self,
provider=library_provider)
playback_provider = LocalPlaybackProvider(backend=self)
playback_provider = base.BasePlaybackProvider(backend=self)
self.playback = LocalPlaybackController(backend=self,
provider=playback_provider)
@ -78,31 +78,6 @@ class LocalPlaybackController(core.PlaybackController):
return self.backend.audio.get_position().get()
class LocalPlaybackProvider(base.BasePlaybackProvider):
def pause(self):
return self.backend.audio.pause_playback().get()
def play(self, track):
self.backend.audio.prepare_change()
self.backend.audio.set_uri(track.uri).get()
return self.backend.audio.start_playback().get()
def resume(self):
return self.backend.audio.start_playback().get()
def seek(self, time_position):
return self.backend.audio.set_position(time_position).get()
def stop(self):
return self.backend.audio.stop_playback().get()
def get_volume(self):
return self.backend.audio.get_volume().get()
def set_volume(self, volume):
self.backend.audio.set_volume(volume).get()
class LocalStoredPlaylistsProvider(base.BaseStoredPlaylistsProvider):
def __init__(self, *args, **kwargs):
super(LocalStoredPlaylistsProvider, self).__init__(*args, **kwargs)

View File

@ -8,9 +8,6 @@ from mopidy.core import PlaybackState
logger = logging.getLogger('mopidy.backends.spotify.playback')
class SpotifyPlaybackProvider(BasePlaybackProvider):
def pause(self):
return self.backend.audio.pause_playback()
def play(self, track):
if self.backend.playback.state == PlaybackState.PLAYING:
self.backend.spotify.session.play(0)
@ -39,12 +36,5 @@ class SpotifyPlaybackProvider(BasePlaybackProvider):
return True
def stop(self):
result = self.backend.audio.stop_playback()
self.backend.spotify.session.play(0)
return result
def get_volume(self):
return self.backend.audio.get_volume().get()
def set_volume(self, volume):
self.backend.audio.set_volume(volume)
return super(SpotifyPlaybackProvider, self).stop()