do nothing when old and new service is equal
[enigma2.git] / lib / python / Components / Sources / EventInfo.py
index 724d9c1f0f93b9bc8c28e5086a1b9368c3e92c81..a4bc874f534e3812b839fa71d67002fbafc64130 100644 (file)
@@ -1,29 +1,34 @@
 from Components.PerServiceDisplay import PerServiceBase
-from Tools.Event import Event
+from Components.Element import cached
 from enigma import iPlayableService
 from Source import Source
 
-class EventInfo(PerServiceBase, Source):
+
+class EventInfo(PerServiceBase, Source, object):
        NOW = 0
        NEXT = 1
        
        def __init__(self, navcore, now_or_next):
-               self.changed = Event()
+               Source.__init__(self)
                PerServiceBase.__init__(self, navcore, 
                        { 
-                               iPlayableService.evUpdatedEventInfo: self.ourEvent, 
-                               iPlayableService.evEnd: self.stopEvent 
-                       })
+                               iPlayableService.evStart: self.gotEvent,
+                               iPlayableService.evUpdatedEventInfo: self.gotEvent,
+                               iPlayableService.evEnd: self.gotEvent
+                       }, with_event=True)
                
-               self.event = None
                self.now_or_next = now_or_next
-               
-       def ourEvent(self):
+
+       @cached
+       def getEvent(self):
                service = self.navcore.getCurrentService()
                info = service and service.info()
-               self.event = info and info.getEvent(self.now_or_next)
-               self.changed()
+               return info and info.getEvent(self.now_or_next)
+
+       event = property(getEvent)
 
-       def stopEvent(self):
-               self.event = None
-               self.changed()
+       def gotEvent(self, what):
+               if what in [iPlayableService.evStart, iPlayableService.evEnd]:
+                       self.changed((self.CHANGED_CLEAR,))
+               else:
+                       self.changed((self.CHANGED_ALL,))