summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-31 16:29:05 (UTC)
committer zautrix <zautrix>2005-01-31 16:29:05 (UTC)
commitec037c4616342c1b3976c55db98b775f48e0d455 (patch) (unidiff)
tree9d568c8f6ad6005f822c12644596b7a553837c7f
parent5d52c81be9b43887c13f8534a04164d3b44b821f (diff)
downloadkdepimpi-ec037c4616342c1b3976c55db98b775f48e0d455.zip
kdepimpi-ec037c4616342c1b3976c55db98b775f48e0d455.tar.gz
kdepimpi-ec037c4616342c1b3976c55db98b775f48e0d455.tar.bz2
fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp165
-rw-r--r--korganizer/komonthview.h5
-rw-r--r--libkcal/calendarlocal.cpp1
-rw-r--r--libkcal/incidence.cpp3
4 files changed, 146 insertions, 28 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 770a42b..6646b98 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -375,243 +375,261 @@ void MonthViewCell::setHoliday( bool holiday )
375 //setMyPalette(); 375 //setMyPalette();
376} 376}
377 377
378void MonthViewCell::setHoliday( const QString &holiday ) 378void MonthViewCell::setHoliday( const QString &holiday )
379{ 379{
380 mHolidayString = holiday; 380 mHolidayString = holiday;
381 381
382 if ( !holiday.isEmpty() ) { 382 if ( !holiday.isEmpty() ) {
383 setHoliday( true ); 383 setHoliday( true );
384 } 384 }
385} 385}
386void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 386void MonthViewCell::keyPressEvent ( QKeyEvent * e )
387{ 387{
388 388
389 e->ignore(); 389 e->ignore();
390 390
391} 391}
392void MonthViewCell::clear() 392void MonthViewCell::clear()
393{ 393{
394 mItemList->clear(); 394 mItemList->clear();
395 QApplication::removePostedEvents ( mItemList ); 395 QApplication::removePostedEvents ( mItemList );
396 QApplication::removePostedEvents ( mLabel ); 396 QApplication::removePostedEvents ( mLabel );
397 QApplication::removePostedEvents ( this ); 397 QApplication::removePostedEvents ( this );
398} 398}
399void MonthViewCell::updateCell() 399
400void MonthViewCell::startUpdateCell()
400{ 401{
402
401 if ( !mMonthView->isUpdatePossible() ) 403 if ( !mMonthView->isUpdatePossible() )
402 return; 404 return;
403 /* 405 /*
404 if ( !isVisible() ){ 406 if ( !isVisible() ){
405 return; 407 return;
406 } 408 }
407 */ 409 */
408 // qDebug("MonthViewCell::updateCell() "); 410 // qDebug("MonthViewCell::updateCell() ");
409 setPrimary( mDate.month()%2 ); 411 setPrimary( mDate.month()%2 );
410 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 412 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
411 if ( mDate == QDate::currentDate() ) { 413 if ( mDate == QDate::currentDate() ) {
412 mItemList->setLineWidth( 3 ); 414 mItemList->setLineWidth( 3 );
413 } else { 415 } else {
414 mItemList->setLineWidth( 1 ); 416 mItemList->setLineWidth( 1 );
415 } 417 }
416 mItemList->clear(); 418 mItemList->clear();
417 419
418#ifdef DESKTOP_VERSION 420#ifdef DESKTOP_VERSION
419 QToolTip::remove(this); 421 QToolTip::remove(this);
420#endif 422#endif
421 QString tipText(""); 423 mToolTip = "";
422 //qApp->processEvents(); 424 //qApp->processEvents();
423 if ( !mHolidayString.isEmpty() ) { 425 if ( !mHolidayString.isEmpty() ) {
424 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 426 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
425 item->setPalette( mHolidayPalette ); 427 item->setPalette( mHolidayPalette );
426 mItemList->insertItem( item ); 428 mItemList->insertItem( item );
427 tipText += mHolidayString+"\n"; 429 mToolTip += mHolidayString+"\n";
428 } 430 }
429 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 431}
430 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
431 Event *event;
432 for( event = events.first(); event; event = events.next() ) { // for event
433 432
433void MonthViewCell::insertEvent(Event *event)
434{
434 if ( !(event->doesRecur() == Recurrence::rNone) ) { 435 if ( !(event->doesRecur() == Recurrence::rNone) ) {
435 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 436 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
436 continue; 437 return;
437 else 438 else
438 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 439 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
439 continue; 440 return;
440 } 441 }
441 442
442 if ( event->categories().contains("Holiday") || 443 if ( event->categories().contains("Holiday") ||
443 event->categories().contains(i18n("Holiday"))) { 444 event->categories().contains(i18n("Holiday"))) {
444 setHoliday( true ); 445 setHoliday( true );
445 if ( mDate.dayOfWeek() == 7 ) 446 if ( mDate.dayOfWeek() == 7 )
446 mItemList->setLineWidth( 3 ); 447 mItemList->setLineWidth( 3 );
447 } 448 }
448 QString text; 449 QString text;
449 if (event->isMultiDay()) { 450 if (event->isMultiDay()) {
450 QString prefix = "<->"; 451 QString prefix = "<->";
451 if ( event->doesRecur() ) { 452 if ( event->doesRecur() ) {
452 if ( event->recursOn( mDate) ) 453 if ( event->recursOn( mDate) )
453 prefix ="->" ; 454 prefix ="->" ;
454 else { 455 else {
455 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 456 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
456 if ( event->recursOn( mDate.addDays( -days)) ) 457 if ( event->recursOn( mDate.addDays( -days)) )
457 prefix ="<-" ; 458 prefix ="<-" ;
458 } 459 }
459 460
460 } else { 461 } else {
461 if (mDate == event->dtStart().date()) { 462 if (mDate == event->dtStart().date()) {
462 prefix ="->" ; 463 prefix ="->" ;
463 } else if (mDate == event->dtEnd().date()) { 464 } else if (mDate == event->dtEnd().date()) {
464 prefix ="<-" ; 465 prefix ="<-" ;
465 } 466 }
466 } 467 }
467 text = prefix + event->summary(); 468 text = prefix + event->summary();
468 tipText += text; 469 mToolTip += text;
469 } else { 470 } else {
470 if (event->doesFloat()) { 471 if (event->doesFloat()) {
471 text = event->summary(); 472 text = event->summary();
472 tipText += text; 473 mToolTip += text;
473 } 474 }
474 else { 475 else {
475 text = KGlobal::locale()->formatTime(event->dtStart().time()); 476 text = KGlobal::locale()->formatTime(event->dtStart().time());
476 text += " " + event->summary(); 477 text += " " + event->summary();
477 tipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 478 mToolTip += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
478 } 479 }
479 } 480 }
480 481
481 MonthViewItem *item = new MonthViewItem( event, mDate, text ); 482 MonthViewItem *item = new MonthViewItem( event, mDate, text );
482 QPalette pal; 483 QPalette pal;
483 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 484 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
484 QStringList categories = event->categories(); 485 QStringList categories = event->categories();
485 QString cat = categories.first(); 486 QString cat = categories.first();
486 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 487 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
487 pal = getPalette(); 488 pal = getPalette();
488 if (cat.isEmpty()) { 489 if (cat.isEmpty()) {
489 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 490 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
490 } else { 491 } else {
491 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 492 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
492 } 493 }
493 494
494 } else { 495 } else {
495 if (cat.isEmpty()) { 496 if (cat.isEmpty()) {
496 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 497 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
497 } else { 498 } else {
498 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 499 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
499 } 500 }
500 } 501 }
501 502
502 } else { 503 } else {
503 pal = mStandardPalette ; 504 pal = mStandardPalette ;
504 } 505 }
505 item->setPalette( pal ); 506 item->setPalette( pal );
506 item->setRecur( event->recurrence()->doesRecur() ); 507 item->setRecur( event->recurrence()->doesRecur() );
507 item->setAlarm( event->isAlarmEnabled() ); 508 item->setAlarm( event->isAlarmEnabled() );
508 item->setMoreInfo( event->description().length() > 0 ); 509 item->setMoreInfo( event->description().length() > 0 );
509#ifdef DESKTOP_VERSION 510#ifdef DESKTOP_VERSION
510 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 511 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
511 KOPrefs::instance()->email()); 512 KOPrefs::instance()->email());
512 if ( me != 0 ) { 513 if ( me != 0 ) {
513 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 514 if ( me->status() == Attendee::NeedsAction && me->RSVP())
514 item->setReply(true); 515 item->setReply(true);
515 else 516 else
516 item->setReply(false); 517 item->setReply(false);
517 } else 518 } else
518 item->setReply(false); 519 item->setReply(false);
519#endif 520#endif
520 mItemList->insertItem( item ); 521 mItemList->insertItem( item );
521 tipText += "\n"; 522 mToolTip += "\n";
522 523}
523 } 524void MonthViewCell::insertTodo(Todo *todo)
524 525{
525 // insert due todos 526 QString text;
526 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
527 Todo *todo;
528 for(todo = todos.first(); todo; todo = todos.next()) {
529 QString text;
530 if (todo->hasDueDate()) { 527 if (todo->hasDueDate()) {
531 if (!todo->doesFloat()) { 528 if (!todo->doesFloat()) {
532 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 529 text += KGlobal::locale()->formatTime(todo->dtDue().time());
533 text += " "; 530 text += " ";
534 } 531 }
535 } 532 }
536 text += i18n("To-Do: %1").arg(todo->summary()); 533 text += i18n("To-Do: %1").arg(todo->summary());
537 534
538 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 535 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
539 //item->setPalette( mStandardPalette ); 536 //item->setPalette( mStandardPalette );
540 QPalette pal; 537 QPalette pal;
541 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 538 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
542 QStringList categories = todo->categories(); 539 QStringList categories = todo->categories();
543 QString cat = categories.first(); 540 QString cat = categories.first();
544 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 541 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
545 pal = getPalette(); 542 pal = getPalette();
546 if (cat.isEmpty()) { 543 if (cat.isEmpty()) {
547 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 544 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
548 } else { 545 } else {
549 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 546 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
550 } 547 }
551 548
552 } else { 549 } else {
553 if (cat.isEmpty()) { 550 if (cat.isEmpty()) {
554 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 551 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
555 } else { 552 } else {
556 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 553 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
557 } 554 }
558 } 555 }
559 556
560 } else { 557 } else {
561 pal = mStandardPalette ; 558 pal = mStandardPalette ;
562 } 559 }
563 item->setPalette( pal ); 560 item->setPalette( pal );
564 mItemList->insertItem( item ); 561 mItemList->insertItem( item );
565 tipText += text+"\n"; 562 mToolTip += text+"\n";
566 } 563}
564void MonthViewCell::finishUpdateCell()
565{
567#ifdef DESKTOP_VERSION 566#ifdef DESKTOP_VERSION
568 if (tipText != "") 567 if (mToolTip != "")
569 QToolTip::add(this,tipText,toolTipGroup(),""); 568 QToolTip::add(this,mToolTip,toolTipGroup(),"");
570#endif 569#endif
571 570
572 //setMyPalette(); 571 //setMyPalette();
573 setMyPalette(); 572 setMyPalette();
574 QString text; 573 QString text;
575 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 574 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
576 if ( KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 575 if ( KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
577 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 576 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
578 mLabel->resize( mLabelBigSize ); 577 mLabel->resize( mLabelBigSize );
579 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 578 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
580 } else { 579 } else {
581 mLabel->resize( mLabelSize ); 580 mLabel->resize( mLabelSize );
582 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 581 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
583 } 582 }
584 583
585 mLabel->setText( text ); 584 mLabel->setText( text );
586 resizeEvent( 0 ); 585 resizeEvent( 0 );
586}
587void MonthViewCell::updateCell()
588{
589 if ( !mMonthView->isUpdatePossible() )
590 return;
591 startUpdateCell();
592 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
593 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
594 Event *event;
595 for( event = events.first(); event; event = events.next() ) { // for event
596 insertEvent(event);
597 }
598 // insert due todos
599 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
600 Todo *todo;
601 for(todo = todos.first(); todo; todo = todos.next()) {
602 insertTodo( todo );
603 }
604 finishUpdateCell();
587 // if ( isVisible()) 605 // if ( isVisible())
588 //qApp->processEvents(); 606 //qApp->processEvents();
589} 607}
590 608
591void MonthViewCell::updateConfig() 609void MonthViewCell::updateConfig()
592{ 610{
593 611 qDebug("MonthViewCell::updateConfig() ");
594 setFont( KOPrefs::instance()->mMonthViewFont ); 612 setFont( KOPrefs::instance()->mMonthViewFont );
595 613
596 QFontMetrics fm( font() ); 614 QFontMetrics fm( font() );
597 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 615 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
598 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 616 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
599 mHolidayPalette = mStandardPalette; 617 mHolidayPalette = mStandardPalette;
600 mPrimaryPalette = mStandardPalette; 618 mPrimaryPalette = mStandardPalette;
601 mNonPrimaryPalette = mStandardPalette; 619 mNonPrimaryPalette = mStandardPalette;
602 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 620 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
603 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 621 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
604 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 622 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
605 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 623 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
606 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 624 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
607 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 625 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
608 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 626 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
609 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 627 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
610 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 628 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
611 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 629 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
612 } 630 }
613 updateCell(); 631 updateCell();
614} 632}
615 633
616void MonthViewCell::enableScrollBars( bool enabled ) 634void MonthViewCell::enableScrollBars( bool enabled )
617{ 635{
@@ -937,58 +955,153 @@ void KOMonthView::showDates(const QDate &start, const QDate &)
937 wno =dayOfYear / 7; 955 wno =dayOfYear / 7;
938 mWeekLabels[i]->setWeekNum( wno ); 956 mWeekLabels[i]->setWeekNum( wno );
939 date = date.addDays( 7 ); 957 date = date.addDays( 7 );
940 } 958 }
941 updateView(); 959 updateView();
942} 960}
943 961
944void KOMonthView::showEvents(QPtrList<Event>) 962void KOMonthView::showEvents(QPtrList<Event>)
945{ 963{
946 qDebug("KOMonthView::selectEvents is not implemented yet. "); 964 qDebug("KOMonthView::selectEvents is not implemented yet. ");
947} 965}
948 966
949void KOMonthView::changeEventDisplay(Event *, int) 967void KOMonthView::changeEventDisplay(Event *, int)
950{ 968{
951 // this should be re-written to be much more efficient, but this 969 // this should be re-written to be much more efficient, but this
952 // quick-and-dirty-hack gets the job done for right now. 970 // quick-and-dirty-hack gets the job done for right now.
953 updateView(); 971 updateView();
954} 972}
955 973
956void KOMonthView::updateView() 974void KOMonthView::updateView()
957{ 975{
958 976
959 if ( !updatePossible ) 977 if ( !updatePossible )
960 return; 978 return;
979 QTime ti;
980 ti.start();
981#if 1
982 int i;
983 for( i = 0; i < mCells.count(); ++i ) {
984 mCells[i]->startUpdateCell();
985 }
986
987 QPtrList<Event> events = calendar()->events();
988 Event *event;
989 QDateTime dt;
990 bool ok;
991 int timeSpan = mCells.size()-1;
992 QDate endDate = mStartDate.addDays( timeSpan );
993 for( event = events.first(); event; event = events.next() ) { // for event
994 if ( event->doesRecur() ) {
995 bool last;
996 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
997 QDateTime incidenceEnd;
998 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
999 bool invalid = false;
1000 while( true ) {
1001 if ( incidenceStart.isValid() ) {
1002 incidenceEnd = incidenceStart.addDays( eventlen );
1003 int st = incidenceStart.date().daysTo( endDate );
1004 if ( st >= 0 ) { // start before timeend
1005 int end = mStartDate.daysTo( incidenceEnd.date() );
1006 if ( end >= 0 ) { // end after timestart --- got one!
1007 //normalize
1008 st = timeSpan - st;
1009 if ( st < 0 ) st = 0;
1010 if ( end > timeSpan ) end = timeSpan;
1011 int iii;
1012 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1013 for ( iii = st;iii<= end;++iii)
1014 mCells[iii]->insertEvent( event );
1015 }
1016 }
1017 } else {
1018 if ( invalid )
1019 break;
1020 invalid = true;
1021 //qDebug("invalid %s", event->summary().latin1());
1022 incidenceStart = QDateTime( mStartDate );
1023 }
1024 if ( last )
1025 break;
1026 bool ok;
1027 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1028 if ( ! ok )
1029 break;
1030 if ( incidenceStart.date() > endDate )
1031 break;
1032 }
1033 } else { // no recur
1034 int st = event->dtStart().date().daysTo( endDate );
1035 if ( st >= 0 ) { // start before timeend
1036 int end = mStartDate.daysTo( event->dtEnd().date() );
1037 if ( end >= 0 ) { // end after timestart --- got one!
1038 //normalize
1039 st = timeSpan - st;
1040 if ( st < 0 ) st = 0;
1041 if ( end > timeSpan ) end = timeSpan;
1042 int iii;
1043 for ( iii = st;iii<= end;++iii)
1044 mCells[iii]->insertEvent( event );
1045 }
1046 }
1047 }
1048 }
1049 // insert due todos
1050 QPtrList<Todo> todos = calendar()->todos( );
1051 Todo *todo;
1052 for(todo = todos.first(); todo; todo = todos.next()) {
1053 //insertTodo( todo );
1054 if ( todo->hasDueDate() ) {
1055 int day = mStartDate.daysTo( todo->dtDue().date() );
1056 if ( day >= 0 && day < mCells.size() ) {
1057 mCells[day]->insertTodo( todo );
1058 }
1059 }
1060 }
1061
1062 for( i = 0; i < mCells.count(); ++i ) {
1063 mCells[i]->finishUpdateCell();
1064 }
1065 processSelectionChange();
1066 mCells[0]->setFocus();
1067
1068
1069#else
1070 // old code
961 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1071 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
962 int i; 1072 int i;
963 for( i = 0; i < mCells.count(); ++i ) { 1073 for( i = 0; i < mCells.count(); ++i ) {
964 mCells[i]->updateCell(); 1074 mCells[i]->updateCell();
965 } 1075 }
966 1076
967 //qDebug("KOMonthView::updateView() "); 1077 //qDebug("KOMonthView::updateView() ");
968 processSelectionChange(); 1078 processSelectionChange();
969 // qDebug("---------------------------------------------------------------------+ "); 1079 // qDebug("---------------------------------------------------------------------+ ");
970 mCells[0]->setFocus(); 1080 mCells[0]->setFocus();
1081#endif
1082
1083 qDebug("update time %d ", ti.elapsed());
971} 1084}
972 1085
973void KOMonthView::resizeEvent(QResizeEvent * e) 1086void KOMonthView::resizeEvent(QResizeEvent * e)
974{ 1087{
975 computeLayout(); 1088 computeLayout();
976 mCells[0]->setFocus(); 1089 mCells[0]->setFocus();
977} 1090}
978void KOMonthView::computeLayout() 1091void KOMonthView::computeLayout()
979{ 1092{
980 // select the appropriate heading string size. E.g. "Wednesday" or "Wed". 1093 // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
981 // note this only changes the text if the requested size crosses the 1094 // note this only changes the text if the requested size crosses the
982 // threshold between big enough to support the full name and not big 1095 // threshold between big enough to support the full name and not big
983 // enough. 1096 // enough.
984 1097
985 int daysToShow = 7; 1098 int daysToShow = 7;
986 bool combinedSatSun = false; 1099 bool combinedSatSun = false;
987 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1100 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
988 daysToShow = 6; 1101 daysToShow = 6;
989 combinedSatSun = true; 1102 combinedSatSun = true;
990 } 1103 }
991 int tWid = topLevelWidget()->size().width(); 1104 int tWid = topLevelWidget()->size().width();
992 int tHei = topLevelWidget()->size().height(); 1105 int tHei = topLevelWidget()->size().height();
993 1106
994 int wid = size().width();//e 1107 int wid = size().width();//e
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 50903b3..b84065e 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -116,69 +116,74 @@ class MonthViewItem: public QListBoxItem
116 QDate mDate; 116 QDate mDate;
117 117
118 Incidence *mIncidence; 118 Incidence *mIncidence;
119}; 119};
120 120
121 121
122class KOMonthView; 122class KOMonthView;
123 123
124class MonthViewCell : public QWidget 124class MonthViewCell : public QWidget
125{ 125{
126 Q_OBJECT 126 Q_OBJECT
127 public: 127 public:
128 MonthViewCell( KOMonthView * ); 128 MonthViewCell( KOMonthView * );
129 129
130 void setDate( const QDate & ); 130 void setDate( const QDate & );
131 QDate date() const; 131 QDate date() const;
132 132
133 void setPrimary( bool ); 133 void setPrimary( bool );
134 bool isPrimary() const; 134 bool isPrimary() const;
135 135
136 void setHoliday( bool ); 136 void setHoliday( bool );
137 void setHoliday( const QString & ); 137 void setHoliday( const QString & );
138 138
139 void updateCell(); 139 void updateCell();
140 void startUpdateCell();
141 void finishUpdateCell();
142 void insertEvent(Event *);
143 void insertTodo(Todo *);
140 144
141 void updateConfig(); 145 void updateConfig();
142 146
143 void enableScrollBars( bool ); 147 void enableScrollBars( bool );
144 148
145 Incidence *selectedIncidence(); 149 Incidence *selectedIncidence();
146 QDate selectedIncidenceDate(); 150 QDate selectedIncidenceDate();
147 151
148 void deselect(); 152 void deselect();
149 void select(); 153 void select();
150 void clear(); 154 void clear();
151 155
152#ifdef DESKTOP_VERSION 156#ifdef DESKTOP_VERSION
153 static QToolTipGroup *toolTipGroup(); 157 static QToolTipGroup *toolTipGroup();
154#endif 158#endif
155 signals: 159 signals:
156 void defaultAction( Incidence * ); 160 void defaultAction( Incidence * );
157 void newEventSignal( QDateTime ); 161 void newEventSignal( QDateTime );
158 void showDaySignal( QDate ); 162 void showDaySignal( QDate );
159 163
160 protected: 164 protected:
165 QString mToolTip;
161 void resizeEvent( QResizeEvent * ); 166 void resizeEvent( QResizeEvent * );
162 167
163 protected slots: 168 protected slots:
164 void defaultAction( QListBoxItem * ); 169 void defaultAction( QListBoxItem * );
165 void contextMenu( QListBoxItem * ); 170 void contextMenu( QListBoxItem * );
166 void selection( QListBoxItem * ); 171 void selection( QListBoxItem * );
167 void cellClicked( QListBoxItem * ); 172 void cellClicked( QListBoxItem * );
168 void newEvent(); 173 void newEvent();
169 void showDay(); 174 void showDay();
170 175
171 private: 176 private:
172 KOMonthView *mMonthView; 177 KOMonthView *mMonthView;
173 178
174 QDate mDate; 179 QDate mDate;
175 bool mPrimary; 180 bool mPrimary;
176 bool mHoliday; 181 bool mHoliday;
177 QString mHolidayString; 182 QString mHolidayString;
178 183
179 //QLabel *mLabel; 184 //QLabel *mLabel;
180 QPushButton *mLabel; 185 QPushButton *mLabel;
181 QListBox *mItemList; 186 QListBox *mItemList;
182#ifdef DESKTOP_VERSION 187#ifdef DESKTOP_VERSION
183 static QToolTipGroup *mToolTipGroup; 188 static QToolTipGroup *mToolTipGroup;
184#endif 189#endif
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 0eba6a9..e75154b 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -566,48 +566,49 @@ QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted )
566 return eventList; 566 return eventList;
567 } 567 }
568 568
569 // kdDebug(5800) << "Sorting events for date\n" << endl; 569 // kdDebug(5800) << "Sorting events for date\n" << endl;
570 // now, we have to sort it based on dtStart.time() 570 // now, we have to sort it based on dtStart.time()
571 QPtrList<Event> eventListSorted; 571 QPtrList<Event> eventListSorted;
572 Event *sortEvent; 572 Event *sortEvent;
573 for ( event = eventList.first(); event; event = eventList.next() ) { 573 for ( event = eventList.first(); event; event = eventList.next() ) {
574 sortEvent = eventListSorted.first(); 574 sortEvent = eventListSorted.first();
575 int i = 0; 575 int i = 0;
576 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() ) 576 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() )
577 { 577 {
578 i++; 578 i++;
579 sortEvent = eventListSorted.next(); 579 sortEvent = eventListSorted.next();
580 } 580 }
581 eventListSorted.insert( i, event ); 581 eventListSorted.insert( i, event );
582 } 582 }
583 return eventListSorted; 583 return eventListSorted;
584} 584}
585 585
586 586
587QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end, 587QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end,
588 bool inclusive ) 588 bool inclusive )
589{ 589{
590 qDebug("CalendarLocal::rawEvents called ");
590 Event *event = 0; 591 Event *event = 0;
591 592
592 QPtrList<Event> eventList; 593 QPtrList<Event> eventList;
593 594
594 // Get non-recurring events 595 // Get non-recurring events
595 for( event = mEventList.first(); event; event = mEventList.next() ) { 596 for( event = mEventList.first(); event; event = mEventList.next() ) {
596 if ( event->doesRecur() ) { 597 if ( event->doesRecur() ) {
597 QDate rStart = event->dtStart().date(); 598 QDate rStart = event->dtStart().date();
598 bool found = false; 599 bool found = false;
599 if ( inclusive ) { 600 if ( inclusive ) {
600 if ( rStart >= start && rStart <= end ) { 601 if ( rStart >= start && rStart <= end ) {
601 // Start date of event is in range. Now check for end date. 602 // Start date of event is in range. Now check for end date.
602 // if duration is negative, event recurs forever, so do not include it. 603 // if duration is negative, event recurs forever, so do not include it.
603 if ( event->recurrence()->duration() == 0 ) { // End date set 604 if ( event->recurrence()->duration() == 0 ) { // End date set
604 QDate rEnd = event->recurrence()->endDate(); 605 QDate rEnd = event->recurrence()->endDate();
605 if ( rEnd >= start && rEnd <= end ) { // End date within range 606 if ( rEnd >= start && rEnd <= end ) { // End date within range
606 found = true; 607 found = true;
607 } 608 }
608 } else if ( event->recurrence()->duration() > 0 ) { // Duration set 609 } else if ( event->recurrence()->duration() > 0 ) { // Duration set
609 // TODO: Calculate end date from duration. Should be done in Event 610 // TODO: Calculate end date from duration. Should be done in Event
610 // For now exclude all events with a duration. 611 // For now exclude all events with a duration.
611 } 612 }
612 } 613 }
613 } else { 614 } else {
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index 28402ae..f9e1e9e 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -571,47 +571,46 @@ ushort Incidence::doesRecur() const
571 if ( mRecurrence ) return mRecurrence->doesRecur(); 571 if ( mRecurrence ) return mRecurrence->doesRecur();
572 else return Recurrence::rNone; 572 else return Recurrence::rNone;
573} 573}
574 574
575QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const 575QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const
576{ 576{
577 QDateTime incidenceStart = dt; 577 QDateTime incidenceStart = dt;
578 *ok = false; 578 *ok = false;
579 if ( doesRecur() ) { 579 if ( doesRecur() ) {
580 bool last; 580 bool last;
581 recurrence()->getPreviousDateTime( incidenceStart , &last ); 581 recurrence()->getPreviousDateTime( incidenceStart , &last );
582 int count = 0; 582 int count = 0;
583 if ( !last ) { 583 if ( !last ) {
584 while ( !last ) { 584 while ( !last ) {
585 ++count; 585 ++count;
586 incidenceStart = recurrence()->getNextDateTime( incidenceStart, &last ); 586 incidenceStart = recurrence()->getNextDateTime( incidenceStart, &last );
587 if ( recursOn( incidenceStart.date() ) ) { 587 if ( recursOn( incidenceStart.date() ) ) {
588 last = true; // exit while llop 588 last = true; // exit while llop
589 } else { 589 } else {
590 if ( last ) { // no alarm on last recurrence 590 if ( last ) { // no alarm on last recurrence
591 return QDateTime (); 591 return QDateTime ();
592 } 592 }
593 int year = incidenceStart.date().year(); 593 int year = incidenceStart.date().year();
594 // workaround for bug in recurrence 594 // workaround for bug in recurrence
595 if ( count == 100 || year < 1980 || year > 5000 ) { 595 if ( count == 100 || year < 1000 || year > 5000 ) {
596 return QDateTime (); 596 return QDateTime ();
597 } 597 }
598 incidenceStart = incidenceStart.addSecs( 1 ); 598 incidenceStart = incidenceStart.addSecs( 1 );
599 } 599 }
600 } 600 }
601 } else { 601 } else {
602 return QDateTime (); 602 return QDateTime ();
603 } 603 }
604 } else { 604 } else {
605 if ( hasStartDate () ) { 605 if ( hasStartDate () ) {
606 incidenceStart = dtStart(); 606 incidenceStart = dtStart();
607 } 607 }
608 if ( type() =="Todo" ) { 608 if ( type() =="Todo" ) {
609 if ( ((Todo*)this)->hasDueDate() ) 609 if ( ((Todo*)this)->hasDueDate() )
610 incidenceStart = ((Todo*)this)->dtDue(); 610 incidenceStart = ((Todo*)this)->dtDue();
611
612 } 611 }
613 } 612 }
614 if ( incidenceStart > dt ) 613 if ( incidenceStart > dt )
615 *ok = true; 614 *ok = true;
616 return incidenceStart; 615 return incidenceStart;
617} 616}