X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/9083b11e3985534d45494cd89e0c54fddf7e5b52..ade31606f868b60e12458d3fc0d68a69094656e1:/Navigation.py?ds=sidebyside diff --git a/Navigation.py b/Navigation.py index b4110f49..a905da19 100644 --- a/Navigation.py +++ b/Navigation.py @@ -1,15 +1,17 @@ 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 # 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 @@ -27,6 +29,13 @@ 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): @@ -41,10 +50,10 @@ class Navigation: for x in self.record_event: x(rec_service, event) - def playService(self, ref, checkParentalControl = True): + def playService(self, ref, checkParentalControl = True, forceRestart = False): oldref = self.currentlyPlayingServiceReference - if ref and oldref and ref == oldref: - print "ignore request to play already running service" + if ref and oldref and ref == oldref and not forceRestart: + print "ignore request to play already running service(1)" return 0 print "playing", ref and ref.toString() if ref is None: @@ -55,6 +64,10 @@ class Navigation: if not oldref: oldref = eServiceReference() playref = getBestPlayableServiceReference(ref, oldref) + print "playref", playref + if playref and oldref and playref == oldref and not forceRestart: + print "ignore request to play already running service(2)" + return 0 if not playref or (checkParentalControl and not parentalControl.isServicePlayable(playref, boundFunction(self.playService, checkParentalControl = False))): self.stopService() return 0 @@ -70,15 +83,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 @@ -87,8 +100,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: @@ -103,13 +116,6 @@ class Navigation: 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