X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/0a7e2ed8d31048eee98bf2ffd794743d30d9b953..1f820106cba412af1408ba56aa9cf51657e48857:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index b7325c36..fcce082f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -262,6 +262,18 @@ class InfoBarChannelSelection: "openServiceList": (self.openServiceList, _("open service list")), }) + def showTvChannelList(self, zap=False): + self.servicelist.setModeTv() + if zap: + self.servicelist.zap() + self.session.execDialog(self.servicelist) + + def showRadioChannelList(self, zap=False): + self.servicelist.setModeRadio() + if zap: + self.servicelist.zap() + self.session.execDialog(self.servicelist) + def firstRun(self): self.onShown.remove(self.firstRun) config.misc.initialchannelselection.value = 0 @@ -1093,7 +1105,7 @@ class InfoBarInstantRecord: if entry is not None and entry != -1: self.session.nav.RecordTimer.removeEntry(self.recording[entry]) self.recording.remove(self.recording[entry]) - + def startInstantRecording(self, limitEvent = False): serviceref = self.session.nav.getCurrentlyPlayingServiceReference() @@ -1219,7 +1231,6 @@ class InfoBarAudioSelection: print "tlist:", tlist if n > 0: self.audioChannel = service.audioChannel() -# config.audio.audiochannel = configElement_nonSave("config.audio.audiochannel", configSelection, self.audioChannel.getCurrentChannel(), (("left", _("Left >")), ("stereo", _("< Stereo >")), ("right", _("< Right")))) for x in range(n): i = audio.getTrackInfo(x) @@ -1240,8 +1251,6 @@ class InfoBarAudioSelection: selectedAudio = tlist[0][1] tlist.sort(lambda x,y : cmp(x[0], y[0])) -# tlist.insert(0, getConfigListEntry(_("Audio Channel"), config.audio.audiochannel)) - selection = 2 for x in tlist: if x[1] != selectedAudio: @@ -1263,15 +1272,18 @@ class InfoBarAudioSelection: tlist = [(_("left"), 0), (_("stereo"), 1), (_("right"), 2)] self.session.openWithCallback(self.modeSelected, ChoiceBox, title=_("Select audio mode"), list = tlist, selection = selection, keys = keys) else: + del self.audioChannel if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > audio[1]: self.audioTracks.selectTrack(audio[1]) + else: + del self.audioChannel del self.audioTracks -# del config.audio.audiochannel def modeSelected(self, mode): if mode is not None: self.audioChannel.selectChannel(mode[1]) del self.audioChannel + class InfoBarSubserviceSelection: def __init__(self): self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions", @@ -1347,10 +1359,15 @@ class InfoBarSubserviceSelection: class InfoBarAdditionalInfo: def __init__(self): + self["NimA"] = Pixmap() + self["NimB"] = Pixmap() + self["TextActive"] = Pixmap() self["DolbyActive"] = Pixmap() self["CryptActive"] = Pixmap() self["FormatActive"] = Pixmap() - + self["NimA_Active"] = Pixmap() + self["NimB_Active"] = Pixmap() + self["ButtonRed"] = PixmapConditional(withTimer = False) self["ButtonRed"].setConnect(lambda: harddiskmanager.HDDCount() > 0) self.onLayoutFinish.append(self["ButtonRed"].update) @@ -1376,6 +1393,19 @@ class InfoBarAdditionalInfo: self.onLayoutFinish.append(self["ButtonBlueText"].update) self.session.nav.event.append(self.gotServiceEvent) # we like to get service events + res_mgr = eDVBResourceManagerPtr() + if eDVBResourceManager.getInstance(res_mgr) == 0: + res_mgr.frontendUseMaskChanged.get().append(self.tunerUseMaskChanged) + + def tunerUseMaskChanged(self, mask): + if mask&1: + self["NimA_Active"].show() + else: + self["NimA_Active"].hide() + if mask&2: + self["NimB_Active"].show() + else: + self["NimB_Active"].hide() def hideSubServiceIndication(self): self["ButtonGreen"].hide() @@ -1387,15 +1417,25 @@ class InfoBarAdditionalInfo: def checkFormat(self, service): info = service.info() - if info is not None: + if info: aspect = info.getInfo(iServiceInformation.sAspect) if aspect in [ 3, 4, 7, 8, 0xB, 0xC, 0xF, 0x10 ]: self["FormatActive"].show() - else: - self["FormatActive"].hide() + return + self["FormatActive"].hide() + + def checkText(self, service): + info = service.info() + if info: + tpid = info.getInfo(iServiceInformation.sTXTPID) + if tpid != -1: + self["TextActive"].show() + return + self["TextActive"].hide() def checkSubservices(self, service): - if service.subServices().getNumberOfSubservices() > 0: + subservices = service.subServices() + if subservices and subservices.getNumberOfSubservices() > 0: self.showSubServiceIndication() else: self.hideSubServiceIndication() @@ -1404,7 +1444,7 @@ class InfoBarAdditionalInfo: # FIXME dolby = False audio = service.audioTracks() - if audio is not None: + if audio: n = audio.getNumberOfTracks() for x in range(n): i = audio.getTrackInfo(x) @@ -1419,25 +1459,41 @@ class InfoBarAdditionalInfo: def checkCrypted(self, service): info = service.info() - if info is not None: - if info.getInfo(iServiceInformation.sIsCrypted) > 0: - self["CryptActive"].show() - else: - self["CryptActive"].hide() + if info and info.getInfo(iServiceInformation.sIsCrypted) > 0: + self["CryptActive"].show() + else: + self["CryptActive"].hide() + + def checkTunerState(self, service): + info = service.frontendInfo() + feNumber = info and info.getFrontendInfo(iFrontendInformation.frontendNumber) + if feNumber is None: + self["NimA"].hide() + self["NimB"].hide() + elif feNumber == 0: + self["NimB"].hide() + self["NimA"].show() + elif feNumber == 1: + self["NimA"].hide() + self["NimB"].show() def gotServiceEvent(self, ev): service = self.session.nav.getCurrentService() - if ev == iPlayableService.evUpdatedEventInfo: + if ev == iPlayableService.evStart: + self.checkTunerState(service) + elif ev == iPlayableService.evUpdatedEventInfo: self.checkSubservices(service) self.checkFormat(service) elif ev == iPlayableService.evUpdatedInfo: self.checkCrypted(service) self.checkDolby(service) + self.checkText(service) elif ev == iPlayableService.evEnd: self.hideSubServiceIndication() self["CryptActive"].hide() self["DolbyActive"].hide() self["FormatActive"].hide() + self["TextActive"].hide() class InfoBarNotifications: def __init__(self):