Title: [commits] (jeffrey) [11132] - Fix for bug 6174, recurrenceID is off when working with all day occurrences, r=grant
Revision
11132
Author
jeffrey
Date
2006-07-11 17:42:03 -0700 (Tue, 11 Jul 2006)

Log Message

- Fix for bug 6174, recurrenceID is off when working with all day occurrences, r=grant

Munge recurrenceID appropriately when allDay is set or unset.

Modified Paths

Diff

Modified: trunk/chandler/parcels/osaf/pim/calendar/Calendar.py (11131 => 11132)

--- trunk/chandler/parcels/osaf/pim/calendar/Calendar.py	2006-07-11 23:12:41 UTC (rev 11131)
+++ trunk/chandler/parcels/osaf/pim/calendar/Calendar.py	2006-07-12 00:42:03 UTC (rev 11132)
@@ -1147,9 +1147,24 @@
         isFirst = (recurrenceID == master.startTime)
         self._ignoreValueChanges = True
         
-        if attr == 'startTime':
-            startTimeDelta = (value - self.startTime)
-            self.rruleset.moveDatesAfter(recurrenceID, startTimeDelta)
+        # all day events' startTime is at midnight
+        startMidnight = datetime.combine(self.startTime.date(),
+                                         time(0, tzinfo=self.startTime.tzinfo))
+            
+        if attr in ('startTime', 'allDay'):
+            startTimeDelta = zero_delta
+            if attr == 'startTime':
+                startTimeDelta = (value - self.startTime)
+            # the recurrence dialog often gets extra changes buffered, don't
+            # process allDay unless it's actually changed
+            elif self.allDay != value:
+                if value == False:
+                    startTimeDelta = self.startTime - startMidnight
+                else:
+                    startTimeDelta = startMidnight - self.startTime
+            
+            if startTimeDelta != zero_delta:
+                self.rruleset.moveDatesAfter(recurrenceID, startTimeDelta)
         
         setattr(self, attr, value)
         
@@ -1164,7 +1179,10 @@
             self._makeGeneralChange()
             # Make this event a separate event from the original rule
             del self.modificationFor
-            self.recurrenceID = self.startTime
+            if self.allDay:
+                self.recurrenceID = startMidnight
+            else:
+                self.recurrenceID = self.startTime
             self.icalUID = unicode(self.itsUUID)
             self.copyCollections(master, self)
                                         




_______________________________________________
Commits mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/commits

Reply via email to