playlist: Create a PlaylistSelection list model

This is a multi-selection model so we can do operations on multiple
tracks at once.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-10-29 14:12:58 -04:00
parent f2402cdb44
commit fc83b66fbe
2 changed files with 19 additions and 0 deletions

View File

@ -76,6 +76,16 @@ class FilterPlaylistModel(Gtk.FilterListModel):
return sum([ int(self.get_item(i).length) for i in range(n) ])
class PlaylistSelection(Gtk.MultiSelection):
def __init__(self):
Gtk.MultiSelection.__init__(self)
self.set_model(FilterPlaylistModel())
def get_filter_model(self): return self.get_model()
def get_playlist(self): return self.get_model().get_playlist()
def set_playlist(self, plist): return self.get_model().set_playlist(plist)
class TagModel(GObject.GObject, Gio.ListModel):
def __init__(self, tag=None):
GObject.GObject.__init__(self)

View File

@ -118,6 +118,15 @@ class TestFilterPlaylistModel(unittest.TestCase):
self.assertEqual(filter.get_runtime(), 1)
class TestPlaylistSelectionModel(unittest.TestCase):
def test_init(self):
selection = model.PlaylistSelection()
self.assertIsInstance(selection, Gtk.MultiSelection)
self.assertIsInstance(selection.get_model(), model.FilterPlaylistModel)
self.assertEqual(selection.get_filter_model(), selection.get_model())
self.assertIsNone(selection.get_playlist())
class TestTagModel(unittest.TestCase):
def setUp(self):
self.changed = (None, None, None)