timers can now have after events. currently only working events: "do nothing" and...
[enigma2.git] / lib / python / Screens / TimerEntry.py
index 752ace42c1bca74fc05ac537874fc1c88eb9b126..fb560a7f0afcdbe5cfb8fe2f30deb3d93aa57c42 100644 (file)
@@ -2,7 +2,7 @@ from Screen import Screen
 import ChannelSelection
 from ServiceReference import ServiceReference
 from Components.config import *
-from Components.ActionMap import NumberActionMap
+from Components.ActionMap import ActionMap, NumberActionMap
 from Components.ConfigList import ConfigList
 from Components.MenuList import MenuList
 from Components.Button import Button
@@ -11,6 +11,7 @@ from Components.Label import Label
 from Components.Pixmap import Pixmap
 from Screens.SubserviceSelection import SubserviceSelection
 from Screens.MessageBox import MessageBox
+from RecordTimer import AFTEREVENT
 from enigma import eEPGCache
 import time
 import datetime
@@ -49,11 +50,18 @@ class TimerEntry(Screen):
 
                self.list = []
                self["config"] = ConfigList(self.list)
-               self.createSetup()
+               self.createSetup("config")
 
        def createConfig(self):
                        config.timerentry = ConfigSubsection()
                        
+                       if (self.timer.justplay):
+                               justplay = 0
+                       else:
+                               justplay = 1
+                               
+                       afterevent = { AFTEREVENT.NONE: 0, AFTEREVENT.DEEPSTANDBY: 1, AFTEREVENT.STANDBY: 2}[self.timer.afterEvent]
+
                        # calculate default values
                        day = []
                        weekday = 0
@@ -87,6 +95,8 @@ class TimerEntry(Screen):
                                weekday = (int(strftime("%w", time.localtime(self.timer.begin))) - 1) % 7
                                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))
@@ -135,11 +145,13 @@ class TimerEntry(Screen):
                                except:
                                        pass
 
-       def createSetup(self):
+       def createSetup(self, widget):
                self.list = []
                self.list.append(getConfigListEntry(_("Name"), config.timerentry.name))
                self.list.append(getConfigListEntry(_("Description"), config.timerentry.description))
-               self.timerTypeEntry = getConfigListEntry(_("Timer Type"), config.timerentry.type)
+               self.timerJustplayEntry = getConfigListEntry(_("Timer Type"), config.timerentry.justplay)
+               self.list.append(self.timerJustplayEntry)
+               self.timerTypeEntry = getConfigListEntry(_("Repeat Type"), config.timerentry.type)
                self.list.append(self.timerTypeEntry)
 
                if (config.timerentry.type.value == 0): # once
@@ -172,23 +184,30 @@ class TimerEntry(Screen):
                else:
                        self.list.append(getConfigListEntry(_("StartTime"), config.timerentry.starttime))
                if (config.timerentry.type.value == 0): # once
-                       self.list.append(getConfigListEntry(_("End"), config.timerentry.enddate))
-                       self.list.append(getConfigListEntry(" ", config.timerentry.endtime))
+                       if currentConfigSelectionElement(config.timerentry.justplay) != "zap":
+                               self.list.append(getConfigListEntry(_("End"), config.timerentry.enddate))
+                               self.list.append(getConfigListEntry(" ", config.timerentry.endtime))
                else:
-                       self.list.append(getConfigListEntry(_("EndTime"), config.timerentry.endtime))
+                       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)
 
-               self["config"].list = self.list
-               self["config"].l.setList(self.list)
+               self[widget].list = self.list
+               self[widget].l.setList(self.list)
 
        def newConfig(self):
-               print self["config"].getCurrent()
+               print "newConfig", self["config"].getCurrent()
                if self["config"].getCurrent() == self.timerTypeEntry:
-                       self.createSetup()
+                       self.createSetup("config")
+               if self["config"].getCurrent() == self.timerJustplayEntry:
+                       self.createSetup("config")
                if self["config"].getCurrent() == self.frequencyEntry:
-                       self.createSetup()
+                       self.createSetup("config")
 
        def keyLeft(self):
                if self["config"].getCurrent() == self.channelEntry:
@@ -219,15 +238,11 @@ class TimerEntry(Screen):
                else:
                        self.keyGo()
 
-       def finishedChannelSelection(self, args):
-               oldref = self.timer.service_ref
-               try:
-                       self.timer.service_ref = ServiceReference(args)
+       def finishedChannelSelection(self, *args):
+               if len(args):
+                       self.timer.service_ref = ServiceReference(args[0])
                        config.timerentry.service.vals = (str(self.timer.service_ref.getServiceName()),)
                        self["config"].invalidate(config.timerentry.service)
-               except:
-                       print "you pressed cancel"
-                       self.timer.service_ref = oldref
 
        def keyNumberGlobal(self, number):
                print "You pressed number " + str(number)
@@ -237,13 +252,14 @@ class TimerEntry(Screen):
        def getTimestamp(self, date, mytime):
                d = time.localtime(date)
                dt = datetime.datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
-               print dt
                return int(mktime(dt.timetuple()))
 
        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)
@@ -282,7 +298,7 @@ class TimerEntry(Screen):
 
        def keyCancel(self):
                self.close((False,))
-
+               
 class TimerLog(Screen):
        def __init__(self, session, timer):
                Screen.__init__(self, session)