Remove history doc and write new doc directly in backend based on MPD behavior for next and previous_track
This commit is contained in:
parent
503d7a800d
commit
3fcbe28367
@ -1,55 +0,0 @@
|
|||||||
History handling
|
|
||||||
================
|
|
||||||
|
|
||||||
For correct logical handling of ``previous()`` and ``previous_track`` backends
|
|
||||||
will need to keep track of which songs they have played.
|
|
||||||
|
|
||||||
Normal playback
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Each time a new song is played the previous ``current_track`` should be added to
|
|
||||||
the history. The ``previous_track`` should always be the most recent history item.
|
|
||||||
|
|
||||||
Playback with repeat enabled
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
History should be handled in same manner as regular playback. ``next_track``
|
|
||||||
at end of playlist should loop to first item on playlist.
|
|
||||||
|
|
||||||
Playback with random enabled
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
Each song should only be played once until entire playlist has been played,
|
|
||||||
once this has occurred a new random order should be played. History should be
|
|
||||||
handled in the same way as regular playback.
|
|
||||||
|
|
||||||
A suggested implementation is creating a shuffled copy of the tracks and
|
|
||||||
retrieving ``next_track`` from here until it is empty.
|
|
||||||
|
|
||||||
Playback with consume enabled
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
Turning on consume should set history to an empty array, and not add any new
|
|
||||||
tracks while it is on. ``previous_track`` should return ``current_track`` to
|
|
||||||
match MPD behaviour.
|
|
||||||
|
|
||||||
Playback with repeat and random
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Once the shuffled tracks array is empty it should be replaced with a new
|
|
||||||
shuffled array of tracks.
|
|
||||||
|
|
||||||
Playback with repeat and consume
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
Return ``current_track`` for ``previous_track`` to match MPD.
|
|
||||||
|
|
||||||
Playback with random and consume
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
Return ``current_track`` for ``previous_track`` to match MPD.
|
|
||||||
|
|
||||||
Playback with repeat, random and consume
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
Return ``current_track`` for ``previous_track`` to match MPD.
|
|
||||||
@ -252,7 +252,14 @@ class BasePlaybackController(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def next_track(self):
|
def next_track(self):
|
||||||
"""The next :class:`mopidy.models.Track` in the playlist."""
|
"""
|
||||||
|
The next :class:`mopidy.models.Track` in the playlist.
|
||||||
|
|
||||||
|
For normal playback this is the next track in the playlist. If repeat
|
||||||
|
is enabled the next track can loop around the playlist. When random is
|
||||||
|
enabled this should be a random track, all tracks should be played once
|
||||||
|
before the list repeats.
|
||||||
|
"""
|
||||||
if self.current_track is None:
|
if self.current_track is None:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
@ -274,7 +281,12 @@ class BasePlaybackController(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def previous_track(self):
|
def previous_track(self):
|
||||||
"""The previous :class:`mopidy.models.Track` in the playlist."""
|
"""
|
||||||
|
The previous :class:`mopidy.models.Track` in the playlist.
|
||||||
|
|
||||||
|
For normal playback this is the next track in the playlist. If random
|
||||||
|
and/or consume is enabled it should return the current track instead.
|
||||||
|
"""
|
||||||
if self.current_track is None:
|
if self.current_track is None:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user