[gnome-music] playlist: choose from first track in shuffle mode



commit 33bc757a8def697507364737a542383f17a65b01
Author: Vadim Rutkovsky <vrutkovs redhat com>
Date:   Wed Aug 5 12:07:12 2015 +0200

    playlist: choose from first track in shuffle mode

 gnomemusic/player.py |    9 ++++++---
 gnomemusic/view.py   |    9 +++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 2995723..b379026 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -403,8 +403,9 @@ class Player(GObject.GObject):
 
     @log
     def _get_random_iter(self, currentTrack):
+        first_iter = self.playlist.get_iter_first()
         if not currentTrack:
-            return None
+            currentTrack = first_iter
         if hasattr(self.playlist, "iter_is_valid") and\
            not self.playlist.iter_is_valid(currentTrack):
             return None
@@ -440,8 +441,8 @@ class Player(GObject.GObject):
             if currentTrack:
                 nextTrack = self.playlist.iter_next(currentTrack)
         elif self.repeat == RepeatType.SHUFFLE:
+            nextTrack = self._get_random_iter(currentTrack)
             if currentTrack:
-                nextTrack = self._get_random_iter(currentTrack)
                 self.shuffleHistory.append(currentTrack)
 
         if nextTrack:
@@ -637,6 +638,7 @@ class Player(GObject.GObject):
             if nextTrack:
                 self._validate_next_track(Gtk.TreeRowReference.new(self.playlist, 
self.playlist.get_path(nextTrack)))
 
+    @log
     def _validate_next_track(self, track=None):
         if track is None:
             track = self._get_next_track()
@@ -723,7 +725,8 @@ class Player(GObject.GObject):
             return True
 
         self.stop()
-        self.currentTrack = self.nextTrack
+        self.currentTrack = self._get_next_track()
+
         if self.currentTrack and self.currentTrack.valid():
             self.currentTrackUri = self.playlist.get_value(
                 self.playlist.get_iter(self.currentTrack.get_path()), 5).get_url()
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 4eecd51..9fc518c 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -979,6 +979,9 @@ class Playlist(ViewContainer):
         pass
 
     def _on_list_widget_duration_render(self, col, cell, model, _iter, data):
+        if not model.iter_is_valid(_iter):
+            return
+
         item = model.get_value(_iter, 5)
         if item:
             seconds = item.get_duration()
@@ -990,6 +993,9 @@ class Playlist(ViewContainer):
         pass
 
     def _on_list_widget_type_render(self, coll, cell, model, _iter, data):
+        if not model.iter_is_valid(_iter):
+            return
+
         item = model.get_value(_iter, 5)
         if item:
             cell.set_property('text', item.get_string(Grl.METADATA_KEY_ALBUM) or _("Unknown Album"))
@@ -999,6 +1005,9 @@ class Playlist(ViewContainer):
             cell.set_visible(False)
             return
 
+        if not model.iter_is_valid(_iter):
+            return
+
         if model.get_value(_iter, 11) == DiscoveryStatus.FAILED:
             cell.set_property('icon-name', self.errorIconName)
             cell.set_visible(True)



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