X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2884810419e8c4d220c91a0bba1e40e67a2fe158..1614705deccca22408e6a401341e56ccc2fc6682:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index a9f7754b..e101cd25 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -6,6 +6,8 @@ from Components.config import configfile, configsequencearg from Components.config import config, configElement, ConfigSubsection, configSequence from ChannelSelection import ChannelSelection +from Components.Pixmap import PixmapConditional +from Components.BlinkingPixmap import BlinkingPixmapConditional from Components.ServiceName import ServiceName from Components.EventInfo import EventInfo @@ -244,7 +246,43 @@ class InfoBarNumberZap: def numberEntered(self, retval): # print self.servicelist if retval > 0: - self.servicelist.zapToNumber(retval) + self.zapToNumber(retval) + + def searchNumberHelper(self, serviceHandler, num, bouquet): + servicelist = serviceHandler.list(bouquet) + if not servicelist is None: + while num: + serviceIterator = servicelist.getNext() + if not serviceIterator.valid(): #check end of list + break + if serviceIterator.flags: #assume normal dvb service have no flags set + continue + num -= 1; + if not num: #found service with searched number ? + return serviceIterator, 0 + return None, num + + def zapToNumber(self, number): + bouquet = self.servicelist.bouquet_root + service = None + serviceHandler = eServiceCenter.getInstance() + if bouquet.toString().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK + service, number = self.searchNumberHelper(serviceHandler, number, bouquet) + else: + bouquetlist = serviceHandler.list(bouquet) + if not bouquetlist is None: + while number: + bouquet = bouquetlist.getNext() + if not bouquet.valid(): #check end of list + break + if ((bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory): + continue + service, number = self.searchNumberHelper(serviceHandler, number, bouquet) + if not service is None: + self.session.nav.playService(service) #play service + if self.servicelist.getRoot() != bouquet: #already in correct bouquet? + self.servicelist.setRoot(bouquet) + self.servicelist.setCurrentSelection(service) #select the service in servicelist class InfoBarChannelSelection: """ ChannelSelection - handles the channelSelection dialog and the initial @@ -386,16 +424,20 @@ class InfoBarInstantRecord: """Instant Record - handles the instantRecord action in order to start/stop instant records""" def __init__(self): - self["InstnantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord", + self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord", { "instantRecord": (self.instantRecord, "Instant Record..."), }) self.recording = None - + + self["BlinkingPoint"] = BlinkingPixmapConditional() + self.onShown.append(self["BlinkingPoint"].hidePixmap) + self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording) + def stopCurrentRecording(self): self.session.nav.RecordTimer.removeEntry(self.recording) self.recording = None - + def startInstantRecording(self): serviceref = self.session.nav.getCurrentlyPlayingServiceReference() @@ -412,12 +454,20 @@ class InfoBarInstantRecord: # fix me, description. self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record") self.recording.dontSave = True + + #self["BlinkingPoint"].setConnect(lambda: self.recording.isRunning()) + + def isInstantRecordRunning(self): + if self.recording != None: + if self.recording.isRunning(): + return True + return False def recordQuestionCallback(self, answer): if answer == False: return - if self.recording != None: + if self.isInstantRecordRunning(): self.stopCurrentRecording() else: self.startInstantRecording() @@ -429,10 +479,10 @@ class InfoBarInstantRecord: self.session.open(MessageBox, "No HDD found!") return - if self.recording != None: - self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?") + if self.isInstantRecordRunning(): + self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Do you want to stop the current\n(instant) recording?")) else: - self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?") + self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Start recording?")) from Screens.AudioSelection import AudioSelection @@ -449,3 +499,17 @@ class InfoBarAudioSelection: n = audio.getNumberOfTracks() if n > 0: self.session.open(AudioSelection, audio) + +class InfoBarAdditionalInfo: + def __init__(self): + self["DolbyActive"] = PixmapConditional() + # TODO: get the info from c++ somehow + self["DolbyActive"].setConnect(lambda: False) + + self["CryptActive"] = PixmapConditional() + # TODO: get the info from c++ somehow + self["CryptActive"].setConnect(lambda: False) + + self["FormatActive"] = PixmapConditional() + # TODO: get the info from c++ somehow + self["FormatActive"].setConnect(lambda: False) \ No newline at end of file