curds: Add playlists for individual years
They show up nested under the corresponding decade playlist Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
fb5477da57
commit
9ef6c865c6
|
@ -4,14 +4,23 @@ from . import playlist
|
|||
from .. import notify
|
||||
|
||||
class DecadePlaylist(playlist.Playlist):
|
||||
def __init__(self, track):
|
||||
playlist.Playlist.__init__(self, track["date"], "x-office-calendar")
|
||||
def __init__(self, track, icon):
|
||||
playlist.Playlist.__init__(self, track["date"], icon)
|
||||
|
||||
def __normalize__(self, name):
|
||||
if isinstance(name, int):
|
||||
return f"{int(name / 10) * 10}s"
|
||||
return name
|
||||
|
||||
def add(self, track):
|
||||
playlist.Playlist.add(self, track)
|
||||
ylist = self.lookup(str(track["date"]))
|
||||
if ylist == None:
|
||||
ylist = playlist.Playlist(str(track["date"]), self.icon)
|
||||
self.insert_child(ylist)
|
||||
ylist.add(track)
|
||||
|
||||
|
||||
class DecadeNode(node.PlaylistNode):
|
||||
def __init__(self):
|
||||
node.PlaylistNode.__init__(self, "Decades", "x-office-calendar")
|
||||
|
@ -25,7 +34,7 @@ class DecadeNode(node.PlaylistNode):
|
|||
def new_track(self, track):
|
||||
plist = self.lookup(track["date"])
|
||||
if plist == None:
|
||||
plist = DecadePlaylist(track)
|
||||
plist = DecadePlaylist(track, self.icon)
|
||||
self.insert_child(plist)
|
||||
plist.add(track)
|
||||
|
||||
|
|
|
@ -31,6 +31,13 @@ class TestDecadePlaylist(unittest.TestCase):
|
|||
self.assertEqual(len(plist), 1)
|
||||
self.assertEqual(plist[0], track1)
|
||||
|
||||
self.assertEqual(plist.n_children(), 1)
|
||||
ylist = plist.nth_child(0)
|
||||
self.assertEqual(ylist.name, "1973")
|
||||
self.assertEqual(ylist.icon, "x-office-calendar")
|
||||
self.assertEqual(len(ylist), 1)
|
||||
self.assertEqual(ylist[0], track1)
|
||||
|
||||
|
||||
track2 = tags.Track.lookup(os.path.join(test_library, test_album2))
|
||||
self.assertEqual(dnode.n_children(), 2)
|
||||
|
@ -44,6 +51,15 @@ class TestDecadePlaylist(unittest.TestCase):
|
|||
self.assertEqual(dnode.n_children(), 2)
|
||||
self.assertEqual(len(plist), 2)
|
||||
|
||||
self.assertEqual(plist.n_children(), 1)
|
||||
ylist = plist.nth_child(0)
|
||||
self.assertEqual(ylist.name, "1982")
|
||||
self.assertEqual(ylist.icon, "x-office-calendar")
|
||||
self.assertEqual(len(ylist), 2)
|
||||
self.assertEqual(ylist[0], track2)
|
||||
self.assertEqual(ylist[1], track3)
|
||||
|
||||
|
||||
notify.cancel("new-track", dnode.new_track)
|
||||
dnode.reset()
|
||||
self.assertEqual(dnode.n_children(), 0)
|
||||
|
|
Loading…
Reference in New Issue