move/resize PiP window (requires new drivers) (and is not yet working properly)
[enigma2.git] / lib / python / Screens / TimerEntry.py
index 752ace42c1bca74fc05ac537874fc1c88eb9b126..27e82abbdf57f4af71e9c926ccf8f4976f41a437 100644 (file)
@@ -2,15 +2,16 @@ from Screen import Screen
 import ChannelSelection
 from ServiceReference import ServiceReference
 from Components.config import *
 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
 from Components.NimManager import nimmanager
 from Components.Label import Label
 from Components.Pixmap import Pixmap
 from Components.ConfigList import ConfigList
 from Components.MenuList import MenuList
 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.MessageBox import MessageBox
+from Screens.ChoiceBox import ChoiceBox
+from RecordTimer import AFTEREVENT
 from enigma import eEPGCache
 import time
 import datetime
 from enigma import eEPGCache
 import time
 import datetime
@@ -49,11 +50,18 @@ class TimerEntry(Screen):
 
                self.list = []
                self["config"] = ConfigList(self.list)
 
                self.list = []
                self["config"] = ConfigList(self.list)
-               self.createSetup()
+               self.createSetup("config")
 
        def createConfig(self):
                        config.timerentry = ConfigSubsection()
                        
 
        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
                        # 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
                        
                                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))
                        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
 
                                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.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
                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
                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:
                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.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):
 
        def newConfig(self):
-               print self["config"].getCurrent()
+               print "newConfig", self["config"].getCurrent()
                if self["config"].getCurrent() == self.timerTypeEntry:
                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:
                if self["config"].getCurrent() == self.frequencyEntry:
-                       self.createSetup()
+                       self.createSetup("config")
 
        def keyLeft(self):
                if self["config"].getCurrent() == self.channelEntry:
 
        def keyLeft(self):
                if self["config"].getCurrent() == self.channelEntry:
@@ -219,15 +238,11 @@ class TimerEntry(Screen):
                else:
                        self.keyGo()
 
                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)
                        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)
 
        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])
        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
                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.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)
                
                if (config.timerentry.type.value == 0): # once
                        self.timer.begin = self.getTimestamp(config.timerentry.startdate.value, config.timerentry.starttime.value)
@@ -270,19 +286,28 @@ class TimerEntry(Screen):
                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 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
+                                       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:
                                        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):
                self.close((False,))
                self.close((True, self.timer))
 
        def keyCancel(self):
                self.close((False,))
-
+               
 class TimerLog(Screen):
        def __init__(self, session, timer):
                Screen.__init__(self, session)
 class TimerLog(Screen):
        def __init__(self, session, timer):
                Screen.__init__(self, session)