servicedvb.cpp: fix compiler warning
[enigma2.git] / Navigation.py
index cde4ca4c33f1496809bb3698158673d1f5104734..2ca87f6f57d4acd0b7dfadb03100f360f5ca7178 100644 (file)
@@ -1,17 +1,17 @@
-from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference
+from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference, iPlayableService
 from Components.ParentalControl import parentalControl
 from Tools.BoundFunction import boundFunction
+from Tools.DreamboxHardware import setFPWakeuptime, getFPWakeuptime, getFPWasTimerWakeup, clearFPWasTimerWakeup
+from time import time
 import RecordTimer
 import SleepTimer
-
+import Screens.Standby
 import NavigationInstance
 import ServiceReference
 
-from time import time
-
 # TODO: remove pNavgation, eNavigation and rewrite this stuff in python.
 class Navigation:
-       def __init__(self):
+       def __init__(self, nextRecordTimerAfterEventActionAuto=False):
                if NavigationInstance.instance is not None:
                        raise NavigationInstance.instance
                
@@ -29,11 +29,21 @@ class Navigation:
                self.currentlyPlayingServiceReference = None
                self.currentlyPlayingService = None
                self.RecordTimer = RecordTimer.RecordTimer()
+               if getFPWasTimerWakeup():
+                       clearFPWasTimerWakeup()
+                       if getFPWasTimerWakeup(): # sanity check to detect if the FP driver is working correct!
+                               print "buggy fp driver detected!!! please update drivers.... ignore timer wakeup!"
+                       elif nextRecordTimerAfterEventActionAuto and (len(self.getRecordings()) or abs(self.RecordTimer.getNextRecordingTime() - time()) <= 360):
+                               if not Screens.Standby.inTryQuitMainloop: # not a shutdown messagebox is open
+                                       RecordTimer.RecordTimerEntry.TryQuitMainloop(False) # start shutdown handling
                self.SleepTimer = SleepTimer.SleepTimer()
 
        def dispatchEvent(self, i):
                for x in self.event:
                        x(i)
+               if i == iPlayableService.evEnd:
+                       self.currentlyPlayingServiceReference = None
+                       self.currentlyPlayingService = None
 
        def dispatchRecordEvent(self, rec_service, event):
 #              print "record_event", rec_service, event
@@ -46,8 +56,6 @@ class Navigation:
                        print "ignore request to play already running service"
                        return 0
                print "playing", ref and ref.toString()
-               self.currentlyPlayingServiceReference = None
-               self.currentlyPlayingService = None
                if ref is None:
                        self.stopService()
                        return 0
@@ -71,15 +79,15 @@ class Navigation:
        def getCurrentlyPlayingServiceReference(self):
                return self.currentlyPlayingServiceReference
        
-       def recordService(self, ref):
+       def recordService(self, ref, simulate=False):
                service = None
                print "recording service: %s" % (str(ref))
                if isinstance(ref, ServiceReference.ServiceReference):
                        ref = ref.ref
                if ref:
                        if ref.flags & eServiceReference.isGroup:
-                               ref = getBestPlayableServiceReference(ref, eServiceReference())
-                       service = ref and self.pnav and self.pnav.recordService(ref)
+                               ref = getBestPlayableServiceReference(ref, eServiceReference(), simulate)
+                       service = ref and self.pnav and self.pnav.recordService(ref, simulate)
                        if service is None:
                                print "record returned non-zero"
                return service
@@ -88,8 +96,8 @@ class Navigation:
                ret = self.pnav and self.pnav.stopRecordService(service)
                return ret
 
-       def getRecordings(self):
-               return self.pnav and self.pnav.getRecordings()
+       def getRecordings(self, simulate=False):
+               return self.pnav and self.pnav.getRecordings(simulate)
 
        def getCurrentService(self):
                if not self.currentlyPlayingService:
@@ -100,19 +108,10 @@ class Navigation:
                print "stopService"
                if self.pnav:
                        self.pnav.stopService()
-               self.currentlyPlayingService = None
-               self.currentlyPlayingServiceReference = None
 
        def pause(self, p):
                return self.pnav and self.pnav.pause(p)
 
-       def recordWithTimer(self, ref, begin, end, name, description, eit):
-               if isinstance(ref, eServiceReference):
-                       ref = ServiceReference.ServiceReference(ref)
-               entry = RecordTimer.RecordTimerEntry(ref, begin, end, name, description, eit)
-               self.RecordTimer.record(entry)
-               return entry
-       
        def shutdown(self):
                self.RecordTimer.shutdown()
                self.ServiceHandler = None