filter \n and \t in short description title
[enigma2.git] / Navigation.py
index b4110f4..2ca87f6 100644 (file)
@@ -1,15 +1,17 @@
 from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference, iPlayableService
 from Components.ParentalControl import parentalControl
 from Tools.BoundFunction import boundFunction
 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 RecordTimer
 import SleepTimer
-
+import Screens.Standby
 import NavigationInstance
 import ServiceReference
 
 # TODO: remove pNavgation, eNavigation and rewrite this stuff in python.
 class Navigation:
 import NavigationInstance
 import ServiceReference
 
 # 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
                
                if NavigationInstance.instance is not None:
                        raise NavigationInstance.instance
                
@@ -27,6 +29,13 @@ class Navigation:
                self.currentlyPlayingServiceReference = None
                self.currentlyPlayingService = None
                self.RecordTimer = RecordTimer.RecordTimer()
                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):
                self.SleepTimer = SleepTimer.SleepTimer()
 
        def dispatchEvent(self, i):
@@ -70,15 +79,15 @@ class Navigation:
        def getCurrentlyPlayingServiceReference(self):
                return self.currentlyPlayingServiceReference
        
        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:
                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
                        if service is None:
                                print "record returned non-zero"
                return service
@@ -87,8 +96,8 @@ class Navigation:
                ret = self.pnav and self.pnav.stopRecordService(service)
                return ret
 
                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:
 
        def getCurrentService(self):
                if not self.currentlyPlayingService:
@@ -103,13 +112,6 @@ class Navigation:
        def pause(self, p):
                return self.pnav and self.pnav.pause(p)
 
        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
        def shutdown(self):
                self.RecordTimer.shutdown()
                self.ServiceHandler = None