summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 18f1af8..418bfca 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -370,556 +370,556 @@ Todo *CalendarLocal::todo( const QString &uid )
370 } 370 }
371 } 371 }
372 } 372 }
373 return retVal; 373 return retVal;
374} 374}
375QString CalendarLocal::nextSummary() const 375QString CalendarLocal::nextSummary() const
376{ 376{
377 return mNextSummary; 377 return mNextSummary;
378} 378}
379QDateTime CalendarLocal::nextAlarmEventDateTime() const 379QDateTime CalendarLocal::nextAlarmEventDateTime() const
380{ 380{
381 return mNextAlarmEventDateTime; 381 return mNextAlarmEventDateTime;
382} 382}
383void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted) 383void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted)
384{ 384{
385 //mNextAlarmIncidence 385 //mNextAlarmIncidence
386 //mNextAlarmDateTime 386 //mNextAlarmDateTime
387 //return mNextSummary; 387 //return mNextSummary;
388 //return mNextAlarmEventDateTime; 388 //return mNextAlarmEventDateTime;
389 bool newNextAlarm = false; 389 bool newNextAlarm = false;
390 bool computeNextAlarm = false; 390 bool computeNextAlarm = false;
391 bool ok; 391 bool ok;
392 int offset; 392 int offset;
393 QDateTime nextA; 393 QDateTime nextA;
394 // QString nextSum; 394 // QString nextSum;
395 //QDateTime nextEvent; 395 //QDateTime nextEvent;
396 if ( mNextAlarmIncidence == 0 || incidence == 0 ) { 396 if ( mNextAlarmIncidence == 0 || incidence == 0 ) {
397 computeNextAlarm = true; 397 computeNextAlarm = true;
398 } else { 398 } else {
399 if ( ! deleted ) { 399 if ( ! deleted ) {
400 nextA = incidence->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 400 nextA = incidence->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
401 if ( ok ) { 401 if ( ok ) {
402 if ( nextA < mNextAlarmDateTime ) { 402 if ( nextA < mNextAlarmDateTime ) {
403 deRegisterAlarm(); 403 deRegisterAlarm();
404 mNextAlarmDateTime = nextA; 404 mNextAlarmDateTime = nextA;
405 mNextSummary = incidence->summary(); 405 mNextSummary = incidence->summary();
406 mNextAlarmEventDateTime = nextA.addSecs(offset ) ; 406 mNextAlarmEventDateTime = nextA.addSecs(offset ) ;
407 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 407 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
408 newNextAlarm = true; 408 newNextAlarm = true;
409 mNextAlarmIncidence = incidence; 409 mNextAlarmIncidence = incidence;
410 } else { 410 } else {
411 if ( incidence == mNextAlarmIncidence ) { 411 if ( incidence == mNextAlarmIncidence ) {
412 computeNextAlarm = true; 412 computeNextAlarm = true;
413 } 413 }
414 } 414 }
415 } else { 415 } else {
416 if ( mNextAlarmIncidence == incidence ) { 416 if ( mNextAlarmIncidence == incidence ) {
417 computeNextAlarm = true; 417 computeNextAlarm = true;
418 } 418 }
419 } 419 }
420 } else { // deleted 420 } else { // deleted
421 if ( incidence == mNextAlarmIncidence ) { 421 if ( incidence == mNextAlarmIncidence ) {
422 computeNextAlarm = true; 422 computeNextAlarm = true;
423 } 423 }
424 } 424 }
425 } 425 }
426 if ( computeNextAlarm ) { 426 if ( computeNextAlarm ) {
427 deRegisterAlarm(); 427 deRegisterAlarm();
428 nextA = nextAlarm( 1000 ); 428 nextA = nextAlarm( 1000 );
429 if (! mNextAlarmIncidence ) { 429 if (! mNextAlarmIncidence ) {
430 return; 430 return;
431 } 431 }
432 newNextAlarm = true; 432 newNextAlarm = true;
433 } 433 }
434 if ( newNextAlarm ) 434 if ( newNextAlarm )
435 registerAlarm(); 435 registerAlarm();
436} 436}
437QString CalendarLocal:: getAlarmNotification() 437QString CalendarLocal:: getAlarmNotification()
438{ 438{
439 QString ret; 439 QString ret;
440 // this should not happen 440 // this should not happen
441 if (! mNextAlarmIncidence ) 441 if (! mNextAlarmIncidence )
442 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString; 442 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString;
443 Alarm* alarm = mNextAlarmIncidence->alarms().first(); 443 Alarm* alarm = mNextAlarmIncidence->alarms().first();
444 if ( alarm->type() == Alarm::Procedure ) { 444 if ( alarm->type() == Alarm::Procedure ) {
445 ret = "proc_alarm" + alarm->programFile()+"+++"; 445 ret = "proc_alarm" + alarm->programFile()+"+++";
446 } else { 446 } else {
447 ret = "audio_alarm" +alarm->audioFile() +"+++"; 447 ret = "audio_alarm" +alarm->audioFile() +"+++";
448 } 448 }
449 ret += "cal_alarm"+ mNextSummary.left( 25 ); 449 ret += "cal_alarm"+ mNextSummary.left( 25 );
450 if ( mNextSummary.length() > 25 ) 450 if ( mNextSummary.length() > 25 )
451 ret += "\n" + mNextSummary.mid(25, 25 ); 451 ret += "\n" + mNextSummary.mid(25, 25 );
452 ret+= "\n"+mNextAlarmEventDateTimeString; 452 ret+= "\n"+mNextAlarmEventDateTimeString;
453 return ret; 453 return ret;
454} 454}
455void CalendarLocal::registerAlarm() 455void CalendarLocal::registerAlarm()
456{ 456{
457 mLastAlarmNotificationString = getAlarmNotification(); 457 mLastAlarmNotificationString = getAlarmNotification();
458 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() ); 458 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() );
459 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 459 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
460// #ifndef DESKTOP_VERSION 460// #ifndef DESKTOP_VERSION
461// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() ); 461// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() );
462// #endif 462// #endif
463} 463}
464void CalendarLocal::deRegisterAlarm() 464void CalendarLocal::deRegisterAlarm()
465{ 465{
466 if ( mLastAlarmNotificationString.isNull() ) 466 if ( mLastAlarmNotificationString.isNull() )
467 return; 467 return;
468 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() ); 468 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() );
469 469
470 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 470 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
471 mNextAlarmEventDateTime = QDateTime(); 471 mNextAlarmEventDateTime = QDateTime();
472// #ifndef DESKTOP_VERSION 472// #ifndef DESKTOP_VERSION
473// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() ); 473// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() );
474// #endif 474// #endif
475} 475}
476 476
477QPtrList<Todo> CalendarLocal::todos( const QDate &date ) 477QPtrList<Todo> CalendarLocal::todos( const QDate &date )
478{ 478{
479 QPtrList<Todo> todos; 479 QPtrList<Todo> todos;
480 480
481 Todo *todo; 481 Todo *todo;
482 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 482 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
483 if ( !todo->calEnabled() ) continue; 483 if ( !todo->calEnabled() ) continue;
484 if ( todo->hasDueDate() && todo->dtDue().date() == date ) { 484 if ( todo->hasDueDate() && todo->dtDue().date() == date ) {
485 todos.append( todo ); 485 todos.append( todo );
486 } 486 }
487 } 487 }
488 488
489 filter()->apply( &todos ); 489 filter()->apply( &todos );
490 return todos; 490 return todos;
491} 491}
492void CalendarLocal::reInitAlarmSettings() 492void CalendarLocal::reInitAlarmSettings()
493{ 493{
494 if ( !mNextAlarmIncidence ) { 494 if ( !mNextAlarmIncidence ) {
495 nextAlarm( 1000 ); 495 nextAlarm( 1000 );
496 } 496 }
497 deRegisterAlarm(); 497 deRegisterAlarm();
498 mNextAlarmIncidence = 0; 498 mNextAlarmIncidence = 0;
499 checkAlarmForIncidence( 0, false ); 499 checkAlarmForIncidence( 0, false );
500 500
501} 501}
502 502
503 503
504 504
505QDateTime CalendarLocal::nextAlarm( int daysTo ) 505QDateTime CalendarLocal::nextAlarm( int daysTo )
506{ 506{
507 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo ); 507 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo );
508 QDateTime start = QDateTime::currentDateTime().addSecs( 30 ); 508 QDateTime start = QDateTime::currentDateTime().addSecs( 30 );
509 QDateTime next; 509 QDateTime next;
510 Event *e; 510 Event *e;
511 bool ok; 511 bool ok;
512 bool found = false; 512 bool found = false;
513 int offset; 513 int offset;
514 mNextAlarmIncidence = 0; 514 mNextAlarmIncidence = 0;
515 for( e = mEventList.first(); e; e = mEventList.next() ) { 515 for( e = mEventList.first(); e; e = mEventList.next() ) {
516 if ( !e->calEnabled() ) continue; 516 if ( !e->calEnabled() ) continue;
517 next = e->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 517 next = e->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
518 if ( ok ) { 518 if ( ok ) {
519 if ( next < nextA ) { 519 if ( next < nextA ) {
520 nextA = next; 520 nextA = next;
521 found = true; 521 found = true;
522 mNextSummary = e->summary(); 522 mNextSummary = e->summary();
523 mNextAlarmEventDateTime = next.addSecs(offset ) ; 523 mNextAlarmEventDateTime = next.addSecs(offset ) ;
524 mNextAlarmIncidence = (Incidence *) e; 524 mNextAlarmIncidence = (Incidence *) e;
525 } 525 }
526 } 526 }
527 } 527 }
528 Todo *t; 528 Todo *t;
529 for( t = mTodoList.first(); t; t = mTodoList.next() ) { 529 for( t = mTodoList.first(); t; t = mTodoList.next() ) {
530 if ( !t->calEnabled() ) continue; 530 if ( !t->calEnabled() ) continue;
531 next = t->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 531 next = t->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
532 if ( ok ) { 532 if ( ok ) {
533 if ( next < nextA ) { 533 if ( next < nextA ) {
534 nextA = next; 534 nextA = next;
535 found = true; 535 found = true;
536 mNextSummary = t->summary(); 536 mNextSummary = t->summary();
537 mNextAlarmEventDateTime = next.addSecs(offset ); 537 mNextAlarmEventDateTime = next.addSecs(offset );
538 mNextAlarmIncidence = (Incidence *) t; 538 mNextAlarmIncidence = (Incidence *) t;
539 } 539 }
540 } 540 }
541 } 541 }
542 if ( mNextAlarmIncidence ) { 542 if ( mNextAlarmIncidence ) {
543 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 543 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
544 mNextAlarmDateTime = nextA; 544 mNextAlarmDateTime = nextA;
545 } 545 }
546 return nextA; 546 return nextA;
547} 547}
548Alarm::List CalendarLocal::alarmsTo( const QDateTime &to ) 548Alarm::List CalendarLocal::alarmsTo( const QDateTime &to )
549{ 549{
550 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to ); 550 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to );
551} 551}
552 552
553Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to ) 553Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to )
554{ 554{
555 555
556 Alarm::List alarms; 556 Alarm::List alarms;
557 557
558 Event *e; 558 Event *e;
559 559
560 for( e = mEventList.first(); e; e = mEventList.next() ) { 560 for( e = mEventList.first(); e; e = mEventList.next() ) {
561 if ( !e->calEnabled() ) continue; 561 if ( !e->calEnabled() ) continue;
562 if ( e->doesRecur() ) appendRecurringAlarms( alarms, e, from, to ); 562 if ( e->doesRecur() ) appendRecurringAlarms( alarms, e, from, to );
563 else appendAlarms( alarms, e, from, to ); 563 else appendAlarms( alarms, e, from, to );
564 } 564 }
565 565
566 Todo *t; 566 Todo *t;
567 for( t = mTodoList.first(); t; t = mTodoList.next() ) { 567 for( t = mTodoList.first(); t; t = mTodoList.next() ) {
568 if ( !t->calEnabled() ) continue; 568 if ( !t->calEnabled() ) continue;
569 appendAlarms( alarms, t, from, to ); 569 appendAlarms( alarms, t, from, to );
570 } 570 }
571 571
572 return alarms; 572 return alarms;
573} 573}
574 574
575void CalendarLocal::appendAlarms( Alarm::List &alarms, Incidence *incidence, 575void CalendarLocal::appendAlarms( Alarm::List &alarms, Incidence *incidence,
576 const QDateTime &from, const QDateTime &to ) 576 const QDateTime &from, const QDateTime &to )
577{ 577{
578 QPtrList<Alarm> alarmList = incidence->alarms(); 578 QPtrList<Alarm> alarmList = incidence->alarms();
579 Alarm *alarm; 579 Alarm *alarm;
580 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) { 580 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) {
581// kdDebug(5800) << "CalendarLocal::appendAlarms() '" << alarm->text() 581// kdDebug(5800) << "CalendarLocal::appendAlarms() '" << alarm->text()
582// << "': " << alarm->time().toString() << " - " << alarm->enabled() << endl; 582// << "': " << alarm->time().toString() << " - " << alarm->enabled() << endl;
583 if ( alarm->enabled() ) { 583 if ( alarm->enabled() ) {
584 if ( alarm->time() >= from && alarm->time() <= to ) { 584 if ( alarm->time() >= from && alarm->time() <= to ) {
585 alarms.append( alarm ); 585 alarms.append( alarm );
586 } 586 }
587 } 587 }
588 } 588 }
589} 589}
590 590
591void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms, 591void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms,
592 Incidence *incidence, 592 Incidence *incidence,
593 const QDateTime &from, 593 const QDateTime &from,
594 const QDateTime &to ) 594 const QDateTime &to )
595{ 595{
596 596
597 QPtrList<Alarm> alarmList = incidence->alarms(); 597 QPtrList<Alarm> alarmList = incidence->alarms();
598 Alarm *alarm; 598 Alarm *alarm;
599 QDateTime qdt; 599 QDateTime qdt;
600 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) { 600 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) {
601 if (incidence->recursOn(from.date())) { 601 if (incidence->recursOn(from.date())) {
602 qdt.setTime(alarm->time().time()); 602 qdt.setTime(alarm->time().time());
603 qdt.setDate(from.date()); 603 qdt.setDate(from.date());
604 } 604 }
605 else qdt = alarm->time(); 605 else qdt = alarm->time();
606 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1()); 606 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1());
607 if ( alarm->enabled() ) { 607 if ( alarm->enabled() ) {
608 if ( qdt >= from && qdt <= to ) { 608 if ( qdt >= from && qdt <= to ) {
609 alarms.append( alarm ); 609 alarms.append( alarm );
610 } 610 }
611 } 611 }
612 } 612 }
613} 613}
614 614
615 615
616/****************************** PROTECTED METHODS ****************************/ 616/****************************** PROTECTED METHODS ****************************/
617 617
618// after changes are made to an event, this should be called. 618// after changes are made to an event, this should be called.
619void CalendarLocal::update( IncidenceBase *incidence ) 619void CalendarLocal::update( IncidenceBase *incidence )
620{ 620{
621 incidence->setSyncStatus( Event::SYNCMOD ); 621 incidence->setSyncStatus( Event::SYNCMOD );
622 incidence->setLastModified( QDateTime::currentDateTime() ); 622 incidence->setLastModified( QDateTime::currentDateTime() );
623 // we should probably update the revision number here, 623 // we should probably update the revision number here,
624 // or internally in the Event itself when certain things change. 624 // or internally in the Event itself when certain things change.
625 // need to verify with ical documentation. 625 // need to verify with ical documentation.
626 626
627 setModified( true ); 627 setModified( true );
628} 628}
629 629
630void CalendarLocal::insertEvent( Event *event ) 630void CalendarLocal::insertEvent( Event *event )
631{ 631{
632 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event ); 632 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event );
633} 633}
634 634
635 635
636QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted ) 636QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted )
637{ 637{
638 QPtrList<Event> eventList; 638 QPtrList<Event> eventList;
639 639
640 Event *event; 640 Event *event;
641 for( event = mEventList.first(); event; event = mEventList.next() ) { 641 for( event = mEventList.first(); event; event = mEventList.next() ) {
642 if ( !event->calEnabled() ) continue; 642 if ( !event->calEnabled() ) continue;
643 if ( event->doesRecur() ) { 643 if ( event->doesRecur() ) {
644 if ( event->isMultiDay() ) { 644 if ( event->isMultiDay() ) {
645 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() ); 645 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() );
646 int i; 646 int i;
647 for ( i = 0; i <= extraDays; i++ ) { 647 for ( i = 0; i <= extraDays; i++ ) {
648 if ( event->recursOn( qd.addDays( -i ) ) ) { 648 if ( event->recursOn( qd.addDays( -i ) ) ) {
649 eventList.append( event ); 649 eventList.append( event );
650 break; 650 break;
651 } 651 }
652 } 652 }
653 } else { 653 } else {
654 if ( event->recursOn( qd ) ) 654 if ( event->recursOn( qd ) )
655 eventList.append( event ); 655 eventList.append( event );
656 } 656 }
657 } else { 657 } else {
658 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) { 658 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) {
659 eventList.append( event ); 659 eventList.append( event );
660 } 660 }
661 } 661 }
662 } 662 }
663 663
664 if ( !sorted ) { 664 if ( !sorted ) {
665 return eventList; 665 return eventList;
666 } 666 }
667 667
668 // kdDebug(5800) << "Sorting events for date\n" << endl; 668 // kdDebug(5800) << "Sorting events for date\n" << endl;
669 // now, we have to sort it based on dtStart.time() 669 // now, we have to sort it based on dtStart.time()
670 QPtrList<Event> eventListSorted; 670 QPtrList<Event> eventListSorted;
671 Event *sortEvent; 671 Event *sortEvent;
672 for ( event = eventList.first(); event; event = eventList.next() ) { 672 for ( event = eventList.first(); event; event = eventList.next() ) {
673 sortEvent = eventListSorted.first(); 673 sortEvent = eventListSorted.first();
674 int i = 0; 674 int i = 0;
675 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() ) 675 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() )
676 { 676 {
677 i++; 677 i++;
678 sortEvent = eventListSorted.next(); 678 sortEvent = eventListSorted.next();
679 } 679 }
680 eventListSorted.insert( i, event ); 680 eventListSorted.insert( i, event );
681 } 681 }
682 return eventListSorted; 682 return eventListSorted;
683} 683}
684 684
685 685
686QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end, 686QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end,
687 bool inclusive ) 687 bool inclusive )
688{ 688{
689 Event *event = 0; 689 Event *event = 0;
690 690
691 QPtrList<Event> eventList; 691 QPtrList<Event> eventList;
692 692
693 // Get non-recurring events 693 // Get non-recurring events
694 for( event = mEventList.first(); event; event = mEventList.next() ) { 694 for( event = mEventList.first(); event; event = mEventList.next() ) {
695 if ( !event->calEnabled() ) continue; 695 if ( !event->calEnabled() ) continue;
696 if ( event->doesRecur() ) { 696 if ( event->doesRecur() ) {
697 QDate rStart = event->dtStart().date(); 697 QDate rStart = event->dtStart().date();
698 bool found = false; 698 bool found = false;
699 if ( inclusive ) { 699 if ( inclusive ) {
700 if ( rStart >= start && rStart <= end ) { 700 if ( rStart >= start && rStart <= end ) {
701 // Start date of event is in range. Now check for end date. 701 // Start date of event is in range. Now check for end date.
702 // if duration is negative, event recurs forever, so do not include it. 702 // if duration is negative, event recurs forever, so do not include it.
703 if ( event->recurrence()->duration() == 0 ) { // End date set 703 if ( event->recurrence()->duration() == 0 ) { // End date set
704 QDate rEnd = event->recurrence()->endDate(); 704 QDate rEnd = event->recurrence()->endDate();
705 if ( rEnd >= start && rEnd <= end ) { // End date within range 705 if ( rEnd >= start && rEnd <= end ) { // End date within range
706 found = true; 706 found = true;
707 } 707 }
708 } else if ( event->recurrence()->duration() > 0 ) { // Duration set 708 } else if ( event->recurrence()->duration() > 0 ) { // Duration set
709 // TODO: Calculate end date from duration. Should be done in Event 709 // TODO: Calculate end date from duration. Should be done in Event
710 // For now exclude all events with a duration. 710 // For now exclude all events with a duration.
711 } 711 }
712 } 712 }
713 } else { 713 } else {
714 bool founOne; 714 bool founOne;
715 QDate next = event->getNextOccurence( start, &founOne ).date(); 715 QDate next = event->getNextOccurence( start, &founOne ).date();
716 if ( founOne ) { 716 if ( founOne ) {
717 if ( next <= end ) { 717 if ( next <= end ) {
718 found = true; 718 found = true;
719 } 719 }
720 } 720 }
721 721
722 /* 722 /*
723 // crap !!! 723 // crap !!!
724 if ( rStart <= end ) { // Start date not after range 724 if ( rStart <= end ) { // Start date not after range
725 if ( rStart >= start ) { // Start date within range 725 if ( rStart >= start ) { // Start date within range
726 found = true; 726 found = true;
727 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever 727 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever
728 found = true; 728 found = true;
729 } else if ( event->recurrence()->duration() == 0 ) { // End date set 729 } else if ( event->recurrence()->duration() == 0 ) { // End date set
730 QDate rEnd = event->recurrence()->endDate(); 730 QDate rEnd = event->recurrence()->endDate();
731 if ( rEnd >= start && rEnd <= end ) { // End date within range 731 if ( rEnd >= start && rEnd <= end ) { // End date within range
732 found = true; 732 found = true;
733 } 733 }
734 } else { // Duration set 734 } else { // Duration set
735 // TODO: Calculate end date from duration. Should be done in Event 735 // TODO: Calculate end date from duration. Should be done in Event
736 // For now include all events with a duration. 736 // For now include all events with a duration.
737 found = true; 737 found = true;
738 } 738 }
739 } 739 }
740 */ 740 */
741 741
742 } 742 }
743 743
744 if ( found ) eventList.append( event ); 744 if ( found ) eventList.append( event );
745 } else { 745 } else {
746 QDate s = event->dtStart().date(); 746 QDate s = event->dtStart().date();
747 QDate e = event->dtEnd().date(); 747 QDate e = event->dtEnd().date();
748 748
749 if ( inclusive ) { 749 if ( inclusive ) {
750 if ( s >= start && e <= end ) { 750 if ( s >= start && e <= end ) {
751 eventList.append( event ); 751 eventList.append( event );
752 } 752 }
753 } else { 753 } else {
754 if ( ( s >= start && s <= end ) || ( e >= start && e <= end ) ) { 754 if ( ( e >= start && s <= end ) ) {
755 eventList.append( event ); 755 eventList.append( event );
756 } 756 }
757 } 757 }
758 } 758 }
759 } 759 }
760 760
761 return eventList; 761 return eventList;
762} 762}
763 763
764QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt ) 764QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt )
765{ 765{
766 return rawEventsForDate( qdt.date() ); 766 return rawEventsForDate( qdt.date() );
767} 767}
768 768
769QPtrList<Event> CalendarLocal::rawEvents() 769QPtrList<Event> CalendarLocal::rawEvents()
770{ 770{
771 QPtrList<Event> el; 771 QPtrList<Event> el;
772 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 772 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
773 if ( it->calEnabled() ) el.append( it ); 773 if ( it->calEnabled() ) el.append( it );
774 return el; 774 return el;
775} 775}
776 776
777bool CalendarLocal::addJournal(Journal *journal) 777bool CalendarLocal::addJournal(Journal *journal)
778{ 778{
779 if ( journal->dtStart().isValid()) 779 if ( journal->dtStart().isValid())
780 kdDebug(5800) << "Adding Journal on " << journal->dtStart().toString() << endl; 780 kdDebug(5800) << "Adding Journal on " << journal->dtStart().toString() << endl;
781 else 781 else
782 kdDebug(5800) << "Adding Journal without a DTSTART" << endl; 782 kdDebug(5800) << "Adding Journal without a DTSTART" << endl;
783 783
784 mJournalList.append(journal); 784 mJournalList.append(journal);
785 785
786 journal->registerObserver( this ); 786 journal->registerObserver( this );
787 787
788 setModified( true ); 788 setModified( true );
789 journal->setCalID( mDefaultCalendar ); 789 journal->setCalID( mDefaultCalendar );
790 journal->setCalEnabled( true ); 790 journal->setCalEnabled( true );
791 return true; 791 return true;
792} 792}
793 793
794void CalendarLocal::deleteJournal( Journal *journal ) 794void CalendarLocal::deleteJournal( Journal *journal )
795{ 795{
796 if ( mUndoIncidence ) delete mUndoIncidence; 796 if ( mUndoIncidence ) delete mUndoIncidence;
797 mUndoIncidence = journal->clone(); 797 mUndoIncidence = journal->clone();
798 mUndoIncidence->setSummary( mUndoIncidence->description().left(25)); 798 mUndoIncidence->setSummary( mUndoIncidence->description().left(25));
799 if ( mJournalList.removeRef(journal) ) { 799 if ( mJournalList.removeRef(journal) ) {
800 setModified( true ); 800 setModified( true );
801 } 801 }
802} 802}
803 803
804Journal *CalendarLocal::journal( const QDate &date ) 804Journal *CalendarLocal::journal( const QDate &date )
805{ 805{
806// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl; 806// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl;
807 807
808 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 808 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
809 if ( it->calEnabled() && it->dtStart().date() == date ) 809 if ( it->calEnabled() && it->dtStart().date() == date )
810 return it; 810 return it;
811 811
812 return 0; 812 return 0;
813} 813}
814 814
815Journal *CalendarLocal::journal( const QString &uid ) 815Journal *CalendarLocal::journal( const QString &uid )
816{ 816{
817 Journal * retVal = 0; 817 Journal * retVal = 0;
818 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 818 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
819 if ( it->calEnabled() && it->uid() == uid ) { 819 if ( it->calEnabled() && it->uid() == uid ) {
820 if ( retVal ) { 820 if ( retVal ) {
821 if ( retVal->calID() > it->calID() ) { 821 if ( retVal->calID() > it->calID() ) {
822 retVal = it; 822 retVal = it;
823 } 823 }
824 } else { 824 } else {
825 retVal = it; 825 retVal = it;
826 } 826 }
827 } 827 }
828 return retVal; 828 return retVal;
829} 829}
830 830
831QPtrList<Journal> CalendarLocal::journals() 831QPtrList<Journal> CalendarLocal::journals()
832{ 832{
833 QPtrList<Journal> el; 833 QPtrList<Journal> el;
834 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 834 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
835 if ( it->calEnabled() ) el.append( it ); 835 if ( it->calEnabled() ) el.append( it );
836 return el; 836 return el;
837} 837}
838void CalendarLocal::setCalendarRemove( int id ) 838void CalendarLocal::setCalendarRemove( int id )
839{ 839{
840 840
841 { 841 {
842 QPtrList<Event> EventList = mEventList; 842 QPtrList<Event> EventList = mEventList;
843 Event * ev = EventList.first(); 843 Event * ev = EventList.first();
844 while ( ev ) { 844 while ( ev ) {
845 if ( ev->calID() == id ) 845 if ( ev->calID() == id )
846 deleteEvent( ev ); 846 deleteEvent( ev );
847 ev = EventList.next(); 847 ev = EventList.next();
848 } 848 }
849 } 849 }
850 { 850 {
851 851
852 QPtrList<Todo> TodoList = mTodoList; 852 QPtrList<Todo> TodoList = mTodoList;
853 Todo * ev = TodoList.first(); 853 Todo * ev = TodoList.first();
854 while ( ev ) { 854 while ( ev ) {
855 if ( ev->calID() == id ) 855 if ( ev->calID() == id )
856 deleteTodo( ev ); 856 deleteTodo( ev );
857 ev = TodoList.next(); 857 ev = TodoList.next();
858 } 858 }
859 } 859 }
860 { 860 {
861 QPtrList<Journal> JournalList = mJournalList; 861 QPtrList<Journal> JournalList = mJournalList;
862 Journal * ev = JournalList.first(); 862 Journal * ev = JournalList.first();
863 while ( ev ) { 863 while ( ev ) {
864 if ( ev->calID() == id ) 864 if ( ev->calID() == id )
865 deleteJournal( ev ); 865 deleteJournal( ev );
866 ev = JournalList.next(); 866 ev = JournalList.next();
867 } 867 }
868 } 868 }
869 869
870 if ( mUndoIncidence ) delete mUndoIncidence; 870 if ( mUndoIncidence ) delete mUndoIncidence;
871 mUndoIncidence = 0; 871 mUndoIncidence = 0;
872 872
873} 873}
874 874
875void CalendarLocal::setCalendarEnabled( int id, bool enable ) 875void CalendarLocal::setCalendarEnabled( int id, bool enable )
876{ 876{
877 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 877 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
878 if ( it->calID() == id ) it->setCalEnabled( enable ); 878 if ( it->calID() == id ) it->setCalEnabled( enable );
879 879
880 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 880 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
881 if ( it->calID() == id ) it->setCalEnabled( enable ); 881 if ( it->calID() == id ) it->setCalEnabled( enable );
882 882
883 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 883 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
884 if ( it->calID() == id ) it->setCalEnabled( enable ); 884 if ( it->calID() == id ) it->setCalEnabled( enable );
885 885
886} 886}
887 887
888void CalendarLocal::setReadOnly( int id, bool enable ) 888void CalendarLocal::setReadOnly( int id, bool enable )
889{ 889{
890 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 890 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
891 if ( it->calID() == id ) it->setReadOnly( enable ); 891 if ( it->calID() == id ) it->setReadOnly( enable );
892 892
893 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 893 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
894 if ( it->calID() == id ) it->setReadOnly( enable ); 894 if ( it->calID() == id ) it->setReadOnly( enable );
895 895
896 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 896 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
897 if ( it->calID() == id ) it->setReadOnly( enable ); 897 if ( it->calID() == id ) it->setReadOnly( enable );
898 898
899} 899}
900 900
901void CalendarLocal::setAlarmEnabled( int id, bool enable ) 901void CalendarLocal::setAlarmEnabled( int id, bool enable )
902{ 902{
903 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 903 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
904 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 904 if ( it->calID() == id ) it->setAlarmEnabled( enable );
905 905
906 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 906 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
907 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 907 if ( it->calID() == id ) it->setAlarmEnabled( enable );
908 908
909 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 909 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
910 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 910 if ( it->calID() == id ) it->setAlarmEnabled( enable );
911 reInitAlarmSettings(); 911 reInitAlarmSettings();
912 912
913} 913}
914void CalendarLocal::setDefaultCalendarEnabledOnly() 914void CalendarLocal::setDefaultCalendarEnabledOnly()
915{ 915{
916 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 916 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
917 it->setCalEnabled( it->calID() == mDefaultCalendar ); 917 it->setCalEnabled( it->calID() == mDefaultCalendar );
918 918
919 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 919 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
920 it->setCalEnabled( it->calID() == mDefaultCalendar); 920 it->setCalEnabled( it->calID() == mDefaultCalendar);
921 921
922 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 922 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
923 it->setCalEnabled( it->calID() == mDefaultCalendar); 923 it->setCalEnabled( it->calID() == mDefaultCalendar);
924 924
925} 925}