- add ServicePosition
[enigma2.git] / lib / python / Components / ServicePosition.py
diff --git a/lib/python/Components/ServicePosition.py b/lib/python/Components/ServicePosition.py
new file mode 100644 (file)
index 0000000..1795637
--- /dev/null
@@ -0,0 +1,48 @@
+from PerServiceDisplay import *
+from enigma import eTimer
+
+
+from enigma import pNavigation, iSeekableServicePtr
+
+class ServicePosition(PerServiceDisplay):
+       def __init__(self, navcore):
+               self.updateTimer = eTimer()
+               self.updateTimer.timeout.get().append(self.update)
+               PerServiceDisplay.__init__(self, navcore,
+                       {
+                               pNavigation.evNewService: self.newService,
+                               pNavigation.evStopService: self.stopEvent
+                       })
+
+       def newService(self):
+               seek = iSeekableServicePtr()
+               service = self.navcore.getCurrentService()
+               
+               self.updateTimer.stop()
+               
+               if service != None:
+                       if not service.seek(seek):
+                               self.updateTimer.start(500)
+               
+       
+       def update(self):
+               seek = iSeekableServicePtr()
+               service = self.navcore.getCurrentService()
+               
+               l = -1
+               
+               if service != None:
+                       if not service.seek(seek):
+                               # r = seek.getLength()
+                               r = seek.getPlayPosition()
+                               if not r[0]:
+                                       l = r[1] / 90000
+
+               if l != -1:
+                       self.setText("%d:%02d" % (l/60, l%60))
+               else:
+                       self.setText("-:--")
+       
+       def stopEvent(self):
+               self.updateTimer.stop()
+               self.setText("");