db: Give the Previous playlist special next and previous functions
previous_track() moves deeper into the previous tracks list while next_track() moves us closer to the start. I also make sure we reset current track when new tracks are added to the playlist. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
7a46ffdf47
commit
050a930376
|
@ -204,6 +204,38 @@ class TestPrevious(unittest.TestCase):
|
|||
self.assertEqual(previous.get_track_index(track2), 0)
|
||||
self.assertEqual(self.removed, track1)
|
||||
|
||||
def test_previous_track(self):
|
||||
previous = db.user.Table.find("Previous")
|
||||
self.assertEqual(previous.get_property("current"), -1)
|
||||
|
||||
previous.add_track(db.make_fake_track(1, 1, "Track 1", "/a/b/c/1.ogg"))
|
||||
self.assertEqual(previous.get_property("current"), 0)
|
||||
previous.add_track(db.make_fake_track(2, 2, "Track 2", "/a/b/c/2.ogg"))
|
||||
self.assertEqual(previous.get_property("current"), 0)
|
||||
previous.add_track(db.make_fake_track(3, 3, "Track 3", "/a/b/c/3.ogg"))
|
||||
self.assertEqual(previous.get_property("current"), 0)
|
||||
|
||||
self.assertEqual(previous.previous_track(), previous.get_track(1))
|
||||
self.assertEqual(previous.previous_track(), previous.get_track(2))
|
||||
self.assertIsNone(previous.previous_track())
|
||||
self.assertIsNone(previous.previous_track())
|
||||
|
||||
def test_next_track(self):
|
||||
previous = db.user.Table.find("Previous")
|
||||
previous.add_track(db.make_fake_track(1, 1, "Track 1", "/a/b/c/1.ogg"))
|
||||
previous.add_track(db.make_fake_track(2, 2, "Track 2", "/a/b/c/2.ogg"))
|
||||
previous.add_track(db.make_fake_track(3, 3, "Track 3", "/a/b/c/3.ogg"))
|
||||
previous.current = 2
|
||||
|
||||
self.assertEqual(previous.next_track(), previous.get_track(1))
|
||||
self.assertEqual(previous.current, 1)
|
||||
self.assertEqual(previous.next_track(), previous.get_track(0))
|
||||
self.assertEqual(previous.current, 0)
|
||||
self.assertIsNone(previous.next_track())
|
||||
self.assertEqual(previous.current, -1)
|
||||
self.assertIsNone(previous.next_track())
|
||||
self.assertEqual(previous.current, -1)
|
||||
|
||||
|
||||
class TestQueuedTracks(unittest.TestCase):
|
||||
def track_added(self, plist, added):
|
||||
|
|
16
db/user.py
16
db/user.py
|
@ -88,10 +88,18 @@ class Previous(UserPlaylist):
|
|||
UserPlaylist.__init__(self, row, "edit-undo", "temp_playlist_map")
|
||||
|
||||
def add_track(self, track):
|
||||
if super().add_track(track):
|
||||
return True
|
||||
self.remove_track(track)
|
||||
return super().add_track(track)
|
||||
if self.get_track_index(track):
|
||||
self.remove_track(track)
|
||||
super().add_track(track)
|
||||
self.current = 0
|
||||
return True
|
||||
|
||||
def next_track(self):
|
||||
self.current = max(-1, self.current - 1)
|
||||
return self.get_current_track()
|
||||
|
||||
def previous_track(self):
|
||||
return super().next_track()
|
||||
|
||||
|
||||
class UserTable(playlist.Model):
|
||||
|
|
Loading…
Reference in New Issue