+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("");