curds: Add default sorting orders to each playlist

And disable sorting on the Previous playlist, since doing so would
basically be changing history.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-27 15:28:09 -04:00
parent 9b80a93804
commit b6830dc337
12 changed files with 46 additions and 0 deletions

View File

@ -5,11 +5,19 @@ from .. import notify
class ArtistPlaylist(playlist.Playlist):
def __init__(self, name, icon):
playlist.Playlist.__init__(self, name, icon)
self.sort("album")
self.sort("discnumber")
self.sort("tracknumber")
def add(self, track):
playlist.Playlist.add(self, track)
alist = self.lookup(track["album"])
if alist == None:
alist = playlist.Playlist(track["album"], "media-optical-cd-audio")
alist.sort("discnumber")
alist.sort("tracknumber")
self.insert_child(alist)
alist.add(track)

View File

@ -5,6 +5,11 @@ from .. import notify
class CollectionPlaylist(playlist.Playlist):
def __init__(self):
playlist.Playlist.__init__(self, "Collection", "media-playback-start", can_loop=False)
self.sort("artist")
self.sort("date")
self.sort("album")
self.sort("discnumber")
self.sort("tracknumber")
notify.register("new-track", self.add)
self.loop = True

View File

@ -6,6 +6,11 @@ from .. import notify
class DecadePlaylist(playlist.Playlist):
def __init__(self, track, icon):
playlist.Playlist.__init__(self, track["date"], icon)
self.sort("date")
self.sort("artist")
self.sort("album")
self.sort("discnumber")
self.sort("tracknumber")
def __normalize__(self, name):
if isinstance(name, int):
@ -17,6 +22,10 @@ class DecadePlaylist(playlist.Playlist):
ylist = self.lookup(str(track["date"]))
if ylist == None:
ylist = playlist.Playlist(str(track["date"]), self.icon)
ylist.sort("artist")
ylist.sort("album")
ylist.sort("discnumber")
ylist.sort("tracknumber")
self.insert_child(ylist)
ylist.add(track)

View File

@ -12,6 +12,11 @@ class GenreNode(node.PlaylistNode):
plist = self.lookup(track["genre"])
if plist == None:
plist = playlist.Playlist(track["genre"], self.icon)
plist.sort("artist")
plist.sort("year")
plist.sort("album")
plist.sort("discnumber")
plist.sort("tracknumber")
self.insert_child(plist)
plist.add(track)

View File

@ -11,6 +11,11 @@ library_thread = threadqueue.ThreadQueue()
class LibraryPlaylist(playlist.Playlist):
def __init__(self, path):
playlist.Playlist.__init__(self, path, "folder-music")
self.sort("artist")
self.sort("year")
self.sort("album")
self.sort("discnumber")
self.sort("tracknumber")
self.scan()
def __normalize__(self, name):

View File

@ -12,3 +12,6 @@ class PreviousPlaylist(playlist.Playlist):
self.current = 0
notify.notify("add-track", self, track, 0)
self.changed()
def sort(self, field):
return False

View File

@ -27,6 +27,7 @@ class TestArtistPlaylist(unittest.TestCase):
plist = anode.nth_child(0)
self.assertEqual(plist.name, "Test Artist 01")
self.assertEqual(plist.icon, "avatar-default-symbolic")
self.assertEqual(plist.sort_order, [ "album", "discnumber", "tracknumber" ])
self.assertEqual(len(plist), 1)
self.assertEqual(plist[0], track1)
@ -34,6 +35,7 @@ class TestArtistPlaylist(unittest.TestCase):
alist = plist.nth_child(0)
self.assertEqual(alist.name, "Test Album 1")
self.assertEqual(alist.icon, "media-optical-cd-audio")
self.assertEqual(alist.sort_order, [ "discnumber", "tracknumber" ])
self.assertEqual(len(alist), 1)
self.assertEqual(alist[0], track1)

View File

@ -16,6 +16,7 @@ class TestCollectionPlaylist(unittest.TestCase):
self.assertIsInstance(plist, playlist.Playlist)
self.assertEqual(plist.name, "Collection")
self.assertEqual(plist.icon, "media-playback-start")
self.assertEqual(plist.sort_order, [ "artist", "date", "album", "discnumber", "tracknumber" ])
self.assertEqual(len(plist), 0)
track1 = tags.Track.lookup(os.path.join(test_album, "01 - Test Track.ogg"))

View File

@ -28,6 +28,7 @@ class TestDecadePlaylist(unittest.TestCase):
plist = dnode.nth_child(0)
self.assertEqual(plist.name, "1970s")
self.assertEqual(plist.icon, "x-office-calendar")
self.assertEqual(plist.sort_order, [ "date", "artist", "album", "discnumber", "tracknumber" ])
self.assertEqual(len(plist), 1)
self.assertEqual(plist[0], track1)
@ -35,6 +36,7 @@ class TestDecadePlaylist(unittest.TestCase):
ylist = plist.nth_child(0)
self.assertEqual(ylist.name, "1973")
self.assertEqual(ylist.icon, "x-office-calendar")
self.assertEqual(ylist.sort_order, [ "artist", "album", "discnumber", "tracknumber" ])
self.assertEqual(len(ylist), 1)
self.assertEqual(ylist[0], track1)

View File

@ -27,6 +27,7 @@ class TestGenrePlaylist(unittest.TestCase):
plist = gnode.nth_child(0)
self.assertEqual(plist.name, "Test Genre 1")
self.assertEqual(plist.icon, "emblem-generic")
self.assertEqual(plist.sort_order, [ "artist", "year", "album", "discnumber", "tracknumber" ])
self.assertEqual(len(plist), 1)
self.assertEqual(plist[0], track1)

View File

@ -27,6 +27,7 @@ class TestLibraryPlaylist(unittest.TestCase):
self.assertIsInstance(plist, playlist.Playlist)
self.assertEqual(plist.name, test_library)
self.assertEqual(plist.icon, "folder-music")
self.assertEqual(plist.sort_order, [ "artist", "year", "album", "discnumber", "tracknumber" ])
def test_playlist_library_scan(self):
plist = library.LibraryPlaylist(test_library)

View File

@ -42,6 +42,10 @@ class TestPreviousPlaylist(unittest.TestCase):
self.assertFalse(plist.set_random(True))
self.assertFalse(plist.random)
self.assertEqual(plist.sort_order, [ ])
self.assertFalse(plist.sort("date"))
self.assertEqual(plist.sort_order, [ ])
track1 = tags.Track.lookup(os.path.join(test_album, "01 - Test Track 01.ogg"))
track2 = tags.Track.lookup(os.path.join(test_album, "02 - Test Track 02.ogg"))
track3 = tags.Track.lookup(os.path.join(test_album, "03 - Test Track 03.ogg"))