From 80069b70a6b69e8e0ef0aeef5dbd8a1655a5e713 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Thu, 17 Nov 2005 03:40:07 +0000 Subject: fix(??) repeated timer... i really don't know, if this will ever work --- timer.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'timer.py') diff --git a/timer.py b/timer.py index 6c174c86..525014fe 100644 --- a/timer.py +++ b/timer.py @@ -27,6 +27,26 @@ class TimerEntry: self.repeated |= (2 ** day) print "Repeated: " + str(self.repeated) + # update self.begin and self.end according to the self.repeated-flags + def processRepeated(self): + if (self.repeated != 0): + now = time.time() + + day = [] + flags = self.repeated + for x in range(0, 7): + if (flags & 1 == 1): + day.append(0) + else: + day.append(1) + flags = flags >> 1 + + while ((day[time.localtime(self.begin).tm_wday] != 0) and (self.end > now)): + self.begin += 86400 + self.end += 86400 + + + def getTime(self): if self.state == self.StateWait: return self.begin - self.prepare_time @@ -65,8 +85,11 @@ class Timer: self.calcNextActivation() def addTimerEntry(self, entry, noRecalc=0): + entry.processRepeated() + # we either go trough Prepare/Start/End-state if the timer is still running, # or skip it when it's alrady past the end. + if entry.end > time.time(): bisect.insort(self.timer_list, entry) if not noRecalc: -- cgit v1.2.3