X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/95c570d26ce81e3dd1e0610ff6c5c0b34d75ba5a..7caeea037b04c7da1cec7ee2f0eac016db0da689:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index a85bcc97..389e119f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -32,6 +32,7 @@ from Screens.MinuteInput import MinuteInput from Screens.TimerSelection import TimerSelection from Screens.PictureInPicture import PictureInPicture from Screens.SubtitleDisplay import SubtitleDisplay +from Screens.SleepTimerEdit import SleepTimerEdit from ServiceReference import ServiceReference from Tools import Notifications @@ -220,7 +221,7 @@ class InfoBarNumberZap: bouquet = self.servicelist.bouquet_root service = None serviceHandler = eServiceCenter.getInstance() - if bouquet.toString().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK + if not config.usage.multibouquet.value: service, number = self.searchNumberHelper(serviceHandler, number, bouquet) else: bouquetlist = serviceHandler.list(bouquet) @@ -1120,7 +1121,6 @@ class InfoBarPlugins: def __init__(self): self.addExtension(extension = self.getPluginList, type = InfoBarExtensions.EXTENSION_LIST) - def getPluginName(self, name): return name @@ -1133,6 +1133,20 @@ class InfoBarPlugins: def runPlugin(self, plugin): plugin(session = self.session) +# depends on InfoBarExtensions +class InfoBarSleepTimer: + def __init__(self): + self.addExtension((self.getSleepTimerName, self.showSleepTimerSetup, self.available), "1") + + def available(self): + return True + + def getSleepTimerName(self): + return _("Sleep Timer") + + def showSleepTimerSetup(self): + self.session.open(SleepTimerEdit) + # depends on InfoBarExtensions class InfoBarPiP: def __init__(self): @@ -1342,9 +1356,8 @@ class InfoBarAudioSelection: language = i.getLanguage() description = i.getDescription() - if len(language) == 3: - if language in LanguageCodes: - language = LanguageCodes[language][0] + if LanguageCodes.has_key(language): + language = LanguageCodes[language][0] if len(description): description += " (" + language + ")" @@ -1405,6 +1418,8 @@ class InfoBarSubserviceSelection: self.session.nav.event.append(self.checkSubservicesAvail) # we like to get service events + self.bsel = None + def checkSubservicesAvail(self, ev): if ev == iPlayableService.evUpdatedEventInfo: service = self.session.nav.getCurrentService() @@ -1445,7 +1460,7 @@ class InfoBarSubserviceSelection: def subserviceSelection(self): service = self.session.nav.getCurrentService() subservices = service and service.subServices() - + self.bouquets = self.servicelist.getBouquetList() n = subservices and subservices.getNumberOfSubservices() selection = 0 if n and n > 0: @@ -1457,13 +1472,22 @@ class InfoBarSubserviceSelection: selection = x tlist.append((i.getName(), i)) - tlist = [(_("Quickzap"), "quickzap", service.subServices()), ("--", "")] + tlist - - keys = ["red", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n + if self.bouquets and len(self.bouquets): + keys = ["red", "green", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n + if config.usage.multibouquet.value: + tlist = [(_("Quickzap"), "quickzap", service.subServices()), (_("Add to bouquet"), "CALLFUNC", self.addSubserviceToBouquetCallback), ("--", "")] + tlist + else: + tlist = [(_("Quickzap"), "quickzap", service.subServices()), (_("Add to favourites"), "CALLFUNC", self.addSubserviceToBouquetCallback), ("--", "")] + tlist + selection += 3 + else: + tlist = [(_("Quickzap"), "quickzap", service.subServices()), ("--", "")] + tlist + keys = ["red", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n + selection += 2 - self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection + 2, keys = keys) + self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection, keys = keys) def subserviceSelected(self, service): + del self.bouquets if not service is None: if isinstance(service[1], str): if service[1] == "quickzap": @@ -1475,6 +1499,32 @@ class InfoBarSubserviceSelection: self.doShow() self.session.nav.playService(service[1]) + def addSubserviceToBouquetCallback(self, service): + if len(service) > 1 and isinstance(service[1], eServiceReference): + self.selectedSubservice = service + if self.bouquets is None: + cnt = 0 + else: + cnt = len(self.bouquets) + if cnt > 1: # show bouquet list + self.bsel = self.session.openWithCallback(self.bouquetSelClosed, BouquetSelector, self.bouquets, self.addSubserviceToBouquet) + elif cnt == 1: # add to only one existing bouquet + self.addSubserviceToBouquet(self.bouquets[0][1]) + self.session.open(MessageBox, _("Service has been added to the favourites."), MessageBox.TYPE_INFO) + + def bouquetSelClosed(self, confirmed): + self.bsel = None + del self.selectedSubservice + if confirmed: + self.session.open(MessageBox, _("Service has been added to the selected bouquet."), MessageBox.TYPE_INFO) + + def addSubserviceToBouquet(self, dest): + self.servicelist.addServiceToBouquet(dest, self.selectedSubservice[1]) + if self.bsel: + self.bsel.close(True) + else: + del self.selectedSubservice + class InfoBarAdditionalInfo: def __init__(self): self["NimA"] = Pixmap() @@ -1749,14 +1799,15 @@ class InfoBarSubtitleSupport(object): self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { - iPlayableService.evStart: self.__serviceStarted, + iPlayableService.evEnd: self.__serviceStopped, iPlayableService.evUpdatedInfo: self.__updatedInfo }) - - def __serviceStarted(self): self.cached_subtitle_checked = False + + def __serviceStopped(self): self.subtitle_window.hide() self.__subtitles_enabled = False + self.cached_subtitle_checked = False def __updatedInfo(self): if not self.cached_subtitle_checked: