Working to cleanup the player inteface including adding some helpers on
[watersofshiloah] / src / player.py
index a800a3d..6197138 100644 (file)
@@ -14,11 +14,6 @@ class Player(gobject.GObject):
                        gobject.TYPE_NONE,
                        (gobject.TYPE_PYOBJECT, ),
                ),
-               'navigate_change' : (
-                       gobject.SIGNAL_RUN_LAST,
-                       gobject.TYPE_NONE,
-                       (gobject.TYPE_PYOBJECT, ),
-               ),
                'title_change' : (
                        gobject.SIGNAL_RUN_LAST,
                        gobject.TYPE_NONE,
@@ -26,36 +21,61 @@ class Player(gobject.GObject):
                ),
        }
 
-       def __init__(self):
+       def __init__(self, index):
                gobject.GObject.__init__(self)
+               self._index = index
+               self._node = None
+               self._state = "play"
+
+       def set_piece_by_node(self, node):
+               assert node.is_leaf() or node is None
+               if self._node is node:
+                       return
+               self._node = node
+               self.emit("title_change", self._state)
 
        @property
        def title(self):
-               return ""
+               if self._node is None:
+                       return ""
+               return self._node.title
 
        @property
        def subtitle(self):
-               return ""
+               if self._node is None:
+                       return ""
+               return self._node.subtitle
 
        @property
        def can_navigate(self):
-               return True
+               if self._node is None:
+                       return False
+               return self.node.can_navigate
 
        @property
        def state(self):
-               return "play"
-
-       @property
-       def background(self):
-               return "conference_background"
+               return self._state
 
        def play(self):
+               if self._state == "play":
+                       return
+               self._state = "play"
+               self.emit("state_change", self._state)
                _moduleLogger.info("play")
 
        def pause(self):
+               if self._state == "pause":
+                       return
+               self._state = "pause"
+               self.emit("state_change", self._state)
                _moduleLogger.info("pause")
 
        def stop(self):
+               if self._state == "stop":
+                       return
+               self._state = "stop"
+               self.set_piece_by_node(None)
+               self.emit("state_change", self._state)
                _moduleLogger.info("stop")
 
        def back(self):