- add iSeekableService, implement it for serviceDvb
[enigma2.git] / lib / python / Components / ServicePosition.py
1 from PerServiceDisplay import *
2 from enigma import eTimer
3
4
5 from enigma import pNavigation, iSeekableServicePtr
6
7 class ServicePosition(PerServiceDisplay):
8         def __init__(self, navcore):
9                 self.updateTimer = eTimer()
10                 self.updateTimer.timeout.get().append(self.update)
11                 PerServiceDisplay.__init__(self, navcore,
12                         {
13                                 pNavigation.evNewService: self.newService,
14                                 pNavigation.evStopService: self.stopEvent
15                         })
16
17         def newService(self):
18                 seek = iSeekableServicePtr()
19                 service = self.navcore.getCurrentService()
20                 
21                 self.updateTimer.stop()
22                 
23                 if service != None:
24                         if not service.seek(seek):
25                                 self.updateTimer.start(500)
26                 
27         
28         def update(self):
29                 seek = iSeekableServicePtr()
30                 service = self.navcore.getCurrentService()
31                 
32                 l = -1
33                 
34                 if service != None:
35                         if not service.seek(seek):
36                                 # r = seek.getLength()
37                                 r = seek.getPlayPosition()
38                                 if not r[0]:
39                                         l = r[1] / 90000
40
41                 if l != -1:
42                         self.setText("%d:%02d" % (l/60, l%60))
43                 else:
44                         self.setText("-:--")
45         
46         def stopEvent(self):
47                 self.updateTimer.stop()
48                 self.setText("");