curds: Add a Placeholder() instance to the playlist manager

This isn't intended to hold playlists. Instead, it represents extra
spacing between playlists for the UI.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-02 14:41:10 -04:00
parent 2cf0ad8df9
commit cfbb6cfcd9
2 changed files with 28 additions and 7 deletions

View File

@ -23,7 +23,7 @@ class PlaylistManagerBase(list):
def index(self, plist):
for (i, pl) in enumerate(self):
if pl.name == plist.name: return i
if id(pl) == id(plist): return i
return None
def lookup(self, name, allocate=False):
@ -67,11 +67,24 @@ class LibraryManager(PlaylistManagerBase):
return os.path.abspath(path)
class Placeholder(PlaylistManagerBase):
def __init__(self):
PlaylistManagerBase.__init__(self)
def __str__(self):
return ""
def lookup(self, name, allocate=False):
return None
class PlaylistManager(PlaylistManagerBase):
def __init__(self):
self.append(collection.CollectionPlaylist())
self.append(previous.PreviousPlaylist())
self.append(Placeholder())
self.append(GenreManager())
self.append(Placeholder())
self.append(LibraryManager())
self.current = self.lookup("Collection")
self.track = None

View File

@ -55,14 +55,22 @@ class TestPlaylistManager(unittest.TestCase):
def test_manager_indexing(self):
self.assertEqual( self.playman[0], self.playman.lookup("Collection"))
self.assertEqual( self.playman[1], self.playman.lookup("Previous"))
self.assertEqual( self.playman[2], self.playman.lookup("Genre"))
self.assertEqual( self.playman[3], self.playman.lookup("Library"))
self.assertIsInstance(self.playman[2], manager.Placeholder)
self.assertEqual( self.playman[3], self.playman.lookup("Genre"))
self.assertIsInstance(self.playman[4], manager.Placeholder)
self.assertEqual( self.playman[5], self.playman.lookup("Library"))
self.assertIsNone(self.playman[999])
self.assertEqual(self.playman.index(self.playman[0]), 0)
self.assertEqual(self.playman.index(self.playman[1]), 1)
self.assertEqual(self.playman.index(self.playman[2]), 2)
self.assertEqual(self.playman.index(self.playman[3]), 3)
for i in range(len(self.playman)):
self.assertEqual(self.playman.index(self.playman[i]), i)
def test_manager_placeholders(self):
place = manager.Placeholder()
self.assertEqual(place.name, "")
self.assertEqual(place.icon, "")
self.assertEqual(str(place), "")
self.assertIsNone(place.lookup("Test", allocate=True))
self.assertEqual(len(place), 0)
def test_manager_library(self):
plist = self.playman.lookup("Library").lookup(test_library + "/", allocate=True)