[gnome-music] playlist: choose from first track in shuffle mode
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] playlist: choose from first track in shuffle mode
- Date: Wed, 5 Aug 2015 11:25:54 +0000 (UTC)
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]