better fix for previous commit
[enigma2.git] / timer.py
index 5c664bb..0ca4888 100644 (file)
--- a/timer.py
+++ b/timer.py
@@ -2,6 +2,8 @@ from bisect import insort
 from time import strftime, time, localtime, gmtime, mktime
 from calendar import timegm
 from enigma import eTimer
 from time import strftime, time, localtime, gmtime, mktime
 from calendar import timegm
 from enigma import eTimer
+import calendar
+import datetime
 
 class TimerEntry:
        StateWaiting  = 0
 
 class TimerEntry:
        StateWaiting  = 0
@@ -29,6 +31,13 @@ class TimerEntry:
        def isRunning(self):
                return self.state == self.StateRunning
                
        def isRunning(self):
                return self.state == self.StateRunning
                
+       def addOneDay(self, timedatestruct):
+               oldHour = timedatestruct.tm_hour
+               newdate =  (datetime.datetime(timedatestruct.tm_year, timedatestruct.tm_mon, timedatestruct.tm_mday, timedatestruct.tm_hour, timedatestruct.tm_min, timedatestruct.tm_sec) + datetime.timedelta(days=1)).timetuple()
+               if localtime(mktime(newdate)).tm_hour != oldHour:
+                       return (datetime.datetime(timedatestruct.tm_year, timedatestruct.tm_mon, timedatestruct.tm_mday, timedatestruct.tm_hour, timedatestruct.tm_min, timedatestruct.tm_sec) + datetime.timedelta(days=2)).timetuple()                        
+               return newdate
+               
        # update self.begin and self.end according to the self.repeated-flags
        def processRepeated(self, findRunningEvent = True):
                print "ProcessRepeated"
        # update self.begin and self.end according to the self.repeated-flags
        def processRepeated(self, findRunningEvent = True):
                print "ProcessRepeated"
@@ -40,8 +49,8 @@ class TimerEntry:
                        localend = localtime(self.end)
                        localnow = localtime(now)
 
                        localend = localtime(self.end)
                        localnow = localtime(now)
 
-                       print strftime("%c", localbegin)
-                       print strftime("%c", localend)
+                       print "localbegin:", strftime("%c", localbegin)
+                       print "localend:", strftime("%c", localend)
 
                        day = []
                        flags = self.repeated
 
                        day = []
                        flags = self.repeated
@@ -56,12 +65,11 @@ 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)))):
                        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)))):
-                               print "localbegin:", strftime("%c", localbegin)
-                               print "localend:", strftime("%c", localend)
-                               #add one day to the struct_time, we have to convert using gmt functions, because the daylight saving flag might change after we add our 86400 seconds
-                               localbegin = gmtime(timegm(localbegin) + 86400)
-                               localend = gmtime(timegm(localend) + 86400)
-
+                               localbegin = self.addOneDay(localbegin)
+                               localend = self.addOneDay(localend)
+                               print "localbegin after addOneDay:", strftime("%c", localbegin)
+                               print "localend after addOneDay:", strftime("%c", localend)
+                               
                        #we now have a struct_time representation of begin and end in localtime, but we have to calculate back to (gmt) seconds since epoch
                        self.begin = int(mktime(localbegin))
                        self.end = int(mktime(localend)) + 1
                        #we now have a struct_time representation of begin and end in localtime, but we have to calculate back to (gmt) seconds since epoch
                        self.begin = int(mktime(localbegin))
                        self.end = int(mktime(localend)) + 1
@@ -134,17 +142,6 @@ class Timer:
                for f in self.on_state_change:
                        f(entry)
 
                for f in self.on_state_change:
                        f(entry)
 
-       def getNextRecordingTime(self):
-               llen = len(self.timer_list)
-               idx = 0
-               while idx < llen:
-                       timer = self.timer_list[idx]
-                       if timer.justplay:
-                               idx += 1
-                       else:
-                               return timer.begin
-               return -1
-
        def cleanup(self):
                self.processed_timers = [entry for entry in self.processed_timers if entry.disabled]
        
        def cleanup(self):
                self.processed_timers = [entry for entry in self.processed_timers if entry.disabled]