add possibility to remove timers in epglist
authorghost <andreas.monzner@multimedia-labs.de>
Mon, 22 Dec 2008 19:53:34 +0000 (20:53 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Mon, 22 Dec 2008 19:53:34 +0000 (20:53 +0100)
TODO: this is not working for subtitles yet and not its working in graphical multi epg

RecordTimer.py
data/skin_default/icons/epgclock_add.png [new file with mode: 0644]
data/skin_default/icons/epgclock_post.png [new file with mode: 0644]
data/skin_default/icons/epgclock_pre.png [new file with mode: 0644]
lib/python/Components/EpgList.py
lib/python/Screens/EpgSelection.py
lib/python/Screens/TimerEdit.py

index 8449a2d..dcfdd57 100644 (file)
@@ -577,6 +577,7 @@ class RecordTimer(timer.Timer):
                                print "ignore timer conflict"
                elif timersanitycheck.doubleCheck():
                        print "ignore double timer"
                                print "ignore timer conflict"
                elif timersanitycheck.doubleCheck():
                        print "ignore double timer"
+                       return None
                entry.timeChanged()
                print "[Timer] Record " + str(entry)
                entry.Timer = self
                entry.timeChanged()
                print "[Timer] Record " + str(entry)
                entry.Timer = self
@@ -584,15 +585,16 @@ class RecordTimer(timer.Timer):
                if dosave:
                        self.saveTimer()
                return None
                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
        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:
                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)
                        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)
                                        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
                                        num = 0
                                        if check:
                                                check = False
@@ -620,9 +622,6 @@ class RecordTimer(timer.Timer):
                                                        check = True
                                                        break
                        if check:
                                                        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)
                                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
                                                diff = x.end - begin
                                                if time_match < diff:
                                                        time_match = diff
+                               if time_match:
+                                       break
                return time_match
 
        def removeEntry(self, entry):
                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
                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()
                # 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 (file)
index 0000000..487ac48
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 (file)
index 0000000..5716d99
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 (file)
index 0000000..ff42463
Binary files /dev/null and b/data/skin_default/icons/epgclock_pre.png differ
index dbcd572..042abcc 100644 (file)
@@ -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.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
 
        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)
 
                        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):
        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
                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_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):
                        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
                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_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):
                        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:
                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_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:
                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:
index 6740bfb..b40f445 100644 (file)
@@ -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.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.TimerEdit import TimerSanityConflict
 from Screens.EventView import EventViewSimple
+from Screens.MessageBox import MessageBox
 from TimeDateInput import TimeDateInput
 from enigma import eServiceReference
 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
 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):
 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
        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.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"],
                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)
 
                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
        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"
 
        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.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:
                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)
        
        def finishSanityCorrection(self, answer):
                self.finishedAdd(answer)
@@ -211,7 +235,7 @@ class EPGSelection(Screen):
 
        def moveDown(self):
                self["list"].moveDown()
 
        def moveDown(self):
                self["list"].moveDown()
-
+       
        def applyButtonState(self, state):
                if state == 0:
                        self["now_button"].hide()
        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):
                                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:
                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 = ""
                                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()
                        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:
                                        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
index 18ab2b7..59e2bd0 100644 (file)
@@ -214,18 +214,6 @@ class TimerEditList(Screen):
                        timer = cur
                        timer.afterEvent = AFTEREVENT.NONE
                        self.session.nav.RecordTimer.removeEntry(timer)
                        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()
 
                        self.refill()
                        self.updateState()
 
@@ -261,6 +249,7 @@ class TimerEditList(Screen):
                
        def addTimer(self, timer):
                self.session.openWithCallback(self.finishedAdd, TimerEntry, timer)
                
        def addTimer(self, timer):
                self.session.openWithCallback(self.finishedAdd, TimerEntry, timer)
+                       
                
        def finishedEdit(self, answer):
                print "finished edit"
                
        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
                                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)
 
                self["list"] = MenuList(self.list)
                self["timer2"] = TimerList(self.list2)