Fritz!Call: add python-json to Depends
[enigma2-plugins.git] / eventposition / src / EventPosition.py
1 # -*- coding: utf-8 -*-
2 #
3 # EventPosition - Converter
4 #
5 # Coded by Dr.Best (c) 2013
6 # Support: www.dreambox-tools.info
7 # E-Mail: dr.best@dreambox-tools.info
8 #
9 # This plugin is open source but it is NOT free software.
10 #
11 # This plugin may only be distributed to and executed on hardware which
12 # is licensed by Dream Multimedia GmbH.
13 # In other words:
14 # It's NOT allowed to distribute any parts of this plugin or its source code in ANY way
15 # to hardware which is NOT licensed by Dream Multimedia GmbH.
16 # It's NOT allowed to execute this plugin and its source code or even parts of it in ANY way
17 # on hardware which is NOT licensed by Dream Multimedia GmbH.
18 #
19 # If you want to use or modify the code or parts of it,
20 # you have to keep MY license and inform me about the modifications by mail.
21 #
22
23 from Converter import Converter
24 from Poll import Poll
25 from Components.Element import cached
26 from time import time
27
28 class EventPosition(Poll, Converter, object):
29         def __init__(self, type):
30                 Poll.__init__(self)
31                 Converter.__init__(self, type)
32                 self.poll_interval = 30*1000
33                 self.poll_enabled = True
34
35         @cached
36         def getPosition(self):
37                 event = self.source.event
38                 if event is None:
39                         return None
40                 now = int(time())
41                 start_time = event.getBeginTime()
42                 duration = event.getDuration()
43                 if start_time <= now <= (start_time + duration) and duration > 0:
44                         return now - start_time
45                 else:
46                         return 0
47
48         @cached
49         def getLength(self):
50                 event = self.source.event
51                 if event is None:
52                         return None
53                 return event.getDuration()
54
55         @cached
56         def getCutlist(self):
57                 return []
58
59
60         position = property(getPosition)
61         length = property(getLength)
62         cutlist = property(getCutlist)
63
64
65         def changed(self, what):
66                 if what[0] != self.CHANGED_CLEAR:
67                         self.downstream_elements.changed(what)
68                         if len(self.downstream_elements):
69                                 if not self.source.event and self.downstream_elements[0].visible:
70                                         self.downstream_elements[0].visible = False
71                                 elif self.source.event and not self.downstream_elements[0].visible:
72                                         self.downstream_elements[0].visible = True