add basic support for repeated timers (doesn't work yet)
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 17 Nov 2005 01:27:02 +0000 (01:27 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 17 Nov 2005 01:27:02 +0000 (01:27 +0000)
lib/python/Screens/TimerEntry.py
timer.py

index 08892a9..c699157 100644 (file)
@@ -6,6 +6,7 @@ from Components.NimManager import nimmanager
 from Components.Label import Label
 from time import *
 from datetime import *
+from math import log
 
 class TimerEntry(Screen):
        def __init__(self, session, timer):
@@ -38,11 +39,22 @@ class TimerEntry(Screen):
 
        def createConfig(self):
                        config.timerentry = ConfigSubsection()
-
-                       config.timerentry.type = configElement_nonSave("config.timerentry.type", configSelection, 0, ("once", "repeated"))
+                       
+                       type = 0
+                       repeated = 0
+                       if (self.timer.repeated != 0):
+                               type = 1 # repeated
+                               if (self.timer.repeated == 31): # Mon-Fri
+                                       repeated = 2 # Mon - Fri
+                               elif (self.timer.repeated == 127): # daily
+                                       repeated = 0 # daily
+                               else:
+                                       repeated = 3 # user-defined
+
+                       config.timerentry.type = configElement_nonSave("config.timerentry.type", configSelection, type, ("once", "repeated"))
                        config.timerentry.description = configElement_nonSave("config.timerentry.description", configText, self.timer.description, (configText.extendableSize, self.keyRightCallback))
 
-                       config.timerentry.repeated = configElement_nonSave("config.timerentry.repeated", configSelection, 0, ("daily", "weekly", "Mon-Fri", "user-defined"))
+                       config.timerentry.repeated = configElement_nonSave("config.timerentry.repeated", configSelection, repeated, ("daily", "weekly", "Mon-Fri", "user-defined"))
 
                        config.timerentry.startdate = configElement_nonSave("config.timerentry.startdate", configDateTime, self.timer.begin, ("%d.%B %Y", 86400))
                        config.timerentry.starttime = configElement_nonSave("config.timerentry.starttime", configSequence, [int(strftime("%H", localtime(self.timer.begin))), int(strftime("%M", localtime(self.timer.begin)))], configsequencearg.get("CLOCK"))
@@ -50,7 +62,7 @@ class TimerEntry(Screen):
                        config.timerentry.enddate = configElement_nonSave("config.timerentry.enddate", configDateTime, self.timer.end, ("%d.%B %Y", 86400))
                        config.timerentry.endtime = configElement_nonSave("config.timerentry.endtime", configSequence, [int(strftime("%H", localtime(self.timer.end))), int(strftime("%M", localtime(self.timer.end)))], configsequencearg.get("CLOCK"))
 
-                       config.timerentry.weekday = configElement_nonSave("config.timerentry.weekday", configDateTime, time(), ("%A", 86400))
+                       config.timerentry.weekday = configElement_nonSave("config.timerentry.weekday", configSelection, 0, ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))
 
                        config.timerentry.monday = configElement_nonSave("config.timerentry.monday", configSelection, 0, ("yes", "no"))
                        config.timerentry.tuesday = configElement_nonSave("config.timerentry.tuesday", configSelection, 0, ("yes", "no"))
@@ -62,7 +74,7 @@ class TimerEntry(Screen):
 
                        # FIXME some service-chooser needed here
                        config.timerentry.service = configElement_nonSave("config.timerentry.service", configSelection, 0, ((str(self.timer.service_ref.getServiceName())),))
-
+                       
                        config.timerentry.startdate.addNotifier(self.checkDate)
                        config.timerentry.enddate.addNotifier(self.checkDate)
 
@@ -154,6 +166,36 @@ class TimerEntry(Screen):
                if (config.timerentry.type.value == 0): # once
                        self.timer.begin = self.getTimestamp(config.timerentry.startdate.value, config.timerentry.starttime.value)
                        self.timer.end = self.getTimestamp(config.timerentry.enddate.value, config.timerentry.endtime.value)
+               if (config.timerentry.type.value == 1): # repeated
+                       if (config.timerentry.repeated.value == 0): # daily
+                               self.timer.setRepeated(0) # Mon
+                               self.timer.setRepeated(1) # Tue
+                               self.timer.setRepeated(2) # Wed
+                               self.timer.setRepeated(3) # Thu
+                               self.timer.setRepeated(4) # Fri
+                               self.timer.setRepeated(5) # Sat
+                               self.timer.setRepeated(6) # Sun
+
+                       if (config.timerentry.repeated.value == 1): # weekly
+                               self.timer.setRepeated(config.timerentry.weekday.value)
+                               
+                       if (config.timerentry.repeated.value == 2): # Mon-Fri
+                               self.timer.setRepeated(0) # Mon
+                               self.timer.setRepeated(1) # Tue
+                               self.timer.setRepeated(2) # Wed
+                               self.timer.setRepeated(3) # Thu
+                               self.timer.setRepeated(4) # Fri
+                               
+                       if (config.timerentry.repeated.value == 3): # user-defined
+                               if (config.timerentry.monday.value == 0): self.timer.setRepeated(0)
+                               if (config.timerentry.tuesday.value == 0): self.timer.setRepeated(1)
+                               if (config.timerentry.wednesday.value == 0): self.timer.setRepeated(2)
+                               if (config.timerentry.thursday.value == 0): self.timer.setRepeated(3)
+                               if (config.timerentry.friday.value == 0): self.timer.setRepeated(4)
+                               if (config.timerentry.saturday.value == 0): self.timer.setRepeated(5)
+                               if (config.timerentry.sunday.value == 0): self.timer.setRepeated(6)
+                               
+
                self.close((True, self.timer))
 
        def keyCancel(self):
index a230545..53ce8c4 100644 (file)
--- a/timer.py
+++ b/timer.py
@@ -18,7 +18,12 @@ class TimerEntry:
                self.prepare_time = 10
                self.end = end
                self.state = 0
-       
+               self.repeated = int(0)
+               
+       def setRepeated(self, day):
+               self.repeated |= (2 ** day)
+               print "Repeated: " + str(self.repeated)
+               
        def getTime(self):
                if self.state == self.StateWait:
                        return self.begin - self.prepare_time