-rw-r--r-- | library/datebookdb.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/library/datebookdb.cpp b/library/datebookdb.cpp index 000ff71..188d8e1 100644 --- a/library/datebookdb.cpp +++ b/library/datebookdb.cpp @@ -90,17 +90,20 @@ bool nextOccurance(const Event &e, const QDate &from, QDateTime &next) dayOfWeek--; /* we want 0-6, doco for above specs 1-7 */ /* this is done in case freq > 1 and from in week not for this round */ // firstOfWeek = 0; this is already done at decl. while(!((1 << firstOfWeek) & e.repeatPattern().days)) - firstOfWeek++; + firstOfWeek++; + + /* there is at least one 'day', or there would be no event */ while(!((1 << (dayOfWeek % 7)) & e.repeatPattern().days)) - dayOfWeek++; + dayOfWeek++; + dayOfWeek = dayOfWeek % 7; /* the actual day of week */ dayOfWeek -= e.start().date().dayOfWeek() -1; firstOfWeek = firstOfWeek % 7; /* the actual first of week */ firstOfWeek -= e.start().date().dayOfWeek() -1; @@ -888,12 +891,19 @@ void DateBookDB::loadFile( const QString &strFile ) qDebug( "huh??? missing enum? -- attr.: %s", attr ); break; } #endif } // "post processing" (dates, times, alarm, recurrence) + + // other half of 1169 fixlet without getting into regression + // if rp.days == 0 and rp.type == Event::Weekly + if ( rp.type == Event::Weekly && rp.days == 0 ) + rp.days = Event::day( e.start().date().dayOfWeek() ); + + // start date/time e.setRepeat( rp.type != Event::NoRepeat, rp ); if ( alarmTime != -1 ) e.setAlarm( TRUE, alarmTime, alarmSound ); |