Moved playlist path from plugins to services
authorAndre L. V. Loureiro <loureiro.andrew@gmail.com>
Wed, 20 May 2009 03:22:01 +0000 (23:22 -0400)
committerAndré L. V. Loureiro <loureiro.andrew@gmail.com>
Fri, 29 May 2009 23:00:04 +0000 (19:00 -0400)
zukebox_server/src/services/playlist/zukebox_playlist.py [new file with mode: 0644]

diff --git a/zukebox_server/src/services/playlist/zukebox_playlist.py b/zukebox_server/src/services/playlist/zukebox_playlist.py
new file mode 100644 (file)
index 0000000..fe59630
--- /dev/null
@@ -0,0 +1,54 @@
+
+import dbus.service
+
+from brisa.core import log
+
+class PlayList(list, dbus.service.Object):
+    """Class PlayList
+    Introduction
+    ============
+    Implements a playlist for ZukeBox server.
+    """
+
+    DBUS_SERVICE_NAME = "br.org.zagaia.PlayList"
+    DBUS_OBJ_PATH = "br/org/zagaia/playlist"
+    DBUS_IFACE = "br.org.zagaia.PlayList"
+
+    def __init__(self, name="", positions=10):
+        self.name = name
+        self.positions = positions
+
+    def is_locked(self):
+        if not len(self) == self.positions:
+            return False
+        return True
+
+    def is_availble(self):
+        if not len(self) == 0:
+            return True
+        return False
+
+    @dbus.service.method(DBUS_IFACE)
+    def append(self, obj):
+        """Put a object in the playlist"""
+        if not self.is_locked():
+            log.info("object in playlist")
+            self.append(obj)
+
+    @dbus.service.method(DBUS_IFACE)
+    def drop(self):
+        """Always pop the first object from list"""
+        if self.is_availble():
+            self.pop(0)
+
+    @dbus.service.method(DBUS_IFACE)
+    def get_size(self):
+        """Return the size of playlist"""
+        return len(self)
+
+    @dbus.service.method(DBUS_IFACE)
+    def previous(self):
+        if self.is_availble():
+            pass
+
+