[gnome-music/wip/gbsneto/flowbox: 4/13] albums: use a GtkFlowBox internally
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/gbsneto/flowbox: 4/13] albums: use a GtkFlowBox internally
- Date: Tue, 9 Aug 2016 18:49:12 +0000 (UTC)
commit 198402fb2293a8e0942a064f1652307c575df9d1
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Tue Aug 9 03:00:53 2016 -0300
albums: use a GtkFlowBox internally
After preparing ground, the move is finally done: the
Albums view moves away from GdMainView to GtkFlowBox.
This patch makes the Albumns class override some methods
to put the flowbox in place rather than the main view,
and is already able to display the albums and interact
with them.
Appearently, it runs incredibly smoother :)
https://bugzilla.gnome.org/show_bug.cgi?id=760164
gnomemusic/view.py | 73 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 64 insertions(+), 9 deletions(-)
---
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 1370d54..5e9d3bf 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -337,27 +337,44 @@ class Albums(ViewContainer):
self._on_changes_pending()
@log
+ def _setup_view(self, view_type):
+ self.view = Gtk.FlowBox(homogeneous=True,
+ hexpand=True,
+ halign=Gtk.Align.FILL,
+ selection_mode=Gtk.SelectionMode.NONE,
+ margin=18,
+ row_spacing=12,
+ column_spacing=6)
+
+ self.view.connect('child-activated', self._on_child_activated)
+
+ scrolledwin = Gtk.ScrolledWindow()
+ scrolledwin.add(self.view)
+ scrolledwin.show()
+
+ self._box.add(scrolledwin)
+
+ @log
def _back_button_clicked(self, widget, data=None):
self.header_bar.reset_header_title()
self.set_visible_child(self._grid)
@log
- def _on_item_activated(self, widget, id, path):
+ def _on_child_activated(self, widget, child, user_data=None):
+ item = child.media_item
+
if self.star_handler.star_renderer_click:
self.star_handler.star_renderer_click = False
return
- try:
- _iter = self.model.get_iter(path)
- except TypeError:
- return
- title = self.model.get_value(_iter, 2)
- self._artist = self.model.get_value(_iter, 3)
- item = self.model.get_value(_iter, 5)
+ title = albumArtCache.get_media_title(item)
+ self._escaped_title = title
+ self._artist = utils.get_artist_name(item)
+
self._albumWidget.update(self._artist, title, item,
self.header_bar, self.selection_toolbar)
+
self.header_bar.set_state(ToolbarState.CHILD_VIEW)
- self._escaped_title = albumArtCache.get_media_title(item)
self.header_bar.header_bar.set_title(self._escaped_title)
self.header_bar.header_bar.sub_title = self._artist
self.set_visible_child(self._albumWidget)
@@ -391,6 +408,44 @@ class Albums(ViewContainer):
self._get_selected_album_songs()
@log
+ def _add_item(self, source, param, item, remaining=0, data=None):
+ self.window.notification.set_timeout(0)
+
+ if item:
+ child = self._create_album_item(item)
+ self.view.add(child)
+ elif remaining == 0:
+ self.window.notification.dismiss()
+ self.view.show()
+
+ def _create_album_item(self, item):
+ artist = utils.get_artist_name(item)
+ title = albumArtCache.get_media_title(item)
+
+ builder = Gtk.Builder.new_from_resource('/org/gnome/Music/AlbumCover.ui')
+
+ child = Gtk.FlowBoxChild()
+ child.image = builder.get_object('image')
+ child.check = builder.get_object('check')
+ child.title = builder.get_object('title')
+ child.subtitle = builder.get_object('subtitle')
+ child.media_item = item
+
+ child.title.set_label(title)
+ child.subtitle.set_label(artist)
+
+ child.add(builder.get_object('main_box'))
+ child.show()
+
+ self.cache.lookup(item, self._iconWidth, self._iconHeight, self._on_lookup_ready,
+ child, artist, title)
+
+ return child
+
+ def _on_lookup_ready(self, icon, path, child):
+ child.image.set_from_pixbuf(icon)
+
+ @log
def _get_selected_album_songs(self):
grilo.populate_album_songs(
self.albums_selected[self.albums_index],
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]