57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
|
# Copyright 2021 (c) Anna Schumaker.
|
||
|
from lib import tag
|
||
|
from lib import tagstore
|
||
|
|
||
|
class CollectionTag(tag.Tag):
|
||
|
def __init__(self):
|
||
|
tag.Tag.__init__(self, "Collection")
|
||
|
self.loop = True
|
||
|
|
||
|
def can_loop(self): return False
|
||
|
|
||
|
|
||
|
class NewTracksTag(tag.Tag):
|
||
|
def __init__(self):
|
||
|
tag.Tag.__init__(self, "New Tracks")
|
||
|
|
||
|
def __getstate__(self):
|
||
|
state = super().__getstate__()
|
||
|
state["tracks"].clear()
|
||
|
return state
|
||
|
|
||
|
|
||
|
class PreviousTag(tag.Tag):
|
||
|
def __init__(self):
|
||
|
tag.Tag.__init__(self, "Previous")
|
||
|
|
||
|
def __getstate__(self):
|
||
|
state = super().__getstate__()
|
||
|
state["tracks"].clear()
|
||
|
return state
|
||
|
|
||
|
def can_random(self): return False
|
||
|
def can_loop(self): return False
|
||
|
|
||
|
def add_track(self, track):
|
||
|
with self.lock:
|
||
|
self.tracks.insert(0, track)
|
||
|
self.current = 0
|
||
|
self.TrackAdded.publish(self, track, 0)
|
||
|
|
||
|
|
||
|
class UpNextTag(tag.Tag):
|
||
|
def __init__(self):
|
||
|
tag.Tag.__init__(self, "Up Next")
|
||
|
|
||
|
def can_loop(self): return False
|
||
|
|
||
|
def next(self):
|
||
|
track = super().next()
|
||
|
if track is not None:
|
||
|
self.remove_track(track)
|
||
|
with self.lock:
|
||
|
self.current -= 1
|
||
|
if len(self.tracks) == 0:
|
||
|
self.random = False
|
||
|
return track
|