X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d731c3f593fc10252efee0ea0940f6a94f32a056..49b1d6023e84aa49b29bc0c0cd2e293b3a7e360c:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index aac470bf..a627cdb4 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -33,23 +33,26 @@ from enigma import * import time import os +from Components.config import config, currentConfigSelectionElement + # hack alert! from Menu import MainMenu, mdom +from GlobalActions import globalActionMap + class InfoBarVolumeControl: """Volume control, handles volUp, volDown, volMute actions and display a corresponding dialog""" + def __init__(self): + global globalActionMap + globalActionMap.actions["volumeUp"]=self.volUp + globalActionMap.actions["volumeDown"]=self.volDown + globalActionMap.actions["volumeMute"]=self.volMute + config.audio = ConfigSubsection() config.audio.volume = configElement("config.audio.volume", configSequence, [100], configsequencearg.get("INTEGER", (0, 100))) - self["VolumeActions"] = ActionMap( ["InfobarVolumeActions"] , - { - "volumeUp": self.volUp, - "volumeDown": self.volDown, - "volumeMute": self.volMute, - }) - self.volumeDialog = self.session.instantiateDialog(Volume) self.muteDialog = self.session.instantiateDialog(Mute) @@ -358,9 +361,15 @@ 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: @@ -510,8 +519,9 @@ class InfoBarServiceName: def __init__(self): self["ServiceName"] = ServiceName(self.session.nav) -class InfoBarPVR: - +class InfoBarSeek: + """handles actions like seeking, pause""" + # ispause, isff, issm, skip SEEK_STATE_PLAY = (0, 0, 0, 0) SEEK_STATE_PAUSE = (1, 0, 0, 0) @@ -531,9 +541,8 @@ class InfoBarPVR: SEEK_STATE_SM_QUARTER = (0, 0, 4, 0) SEEK_STATE_SM_EIGHTH = (0, 0, 8, 0) - """handles PVR specific actions like seeking, pause""" def __init__(self): - self["PVRActions"] = HelpableActionMap(self, "InfobarPVRActions", + self["SeekActions"] = HelpableActionMap(self, "InfobarSeekActions", { "pauseService": (self.pauseService, "pause"), "unPauseService": (self.unPauseService, "continue"), @@ -542,9 +551,6 @@ class InfoBarPVR: "seekFwdUp": (self.seekFwdUp, "skip forward"), "seekBack": (self.seekBack, "skip backward"), "seekBackUp": (self.seekBackUp, "skip backward"), - - "up": (self.showMovies, "movie list"), - "down": (self.showMovies, "movie list") }) self.seekstate = self.SEEK_STATE_PLAY @@ -718,6 +724,59 @@ class InfoBarPVR: def rwdSeekTo(self, minutes): self.fwdSeekTo(0 - minutes) +class InfoBarShowMovies: + + # i don't really like this class. + # it calls a not further specified "movie list" on up/down/movieList, + # so this is not moe than an action map + def __init__(self): + self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions", + { + "movieList": (self.showMovies, "movie list"), + "up": (self.showMovies, "movie list"), + "down": (self.showMovies, "movie list") + }) + +class InfoBarTimeshift: + def __init__(self): + self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions", + { + "timeshiftStart": (self.startTimeshift, "start timeshift "), + "timeshiftStop": (self.stopTimeshift, "stop timeshift") + }) + self.tshack = 0 + + def getTimeshift(self): + service = self.session.nav.getCurrentService() + return service.timeshift() + + def startTimeshift(self): + # TODO: check for harddisk! (or do this in the interface? would make + # more sense... for example radio could be timeshifted in memory, + # and the decision can't be made here) + print "enable timeshift" + ts = self.getTimeshift() + if ts is None: + self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR) + print "no ts interface" + return + print "ok, timeshift enabled" + if self.tshack == 0: + ts.startTimeshift() + self.tshack = 1 + else: + pauseable = self.session.nav.getCurrentService().pause() + pauseable.pause() # switch to record + + def stopTimeshift(self): + print "disable timeshift" + ts = self.getTimeshift() + if ts is None: + return + ts.stopTimeshift() + self.tshack = 0 + + from RecordTimer import parseEvent class InfoBarInstantRecord: @@ -753,7 +812,17 @@ class InfoBarInstantRecord: if event is not None: data = parseEvent(event) - data = (data[0], data[1] + 3600 * 10, data[2], data[3], data[4]) + begin = data[0] + if begin < time.time(): + begin = time.time() + + end = data[1] + if end < begin: + end = begin + + end += 3600 * 10 + + data = (begin, end, data[2], data[3], data[4]) else: data = (time.time(), time.time() + 3600 * 10, "instant record", "", None) @@ -874,6 +943,7 @@ class InfoBarAdditionalInfo: self.hideSubServiceIndication() def checkDolby(self, service): + # FIXME dolby = False audio = service.audioTracks() if audio is not None: