diff --git a/gnomemusic/views/albumsview.py b/gnomemusic/views/albumsview.py index e45f857206a9a50f04cdae4d4e3e986d706c5390..7e4da269fbd80acb725886ce35986da08e9e43e6 100644 --- a/gnomemusic/views/albumsview.py +++ b/gnomemusic/views/albumsview.py @@ -47,8 +47,9 @@ class AlbumsView(BaseView): super().__init__('albums', _("Albums"), window, None) self._queue = LifoQueue() - self._album_widget = AlbumWidget(player, self) self.player = player + self._album_widget = AlbumWidget( + player, self, self._header_bar, self._selection_toolbar) self.add(self._album_widget) self.albums_selected = [] self.all_items = [] @@ -104,8 +105,7 @@ class AlbumsView(BaseView): return # Update and display the album widget if not in selection mode - self._album_widget.update( - item, self._header_bar, self._selection_toolbar) + self._album_widget.update(item) self._header_bar.props.state = HeaderBar.State.CHILD self._header_bar.props.title = utils.get_album_title(item) diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py index 451db41e1735fe5266bdf32ff059358d44702782..09c1d99bbbd070337f2a51c314cbeb060fc1fbb1 100644 --- a/gnomemusic/views/searchview.py +++ b/gnomemusic/views/searchview.py @@ -65,7 +65,8 @@ class SearchView(BaseView): self._albums_selected = [] self._albums = {} self._albums_index = 0 - self._album_widget = AlbumWidget(player, self) + self._album_widget = AlbumWidget( + player, self, self._header_bar, self._selection_toolbar) self.add(self._album_widget) self._artists_albums_selected = [] @@ -115,8 +116,7 @@ class SearchView(BaseView): artist = self.model[_iter][3] item = self.model[_iter][5] - self._album_widget.update( - item, self._header_bar, self._selection_toolbar) + self._album_widget.update(item) self._header_bar.props.state = HeaderBar.State.SEARCH self._header_bar.props.title = title diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py index 30df299b4a7c7b0c512a6ef135547800e8973120..b720e2526e7801b4b66473753e2540c3d22d19b3 100644 --- a/gnomemusic/widgets/albumwidget.py +++ b/gnomemusic/widgets/albumwidget.py @@ -61,11 +61,13 @@ class AlbumWidget(Gtk.EventBox): return '' @log - def __init__(self, player, parent_view): + def __init__(self, player, parent_view, header_bar, selection_toolbar): """Initialize the AlbumWidget. :param player: The player object :param parent_view: The view this widget is part of + :param header_bar: The header bar object + :param selection_toolbar: The selection toolbar object """ super().__init__() @@ -77,7 +79,8 @@ class AlbumWidget(Gtk.EventBox): self._create_model() self._album = None - self._header_bar = None + self._header_bar = header_bar + self._selection_toolbar = selection_toolbar # FIXME: Assigned to appease searchview # _get_selected_songs @@ -87,6 +90,11 @@ class AlbumWidget(Gtk.EventBox): 'selection-mode', self._disc_listbox, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL) + self.bind_property( + 'selection-mode', self._header_bar, 'selection-mode', + GObject.BindingFlags.BIDIRECTIONAL | + GObject.BindingFlags.SYNC_CREATE) + self.show_all() @log @@ -108,12 +116,10 @@ class AlbumWidget(Gtk.EventBox): ) @log - def update(self, item, header_bar, selection_toolbar): + def update(self, item): """Update the album widget. :param item: The grilo media item - :param header_bar: The header bar object - :param selection_toolbar: The selection toolbar object """ # reset view self._songs = [] @@ -121,8 +127,6 @@ class AlbumWidget(Gtk.EventBox): for widget in self._disc_listbox.get_children(): self._disc_listbox.remove(widget) - self.selection_toolbar = selection_toolbar - self._header_bar = header_bar self._duration = 0 art = ArtImage(Art.Size.LARGE, item) art.image = self._cover @@ -140,11 +144,6 @@ class AlbumWidget(Gtk.EventBox): self._set_composer_label(item) - self.bind_property( - 'selection-mode', self._header_bar, 'selection-mode', - GObject.BindingFlags.BIDIRECTIONAL | - GObject.BindingFlags.SYNC_CREATE) - self._player.connect('song-changed', self._update_model) @log @@ -169,7 +168,7 @@ class AlbumWidget(Gtk.EventBox): @log def _on_selection_changed(self, widget): n_items = len(self._disc_listbox.get_selected_items()) - self.selection_toolbar.props.items_selected = n_items + self._selection_toolbar.props.items_selected = n_items self._header_bar.items_selected = n_items @log