From cc53ef67c6cfb594f1d30d1367210c0d3bc41d15 Mon Sep 17 00:00:00 2001 From: ghost Date: Wed, 3 Dec 2008 17:20:48 +0100 Subject: show timer name in dialog when asking to remove it --- lib/python/Screens/TimerEdit.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/python/Screens/TimerEdit.py') diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index aae345db..18ab2b79 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -199,9 +199,11 @@ class TimerEditList(Screen): self.updateState() def removeTimerQuestion(self): - if not self["timerlist"].getCurrent(): + cur = self["timerlist"].getCurrent() + if not cur: return - self.session.openWithCallback(self.removeTimer, MessageBox, _("Really delete this timer?")) + + self.session.openWithCallback(self.removeTimer, MessageBox, _("Do you really want to delete %s?") % (cur.name)) def removeTimer(self, result): if not result: -- cgit v1.2.3 From 65d84bb0627f0e3e21fcdae27ba98cb584d7ad37 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 22 Dec 2008 20:53:34 +0100 Subject: add possibility to remove timers in epglist TODO: this is not working for subtitles yet and not its working in graphical multi epg --- RecordTimer.py | 25 +++++++++---- data/skin_default/icons/epgclock_add.png | Bin 0 -> 358 bytes data/skin_default/icons/epgclock_post.png | Bin 0 -> 354 bytes data/skin_default/icons/epgclock_pre.png | Bin 0 -> 360 bytes lib/python/Components/EpgList.py | 32 +++++++++++++---- lib/python/Screens/EpgSelection.py | 57 ++++++++++++++++++++++++++---- lib/python/Screens/TimerEdit.py | 15 ++------ 7 files changed, 99 insertions(+), 30 deletions(-) create mode 100644 data/skin_default/icons/epgclock_add.png create mode 100644 data/skin_default/icons/epgclock_post.png create mode 100644 data/skin_default/icons/epgclock_pre.png (limited to 'lib/python/Screens/TimerEdit.py') diff --git a/RecordTimer.py b/RecordTimer.py index 8449a2d2..dcfdd578 100644 --- a/RecordTimer.py +++ b/RecordTimer.py @@ -577,6 +577,7 @@ class RecordTimer(timer.Timer): print "ignore timer conflict" elif timersanitycheck.doubleCheck(): print "ignore double timer" + return None entry.timeChanged() print "[Timer] Record " + str(entry) entry.Timer = self @@ -584,15 +585,16 @@ class RecordTimer(timer.Timer): if dosave: self.saveTimer() return None - + def isInTimer(self, eventid, begin, duration, service): time_match = 0 chktime = None chktimecmp = None chktimecmp_end = None end = begin + duration + refstr = str(service) for x in self.timer_list: - check = x.service_ref.ref.toCompareString() == str(service) + check = x.service_ref.ref.toString() == refstr if not check: sref = x.service_ref.ref parent_sid = sref.getUnsignedData(5) @@ -604,7 +606,7 @@ class RecordTimer(timer.Timer): sref.setUnsignedData(2, parent_tsid) sref.setUnsignedData(5, 0) sref.setUnsignedData(6, 0) - check = x.service_ref.ref.toCompareString() == str(service) + check = sref.toCompareString() == refstr num = 0 if check: check = False @@ -620,9 +622,6 @@ class RecordTimer(timer.Timer): check = True break if check: - #if x.eit is not None and x.repeated == 0: - # if x.eit == eventid: - # return duration if x.repeated != 0: if chktime is None: chktime = localtime(begin) @@ -645,6 +644,8 @@ class RecordTimer(timer.Timer): diff = x.end - begin if time_match < diff: time_match = diff + if time_match: + break return time_match def removeEntry(self, entry): @@ -663,6 +664,18 @@ class RecordTimer(timer.Timer): print "state: ", entry.state print "in processed: ", entry in self.processed_timers print "in running: ", entry in self.timer_list + # autoincrease instanttimer if possible + if not entry.dontSave: + for x in self.timer_list: + if x.dontSave and x.autoincrease: + x.end = x.begin + (3600 * 24 * 356 * 1) + self.timeChanged(x) + timersanitycheck = TimerSanityCheck(self.timer_list,x) + if not timersanitycheck.check(): + tsc_list = timersanitycheck.getSimulTimerList() + if len(tsc_list) > 1: + x.end = tsc_list[1].begin - 30 + self.timeChanged(x) # now the timer should be in the processed_timers list. remove it from there. self.processed_timers.remove(entry) self.saveTimer() diff --git a/data/skin_default/icons/epgclock_add.png b/data/skin_default/icons/epgclock_add.png new file mode 100644 index 00000000..487ac483 Binary files /dev/null and b/data/skin_default/icons/epgclock_add.png differ diff --git a/data/skin_default/icons/epgclock_post.png b/data/skin_default/icons/epgclock_post.png new file mode 100644 index 00000000..5716d99f Binary files /dev/null and b/data/skin_default/icons/epgclock_post.png differ diff --git a/data/skin_default/icons/epgclock_pre.png b/data/skin_default/icons/epgclock_pre.png new file mode 100644 index 00000000..ff424637 Binary files /dev/null and b/data/skin_default/icons/epgclock_pre.png differ diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index dbcd572b..042abccb 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -52,6 +52,9 @@ class EPGList(HTMLComponent, GUIComponent): self.l.setBuildFunc(self.buildSimilarEntry) self.epgcache = eEPGCache.getInstance() self.clock_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock.png')) + self.clock_add_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_add.png')) + self.clock_pre_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_pre.png')) + self.clock_post_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_post.png')) def getEventFromId(self, service, eventid): event = None @@ -135,8 +138,22 @@ class EPGList(HTMLComponent, GUIComponent): self.datetime_rect = Rect(width/20*2, 0, width/20*5-15, height) self.service_rect = Rect(width/20*7, 0, width/20*13, height) + def getClockPixmap(self, refstr, beginTime, duration, eventId): + endTime = beginTime + duration + for x in self.timer.timer_list: + if x.service_ref.ref.toString() == refstr: + beg = x.begin + end = x.end + if x.eit == eventId: + return self.clock_pixmap + elif beginTime > beg and beginTime < end and endTime > end: + return self.clock_post_pixmap + elif beginTime < beg and endTime > beg and endTime < end: + return self.clock_pre_pixmap + return self.clock_add_pixmap + def buildSingleEntry(self, service, eventId, beginTime, duration, EventName): - rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) + rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service)) r1=self.weekday_rect r2=self.datetime_rect r3=self.descr_rect @@ -145,14 +162,15 @@ class EPGList(HTMLComponent, GUIComponent): res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_RIGHT, self.days[t[6]])) res.append((eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4]))) if rec: - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, self.clock_pixmap)) + clock_pic = self.getClockPixmap(service, beginTime, duration, eventId) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, clock_pic)) res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName)) return res def buildSimilarEntry(self, service, eventId, beginTime, service_name, duration): - rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) + rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service)) r1=self.weekday_rect r2=self.datetime_rect r3=self.service_rect @@ -161,22 +179,24 @@ class EPGList(HTMLComponent, GUIComponent): res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_RIGHT, self.days[t[6]])) res.append((eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4]))) if rec: - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, self.clock_pixmap)) + clock_pic = self.getClockPixmap(service, beginTime, duration, eventId) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, clock_pic)) res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name)) return res def buildMultiEntry(self, changecount, service, eventId, begTime, duration, EventName, nowTime, service_name): - rec=begTime and (self.timer.isInTimer(eventId, begTime, duration, service) > ((duration/10)*8)) + rec=beginTime and (self.timer.isInTimer(eventId, begTime, duration, service)) r1=self.service_rect r2=self.progress_rect r3=self.descr_rect r4=self.start_end_rect res = [ None ] # no private data needed if rec: + clock_pic = self.getClockPixmap(service, begTime, duration, eventId) res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width()-21, r1.height(), 0, RT_HALIGN_LEFT, service_name)) - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r1.left()+r1.width()-16, r1.top(), 21, 21, self.clock_pixmap)) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r1.left()+r1.width()-16, r1.top(), 21, 21, clock_pic)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_LEFT, service_name)) if begTime is not None: diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index 6740bfb6..b40f445f 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -5,11 +5,13 @@ from Components.Pixmap import Pixmap from Components.Label import Label from Components.EpgList import EPGList, EPG_TYPE_SINGLE, EPG_TYPE_SIMILAR, EPG_TYPE_MULTI from Components.ActionMap import ActionMap +from Components.TimerSanityCheck import TimerSanityCheck from Screens.TimerEdit import TimerSanityConflict from Screens.EventView import EventViewSimple +from Screens.MessageBox import MessageBox from TimeDateInput import TimeDateInput from enigma import eServiceReference -from RecordTimer import RecordTimerEntry, parseEvent +from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT from TimerEntry import TimerEntry from ServiceReference import ServiceReference from time import localtime, time @@ -17,6 +19,9 @@ from time import localtime, time mepg_config_initialized = False class EPGSelection(Screen): + ADD_TIMER = 0 + REMOVE_TIMER = 1 + def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None): Screen.__init__(self, session) self.bouquetChangeCB = bouquetChangeCB @@ -58,6 +63,7 @@ class EPGSelection(Screen): self.zapFunc = zapFunc self["key_green"] = Button(_("Add timer")) + self.key_green_choice = self.ADD_TIMER self["list"] = EPGList(type = self.type, selChangedCB = self.onSelectionChanged, timer = self.session.nav.RecordTimer) self["actions"] = ActionMap(["EPGSelectActions", "OkCancelActions"], @@ -179,14 +185,28 @@ class EPGSelection(Screen): if self.type == EPG_TYPE_MULTI: self["list"].updateMultiEPG(1) + def removeTimer(self, timer): + timer.afterEvent = AFTEREVENT.NONE + self.session.nav.RecordTimer.removeEntry(timer) + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + def timerAdd(self): cur = self["list"].getCurrent() event = cur[0] serviceref = cur[1] if event is None: return - newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event)) - self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) + eventid = event.getEventId() + refstr = serviceref.ref.toString() + for timer in self.session.nav.RecordTimer.timer_list: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + cb_func = lambda ret : not ret or self.removeTimer(timer) + self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName()) + break + else: + newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event)) + self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) def finishedAdd(self, answer): print "finished add" @@ -200,8 +220,12 @@ class EPGSelection(Screen): self.session.nav.RecordTimer.record(entry) else: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER else: - print "Timeredit aborted" + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + print "Timeredit aborted" def finishSanityCorrection(self, answer): self.finishedAdd(answer) @@ -211,7 +235,7 @@ class EPGSelection(Screen): def moveDown(self): self["list"].moveDown() - + def applyButtonState(self, state): if state == 0: self["now_button"].hide() @@ -249,6 +273,7 @@ class EPGSelection(Screen): self["more_button_sel"].hide() def onSelectionChanged(self): + cur = self["list"].getCurrent() if self.type == EPG_TYPE_MULTI: count = self["list"].getCurrentChangeCount() if self.ask_time != -1: @@ -261,7 +286,7 @@ class EPGSelection(Screen): self.applyButtonState(1) days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ] datastr = "" - event = self["list"].getCurrent()[0] + event = cur[0] if event is not None: now = time() beg = event.getBeginTime() @@ -272,3 +297,23 @@ class EPGSelection(Screen): else: datestr = '%s %d.%d.'%(_("Today"), begTime[2], begTime[1]) self["date"].setText(datestr) + else: + event = cur[0] + + if event is None: + return + + serviceref = cur[1] + eventid = event.getEventId() + refstr = serviceref.ref.toString() + + for timer in self.session.nav.RecordTimer.timer_list: + if self.key_green_choice != self.REMOVE_TIMER: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER + break + else: + if self.key_green_choice != self.ADD_TIMER: + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index 18ab2b79..59e2bd03 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -214,18 +214,6 @@ class TimerEditList(Screen): timer = cur timer.afterEvent = AFTEREVENT.NONE self.session.nav.RecordTimer.removeEntry(timer) - if not timer.dontSave: - for timer in self.session.nav.RecordTimer.timer_list: - if timer.dontSave and timer.autoincrease: - timer.end = timer.begin + (3600 * 24 * 356 * 1) - self.session.nav.RecordTimer.timeChanged(timer) - timersanitycheck = TimerSanityCheck(self.session.nav.RecordTimer.timer_list,timer) - if not timersanitycheck.check(): - tsc_list = timersanitycheck.getSimulTimerList() - if len(tsc_list) > 1: - timer.end = tsc_list[1].begin - 30 - self.session.nav.RecordTimer.timeChanged(timer) - self.refill() self.updateState() @@ -261,6 +249,7 @@ class TimerEditList(Screen): def addTimer(self, timer): self.session.openWithCallback(self.finishedAdd, TimerEntry, timer) + def finishedEdit(self, answer): print "finished edit" @@ -335,6 +324,8 @@ class TimerSanityConflict(Screen): self.list.append((_("Conflicting timer") + " " + str(count), x)) self.list2.append((timer[count], False)) count += 1 + if count == 1: + self.list.append((_("Channel not in services list"))) self["list"] = MenuList(self.list) self["timer2"] = TimerList(self.list2) -- cgit v1.2.3 From 15171632716c0734526eefc55e3d0601be177b45 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Fri, 9 Jan 2009 18:42:01 +0100 Subject: fixes by adenin: - fixed "sometimes, timer changes would not be applied" - allow deleting timers in GraphMultiEPG - fix displayed clock icons in epg view, - fix button text for "zap", "add/remove timer" - multiepg and graphmultiepg will automatically switch to correct service --- lib/python/Components/EpgList.py | 6 + .../Extensions/GraphMultiEPG/GraphMultiEpg.py | 143 ++++++++++++++++++--- lib/python/Screens/EpgSelection.py | 40 ++++-- lib/python/Screens/EventView.py | 46 ++++++- lib/python/Screens/TimerEdit.py | 5 +- 5 files changed, 210 insertions(+), 30 deletions(-) (limited to 'lib/python/Screens/TimerEdit.py') diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index 30f566fd..8a7c8d45 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -284,6 +284,12 @@ class EPGList(HTMLComponent, GUIComponent): x = self.l.getCurrentSelection() return x and x[1] + def moveToService(self,serviceref): + for x in range(len(self.list)): + if self.list[x][1] == serviceref.toString(): + self.instance.moveSelectionTo(x) + break + def moveToEventId(self, eventId): index = 0 for x in self.list: diff --git a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py index afae6b3a..b2e07e10 100644 --- a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py +++ b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py @@ -15,8 +15,9 @@ from Screens.TimeDateInput import TimeDateInput from Screens.TimerEntry import TimerEntry from Screens.EpgSelection import EPGSelection from Screens.TimerEdit import TimerSanityConflict +from Screens.MessageBox import MessageBox from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE -from RecordTimer import RecordTimerEntry, parseEvent +from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT from ServiceReference import ServiceReference from Tools.LoadPixmap import LoadPixmap from enigma import eEPGCache, eListbox, gFont, eListboxPythonMultiContent, \ @@ -41,6 +42,10 @@ class EPGList(HTMLComponent, GUIComponent): self.l.setSelectableFunc(self.isSelectable) self.epgcache = eEPGCache.getInstance() self.clock_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock.png')) + self.clock_add_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_add.png')) + self.clock_pre_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_pre.png')) + self.clock_post_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_post.png')) + self.clock_prepost_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'skin_default/icons/epgclock_prepost.png')) self.time_base = None self.time_epoch = time_epoch self.list = None @@ -92,6 +97,22 @@ class EPGList(HTMLComponent, GUIComponent): event = self.epgcache.lookupEventId(service.ref, eventid) return event + def moveToService(self,serviceref): + for x in range(len(self.list)): + if self.list[x][0] == serviceref.toString(): + self.instance.moveSelectionTo(x) + break + + def getIndexFromService(self, serviceref): + for x in range(len(self.list)): + if self.list[x][0] == serviceref.toString(): + return x + return 0 + + def setCurrentIndex(self, index): + if self.instance is not None: + self.instance.moveSelectionTo(index) + def getCurrent(self): if self.cur_service is None: return ( None, None ) @@ -227,7 +248,7 @@ class EPGList(HTMLComponent, GUIComponent): borderColor = self.borderColor for ev in events: #(event_id, event_title, begin_time, duration) - rec=ev[2] and self.timer.isInTimer(ev[0], ev[2], ev[3], service) > ((ev[3]/10)*8) + rec=ev[2] and self.timer.isInTimer(ev[0], ev[2], ev[3], service) xpos, ewidth = self.calcEntryPosAndWidthHelper(ev[2], ev[3], start, end, width) res.append(MultiContentEntryText( pos = (left+xpos, top), size = (ewidth, height), @@ -237,7 +258,8 @@ class EPGList(HTMLComponent, GUIComponent): if rec and ewidth > 23: res.append(MultiContentEntryPixmapAlphaTest( pos = (left+xpos+ewidth-22, top+height-22), size = (21, 21), - png = self.clock_pixmap, backcolor = backColor, + png = self.getClockPixmap(service, ev[2], ev[3], ev[0]), + backcolor = backColor, backcolor_sel = backColorSelected)) return res @@ -329,6 +351,30 @@ class EPGList(HTMLComponent, GUIComponent): def resetOffset(self): self.offs = 0 + + def getClockPixmap(self, refstr, beginTime, duration, eventId): + pre_clock = 1 + post_clock = 2 + clock_type = 0 + endTime = beginTime + duration + for x in self.timer.timer_list: + if x.service_ref.ref.toString() == refstr: + if x.eit == eventId: + return self.clock_pixmap + beg = x.begin + end = x.end + if beginTime > beg and beginTime < end and endTime > end: + clock_type |= pre_clock + elif beginTime < beg and endTime > beg and endTime < end: + clock_type |= post_clock + if clock_type == 0: + return self.clock_add_pixmap + elif clock_type == pre_clock: + return self.clock_pre_pixmap + elif clock_type == post_clock: + return self.clock_post_pixmap + else: + return self.clock_prepost_pixmap class TimelineText(HTMLComponent, GUIComponent): def __init__(self): @@ -356,6 +402,12 @@ config.misc.graph_mepg_prev_time=ConfigClock(default = time()) config.misc.graph_mepg_prev_time_period=ConfigInteger(default=120, limits=(60,300)) class GraphMultiEPG(Screen): + EMPTY = 0 + ADD_TIMER = 1 + REMOVE_TIMER = 2 + + ZAP = 1 + def __init__(self, session, services, zapFunc=None, bouquetChangeCB=None): Screen.__init__(self, session) self.bouquetChangeCB = bouquetChangeCB @@ -364,7 +416,9 @@ class GraphMultiEPG(Screen): self.ask_time = now - tmp self.closeRecursive = False self["key_red"] = Button("") - self["key_green"] = Button(_("Add timer")) + self["key_green"] = Button("") + self.key_green_choice = self.EMPTY + self.key_red_choice = self.EMPTY self["timeline_text"] = TimelineText() self["Event"] = Event() self.time_lines = [ ] @@ -488,6 +542,7 @@ class GraphMultiEPG(Screen): #just used in multipeg def onCreate(self): self["list"].fillMultiEPG(self.services, self.ask_time) + self["list"].moveToService(self.session.nav.getCurrentlyPlayingServiceReference()) self.moveTimeLines() def eventViewCallback(self, setEvent, setService, val): @@ -505,7 +560,7 @@ class GraphMultiEPG(Screen): setEvent(cur[0]) def zapTo(self): - if self.zapFunc and self["key_red"].getText() == "Zap": + if self.zapFunc and self.key_red_choice == self.ZAP: self.closeRecursive = True ref = self["list"].getCurrent()[1] if ref: @@ -514,14 +569,28 @@ class GraphMultiEPG(Screen): def eventSelected(self): self.infoKeyPressed() + def removeTimer(self, timer): + timer.afterEvent = AFTEREVENT.NONE + self.session.nav.RecordTimer.removeEntry(timer) + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + def timerAdd(self): cur = self["list"].getCurrent() event = cur[0] serviceref = cur[1] if event is None: return - newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event)) - self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) + eventid = event.getEventId() + refstr = serviceref.ref.toString() + for timer in self.session.nav.RecordTimer.timer_list: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + cb_func = lambda ret : not ret or self.removeTimer(timer) + self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName()) + break + else: + newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event)) + self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) def finishedAdd(self, answer): print "finished add" @@ -535,25 +604,63 @@ class GraphMultiEPG(Screen): self.session.nav.RecordTimer.record(entry) else: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER else: + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER print "Timeredit aborted" def finishSanityCorrection(self, answer): self.finishedAdd(answer) def onSelectionChanged(self): - evt = self["list"].getCurrent() - self["Event"].newEvent(evt and evt[0]) - if evt and evt[0]: - evt = evt[0] - now = time() - start = evt.getBeginTime() - end = start + evt.getDuration() - if now >= start and now <= end: - self["key_red"].setText("Zap") - else: + cur = self["list"].getCurrent() + if cur is None: + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY + if self.key_red_choice != self.EMPTY: self["key_red"].setText("") - + self.key_red_choice = self.EMPTY + return + + event = cur[0] + self["Event"].newEvent(event) + + if cur[1] is None or cur[1].getServiceName() == "": + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY + if self.key_red_choice != self.EMPTY: + self["key_red"].setText("") + self.key_red_choice = self.EMPTY + return + elif self.key_red_choice != self.ZAP: + self["key_red"].setText("Zap") + self.key_red_choice = self.ZAP + + if not event: + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY + return + + serviceref = cur[1] + eventid = event.getEventId() + refstr = serviceref.ref.toString() + isRecordEvent = False + for timer in self.session.nav.RecordTimer.timer_list: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + isRecordEvent = True + break + if isRecordEvent and self.key_green_choice != self.REMOVE_TIMER: + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER + elif not isRecordEvent and self.key_green_choice != self.ADD_TIMER: + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + def moveTimeLines(self, force=False): l = self["list"] event_rect = l.getEventRect() diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index f6793269..526576e1 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -19,8 +19,11 @@ from time import localtime, time mepg_config_initialized = False class EPGSelection(Screen): - ADD_TIMER = 0 - REMOVE_TIMER = 1 + EMPTY = 0 + ADD_TIMER = 1 + REMOVE_TIMER = 2 + + ZAP = 1 def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None): Screen.__init__(self, session) @@ -64,6 +67,7 @@ class EPGSelection(Screen): self["key_green"] = Button(_("Add timer")) self.key_green_choice = self.ADD_TIMER + self.key_red_choice = self.EMPTY self["list"] = EPGList(type = self.type, selChangedCB = self.onSelectionChanged, timer = self.session.nav.RecordTimer) self["actions"] = ActionMap(["EPGSelectActions", "OkCancelActions"], @@ -131,6 +135,7 @@ class EPGSelection(Screen): l.recalcEntrySize() if self.type == EPG_TYPE_MULTI: l.fillMultiEPG(self.services, self.ask_time) + l.moveToService(self.session.nav.getCurrentlyPlayingServiceReference()) elif self.type == EPG_TYPE_SINGLE: l.fillSingleEPG(self.currentService) else: @@ -151,7 +156,7 @@ class EPGSelection(Screen): setEvent(cur[0]) def zapTo(self): # just used in multiepg - if self.zapFunc and self["key_red"].getText() == "Zap": + if self.zapFunc and self.key_red_choice == self.ZAP: lst = self["list"] count = lst.getCurrentChangeCount() if count == 0: @@ -250,13 +255,11 @@ class EPGSelection(Screen): self["key_red"].setText("") else: if state == 1: - self["key_red"].setText("Zap") self["now_button_sel"].show() self["now_button"].hide() else: self["now_button"].show() self["now_button_sel"].hide() - self["key_red"].setText("") if state == 2: self["next_button_sel"].show() @@ -274,6 +277,15 @@ class EPGSelection(Screen): def onSelectionChanged(self): cur = self["list"].getCurrent() + if cur is None: + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY + if self.key_red_choice != self.EMPTY: + self["key_red"].setText("") + self.key_red_choice = self.EMPTY + return + event = cur[0] if self.type == EPG_TYPE_MULTI: count = self["list"].getCurrentChangeCount() if self.ask_time != -1: @@ -286,7 +298,6 @@ class EPGSelection(Screen): self.applyButtonState(1) days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ] datestr = "" - event = cur[0] if event is not None: now = time() beg = event.getBeginTime() @@ -297,10 +308,23 @@ class EPGSelection(Screen): else: datestr = '%s %d.%d.'%(_("Today"), begTime[2], begTime[1]) self["date"].setText(datestr) - else: - event = cur[0] + + if cur[1] is None or cur[1].getServiceName() == "": + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY + if self.key_red_choice != self.EMPTY: + self["key_red"].setText("") + self.key_red_choice = self.EMPTY + return + elif self.key_red_choice != self.ZAP and self.type == EPG_TYPE_MULTI: + self["key_red"].setText("Zap") + self.key_red_choice = self.ZAP if event is None: + if self.key_green_choice != self.EMPTY: + self["key_green"].setText("") + self.key_green_choice = self.EMPTY return serviceref = cur[1] diff --git a/lib/python/Screens/EventView.py b/lib/python/Screens/EventView.py index 5d50d9bc..5d3786fb 100644 --- a/lib/python/Screens/EventView.py +++ b/lib/python/Screens/EventView.py @@ -1,17 +1,21 @@ from Screen import Screen from Screens.TimerEdit import TimerSanityConflict +from Screens.MessageBox import MessageBox from Components.ActionMap import ActionMap from Components.Button import Button from Components.Label import Label from Components.ScrollLabel import ScrollLabel from Components.TimerList import TimerList from enigma import eEPGCache, eTimer, eServiceReference -from RecordTimer import RecordTimerEntry, parseEvent +from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT from TimerEntry import TimerEntry from time import localtime from Components.config import config class EventViewBase: + ADD_TIMER = 0 + REMOVE_TIMER = 1 + def __init__(self, Event, Ref, callback=None, similarEPGCB=None): self.similarEPGCB = similarEPGCB self.cbFunc = callback @@ -28,6 +32,7 @@ class EventViewBase: self.SimilarBroadcastTimer.callback.append(self.getSimilarEvents) else: self.SimilarBroadcastTimer = None + self.key_green_choice = self.ADD_TIMER if self.isRecording: self["key_green"] = Button("") else: @@ -59,8 +64,25 @@ class EventViewBase: if self.cbFunc is not None: self.cbFunc(self.setEvent, self.setService, +1) + def removeTimer(self, timer): + timer.afterEvent = AFTEREVENT.NONE + self.session.nav.RecordTimer.removeEntry(timer) + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + def timerAdd(self): - if not self.isRecording: + event = self.event + serviceref = self.currentService + if event is None: + return + eventid = event.getEventId() + refstr = serviceref.ref.toString() + for timer in self.session.nav.RecordTimer.timer_list: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + cb_func = lambda ret : not ret or self.removeTimer(timer) + self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName()) + break + else: newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, *parseEvent(self.event)) self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) @@ -76,7 +98,11 @@ class EventViewBase: self.session.nav.RecordTimer.record(entry) else: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER else: + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER print "Timeredit aborted" def finishSanityCorrection(self, answer): @@ -123,6 +149,22 @@ class EventViewBase: if self.SimilarBroadcastTimer is not None: self.SimilarBroadcastTimer.start(400,True) + serviceref = self.currentService + eventid = self.event.getEventId() + refstr = serviceref.ref.toString() + isRecordEvent = False + for timer in self.session.nav.RecordTimer.timer_list: + if timer.eit == eventid and timer.service_ref.ref.toString() == refstr: + isRecordEvent = True + break + if isRecordEvent and self.key_green_choice != self.REMOVE_TIMER: + self["key_green"].setText(_("Remove timer")) + self.key_green_choice = self.REMOVE_TIMER + elif not isRecordEvent and self.key_green_choice != self.ADD_TIMER: + self["key_green"].setText(_("Add timer")) + self.key_green_choice = self.ADD_TIMER + + def pageUp(self): self["epg_description"].pageUp() diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index 59e2bd03..8cda8ca4 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -269,8 +269,9 @@ class TimerEditList(Screen): self.session.openWithCallback(self.finishedEdit, TimerSanityConflict, timersanitycheck.getSimulTimerList()) else: print "Sanity check passed" - if not timersanitycheck.doubleCheck(): - self.session.nav.RecordTimer.timeChanged(entry) +# if not timersanitycheck.doubleCheck(): + self.session.nav.RecordTimer.timeChanged(entry) + self.fillTimerList() self.updateState() else: -- cgit v1.2.3 From 1076e4717bcf0eb93d803f73b2b75a8ae192b143 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 19 Jan 2009 11:15:37 +0100 Subject: timer fixes and improvements by adenin --- RecordTimer.py | 39 ++++++++++++++++---- .../Extensions/GraphMultiEPG/GraphMultiEpg.py | 43 ++++++++++++---------- lib/python/Screens/EpgSelection.py | 10 ++--- lib/python/Screens/EventView.py | 10 ++--- lib/python/Screens/InfoBarGenerics.py | 17 ++------- lib/python/Screens/TimerEdit.py | 33 ++++++++++------- 6 files changed, 88 insertions(+), 64 deletions(-) (limited to 'lib/python/Screens/TimerEdit.py') diff --git a/RecordTimer.py b/RecordTimer.py index dcfdd578..6b306d4e 100644 --- a/RecordTimer.py +++ b/RecordTimer.py @@ -118,6 +118,7 @@ class RecordTimerEntry(timer.TimerEntry, object): self.dirname = dirname self.dirnameHadToFallback = False self.autoincrease = False + self.autoincreasetime = 3600 * 24 # 1 day self.tags = tags or [] self.log_entries = [] @@ -268,6 +269,11 @@ class RecordTimerEntry(timer.TimerEntry, object): return True elif next_state == self.StateEnded: + old_end = self.end + if self.setAutoincreaseEnd(): + self.log(12, "autoincrase recording %d minute(s)" % int((self.end - old_end)/60)) + self.state -= 1 + return True self.log(12, "stop recording") if not self.justplay: NavigationInstance.instance.stopRecordService(self.record_service) @@ -283,6 +289,29 @@ class RecordTimerEntry(timer.TimerEntry, object): Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour Dreambox. Shutdown now?"), timeout = 20) return True + def setAutoincreaseEnd(self, entry = None): + if not self.autoincrease: + return False + if entry is None: + new_end = int(time.time()) + self.autoincreasetime + else: + new_end = entry.begin -30 + + dummyentry = RecordTimerEntry(self.service_ref, self.begin, new_end, self.name, self.description, self.eit, disabled=True, justplay = self.justplay, afterEvent = self.afterEvent, dirname = self.dirname, tags = self.tags) + dummyentry.disabled = self.disabled + timersanitycheck = TimerSanityCheck(NavigationInstance.instance.RecordTimer.timer_list, dummyentry) + if not timersanitycheck.check(): + simulTimerList = timersanitycheck.getSimulTimerList() + new_end = simulTimerList[1].begin + del simulTimerList + new_end -= 30 # 30 Sekunden Prepare-Zeit lassen + del dummyentry + if new_end <= time.time(): + return False + self.end = new_end + return True + + def sendStandbyNotification(self, answer): if answer: Notifications.AddNotification(Screens.Standby.Standby) @@ -656,6 +685,7 @@ class RecordTimer(timer.Timer): # abort timer. # this sets the end time to current time, so timer will be stopped. + entry.autoincrease = False entry.abort() if entry.state != entry.StateEnded: @@ -667,15 +697,8 @@ class RecordTimer(timer.Timer): # autoincrease instanttimer if possible if not entry.dontSave: for x in self.timer_list: - if x.dontSave and x.autoincrease: - x.end = x.begin + (3600 * 24 * 356 * 1) + if x.setAutoincreaseEnd(): self.timeChanged(x) - timersanitycheck = TimerSanityCheck(self.timer_list,x) - if not timersanitycheck.check(): - tsc_list = timersanitycheck.getSimulTimerList() - if len(tsc_list) > 1: - x.end = tsc_list[1].begin - 30 - self.timeChanged(x) # now the timer should be in the processed_timers list. remove it from there. self.processed_timers.remove(entry) self.saveTimer() diff --git a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py index b2e07e10..b22c4b80 100644 --- a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py +++ b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py @@ -86,10 +86,10 @@ class EPGList(HTMLComponent, GUIComponent): return (event_list and len(event_list) and True) or False def setEpoch(self, epoch): - if self.cur_event is not None and self.cur_service is not None: - self.offs = 0 - self.time_epoch = epoch - self.fillMultiEPG(None) # refill +# if self.cur_event is not None and self.cur_service is not None: + self.offs = 0 + self.time_epoch = epoch + self.fillMultiEPG(None) # refill def getEventFromId(self, service, eventid): event = None @@ -98,16 +98,17 @@ class EPGList(HTMLComponent, GUIComponent): return event def moveToService(self,serviceref): - for x in range(len(self.list)): - if self.list[x][0] == serviceref.toString(): - self.instance.moveSelectionTo(x) - break + if serviceref is not None: + for x in range(len(self.list)): + if self.list[x][0] == serviceref.toString(): + self.instance.moveSelectionTo(x) + break def getIndexFromService(self, serviceref): - for x in range(len(self.list)): - if self.list[x][0] == serviceref.toString(): - return x - return 0 + if serviceref is not None: + for x in range(len(self.list)): + if self.list[x][0] == serviceref.toString(): + return x def setCurrentIndex(self, index): if self.instance is not None: @@ -598,11 +599,11 @@ class GraphMultiEPG(Screen): entry = answer[1] simulTimerList = self.session.nav.RecordTimer.record(entry) if simulTimerList is not None: - if (len(simulTimerList) == 2) and (simulTimerList[1].dontSave) and (simulTimerList[1].autoincrease): - simulTimerList[1].end = entry.begin - 30 - self.session.nav.RecordTimer.timeChanged(simulTimerList[1]) - self.session.nav.RecordTimer.record(entry) - else: + for x in simulTimerList: + if x.setAutoincreaseEnd(entry): + self.session.nav.RecordTimer.timeChanged(x) + simulTimerList = self.session.nav.RecordTimer.record(entry) + if simulTimerList is not None: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) self["key_green"].setText(_("Remove timer")) self.key_green_choice = self.REMOVE_TIMER @@ -662,6 +663,7 @@ class GraphMultiEPG(Screen): self.key_green_choice = self.ADD_TIMER def moveTimeLines(self, force=False): + self.updateTimelineTimer.start((60-(int(time())%60))*1000) #keep syncronised l = self["list"] event_rect = l.getEventRect() time_epoch = l.getTimeEpoch() @@ -669,6 +671,7 @@ class GraphMultiEPG(Screen): if event_rect is None or time_epoch is None or time_base is None: return time_steps = time_epoch > 180 and 60 or 30 + num_lines = time_epoch/time_steps incWidth=event_rect.width()/num_lines pos=event_rect.left() @@ -696,8 +699,7 @@ class GraphMultiEPG(Screen): now=time() timeline_now = self["timeline_now"] if now >= time_base and now < (time_base + time_epoch * 60): - bla = (event_rect.width() * 1000) / time_epoch - xpos = ((now/60) - (time_base/60)) * bla / 1000 + xpos = int((((now - time_base) * event_rect.width()) / (time_epoch * 60))-(timeline_now.instance.size().width()/2)) old_pos = timeline_now.position new_pos = (xpos+event_rect.left(), old_pos[1]) if old_pos != new_pos: @@ -705,3 +707,6 @@ class GraphMultiEPG(Screen): timeline_now.visible = True else: timeline_now.visible = False + # here no l.l.invalidate() is needed when the zPosition in the skin is correct! + + diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index 526576e1..e7388fc2 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -219,11 +219,11 @@ class EPGSelection(Screen): entry = answer[1] simulTimerList = self.session.nav.RecordTimer.record(entry) if simulTimerList is not None: - if (len(simulTimerList) == 2) and (simulTimerList[1].dontSave) and (simulTimerList[1].autoincrease): - simulTimerList[1].end = entry.begin - 30 - self.session.nav.RecordTimer.timeChanged(simulTimerList[1]) - self.session.nav.RecordTimer.record(entry) - else: + for x in simulTimerList: + if x.setAutoincreaseEnd(entry): + self.session.nav.RecordTimer.timeChanged(x) + simulTimerList = self.session.nav.RecordTimer.record(entry) + if simulTimerList is not None: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) self["key_green"].setText(_("Remove timer")) self.key_green_choice = self.REMOVE_TIMER diff --git a/lib/python/Screens/EventView.py b/lib/python/Screens/EventView.py index 5d3786fb..6aed1e11 100644 --- a/lib/python/Screens/EventView.py +++ b/lib/python/Screens/EventView.py @@ -92,11 +92,11 @@ class EventViewBase: entry = answer[1] simulTimerList = self.session.nav.RecordTimer.record(entry) if simulTimerList is not None: - if (len(simulTimerList) == 2) and (simulTimerList[1].dontSave) and (simulTimerList[1].autoincrease): - simulTimerList[1].end = entry.begin - 30 - self.session.nav.RecordTimer.timeChanged(simulTimerList[1]) - self.session.nav.RecordTimer.record(entry) - else: + for x in simulTimerList: + if x.setAutoincreaseEnd(entry): + self.session.nav.RecordTimer.timeChanged(x) + simulTimerList = self.session.nav.RecordTimer.record(entry) + if simulTimerList is not None: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) self["key_green"].setText(_("Remove timer")) self.key_green_choice = self.REMOVE_TIMER diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 79747a61..050e350b 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1428,7 +1428,7 @@ class InfoBarInstantRecord: pass begin = int(time()) - end = begin + 3600 * 24 * 365 * 1 # 1 year + end = begin + 3600 # dummy name = "instant record" description = "" eventid = None @@ -1450,18 +1450,9 @@ class InfoBarInstantRecord: recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = config.movielist.last_videodir.value) recording.dontSave = True recording.autoincrease = True - - simulTimerList = self.session.nav.RecordTimer.record(recording) - if simulTimerList is not None: - print "timer conflict detected!" - if (len(simulTimerList) > 1): - print "tsc_list > 1" - recording.end = simulTimerList[1].begin - 30 - self.session.nav.RecordTimer.record(recording) - print "new endtime applied" - else: - print "conflict with only one timer? ! ?" - self.recording.append(recording) + if recording.setAutoincreaseEnd(): + self.session.nav.RecordTimer.record(recording) + self.recording.append(recording) def isInstantRecordRunning(self): print "self.recording:", self.recording diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index 8cda8ca4..58cece6c 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -258,20 +258,25 @@ class TimerEditList(Screen): print "Edited timer" entry = answer[1] timersanitycheck = TimerSanityCheck(self.session.nav.RecordTimer.timer_list, entry) + success = False if not timersanitycheck.check(): simulTimerList = timersanitycheck.getSimulTimerList() - if (len(simulTimerList) == 2) and (simulTimerList[1].dontSave) and (simulTimerList[1].autoincrease): - simulTimerList[1].end = entry.begin - 30 - self.session.nav.RecordTimer.timeChanged(simulTimerList[1]) - self.session.nav.RecordTimer.timeChanged(entry) - else: - print "Sanity check failed" - self.session.openWithCallback(self.finishedEdit, TimerSanityConflict, timersanitycheck.getSimulTimerList()) + if simulTimerList is not None: + for x in simulTimerList: + if x.setAutoincreaseEnd(entry): + self.session.nav.RecordTimer.timeChanged(x) + if not timersanitycheck.check(): + simulTimerList = timersanitycheck.getSimulTimerList() + if simulTimerList is not None: + self.session.openWithCallback(self.finishedEdit, TimerSanityConflict, timersanitycheck.getSimulTimerList()) + else: + success = True else: + succsess = True + if success: print "Sanity check passed" -# if not timersanitycheck.doubleCheck(): self.session.nav.RecordTimer.timeChanged(entry) - + self.fillTimerList() self.updateState() else: @@ -283,11 +288,11 @@ class TimerEditList(Screen): entry = answer[1] simulTimerList = self.session.nav.RecordTimer.record(entry) if simulTimerList is not None: - if (len(simulTimerList) == 2) and (simulTimerList[1].dontSave) and (simulTimerList[1].autoincrease): - simulTimerList[1].end = entry.begin - 30 - self.session.nav.RecordTimer.timeChanged(simulTimerList[1]) - self.session.nav.RecordTimer.record(entry) - else: + for x in simulTimerList: + if x.setAutoincreaseEnd(entry): + self.session.nav.RecordTimer.timeChanged(x) + simulTimerList = self.session.nav.RecordTimer.record(entry) + if simulTimerList is not None: self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList) self.fillTimerList() self.updateState() -- cgit v1.2.3 From fe1c9f7cf4e292566548eb5ce2fed90ad669a186 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Tue, 27 Jan 2009 19:51:34 +0100 Subject: fix possible typos --- lib/python/Screens/TimerEdit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/python/Screens/TimerEdit.py') diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index 58cece6c..bb2d3c76 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -408,7 +408,7 @@ class TimerSanityConflict(Screen): self["actions"].actions.update({"green":self.toggleTimer1}) self["key_green"].setText(_("Enable")) self.key_green_choice = self.ENABLE - elif self.timer[0].isRunning() and not timer[0].repeated and self.key_green_choice != self.EMPTY: + elif self.timer[0].isRunning() and not self.timer[0].repeated and self.key_green_choice != self.EMPTY: self.removeAction("green") self["key_green"].setText(" ") self.key_green_choice = self.EMPTY @@ -428,7 +428,7 @@ class TimerSanityConflict(Screen): self["actions"].actions.update({"blue":self.toggleTimer2}) self["key_blue"].setText(_("Enable")) self.key_blue_choice = self.ENABLE - elif self.timer[x].isRunning() and not timer[x].repeated and self.key_blue_choice != self.EMPTY: + elif self.timer[x].isRunning() and not self.timer[x].repeated and self.key_blue_choice != self.EMPTY: self.removeAction("blue") self["key_blue"].setText(" ") self.key_blue_choice = self.EMPTY -- cgit v1.2.3