db: Give playlists a refresh() function
The Collection playlist uses this to emit the "refreshed" signal to notify higher layers that the contents of the playlist has changed. Eventually, this will also be used to update playlists when sorting. Implements: Issue #15 (Convert Playlists into Gio.ListModels) Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0c3afb9d56
commit
01de88f474
|
@ -9,6 +9,7 @@ from gi.repository import GObject
|
|||
from . import sql
|
||||
from . import playlist
|
||||
from . import track
|
||||
from . import user
|
||||
|
||||
class Library(playlist.Playlist):
|
||||
def __init__(self, row):
|
||||
|
@ -31,6 +32,7 @@ class Library(playlist.Playlist):
|
|||
[ newval, self.rowid ])
|
||||
sql.commit()
|
||||
self._enabled = newval
|
||||
user.Table.find("Collection").refresh()
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
|
|
|
@ -51,6 +51,9 @@ class Playlist(GObject.GObject):
|
|||
def remove_track(self, track):
|
||||
self.emit("track-removed", track)
|
||||
|
||||
def refresh(self):
|
||||
self.emit("refreshed")
|
||||
|
||||
@GObject.Property
|
||||
def name(self): raise NotImplementedError
|
||||
|
||||
|
@ -66,6 +69,9 @@ class Playlist(GObject.GObject):
|
|||
@GObject.Property
|
||||
def rowkey(self): return self._rowkey
|
||||
|
||||
@GObject.Signal
|
||||
def refreshed(self): pass
|
||||
|
||||
@GObject.Signal(arg_types=(GObject.TYPE_PYOBJECT,))
|
||||
def track_added(self, track): pass
|
||||
|
||||
|
|
|
@ -12,6 +12,9 @@ class TestCollection(unittest.TestCase):
|
|||
def track_removed(self, plist, removed):
|
||||
self.removed = removed
|
||||
|
||||
def refreshed(self, plist):
|
||||
self.refreshed = True
|
||||
|
||||
def setUp(self): db.reset()
|
||||
|
||||
def test_init(self):
|
||||
|
@ -39,10 +42,19 @@ class TestCollection(unittest.TestCase):
|
|||
|
||||
def test_library_enabled(self):
|
||||
collection = db.user.Table.find("Collection")
|
||||
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
||||
self.assertEqual(collection.get_n_tracks(), 1)
|
||||
track.library.enabled = False
|
||||
track1 = db.make_fake_track(1, 1, "Test Track 1", "/a/b/c/1.ogg")
|
||||
track2 = db.make_fake_track(2, 2, "Test Track 2", "/a/b/c/2.ogg")
|
||||
self.assertEqual(collection.get_n_tracks(), 2)
|
||||
collection.connect("refreshed", self.refreshed)
|
||||
|
||||
track1.library.enabled = False
|
||||
self.assertEqual(collection.get_n_tracks(), 0)
|
||||
self.assertTrue(self.refreshed)
|
||||
|
||||
self.refreshed = None
|
||||
track1.library.enabled = True
|
||||
self.assertEqual(collection.get_n_tracks(), 2)
|
||||
self.assertTrue(self.refreshed)
|
||||
|
||||
|
||||
class TestFavorites(unittest.TestCase):
|
||||
|
|
Loading…
Reference in New Issue