X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1ccf93c4863d3d7be1cb5b91231d601d59ea9283..40c7c611cfab3dfe403a041e4921805cb107adf4:/lib/python/Screens/TimerEntry.py diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index 0e557a64..85f41fb2 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -9,8 +9,9 @@ from Components.Button import Button from Components.NimManager import nimmanager from Components.Label import Label from Components.Pixmap import Pixmap -from Screens.SubserviceSelection import SubserviceSelection from Screens.MessageBox import MessageBox +from Screens.ChoiceBox import ChoiceBox +from RecordTimer import AFTEREVENT from enigma import eEPGCache import time import datetime @@ -59,6 +60,8 @@ class TimerEntry(Screen): else: justplay = 1 + afterevent = { AFTEREVENT.NONE: 0, AFTEREVENT.DEEPSTANDBY: 1, AFTEREVENT.STANDBY: 2}[self.timer.afterEvent] + # calculate default values day = [] weekday = 0 @@ -93,6 +96,7 @@ class TimerEntry(Screen): day[weekday] = 0 config.timerentry.justplay = configElement_nonSave("config.timerentry.justplay", configSelection, justplay, (("zap", _("zap")), ("record", _("record")))) + config.timerentry.afterevent = configElement_nonSave("config.timerentry.afterevent", configSelection, afterevent, (("nothing", _("do nothing")), ("deepstandby", _("go to deep standby")))) config.timerentry.type = configElement_nonSave("config.timerentry.type", configSelection, type, (_("once"), _("repeated"))) config.timerentry.name = configElement_nonSave("config.timerentry.name", configText, self.timer.name, (configText.extendableSize, self.keyRightCallback)) config.timerentry.description = configElement_nonSave("config.timerentry.description", configText, self.timer.description, (configText.extendableSize, self.keyRightCallback)) @@ -130,7 +134,7 @@ class TimerEntry(Screen): config.timerentry.enddate.change() try: self["config"].invalidate(config.timerentry.enddate) - except: + except: # FIXME: what could go wrong here? pass if (configElement.getConfigPath() == "config.timerentry.enddate"): if (config.timerentry.enddate.value < config.timerentry.startdate.value): @@ -138,7 +142,7 @@ class TimerEntry(Screen): config.timerentry.startdate.change() try: self["config"].invalidate(config.timerentry.startdate) - except: + except: # FIXME: what could go wrong here? pass def createSetup(self, widget): @@ -187,6 +191,9 @@ class TimerEntry(Screen): if currentConfigSelectionElement(config.timerentry.justplay) != "zap": self.list.append(getConfigListEntry(_("EndTime"), config.timerentry.endtime)) + if currentConfigSelectionElement(config.timerentry.justplay) != "zap": + self.list.append(getConfigListEntry(_("After event"), config.timerentry.afterevent)) + self.channelEntry = getConfigListEntry(_("Channel"), config.timerentry.service) self.list.append(self.channelEntry) @@ -247,15 +254,32 @@ class TimerEntry(Screen): dt = datetime.datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1]) return int(mktime(dt.timetuple())) + def getBeginEnd(self): + enddate = config.timerentry.enddate.value + endtime = config.timerentry.endtime.value + + startdate = config.timerentry.startdate.value + starttime = config.timerentry.starttime.value + + begin = self.getTimestamp(startdate, starttime) + end = self.getTimestamp(enddate, endtime) + + # because of the dateChecks, startdate can't be < enddate. + # however, the endtime can be less than the starttime. + # in this case, add 1 day. + if end < begin: + end += 86400 + return begin, end + def keyGo(self): self.timer.name = config.timerentry.name.value self.timer.description = config.timerentry.description.value self.timer.justplay = (currentConfigSelectionElement(config.timerentry.justplay) == "zap") self.timer.resetRepeated() + self.timer.afterEvent = { 0: AFTEREVENT.NONE, 1: AFTEREVENT.DEEPSTANDBY, 2: AFTEREVENT.STANDBY}[config.timerentry.afterevent.value] if (config.timerentry.type.value == 0): # once - self.timer.begin = self.getTimestamp(config.timerentry.startdate.value, config.timerentry.starttime.value) - self.timer.end = self.getTimestamp(config.timerentry.enddate.value, config.timerentry.endtime.value) + self.timer.begin, self.timer.end = self.getBeginEnd() if (config.timerentry.type.value == 1): # repeated if (config.timerentry.repeated.value == 0): # daily for x in range(0,7): @@ -274,18 +298,32 @@ class TimerEntry(Screen): self.timer.begin = self.getTimestamp(time.time(), config.timerentry.starttime.value) self.timer.end = self.getTimestamp(time.time(), config.timerentry.endtime.value) + + # when a timer end is set before the start, add 1 day + if self.timer.end < self.timer.begin: + self.timer.end += 86400 if self.timer.eit is not None: event = eEPGCache.getInstance().lookupEventId(self.timer.service_ref.ref, self.timer.eit) if event is not None: - if event.getNumOfLinkageServices() > 0: - self.session.openWithCallback(self.subserviceSelected, SubserviceSelection, event, self.timer.service_ref.ref) + n = event.getNumOfLinkageServices() + if n > 0: + tlist = [] + ref = self.session.nav.getCurrentlyPlayingServiceReference() + parent = self.timer.service_ref.ref + selection = 0 + for x in range(n): + i = event.getLinkageService(parent, x) + if i.toString() == ref.toString(): + selection = x + tlist.append((i.getName(), i)) + self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice to record..."), list = tlist, selection = selection) return self.close((True, self.timer)) def subserviceSelected(self, service): if not service is None: - self.timer.service_ref = ServiceReference(service) + self.timer.service_ref = ServiceReference(service[1]) self.close((True, self.timer)) def keyCancel(self):