X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/0bd832437c2d361866236751a03887ecb3048c64..40c7c611cfab3dfe403a041e4921805cb107adf4:/lib/python/Screens/TimerEntry.py diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index fb560a7f..85f41fb2 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -9,8 +9,8 @@ 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 @@ -134,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): @@ -142,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): @@ -254,6 +254,23 @@ 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 @@ -262,8 +279,7 @@ class TimerEntry(Screen): 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): @@ -282,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):