db: Give QueuedTracks a custom next_track() function
So we can remove tracks from the queue as they are played. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
2e57e1fe0a
commit
cc88dcab0a
|
@ -248,8 +248,8 @@ class TestQueuedTracks(unittest.TestCase):
|
|||
|
||||
def test_init(self):
|
||||
queued = db.user.Table.find("Queued Tracks")
|
||||
self.assertIsInstance(queued, db.playlist.MappedPlaylist)
|
||||
self.assertIsInstance(queued, db.user.UserPlaylist)
|
||||
self.assertIsInstance(queued, db.user.QueuedTracks)
|
||||
self.assertEqual(queued.name, "Queued Tracks")
|
||||
self.assertEqual(queued.icon_name, "edit-redo")
|
||||
self.assertEqual(queued.map_table, "playlist_map")
|
||||
|
@ -278,6 +278,20 @@ class TestQueuedTracks(unittest.TestCase):
|
|||
self.assertEqual(queued.get_tracks(), [ ])
|
||||
self.assertEqual(self.removed, (track, False))
|
||||
|
||||
def test_next_track(self):
|
||||
queued = db.user.Table.find("Queued Tracks")
|
||||
queued.add_track(db.make_fake_track(1, 1, "Test 1", "/a/b/c/1.ogg"))
|
||||
queued.add_track(db.make_fake_track(2, 2, "Test 2", "/a/b/c/2.ogg"))
|
||||
queued.add_track(db.make_fake_track(3, 3, "Test 3", "/a/b/c/3.ogg"))
|
||||
|
||||
self.assertEqual(queued.next_track(), db.track.Table.lookup("/a/b/c/1.ogg"))
|
||||
self.assertEqual(queued.get_n_tracks(), 2)
|
||||
self.assertEqual(queued.next_track(), db.track.Table.lookup("/a/b/c/2.ogg"))
|
||||
self.assertEqual(queued.get_n_tracks(), 1)
|
||||
self.assertEqual(queued.next_track(), db.track.Table.lookup("/a/b/c/3.ogg"))
|
||||
self.assertEqual(queued.get_n_tracks(), 0)
|
||||
self.assertIsNone(queued.next_track())
|
||||
|
||||
|
||||
class TestUserPlaylist(unittest.TestCase):
|
||||
def track_added(self, plist, added):
|
||||
|
|
12
db/user.py
12
db/user.py
|
@ -99,6 +99,16 @@ class Previous(UserPlaylist):
|
|||
return super().next_track()
|
||||
|
||||
|
||||
class QueuedTracks(UserPlaylist):
|
||||
def __init__(self, row):
|
||||
UserPlaylist.__init__(self, row, "edit-redo", "playlist_map")
|
||||
|
||||
def next_track(self):
|
||||
if track := super().next_track():
|
||||
self.remove_track(track)
|
||||
return track
|
||||
|
||||
|
||||
class UserTable(playlist.Model):
|
||||
def __init__(self):
|
||||
playlist.Model.__init__(self, "playlists", "sort")
|
||||
|
@ -145,7 +155,7 @@ class UserTable(playlist.Model):
|
|||
elif row["name"] == "Previous":
|
||||
return Previous(row)
|
||||
elif row["name"] == "Queued Tracks":
|
||||
return UserPlaylist(row, "edit-redo", "playlist_map")
|
||||
return QueuedTracks(row)
|
||||
return UserPlaylist(row, "audio-x-generic", "playlist_map")
|
||||
|
||||
def do_insert(self, plstate, name):
|
||||
|
|
Loading…
Reference in New Issue