[gnome-music] view: Update add to playlist in search results



commit 63b5931cf41454b1186e0e156bd6db82d7aeb194
Author: Arnel Borja <arnelborja src gnome org>
Date:   Tue May 6 01:24:22 2014 +0800

    view: Update add to playlist in search results
    
    Add songs of selected artists too.

 gnomemusic/view.py |   37 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index a3ea556..cd096f1 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -1176,6 +1176,7 @@ class Search(ViewContainer):
         self._albumWidget = Widgets.AlbumWidget(player)
         self.add(self._albumWidget)
 
+        self.artists_albums_selected = []
         self._artists = {}
         self._artistAlbumsWidget = None
 
@@ -1330,7 +1331,7 @@ class Search(ViewContainer):
         if len(self.albums_selected):
             self._get_selected_albums_songs()
         else:
-            self._get_selected_songs()
+            self._get_selected_artists()
 
     @log
     def _get_selected_albums_songs(self):
@@ -1347,6 +1348,40 @@ class Search(ViewContainer):
             if self.albums_index < len(self.albums_selected):
                 self._get_selected_albums_songs()
             else:
+                self._get_selected_artists()
+
+    @log
+    def _get_selected_artists(self):
+        self.artists_albums_index = 0
+        self.artists_selected = [self._artists[self._model[child_path][2].casefold()]
+                                 for child_path in [self.filter_model.convert_path_to_child_path(path)
+                                                    for path in self.view.get_selection()]
+                                 if self._model[child_path][11] == 'artist']
+
+        self.artists_albums_selected = []
+        for artist in self.artists_selected:
+            self.artists_albums_selected.extend(artist['albums'])
+
+        if len(self.artists_albums_selected):
+            self._get_selected_artists_albums_songs()
+        else:
+            self._get_selected_songs()
+
+    @log
+    def _get_selected_artists_albums_songs(self):
+        grilo.populate_album_songs(
+            self.artists_albums_selected[self.artists_albums_index].get_id(),
+            self._add_selected_artists_albums_songs)
+        self.artists_albums_index += 1
+
+    @log
+    def _add_selected_artists_albums_songs(self, source, param, item, remaining=0, data=None):
+        if item:
+            self.items_selected.append(item.get_url())
+        if remaining == 0:
+            if self.artists_albums_index < len(self.artists_albums_selected):
+                self._get_selected_artists_albums_songs()
+            else:
                 self._get_selected_songs()
 
     @log


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