[gnome-music/wip/mschraal/core: 179/208] searchview: Make albums activatable



commit c954ed2865edee9f5573cb3a84b572edfc1e45d7
Author: Marinus Schraal <mschraal gnome org>
Date:   Mon Jul 1 11:23:27 2019 +0200

    searchview: Make albums activatable

 gnomemusic/coremodel.py        |  3 ++-
 gnomemusic/views/searchview.py | 31 +++++++++++++++++++++++--------
 2 files changed, 25 insertions(+), 9 deletions(-)
---
diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py
index 055d2016..59674123 100644
--- a/gnomemusic/coremodel.py
+++ b/gnomemusic/coremodel.py
@@ -56,7 +56,8 @@ class CoreModel(GObject.GObject):
         self._song_search_model = Dazzle.ListModelFilter.new(self._model)
         self._song_search_model.set_filter_func(lambda a: False)
 
-        self._album_search_model = Dazzle.ListModelFilter.new(self._album_model)
+        self._album_search_model = Dazzle.ListModelFilter.new(
+            self._album_model)
         self._album_search_model.set_filter_func(lambda a: False)
 
         print("PLAYLIST_MODEL", self._playlist_model)
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index 4d4e5957..ccf609b8 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -36,6 +36,7 @@ from gnomemusic.utils import View
 from gnomemusic.search import Search
 from gnomemusic.views.baseview import BaseView
 from gnomemusic.widgets.albumcover import AlbumCover
+from gnomemusic.widgets.albumwidget import AlbumWidget
 from gnomemusic.widgets.headerbar import HeaderBar
 from gnomemusic.widgets.artistalbumswidget import ArtistAlbumsWidget
 from gnomemusic.widgets.songwidget import SongWidget
@@ -67,14 +68,12 @@ class SearchView(BaseView):
         self._albums = {}
         self._albums_index = 0
 
-        # self._album_widget = AlbumWidget(player)
-        # self._album_widget.bind_property(
-        #     "selection-mode", self, "selection-mode",
-        #     GObject.BindingFlags.BIDIRECTIONAL)
-        # self._album_widget.bind_property(
-        #     "selected-items-count", self, "selected-items-count")
+        self._album_widget = AlbumWidget(player, self)
+        self._album_widget.bind_property(
+            "selection-mode", self, "selection-mode",
+            GObject.BindingFlags.BIDIRECTIONAL)
 
-        # self.add(self._album_widget)
+        self.add(self._album_widget)
 
         self._artists_albums_selected = []
         self._artists_albums_index = 0
@@ -102,10 +101,11 @@ class SearchView(BaseView):
             valign=Gtk.Align.START, selection_mode=Gtk.SelectionMode.NONE,
             margin=18, row_spacing=12, column_spacing=6,
             min_children_per_line=1, max_children_per_line=20, visible=True)
-
         self._album_flowbox.get_style_context().add_class('content-view')
         self._album_flowbox.bind_model(
             self._album_model, self._create_album_widget)
+        self._album_flowbox.connect(
+            "child-activated", self._on_album_activated)
 
         self._all_results_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
         self._all_results_box.pack_start(self._album_flowbox, True, True, 0)
@@ -196,6 +196,21 @@ class SearchView(BaseView):
 
         return True
 
+    def _on_album_activated(self, widget, child, user_data=None):
+        corealbum = child.props.corealbum
+        if self.props.selection_mode:
+            return
+
+        # Update and display the album widget if not in selection mode
+        self._album_widget.update(corealbum)
+
+        self._headerbar.props.state = HeaderBar.State.SEARCH
+        self._headerbar.props.title = corealbum.props.title
+        self._headerbar.props.subtitle = corealbum.props.artist
+        self.props.search_mode_active = False
+
+        self.set_visible_child(self._album_widget)
+
     def _child_select(self, child, value):
         widget = child.get_child()
         widget.props.selected = value


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