sidebar: Use the new database.loaded property

Rather than doing the work ourselves to calculate if the database has
been loaded, use the new property to notify us.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2024-03-13 11:29:54 -04:00
parent a4e0968ef4
commit c4e827bc5a
2 changed files with 12 additions and 18 deletions

View File

@ -52,7 +52,7 @@ class Card(Gtk.Box):
self._filter.connect("search-changed", self.__search_changed)
self._jump.connect("clicked", self.__jump_to_playlist)
self.sql.connect("table-loaded", self.__table_loaded)
self.sql.connect("notify::loaded", self.__database_loaded)
self._header.add_css_class("toolbar")
self.add_css_class("card")
@ -63,13 +63,12 @@ class Card(Gtk.Box):
def __search_changed(self, entry: entry.Filter) -> None:
self.sql.filter(entry.get_query())
def __table_loaded(self, sql: db.Connection, table: db.table.Table):
if self.get_sensitive() is False:
if False not in {tbl.loaded for tbl in sql.playlist_tables()}:
self.set_sensitive(True)
self.select_playlist(sql.active_playlist, 150)
if len(sql.libraries) == 0:
self._libraries.extra_widget.emit("clicked")
def __database_loaded(self, sql: db.Connection, param: GObject.ParamSpec):
self.set_sensitive(sql.loaded)
if sql.loaded is True:
self.select_playlist(sql.active_playlist, 150)
if len(sql.libraries) == 0:
self._libraries.extra_widget.emit("clicked")
def __select_playlist(self, playlist: db.playlist.Playlist) -> bool:
if playlist is not None:

View File

@ -66,25 +66,20 @@ class TestSidebar(tests.util.TestCase):
def test_sensitivity_and_startup(self):
"""Test setting the sidebar sensitivity when all tables have loaded."""
tables = [t for t in self.sql.playlist_tables()]
self.sidebar.select_playlist = unittest.mock.Mock()
self.sidebar._libraries.extra_widget.emit = unittest.mock.Mock()
for table in tables:
self.assertFalse(self.sidebar.get_sensitive())
self.sidebar.select_playlist.assert_not_called()
self.sidebar._libraries.extra_widget.emit.assert_not_called()
table.load(now=True)
self.assertEqual(self.sidebar.get_sensitive(),
table == tables[-1])
self.assertFalse(self.sidebar.get_sensitive())
self.sql.loaded = True
self.assertTrue(self.sidebar.get_sensitive())
playlist = self.sql.playlists.collection
self.sidebar.select_playlist.assert_called_with(playlist, 150)
self.sidebar._libraries.extra_widget.emit.assert_called_with("clicked")
self.sidebar.select_playlist.reset_mock()
self.sql.emit("table-loaded", tables[0])
self.sql.loaded = False
self.assertFalse(self.sidebar.get_sensitive())
self.sidebar.select_playlist.assert_not_called()
def test_show_all_artists(self):