[gnome-music/wip/jfelder/songeditor-gtk4: 27/32] songsview: Add renderer for title, album and artist




commit 4ddf463103dda5773dbed25ceda229d13d31fc9c
Author: Sumaid Syed <sumaidsyed gmail com>
Date:   Sun Aug 4 23:27:18 2019 +0530

    songsview: Add renderer for title, album and artist
    
    Add renderers for title album and artist so that even if
    those tags are modified in the tag editor they will updated in
    songsview.
    
    https://gitlab.gnome.org/GNOME/gnome-music/issues/293

 data/ui/SongsView.ui          |  6 +++---
 gnomemusic/views/songsview.py | 41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 3 deletions(-)
---
diff --git a/data/ui/SongsView.ui b/data/ui/SongsView.ui
index 0e0acdd20..221b9dfe9 100644
--- a/data/ui/SongsView.ui
+++ b/data/ui/SongsView.ui
@@ -53,7 +53,7 @@
           <object class="GtkTreeViewColumn" id="_title_column">
             <property name="expand">True</property>
             <child>
-              <object class="GtkCellRendererText">
+              <object class="GtkCellRendererText" id="_title_cell">
                 <property name="ellipsize">end</property>
                 <property name="height">48</property>
                 <property name="xalign">0</property>
@@ -70,7 +70,7 @@
           <object class="GtkTreeViewColumn" id="_artist_column">
             <property name="expand">True</property>
             <child>
-              <object class="GtkCellRendererText">
+              <object class="GtkCellRendererText" id="_artist_cell">
                 <property name="ellipsize">end</property>
                 <property name="xpad">32</property>
               </object>
@@ -84,7 +84,7 @@
           <object class="GtkTreeViewColumn" id="_album_column">
             <property name="expand">True</property>
             <child>
-              <object class="GtkCellRendererText">
+              <object class="GtkCellRendererText" id="_album_cell">
                 <property name="ellipsize">end</property>
                 <property name="xpad">32</property>
               </object>
diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py
index ee7752ee4..7e9be3e06 100644
--- a/gnomemusic/views/songsview.py
+++ b/gnomemusic/views/songsview.py
@@ -29,6 +29,8 @@ from gnomemusic.coresong import CoreSong
 from gnomemusic.utils import SongStateIcon
 from gnomemusic.widgets.starhandlerwidget import StarHandlerWidget
 
+import gnomemusic.utils as utils
+
 
 @Gtk.Template(resource_path="/org/gnome/Music/ui/SongsView.ui")
 class SongsView(Gtk.ScrolledWindow):
@@ -46,12 +48,18 @@ class SongsView(Gtk.ScrolledWindow):
     title = GObject.Property(
         type=str, default=_("Songs"), flags=GObject.ParamFlags.READABLE)
 
+    _album_cell = Gtk.Template.Child()
+    _album_column = Gtk.Template.Child()
+    _artist_cell = Gtk.Template.Child()
+    _artist_column = Gtk.Template.Child()
     _duration_renderer = Gtk.Template.Child()
     _now_playing_column = Gtk.Template.Child()
     _now_playing_cell = Gtk.Template.Child()
     _songs_ctrlr = Gtk.Template.Child()
     _songs_view = Gtk.Template.Child()
     _star_column = Gtk.Template.Child()
+    _title_cell = Gtk.Template.Child()
+    _title_column = Gtk.Template.Child()
 
     def __init__(self, application):
         """Initialize
@@ -85,6 +93,15 @@ class SongsView(Gtk.ScrolledWindow):
         self._now_playing_column.set_cell_data_func(
             self._now_playing_cell, self._on_list_widget_icon_render, None)
 
+        self._title_column.set_cell_data_func(
+            self._title_cell, self._on_list_widget_title_render, None)
+
+        self._artist_column.set_cell_data_func(
+            self._artist_cell, self._on_list_widget_artist_render, None)
+
+        self._album_column.set_cell_data_func(
+            self._album_cell, self._on_list_widget_album_render, None)
+
         self._star_handler = StarHandlerWidget(self, 6)
         self._star_handler.add_star_renderers(self._star_column)
 
@@ -92,6 +109,30 @@ class SongsView(Gtk.ScrolledWindow):
         attrs.insert(Pango.AttrFontFeatures.new("tnum=1"))
         self._duration_renderer.props.attributes = attrs
 
+    def _on_list_widget_album_render(self, coll, cell, model, itr, data):
+        if not model.iter_is_valid(itr):
+            return
+
+        item = model[itr][7]
+        if item:
+            cell.props.text = utils.get_album_title(item.props.media)
+
+    def _on_list_widget_artist_render(self, coll, cell, model, itr, data):
+        if not model.iter_is_valid(itr):
+            return
+
+        item = model[itr][7]
+        if item:
+            cell.props.text = utils.get_artist_name(item.props.media)
+
+    def _on_list_widget_title_render(self, coll, cell, model, itr, data):
+        if not model.iter_is_valid(itr):
+            return
+
+        item = model[itr][7]
+        if item:
+            cell.props.text = utils.get_media_title(item.props.media)
+
     def _on_list_widget_icon_render(self, col, cell, model, itr, data):
         current_song = self._player.props.current_song
         if current_song is None:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]