summaryrefslogtreecommitdiffabout
path: root/libkcal
Side-by-side diff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/recurrence.cpp34
1 files changed, 11 insertions, 23 deletions
diff --git a/libkcal/recurrence.cpp b/libkcal/recurrence.cpp
index 8a175c9..6ee5499 100644
--- a/libkcal/recurrence.cpp
+++ b/libkcal/recurrence.cpp
@@ -977,5 +977,5 @@ bool Recurrence::recursSecondly(const QDate &qd, int secondFreq) const
if (secondFreq < 24*3600)
return true; // the event recurs at least once each day
- int after = mRecurStart.secsTo(QDateTime(qd));
+ int after = mRecurStart.secsTo(QDateTime(qd)) - 1;
if (after / secondFreq != (after + 24*3600) / secondFreq)
return true;
@@ -1189,5 +1189,5 @@ QDate Recurrence::getNextDateNoTime(const QDate &preDate, bool *last) const
case rWeekly: {
- QDate start = dStart.addDays(1 - dStart.dayOfWeek()); // start of week for dStart
+ QDate start = dStart.addDays(-((dStart.dayOfWeek() - rWeekStart + 7)%7)); // start of week for dStart
int earliestDayOfWeek = earliestDate.dayOfWeek();
int weeksAhead = start.daysTo(earliestDate) / 7;
@@ -1199,8 +1199,7 @@ QDate Recurrence::getNextDateNoTime(const QDate &preDate, bool *last) const
weekday = getFirstDayInWeek(earliestDayOfWeek);
// Check for a day in the next scheduled week
- if (!weekday && earliestDayOfWeek > 1)
+ if (!weekday )
weekday = getFirstDayInWeek(rWeekStart) + rFreq*7;
- if (weekday)
- nextDate = start.addDays(weeksAhead*7 + weekday - 1);
+ nextDate = start.addDays(weeksAhead*7 + weekday - 1);
break;
}
@@ -1216,5 +1215,5 @@ QDate Recurrence::getNextDateNoTime(const QDate &preDate, bool *last) const
if (!notThisMonth)
nextDate = getFirstDateInMonth(earliestDate);
- if (!nextDate.isValid() && earliestDate.day() > 1) {
+ if (!nextDate.isValid() ) {
// Check for a day in the next scheduled month
int months = startMonth - 1 + monthsAhead + rFreq;
@@ -1273,6 +1272,6 @@ QDate Recurrence::getPreviousDateNoTime(const QDate &afterDate, bool *last) cons
case rWeekly: {
- QDate start = dStart.addDays(1 - dStart.dayOfWeek()); // start of week for dStart
- int latestDayOfWeek = latestDate.dayOfWeek();
+ QDate start = dStart.addDays(-((dStart.dayOfWeek() - rWeekStart + 7)%7)); // start of week for dStart
+ int latestDayOfWeek = latestDate.dayOfWeek();
int weeksAhead = start.daysTo(latestDate) / 7;
int notThisWeek = weeksAhead % rFreq; // zero if this week is a recurring week
@@ -1284,10 +1283,8 @@ QDate Recurrence::getPreviousDateNoTime(const QDate &afterDate, bool *last) cons
// Check for a day in the previous scheduled week
if (!weekday) {
+ if (!notThisWeek)
+ weeksAhead -= rFreq;
int weekEnd = (rWeekStart + 5)%7 + 1;
- if (latestDayOfWeek < weekEnd) {
- if (!notThisWeek)
- weeksAhead -= rFreq;
- weekday = getLastDayInWeek(weekEnd);
- }
+ weekday = getLastDayInWeek(weekEnd);
}
if (weekday)
@@ -3401,13 +3398,4 @@ QDate Recurrence::getLastDateInYear(const QDate &latestDate) const
void Recurrence::dump() const
{
- kdDebug() << "Recurrence::dump():" << endl;
-
- kdDebug() << " type: " << recurs << endl;
-
- kdDebug() << " rDays: " << endl;
- int i;
- for( i = 0; i < 7; ++i ) {
- kdDebug() << " " << i << ": "
- << ( rDays.testBit( i ) ? "true" : "false" ) << endl;
- }
+ ;
}