Moved things around and fixed a minor bug
[jamaendo] / jamaui / player.py
index 563484d..d67f9fc 100644 (file)
@@ -74,7 +74,9 @@ class GStreamer(_Player):
         # On maemo use software decoding to workaround some bugs their gst:
         # 1. Weird volume bugs in playbin when playing ogg or wma files
         # 2. When seeking the DSPs sometimes lie about the real position info
-        if util.platform == 'maemo':
+        if True:
+            self._maemo_setup_playbin_player(uri)
+        elif util.platform == 'maemo':
             if not self._maemo_setup_hardware_player(filetype):
                 self._maemo_setup_software_player()
                 log.debug( 'Using software decoding (maemo)' )
@@ -119,6 +121,14 @@ class GStreamer(_Player):
             self.player.set_state(gst.STATE_NULL)
             self.player = None
 
+    def _maemo_setup_playbin_player(self, url):
+        self.player = gst.parse_launch("playbin2 uri=%s" % (url,))
+        self.filesrc = self.player
+        self.filesrc_property = 'uri'
+        self.volume_control = self.player
+        self.volume_multiplier = 1.
+        self.volume_property = 'volume'
+
     def _maemo_setup_hardware_player( self, filetype ):
         """ Setup a hardware player for mp3 or aac audio using
         dspaacsink or dspmp3sink """
@@ -296,9 +306,9 @@ if util.platform == 'maemo':
             states = ("playing", "paused", "stopped")
             self.__state = state if state in states else 'none'
 
-    PlayerBackend = OssoPlayer
-else:
-    PlayerBackend = GStreamer
+#    PlayerBackend = OssoPlayer
+#else:
+PlayerBackend = GStreamer
 
 class Playlist(object):
     class Entry(object):
@@ -306,12 +316,14 @@ class Playlist(object):
             if isinstance(data, dict):
                 self.id = data['id']
                 self.name = data['name']
+                self.image = data['image']
                 self.numalbum = int(data['numalbum'])
                 self.url = data['mp3']
                 self.type = 'mp3'
             elif isinstance(data, basestring): # assume URI
                 self.id = 0
                 self.name = ''
+                self.image = None
                 self.numalbum = 0
                 self.url = data
                 self.type = 'mp3'
@@ -322,19 +334,30 @@ class Playlist(object):
         if items is None:
             items = []
         self.items = [Playlist.Entry(item) for item in items]
-        self.current = -1
+        self._current = -1
 
     def add(self, item):
         self.items.append(Playlist.Entry(item))
 
     def next(self):
         if self.has_next():
-            self.current = self.current + 1
-            return self.items[self.current]
+            self._current = self._current + 1
+            return self.items[self._current]
         return None
 
     def has_next(self):
-        return self.current < (len(self.items)-1)
+        return self._current < (len(self.items)-1)
+
+    def current(self):
+        if self._current >= 0:
+            return self.items[self._current]
+        return None
+
+    def current_index(self):
+        return self._current
+
+    def __len__(self):
+        return len(self.items)
 
 class Player(Playlist):
     def __init__(self):