X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/46f28210d3fc839f621900e932f650e197688ce5..f412f2579647e5b4b9857acaa4a1b29ff191533e:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 2821f2c9..da0e6d6f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -16,8 +16,7 @@ from Components.Sources.FrontendStatus import FrontendStatus from Components.Sources.Boolean import Boolean from Components.Sources.Clock import Clock from Components.TimerList import TimerEntryComponent -from Components.config import config, ConfigBoolean - +from Components.config import config, ConfigBoolean, ConfigClock from EpgSelection import EPGSelection from Plugins.Plugin import PluginDescriptor @@ -33,6 +32,7 @@ from Screens.PictureInPicture import PictureInPicture from Screens.SubtitleDisplay import SubtitleDisplay from Screens.RdsDisplay import RdsInfoDisplay, RassInteractive from Screens.SleepTimerEdit import SleepTimerEdit +from Screens.TimeDateInput import TimeDateInput from ServiceReference import ServiceReference from Tools import Notifications @@ -41,7 +41,7 @@ from Tools.Directories import SCOPE_HDD, resolveFilename from enigma import eTimer, eServiceCenter, eDVBServicePMTHandler, iServiceInformation, \ iPlayableService, eServiceReference, eDVBResourceManager, iFrontendInformation, eEPGCache -from time import time +from time import time, localtime, strftime from os import stat as os_stat from bisect import insort @@ -96,11 +96,18 @@ class InfoBarShowHide: if old_begin_time and old_begin_time != self.current_begin_time: self.doShow() - def __serviceStarted(self): - if self.execing: + def __serviceStarted(self, force=False): + new = self.servicelist.newServicePlayed() + if self.execing or force: self.current_begin_time=0 if config.usage.show_infobar_on_zap.value: self.doShow() + elif not self.__checkServiceStarted in self.onExecBegin and new: + self.onExecBegin.append(self.__checkServiceStarted) + + def __checkServiceStarted(self): + self.__serviceStarted(True) + self.onExecBegin.remove(self.__checkServiceStarted) def __onShow(self): self.__state = self.STATE_SHOWN @@ -568,9 +575,9 @@ class InfoBarRdsDecoder: iPlayableService.evUpdatedRassSlidePic: self.RassSlidePicChanged }) - self["RdsActions"] = HelpableActionMap(self, "InfobarRdsActions", + self["RdsActions"] = ActionMap(["InfobarRdsActions"], { - "startRassInteractive": (self.startRassInteractive, _("View Rass interactive...")) + "startRassInteractive": self.startRassInteractive },-1) self["RdsActions"].setEnabled(False) @@ -990,7 +997,7 @@ class InfoBarShowMovies: # Timeshift works the following way: # demux0 demux1 "TimeshiftActions" "TimeshiftActivateActions" "SeekActions" # - normal playback TUNER unused PLAY enable disable disable -# - user presses "yellow" button. TUNER record PAUSE enable disable enable +# - user presses "yellow" button. FILE record PAUSE enable disable enable # - user presess pause again FILE record PLAY enable disable enable # - user fast forwards FILE record FF enable disable enable # - end of timeshift buffer reached TUNER record PLAY enable enable disable @@ -1057,7 +1064,8 @@ class InfoBarTimeshift: #self.pvrStateDialog["timeshift"].setRelative(time.time()) # PAUSE. - self.setSeekState(self.SEEK_STATE_PAUSE) + #self.setSeekState(self.SEEK_STATE_PAUSE) + self.activateTimeshiftEnd(False) # enable the "TimeshiftEnableActions", which will override # the startTimeshift actions @@ -1385,22 +1393,39 @@ class InfoBarInstantRecord: self.changeDuration(0) else: self.session.openWithCallback(self.changeDuration, TimerSelection, list) + elif answer[1] == "changeendtime": + if len(self.recording) == 1: + self.setEndtime(0) + else: + self.session.openWithCallback(self.setEndTime, TimerSelection, list) elif answer[1] == "stop": if len(self.recording) == 1: self.stopCurrentRecording(0) else: self.session.openWithCallback(self.stopCurrentRecording, TimerSelection, list) - if answer[1] == "indefinitely" or answer[1] == "manualduration" or answer[1] == "event": - limitEvent = False - if answer[1] == "event": - limitEvent = True + elif answer[1] in ( "indefinitely" , "manualduration", "manualendtime", "event"): + self.startInstantRecording(limitEvent = answer[1] in ("event", "manualendtime") or False) if answer[1] == "manualduration": - self.selectedEntry = len(self.recording) - self.session.openWithCallback(self.inputCallback, InputBox, title=_("How many minutes do you want to record?"), text="5", maxSize=False, type=Input.NUMBER) - self.startInstantRecording(limitEvent = limitEvent) - + self.changeDuration(len(self.recording)-1) + elif answer[1] == "manualendtime": + self.setEndtime(len(self.recording)-1) print "after:\n", self.recording + def setEndtime(self, entry): + if entry is not None: + self.selectedEntry = entry + self.endtime=ConfigClock(default = self.recording[self.selectedEntry].end) + dlg = self.session.openWithCallback(self.TimeDateInputClosed, TimeDateInput, self.endtime) + dlg.setTitle(_("Please change recording endtime")) + + def TimeDateInputClosed(self, ret): + if len(ret) > 1: + if ret[0]: + localendtime = localtime(ret[1]) + print "stopping recording at", strftime("%c", localendtime) + self.recording[self.selectedEntry].end = ret[1] + self.session.nav.RecordTimer.timeChanged(self.recording[self.selectedEntry]) + def changeDuration(self, entry): if entry is not None: self.selectedEntry = entry @@ -1424,9 +1449,11 @@ class InfoBarInstantRecord: title=_("A recording is currently running.\nWhat do you want to do?"), \ list=[(_("stop recording"), "stop"), \ (_("change recording (duration)"), "changeduration"), \ + (_("change recording (endtime)"), "changeendtime"), \ (_("add recording (indefinitely)"), "indefinitely"), \ (_("add recording (stop after current event)"), "event"), \ (_("add recording (enter recording duration)"), "manualduration"), \ + (_("add recording (enter recording endtime)"), "manualendtime"), \ (_("do nothing"), "no")]) else: self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, \ @@ -1434,6 +1461,7 @@ class InfoBarInstantRecord: list=[(_("add recording (indefinitely)"), "indefinitely"), \ (_("add recording (stop after current event)"), "event"), \ (_("add recording (enter recording duration)"), "manualduration"), \ + (_("add recording (enter recording endtime)"), "manualendtime"), \ (_("don't record"), "no")]) from Tools.ISO639 import LanguageCodes @@ -1918,6 +1946,7 @@ class InfoBarSubtitleSupport(object): iPlayableService.evUpdatedInfo: self.__updatedInfo }) self.cached_subtitle_checked = False + self.__selected_subtitle = None def __serviceStopped(self): self.subtitle_window.hide() @@ -1928,8 +1957,7 @@ class InfoBarSubtitleSupport(object): if not self.cached_subtitle_checked: subtitle = self.getCurrentServiceSubtitle() self.cached_subtitle_checked = True - if subtitle: - self.__selected_subtitle = subtitle.getCachedSubtitle() + self.__selected_subtitle = subtitle and subtitle.getCachedSubtitle() if self.__selected_subtitle: subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle) self.subtitle_window.show()