X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c0e0929d4876c78f73013a96226fed7bdec00503..4f46a90d789f28eb0ca156caeb2bb55136d8ac85:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index fa773d80..10a810cf 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -5,7 +5,7 @@ from Components.Label import * from Components.ProgressBar import * from Components.config import configfile, configsequencearg from Components.config import config, configElement, ConfigSubsection, configSequence -from ChannelSelection import ChannelSelection +from ChannelSelection import ChannelSelection, BouquetSelector from Components.Pixmap import Pixmap, PixmapConditional from Components.BlinkingPixmap import BlinkingPixmapConditional @@ -25,6 +25,7 @@ from Screens.MinuteInput import MinuteInput from Components.Harddisk import harddiskmanager from Tools import Notifications +from Tools.Directories import * #from enigma import eTimer, eDVBVolumecontrol, quitMainloop from enigma import * @@ -32,6 +33,8 @@ from enigma import * import time import os +from Components.config import config, currentConfigSelectionElement + # hack alert! from Menu import MainMenu, mdom @@ -291,7 +294,7 @@ class InfoBarNumberZap: bouquetlist = serviceHandler.list(bouquet) if not bouquetlist is None: while number: - bouquet = bouquetlist.getNext() + bouquet = self.servicelist.appendDVBTypes(bouquetlist.getNext()) if not bouquet.valid(): #check end of list break if ((bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory): @@ -357,11 +360,77 @@ class InfoBarEPG: def __init__(self): self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions", { - "showEPGList": (self.showEPGList, _("show EPG...")), + "showEPGList": (self.showEPG, _("show EPG...")), }) + def showEPG(self): + if currentConfigSelectionElement(config.usage.epgtoggle) == "yes": + self.openSingleServiceEPG() + else: + self.showEPGList() + def showEPGList(self): + bouquets = self.servicelist.getBouquetList() + if bouquets is None: + cnt = 0 + else: + cnt = len(bouquets) + if cnt > 1: # show bouquet list + self.session.open(BouquetSelector, bouquets, self.openBouquetEPG) + elif cnt == 1: # add to only one existing bouquet + self.openBouquetEPG(bouquets[0][1]) + else: #no bouquets so we open single epg + self.openSingleEPGSelector(self.session.nav.getCurrentlyPlayingServiceReference()) + + def bouquetEPGCallback(self, info): + if info: + self.openSingleServiceEPG() + + def singleEPGCallback(self, info): + if info: + self.showEPGList() + + def openEventView(self): + try: + self.epglist = [ ] + service = self.session.nav.getCurrentService() + info = service.info() + ptr=info.getEvent(0) + if ptr: + self.epglist.append(ptr) + ptr=info.getEvent(1) + if ptr: + self.epglist.append(ptr) + if len(self.epglist) > 0: + self.session.open(EventView, self.epglist[0], ServiceReference(ref), self.eventViewCallback) + except: + pass + + def openSingleServiceEPG(self): ref=self.session.nav.getCurrentlyPlayingServiceReference() + ptr=eEPGCache.getInstance() + if ptr.startTimeQuery(ref) != -1: + self.session.openWithCallback(self.singleEPGCallback, EPGSelection, ref) + else: # try to show now/next + print 'no epg for service', ref.toString() + + + def openBouquetEPG(self, bouquet): + ptr=eEPGCache.getInstance() + services = [ ] + servicelist = eServiceCenter.getInstance().list(bouquet) + if not servicelist is None: + while True: + service = servicelist.getNext() + if not service.valid(): #check if end of list + break + if service.flags: #ignore non playable services + continue + services.append(ServiceReference(service)) + if len(services): + self.session.openWithCallback(self.bouquetEPGCallback, EPGSelection, services) + + def openSingleEPGSelector(self, ref): ptr=eEPGCache.getInstance() if ptr.startTimeQuery(ref) != -1: self.session.open(EPGSelection, ref) @@ -382,7 +451,7 @@ class InfoBarEPG: except: pass - def eventViewCallback(self, setEvent, val): #used for now/next displaying + def eventViewCallback(self, setEvent, setService, val): #used for now/next displaying if len(self.epglist) > 1: tmp = self.epglist[0] self.epglist[0]=self.epglist[1] @@ -482,6 +551,7 @@ class InfoBarPVR: "seekBack": (self.seekBack, "skip backward"), "seekBackUp": (self.seekBackUp, "skip backward"), + "movieList": (self.showMovies, "movie list"), "up": (self.showMovies, "movie list"), "down": (self.showMovies, "movie list") }) @@ -719,9 +789,9 @@ class InfoBarInstantRecord: def instantRecord(self): try: - stat = os.stat("/hdd/movies") + stat = os.stat(resolveFilename(SCOPE_HDD)) except: - self.session.open(MessageBox, "No HDD found!", MessageBox.TYPE_ERROR) + self.session.open(MessageBox, _("No HDD found or HDD not initialized!"), MessageBox.TYPE_ERROR) return if self.isInstantRecordRunning():