From 69d19bb77913e6b543a9bdae403c31550114cfdf Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Mon, 18 Jun 2007 22:19:54 +0000 Subject: [PATCH] added a "Starting on" option to set a starting date for repeated timers --- lib/python/Screens/TimerEntry.py | 5 +++++ timer.py | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index fc4158da..a54358f5 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -97,6 +97,8 @@ class TimerEntry(Screen, ConfigListScreen): self.timerentry_enddate = ConfigDateTime(default = self.timer.end, formatstring = _("%d.%B %Y"), increment = 86400) self.timerentry_endtime = ConfigClock(default = self.timer.end) + self.timerentry_repeatedbegindate = ConfigDateTime(default = self.timer.repeatedbegindate, formatstring = _("%d.%B %Y"), increment = 86400) + self.timerentry_weekday = ConfigSelection(default = weekday_table[weekday], choices = [("mon",_("Monday")), ("tue", _("Tuesday")), ("wed",_("Wednesday")), ("thu", _("Thursday")), ("fri", _("Friday")), ("sat", _("Saturday")), ("sun", _("Sunday"))]) self.timerentry_day = ConfigSubList() @@ -138,6 +140,8 @@ class TimerEntry(Screen, ConfigListScreen): else: # repeated self.frequencyEntry = getConfigListEntry(_("Frequency"), self.timerentry_repeated) self.list.append(self.frequencyEntry) + self.repeatedbegindateEntry = getConfigListEntry(_("Starting on"), self.timerentry_repeatedbegindate) + self.list.append(self.repeatedbegindateEntry) if self.timerentry_repeated.value == "daily": pass if self.timerentry_repeated.value == "weekdays": @@ -249,6 +253,7 @@ class TimerEntry(Screen, ConfigListScreen): if self.timerentry_type.value == "once": self.timer.begin, self.timer.end = self.getBeginEnd() if self.timerentry_type.value == "repeated": + self.timer.repeatedbegindate = self.timerentry_repeatedbegindate.value if self.timerentry_repeated.value == "daily": for x in range(0,7): self.timer.setRepeated(x) diff --git a/timer.py b/timer.py index 3c66c925..0ad53af9 100644 --- a/timer.py +++ b/timer.py @@ -17,6 +17,9 @@ class TimerEntry: self.end = end self.state = 0 self.resetRepeated() + #begindate = localtime(self.begin) + #newdate = datetime.datetime(begindate.tm_year, begindate.tm_mon, begindate.tm_mday 0, 0, 0); + self.repeatedbegindate = begin self.backoff = 0 self.disabled = False @@ -45,6 +48,7 @@ class TimerEntry: now = int(time()) + 1 #to avoid problems with daylight saving, we need to calculate with localtime, in struct_time representation + localrepeatedbegindate = localtime(self.repeatedbegindate) localbegin = localtime(self.begin) localend = localtime(self.end) localnow = localtime(now) @@ -64,7 +68,9 @@ class TimerEntry: print strftime("%c", localnow) - while ((day[localbegin.tm_wday] != 0) or ((day[localbegin.tm_wday] == 0) and ((findRunningEvent and localend < localnow) or ((not findRunningEvent) and localbegin < localnow)))): + # if day is NOT in the list of repeated days + # OR if the day IS in the list of the repeated days, check, if event is currently running... then if findRunningEvent is false, go to the next event + while ((day[localbegin.tm_wday] != 0) or (mktime(localrepeatedbegindate) > mktime(localbegin)) or ((day[localbegin.tm_wday] == 0) and ((findRunningEvent and localend < localnow) or ((not findRunningEvent) and localbegin < localnow)))): localbegin = self.addOneDay(localbegin) localend = self.addOneDay(localend) print "localbegin after addOneDay:", strftime("%c", localbegin) -- 2.30.2