[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-pim
Subject: [Kde-pim] [PATCH] libkcal 3.5 branch
From: David Jarvie <lists () astrojar ! org ! uk>
Date: 2006-05-28 22:53:18
Message-ID: 200605282353.19106.lists () astrojar ! org ! uk
[Download RAW message or body]
I've noticed that for a recurring event, the CalendarLocal::alarmsTo() method
returns alarms starting in the year 1900, regardless of the start date of the
event. This is due to a bug in the appendRecurringAlarms() method. I attach a
patch to fix this - the patch applies equally to 3.5 branch and to trunk. OK
to commit?
--
David Jarvie.
KAlarm author and maintainer.
http://www.astrojar.org.uk/linux/kalarm.html
["cl.diff" (text/x-diff)]
Index: calendarlocal.cpp
===================================================================
--- calendarlocal.cpp (revision 546062)
+++ calendarlocal.cpp (working copy)
@@ -309,8 +309,14 @@
offset = alarm->endOffset().asSeconds() + endOffset;
}
- // Adjust the 'from' date/time and find the next recurrence at or after it
- qdt = incidence->recurrence()->getNextDateTime( from.addSecs(-offset - 1) );
+ // Find the incidence's earliest alarm
+ QDateTime fromStart = incidence->dtStart().addSecs( offset );
+ if ( fromStart > to )
+ continue;
+ if ( from > fromStart )
+ fromStart = from; // don't look earlier than the earliest alarm
+ // Adjust the 'fromStart' date/time and find the next recurrence at or after it
+ qdt = incidence->recurrence()->getNextDateTime( fromStart.addSecs(-offset - 1) );
if ( !qdt.isValid()
|| (qdt = qdt.addSecs( offset )) > to ) // remove the adjustment to get the alarm time
{
@@ -320,13 +326,13 @@
// The alarm has repetitions, so check whether repetitions of previous
// recurrences fall within the time period.
bool found = false;
- qdt = from.addSecs( -offset );
+ qdt = fromStart.addSecs( -offset );
while ( (qdt = incidence->recurrence()->getPreviousDateTime( qdt )).isValid() ) {
- int toFrom = qdt.secsTo( from ) - offset;
+ int toFrom = qdt.secsTo( fromStart ) - offset;
if ( toFrom > alarm->duration() )
break; // this recurrence's last repetition is too early, so give up
- // The last repetition of this recurrence is at or after 'from' time.
- // Check if a repetition occurs between 'from' and 'to'.
+ // The last repetition of this recurrence is at or after 'fromStart' time.
+ // Check if a repetition occurs between 'fromStart' and 'to'.
int snooze = alarm->snoozeTime() * 60; // in seconds
if ( period >= snooze
|| toFrom % snooze == 0
_______________________________________________
kde-pim mailing list
kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
kde-pim home page at http://pim.kde.org/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic