X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/746dab83a3ababa568a9185967e189032a638b97..c7239788f111d2a6a8ca3bb8b95b72579095bad4:/Navigation.py diff --git a/Navigation.py b/Navigation.py index fcf19763..9ba0afc5 100644 --- a/Navigation.py +++ b/Navigation.py @@ -1,9 +1,13 @@ from enigma import * +from Components.ParentalControl import parentalControl +from Tools.BoundFunction import boundFunction import RecordTimer import NavigationInstance import ServiceReference +from time import time + # TODO: remove pNavgation, eNavigation and rewrite this stuff in python. class Navigation: def __init__(self): @@ -12,7 +16,7 @@ class Navigation: NavigationInstance.instance = self self.ServiceHandler = eServiceCenter.getInstance() - + import Navigation as Nav Nav.navcore = self @@ -23,23 +27,26 @@ class Navigation: self.currentlyPlayingService = None self.state = 0 self.RecordTimer = RecordTimer.RecordTimer() - + def callEvent(self, i): self.state = i != 1 for x in self.event: x(i) - def playService(self, ref): - print "playing", ref.toString() + def playService(self, ref, checkParentalControl = True): + print "playing", ref and ref.toString() self.currentlyPlayingServiceReference = None self.currentlyPlayingService = None if ref is None: self.stopService() return 0 - if not self.pnav.playService(ref): - self.currentlyPlayingServiceReference = ref - return 0 + if not checkParentalControl or parentalControl.isServicePlayable(ref, boundFunction(self.playService, checkParentalControl = False)): + if self.pnav and not self.pnav.playService(ref): + self.currentlyPlayingServiceReference = ref + return 0 + else: + self.stopService() return 1 def getCurrentlyPlayingServiceReference(self): @@ -49,7 +56,7 @@ class Navigation: print "recording service: %s" % (str(ref)) if isinstance(ref, ServiceReference.ServiceReference): ref = ref.ref - service = self.pnav.recordService(ref) + service = self.pnav and self.pnav.recordService(ref) if service is None: print "record returned non-zero" @@ -60,17 +67,19 @@ class Navigation: def getCurrentService(self): if self.state: if not self.currentlyPlayingService: - self.currentlyPlayingService = self.pnav.getCurrentService() + self.currentlyPlayingService = self.pnav and self.pnav.getCurrentService() return self.currentlyPlayingService return None def stopService(self): - self.pnav.stopService() + print "stopService" + if self.pnav: + self.pnav.stopService() self.currentlyPlayingService = None self.currentlyPlayingServiceReference = None def pause(self, p): - return self.pnav.pause(p) + return self.pnav and self.pnav.pause(p) def recordWithTimer(self, ref, begin, end, name, description, eit): if isinstance(ref, eServiceReference): @@ -81,8 +90,8 @@ class Navigation: def shutdown(self): self.RecordTimer.shutdown() - del self.ServiceHandler - del self.pnav + self.ServiceHandler = None + self.pnav = None def stopUserServices(self): self.stopService()