summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
-rw-r--r--korganizer/koagenda.cpp4
-rw-r--r--korganizer/koagendaitem.cpp2
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp2
-rw-r--r--korganizer/koeditorrecurrence.cpp172
-rw-r--r--korganizer/koeventviewer.cpp6
-rw-r--r--korganizer/kolistview.cpp4
-rw-r--r--korganizer/komonthview.cpp6
-rw-r--r--korganizer/kotodoeditor.cpp3
-rw-r--r--korganizer/kowhatsnextview.cpp4
11 files changed, 108 insertions, 99 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index a76f2ed..a9d42f0 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -3506,513 +3506,513 @@ void CalendarView::newSubTodo()
3506 Todo *todo = selectedTodo(); 3506 Todo *todo = selectedTodo();
3507 if ( todo ) newSubTodo( todo ); 3507 if ( todo ) newSubTodo( todo );
3508} 3508}
3509 3509
3510void CalendarView::newSubTodo(Todo *parentEvent) 3510void CalendarView::newSubTodo(Todo *parentEvent)
3511{ 3511{
3512 3512
3513 showTodoEditor(); 3513 showTodoEditor();
3514 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 3514 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
3515 mTodoEditor->exec(); 3515 mTodoEditor->exec();
3516 setActiveWindow(); 3516 setActiveWindow();
3517} 3517}
3518 3518
3519void CalendarView::newFloatingEvent() 3519void CalendarView::newFloatingEvent()
3520{ 3520{
3521 DateList tmpList = mNavigator->selectedDates(); 3521 DateList tmpList = mNavigator->selectedDates();
3522 QDate date = tmpList.first(); 3522 QDate date = tmpList.first();
3523 3523
3524 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 3524 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
3525 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 3525 QDateTime( date, QTime( 12, 0, 0 ) ), true );
3526} 3526}
3527 3527
3528 3528
3529void CalendarView::editEvent( Event *event ) 3529void CalendarView::editEvent( Event *event )
3530{ 3530{
3531 3531
3532 if ( !event ) return; 3532 if ( !event ) return;
3533 if ( event->isReadOnly() ) { 3533 if ( event->isReadOnly() ) {
3534 showEvent( event ); 3534 showEvent( event );
3535 return; 3535 return;
3536 } 3536 }
3537 showEventEditor(); 3537 showEventEditor();
3538 mEventEditor->editEvent( event , mFlagEditDescription); 3538 mEventEditor->editEvent( event , mFlagEditDescription);
3539 mEventEditor->exec(); 3539 mEventEditor->exec();
3540 setActiveWindow(); 3540 setActiveWindow();
3541 3541
3542} 3542}
3543void CalendarView::editJournal( Journal *jour ) 3543void CalendarView::editJournal( Journal *jour )
3544{ 3544{
3545 if ( !jour ) return; 3545 if ( !jour ) return;
3546 mDialogManager->hideSearchDialog(); 3546 mDialogManager->hideSearchDialog();
3547 mViewManager->showJournalView(); 3547 mViewManager->showJournalView();
3548 mNavigator->slotDaySelect( jour->dtStart().date() ); 3548 mNavigator->slotDaySelect( jour->dtStart().date() );
3549} 3549}
3550void CalendarView::editTodo( Todo *todo ) 3550void CalendarView::editTodo( Todo *todo )
3551{ 3551{
3552 if ( !todo ) return; 3552 if ( !todo ) return;
3553 3553
3554 if ( todo->isReadOnly() ) { 3554 if ( todo->isReadOnly() ) {
3555 showTodo( todo ); 3555 showTodo( todo );
3556 return; 3556 return;
3557 } 3557 }
3558 showTodoEditor(); 3558 showTodoEditor();
3559 mTodoEditor->editTodo( todo ,mFlagEditDescription); 3559 mTodoEditor->editTodo( todo ,mFlagEditDescription);
3560 mTodoEditor->exec(); 3560 mTodoEditor->exec();
3561 setActiveWindow(); 3561 setActiveWindow();
3562 3562
3563} 3563}
3564 3564
3565KOEventViewerDialog* CalendarView::getEventViewerDialog() 3565KOEventViewerDialog* CalendarView::getEventViewerDialog()
3566{ 3566{
3567 if ( !mEventViewerDialog ) { 3567 if ( !mEventViewerDialog ) {
3568 mEventViewerDialog = new KOEventViewerDialog(0); 3568 mEventViewerDialog = new KOEventViewerDialog(0);
3569 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3569 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3570 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3570 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3571 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3571 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3572 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3572 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3573 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3573 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3574 viewManager(), SLOT( showAgendaView( bool ) ) ); 3574 viewManager(), SLOT( showAgendaView( bool ) ) );
3575 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3575 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3576 this, SLOT( slotViewerClosed() ) ); 3576 this, SLOT( slotViewerClosed() ) );
3577 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3577 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3578 this, SLOT( todoChanged(Todo *) ) ); 3578 this, SLOT( todoChanged(Todo *) ) );
3579 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 3579 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
3580 mEventViewerDialog->resize( 640, 480 ); 3580 mEventViewerDialog->resize( 640, 480 );
3581 3581
3582 } 3582 }
3583 return mEventViewerDialog; 3583 return mEventViewerDialog;
3584} 3584}
3585void CalendarView::showEvent(Event *event) 3585void CalendarView::showEvent(Event *event)
3586{ 3586{
3587 getEventViewerDialog()->setEvent(event); 3587 getEventViewerDialog()->setEvent(event);
3588 getEventViewerDialog()->showMe(); 3588 getEventViewerDialog()->showMe();
3589} 3589}
3590 3590
3591void CalendarView::showTodo(Todo *event) 3591void CalendarView::showTodo(Todo *event)
3592{ 3592{
3593 getEventViewerDialog()->setTodo(event); 3593 getEventViewerDialog()->setTodo(event);
3594 getEventViewerDialog()->showMe(); 3594 getEventViewerDialog()->showMe();
3595} 3595}
3596void CalendarView::showJournal( Journal *jour ) 3596void CalendarView::showJournal( Journal *jour )
3597{ 3597{
3598 getEventViewerDialog()->setJournal(jour); 3598 getEventViewerDialog()->setJournal(jour);
3599 getEventViewerDialog()->showMe(); 3599 getEventViewerDialog()->showMe();
3600 3600
3601} 3601}
3602// void CalendarView::todoModified (Todo *event, int changed) 3602// void CalendarView::todoModified (Todo *event, int changed)
3603// { 3603// {
3604// // if (mDialogList.find (event) != mDialogList.end ()) { 3604// // if (mDialogList.find (event) != mDialogList.end ()) {
3605// // kdDebug() << "Todo modified and open" << endl; 3605// // kdDebug() << "Todo modified and open" << endl;
3606// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3606// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3607// // temp->modified (changed); 3607// // temp->modified (changed);
3608 3608
3609// // } 3609// // }
3610 3610
3611// mViewManager->updateView(); 3611// mViewManager->updateView();
3612// } 3612// }
3613 3613
3614void CalendarView::appointment_show() 3614void CalendarView::appointment_show()
3615{ 3615{
3616 Event *anEvent = 0; 3616 Event *anEvent = 0;
3617 3617
3618 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3618 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3619 3619
3620 if (mViewManager->currentView()->isEventView()) { 3620 if (mViewManager->currentView()->isEventView()) {
3621 if ( incidence && incidence->typeID() == eventID ) { 3621 if ( incidence && incidence->typeID() == eventID ) {
3622 anEvent = static_cast<Event *>(incidence); 3622 anEvent = static_cast<Event *>(incidence);
3623 } 3623 }
3624 } 3624 }
3625 3625
3626 if (!anEvent) { 3626 if (!anEvent) {
3627 KNotifyClient::beep(); 3627 KNotifyClient::beep();
3628 return; 3628 return;
3629 } 3629 }
3630 3630
3631 showEvent(anEvent); 3631 showEvent(anEvent);
3632} 3632}
3633 3633
3634void CalendarView::appointment_edit() 3634void CalendarView::appointment_edit()
3635{ 3635{
3636 Event *anEvent = 0; 3636 Event *anEvent = 0;
3637 3637
3638 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3638 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3639 3639
3640 if (mViewManager->currentView()->isEventView()) { 3640 if (mViewManager->currentView()->isEventView()) {
3641 if ( incidence && incidence->typeID() == eventID ) { 3641 if ( incidence && incidence->typeID() == eventID ) {
3642 anEvent = static_cast<Event *>(incidence); 3642 anEvent = static_cast<Event *>(incidence);
3643 } 3643 }
3644 } 3644 }
3645 3645
3646 if (!anEvent) { 3646 if (!anEvent) {
3647 KNotifyClient::beep(); 3647 KNotifyClient::beep();
3648 return; 3648 return;
3649 } 3649 }
3650 3650
3651 editEvent(anEvent); 3651 editEvent(anEvent);
3652} 3652}
3653 3653
3654void CalendarView::appointment_delete() 3654void CalendarView::appointment_delete()
3655{ 3655{
3656 Event *anEvent = 0; 3656 Event *anEvent = 0;
3657 3657
3658 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3658 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3659 3659
3660 if (mViewManager->currentView()->isEventView()) { 3660 if (mViewManager->currentView()->isEventView()) {
3661 if ( incidence && incidence->typeID() == eventID ) { 3661 if ( incidence && incidence->typeID() == eventID ) {
3662 anEvent = static_cast<Event *>(incidence); 3662 anEvent = static_cast<Event *>(incidence);
3663 } 3663 }
3664 } 3664 }
3665 3665
3666 if (!anEvent) { 3666 if (!anEvent) {
3667 KNotifyClient::beep(); 3667 KNotifyClient::beep();
3668 return; 3668 return;
3669 } 3669 }
3670 3670
3671 deleteEvent(anEvent); 3671 deleteEvent(anEvent);
3672} 3672}
3673 3673
3674void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3674void CalendarView::todo_resub( Todo * parent, Todo * sub )
3675{ 3675{
3676 if (!sub) return; 3676 if (!sub) return;
3677 if ( sub->relatedTo() == parent ) 3677 if ( sub->relatedTo() == parent )
3678 return; 3678 return;
3679 sub->setRelatedTo(parent); 3679 sub->setRelatedTo(parent);
3680 sub->updated(); 3680 sub->updated();
3681 setModified(true); 3681 setModified(true);
3682 updateView(); 3682 updateView();
3683} 3683}
3684void CalendarView::todo_unsub(Todo *anTodo ) 3684void CalendarView::todo_unsub(Todo *anTodo )
3685{ 3685{
3686 todo_resub( 0, anTodo ); 3686 todo_resub( 0, anTodo );
3687} 3687}
3688 3688
3689void CalendarView::deleteTodo(Todo *todo) 3689void CalendarView::deleteTodo(Todo *todo)
3690{ 3690{
3691 if (!todo) { 3691 if (!todo) {
3692 KNotifyClient::beep(); 3692 KNotifyClient::beep();
3693 return; 3693 return;
3694 } 3694 }
3695 if (KOPrefs::instance()->mConfirm) { 3695 if (KOPrefs::instance()->mConfirm) {
3696 QString text = KGlobal::formatMessage ( todo->summary(),0 ); 3696 QString text = KGlobal::formatMessage ( todo->summary(),0 );
3697 if (!todo->relations().isEmpty()) { 3697 if (!todo->relations().isEmpty()) {
3698 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3698 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3699 3699
3700 } 3700 }
3701 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) { 3701 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) {
3702 case KMessageBox::Continue: // OK 3702 case KMessageBox::Continue: // OK
3703 bool deleteT = false; 3703 bool deleteT = false;
3704 if (!todo->relations().isEmpty()) { 3704 if (!todo->relations().isEmpty()) {
3705 deleteT = removeCompletedSubTodos( todo ); 3705 deleteT = removeCompletedSubTodos( todo );
3706 } 3706 }
3707 // deleteT == true: todo already deleted in removeCompletedSubTodos 3707 // deleteT == true: todo already deleted in removeCompletedSubTodos
3708 if ( !deleteT ) { 3708 if ( !deleteT ) {
3709 checkExternalId( todo ); 3709 checkExternalId( todo );
3710 calendar()->deleteTodo(todo); 3710 calendar()->deleteTodo(todo);
3711 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3711 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3712 updateView(); 3712 updateView();
3713 } 3713 }
3714 break; 3714 break;
3715 } // switch 3715 } // switch
3716 } else { 3716 } else {
3717 checkExternalId( todo ); 3717 checkExternalId( todo );
3718 mCalendar->deleteTodo(todo); 3718 mCalendar->deleteTodo(todo);
3719 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3719 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3720 updateView(); 3720 updateView();
3721 } 3721 }
3722 3722
3723 emit updateSearchDialog(); 3723 emit updateSearchDialog();
3724} 3724}
3725void CalendarView::deleteJournal(Journal *jour) 3725void CalendarView::deleteJournal(Journal *jour)
3726{ 3726{
3727 if (!jour) { 3727 if (!jour) {
3728 KNotifyClient::beep(); 3728 KNotifyClient::beep();
3729 return; 3729 return;
3730 } 3730 }
3731 if (KOPrefs::instance()->mConfirm) { 3731 if (KOPrefs::instance()->mConfirm) {
3732 3732
3733 QString des; 3733 QString des;
3734 if ( !jour->summary().isEmpty() ) { 3734 if ( !jour->summary().isEmpty() ) {
3735 des = jour->summary(); 3735 des = jour->summary();
3736 } else { 3736 } else {
3737 des = jour->description().left(30); 3737 des = jour->description().left(30);
3738 des = des.simplifyWhiteSpace (); 3738 des = des.simplifyWhiteSpace ();
3739 des.replace (QRegExp ("\\n"),"" ); 3739 des.replace (QRegExp ("\\n"),"" );
3740 des.replace (QRegExp ("\\r"),"" ); 3740 des.replace (QRegExp ("\\r"),"" );
3741 } 3741 }
3742 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) { 3742 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) {
3743 case KMessageBox::Continue: // OK 3743 case KMessageBox::Continue: // OK
3744 calendar()->deleteJournal(jour); 3744 calendar()->deleteJournal(jour);
3745 updateView(); 3745 updateView();
3746 break; 3746 break;
3747 } // switch 3747 } // switch
3748 } else { 3748 } else {
3749 calendar()->deleteJournal(jour);; 3749 calendar()->deleteJournal(jour);;
3750 updateView(); 3750 updateView();
3751 } 3751 }
3752 emit updateSearchDialog(); 3752 emit updateSearchDialog();
3753} 3753}
3754 3754
3755void CalendarView::deleteEvent(Event *anEvent) 3755void CalendarView::deleteEvent(Event *anEvent)
3756{ 3756{
3757 if (!anEvent) { 3757 if (!anEvent) {
3758 KNotifyClient::beep(); 3758 KNotifyClient::beep();
3759 return; 3759 return;
3760 } 3760 }
3761 3761
3762 if (anEvent->recurrence()->doesRecur()) { 3762 if (anEvent->doesRecur()) {
3763 QDate itemDate = mViewManager->currentSelectionDate(); 3763 QDate itemDate = mViewManager->currentSelectionDate();
3764 int km; 3764 int km;
3765 if (!itemDate.isValid()) { 3765 if (!itemDate.isValid()) {
3766 //kdDebug() << "Date Not Valid" << endl; 3766 //kdDebug() << "Date Not Valid" << endl;
3767 if (KOPrefs::instance()->mConfirm) { 3767 if (KOPrefs::instance()->mConfirm) {
3768 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 3768 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3769 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3769 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3770 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3770 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3771 if ( km == KMessageBox::Continue ) 3771 if ( km == KMessageBox::Continue )
3772 km = KMessageBox::No; // No = all below 3772 km = KMessageBox::No; // No = all below
3773 } else 3773 } else
3774 km = KMessageBox::No; 3774 km = KMessageBox::No;
3775 } else { 3775 } else {
3776 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 3776 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3777 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3777 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3778 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3778 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3779 i18n("KO/Pi Confirmation"),i18n("Current"), 3779 i18n("KO/Pi Confirmation"),i18n("Current"),
3780 i18n("All")); 3780 i18n("All"));
3781 } 3781 }
3782 switch(km) { 3782 switch(km) {
3783 3783
3784 case KMessageBox::No: // Continue // all 3784 case KMessageBox::No: // Continue // all
3785 //qDebug("KMessageBox::No "); 3785 //qDebug("KMessageBox::No ");
3786 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3786 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3787 schedule(Scheduler::Cancel,anEvent); 3787 schedule(Scheduler::Cancel,anEvent);
3788 3788
3789 checkExternalId( anEvent); 3789 checkExternalId( anEvent);
3790 mCalendar->deleteEvent(anEvent); 3790 mCalendar->deleteEvent(anEvent);
3791 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3791 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3792 break; 3792 break;
3793 3793
3794 // Disabled because it does not work 3794 // Disabled because it does not work
3795 //#if 0 3795 //#if 0
3796 case KMessageBox::Yes: // just this one 3796 case KMessageBox::Yes: // just this one
3797 //QDate qd = mNavigator->selectedDates().first(); 3797 //QDate qd = mNavigator->selectedDates().first();
3798 //if (!qd.isValid()) { 3798 //if (!qd.isValid()) {
3799 // kdDebug() << "no date selected, or invalid date" << endl; 3799 // kdDebug() << "no date selected, or invalid date" << endl;
3800 // KNotifyClient::beep(); 3800 // KNotifyClient::beep();
3801 // return; 3801 // return;
3802 //} 3802 //}
3803 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3803 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3804 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3804 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3805 anEvent->addExDate(itemDate); 3805 anEvent->addExDate(itemDate);
3806 int duration = anEvent->recurrence()->duration(); 3806 int duration = anEvent->recurrence()->duration();
3807 if ( duration > 0 ) { 3807 if ( duration > 0 ) {
3808 anEvent->recurrence()->setDuration( duration - 1 ); 3808 anEvent->recurrence()->setDuration( duration - 1 );
3809 } 3809 }
3810 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3810 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3811 } 3811 }
3812 break; 3812 break;
3813 //#endif 3813 //#endif
3814 } // switch 3814 } // switch
3815 } else { 3815 } else {
3816 if (KOPrefs::instance()->mConfirm) { 3816 if (KOPrefs::instance()->mConfirm) {
3817 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 3817 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3818 i18n("\nAre you sure you want\nto delete this event?"), 3818 i18n("\nAre you sure you want\nto delete this event?"),
3819 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3819 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3820 case KMessageBox::Continue: // OK 3820 case KMessageBox::Continue: // OK
3821 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3821 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3822 schedule(Scheduler::Cancel,anEvent); 3822 schedule(Scheduler::Cancel,anEvent);
3823 checkExternalId( anEvent); 3823 checkExternalId( anEvent);
3824 mCalendar->deleteEvent(anEvent); 3824 mCalendar->deleteEvent(anEvent);
3825 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3825 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3826 break; 3826 break;
3827 } // switch 3827 } // switch
3828 } else { 3828 } else {
3829 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3829 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3830 schedule(Scheduler::Cancel,anEvent); 3830 schedule(Scheduler::Cancel,anEvent);
3831 checkExternalId( anEvent); 3831 checkExternalId( anEvent);
3832 mCalendar->deleteEvent(anEvent); 3832 mCalendar->deleteEvent(anEvent);
3833 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3833 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3834 } 3834 }
3835 } // if-else 3835 } // if-else
3836 emit updateSearchDialog(); 3836 emit updateSearchDialog();
3837} 3837}
3838 3838
3839bool CalendarView::deleteEvent(const QString &uid) 3839bool CalendarView::deleteEvent(const QString &uid)
3840{ 3840{
3841 Event *ev = mCalendar->event(uid); 3841 Event *ev = mCalendar->event(uid);
3842 if (ev) { 3842 if (ev) {
3843 deleteEvent(ev); 3843 deleteEvent(ev);
3844 return true; 3844 return true;
3845 } else { 3845 } else {
3846 return false; 3846 return false;
3847 } 3847 }
3848} 3848}
3849 3849
3850/*****************************************************************************/ 3850/*****************************************************************************/
3851 3851
3852void CalendarView::action_mail() 3852void CalendarView::action_mail()
3853{ 3853{
3854#ifndef KORG_NOMAIL 3854#ifndef KORG_NOMAIL
3855 KOMailClient mailClient; 3855 KOMailClient mailClient;
3856 3856
3857 Incidence *incidence = currentSelection(); 3857 Incidence *incidence = currentSelection();
3858 3858
3859 if (!incidence) { 3859 if (!incidence) {
3860 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3860 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3861 return; 3861 return;
3862 } 3862 }
3863 if(incidence->attendeeCount() == 0 ) { 3863 if(incidence->attendeeCount() == 0 ) {
3864 KMessageBox::sorry(this, 3864 KMessageBox::sorry(this,
3865 i18n("Can't generate mail:\nNo attendees defined.\n")); 3865 i18n("Can't generate mail:\nNo attendees defined.\n"));
3866 return; 3866 return;
3867 } 3867 }
3868 3868
3869 CalendarLocal cal_tmp; 3869 CalendarLocal cal_tmp;
3870 Event *event = 0; 3870 Event *event = 0;
3871 Event *ev = 0; 3871 Event *ev = 0;
3872 if ( incidence && incidence->typeID() == eventID ) { 3872 if ( incidence && incidence->typeID() == eventID ) {
3873 event = static_cast<Event *>(incidence); 3873 event = static_cast<Event *>(incidence);
3874 ev = new Event(*event); 3874 ev = new Event(*event);
3875 cal_tmp.addEvent(ev); 3875 cal_tmp.addEvent(ev);
3876 } 3876 }
3877 ICalFormat mForm(); 3877 ICalFormat mForm();
3878 QString attachment = mForm.toString( &cal_tmp ); 3878 QString attachment = mForm.toString( &cal_tmp );
3879 if (ev) delete(ev); 3879 if (ev) delete(ev);
3880 3880
3881 mailClient.mailAttendees(currentSelection(), attachment); 3881 mailClient.mailAttendees(currentSelection(), attachment);
3882 3882
3883#endif 3883#endif
3884 3884
3885#if 0 3885#if 0
3886 Event *anEvent = 0; 3886 Event *anEvent = 0;
3887 if (mViewManager->currentView()->isEventView()) { 3887 if (mViewManager->currentView()->isEventView()) {
3888 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3888 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3889 } 3889 }
3890 3890
3891 if (!anEvent) { 3891 if (!anEvent) {
3892 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3892 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3893 return; 3893 return;
3894 } 3894 }
3895 if(anEvent->attendeeCount() == 0 ) { 3895 if(anEvent->attendeeCount() == 0 ) {
3896 KMessageBox::sorry(this, 3896 KMessageBox::sorry(this,
3897 i18n("Can't generate mail:\nNo attendees defined.\n")); 3897 i18n("Can't generate mail:\nNo attendees defined.\n"));
3898 return; 3898 return;
3899 } 3899 }
3900 3900
3901 mailobject.emailEvent(anEvent); 3901 mailobject.emailEvent(anEvent);
3902#endif 3902#endif
3903} 3903}
3904 3904
3905 3905
3906void CalendarView::schedule_publish(Incidence *incidence) 3906void CalendarView::schedule_publish(Incidence *incidence)
3907{ 3907{
3908 Event *event = 0; 3908 Event *event = 0;
3909 Todo *todo = 0; 3909 Todo *todo = 0;
3910 3910
3911 if (incidence == 0) { 3911 if (incidence == 0) {
3912 incidence = mViewManager->currentView()->selectedIncidences().first(); 3912 incidence = mViewManager->currentView()->selectedIncidences().first();
3913 if (incidence == 0) { 3913 if (incidence == 0) {
3914 incidence = mTodoList->selectedIncidences().first(); 3914 incidence = mTodoList->selectedIncidences().first();
3915 } 3915 }
3916 } 3916 }
3917 if ( incidence && incidence->typeID() == eventID ) { 3917 if ( incidence && incidence->typeID() == eventID ) {
3918 event = static_cast<Event *>(incidence); 3918 event = static_cast<Event *>(incidence);
3919 } else { 3919 } else {
3920 if ( incidence && incidence->typeID() == todoID ) { 3920 if ( incidence && incidence->typeID() == todoID ) {
3921 todo = static_cast<Todo *>(incidence); 3921 todo = static_cast<Todo *>(incidence);
3922 } 3922 }
3923 } 3923 }
3924 3924
3925 if (!event && !todo) { 3925 if (!event && !todo) {
3926 KMessageBox::sorry(this,i18n("No event selected.")); 3926 KMessageBox::sorry(this,i18n("No event selected."));
3927 return; 3927 return;
3928 } 3928 }
3929 3929
3930 PublishDialog *publishdlg = new PublishDialog(); 3930 PublishDialog *publishdlg = new PublishDialog();
3931 if (incidence->attendeeCount()>0) { 3931 if (incidence->attendeeCount()>0) {
3932 QPtrList<Attendee> attendees = incidence->attendees(); 3932 QPtrList<Attendee> attendees = incidence->attendees();
3933 attendees.first(); 3933 attendees.first();
3934 while ( attendees.current()!=0 ) { 3934 while ( attendees.current()!=0 ) {
3935 publishdlg->addAttendee(attendees.current()); 3935 publishdlg->addAttendee(attendees.current());
3936 attendees.next(); 3936 attendees.next();
3937 } 3937 }
3938 } 3938 }
3939 bool send = true; 3939 bool send = true;
3940 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3940 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3941 if ( publishdlg->exec() != QDialog::Accepted ) 3941 if ( publishdlg->exec() != QDialog::Accepted )
3942 send = false; 3942 send = false;
3943 } 3943 }
3944 if ( send ) { 3944 if ( send ) {
3945 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3945 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3946 if ( event ) { 3946 if ( event ) {
3947 Event *ev = new Event(*event); 3947 Event *ev = new Event(*event);
3948 ev->registerObserver(0); 3948 ev->registerObserver(0);
3949 ev->clearAttendees(); 3949 ev->clearAttendees();
3950 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3950 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3951 delete(ev); 3951 delete(ev);
3952 } 3952 }
3953 } else { 3953 } else {
3954 if ( todo ) { 3954 if ( todo ) {
3955 Todo *ev = new Todo(*todo); 3955 Todo *ev = new Todo(*todo);
3956 ev->registerObserver(0); 3956 ev->registerObserver(0);
3957 ev->clearAttendees(); 3957 ev->clearAttendees();
3958 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3958 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3959 delete(ev); 3959 delete(ev);
3960 } 3960 }
3961 } 3961 }
3962 } 3962 }
3963 } 3963 }
3964 delete publishdlg; 3964 delete publishdlg;
3965} 3965}
3966 3966
3967void CalendarView::schedule_request(Incidence *incidence) 3967void CalendarView::schedule_request(Incidence *incidence)
3968{ 3968{
3969 schedule(Scheduler::Request,incidence); 3969 schedule(Scheduler::Request,incidence);
3970} 3970}
3971 3971
3972void CalendarView::schedule_refresh(Incidence *incidence) 3972void CalendarView::schedule_refresh(Incidence *incidence)
3973{ 3973{
3974 schedule(Scheduler::Refresh,incidence); 3974 schedule(Scheduler::Refresh,incidence);
3975} 3975}
3976 3976
3977void CalendarView::schedule_cancel(Incidence *incidence) 3977void CalendarView::schedule_cancel(Incidence *incidence)
3978{ 3978{
3979 schedule(Scheduler::Cancel,incidence); 3979 schedule(Scheduler::Cancel,incidence);
3980} 3980}
3981 3981
3982void CalendarView::schedule_add(Incidence *incidence) 3982void CalendarView::schedule_add(Incidence *incidence)
3983{ 3983{
3984 schedule(Scheduler::Add,incidence); 3984 schedule(Scheduler::Add,incidence);
3985} 3985}
3986 3986
3987void CalendarView::schedule_reply(Incidence *incidence) 3987void CalendarView::schedule_reply(Incidence *incidence)
3988{ 3988{
3989 schedule(Scheduler::Reply,incidence); 3989 schedule(Scheduler::Reply,incidence);
3990} 3990}
3991 3991
3992void CalendarView::schedule_counter(Incidence *incidence) 3992void CalendarView::schedule_counter(Incidence *incidence)
3993{ 3993{
3994 schedule(Scheduler::Counter,incidence); 3994 schedule(Scheduler::Counter,incidence);
3995} 3995}
3996 3996
3997void CalendarView::schedule_declinecounter(Incidence *incidence) 3997void CalendarView::schedule_declinecounter(Incidence *incidence)
3998{ 3998{
3999 schedule(Scheduler::Declinecounter,incidence); 3999 schedule(Scheduler::Declinecounter,incidence);
4000} 4000}
4001 4001
4002void CalendarView::schedule_publish_freebusy(int daysToPublish) 4002void CalendarView::schedule_publish_freebusy(int daysToPublish)
4003{ 4003{
4004 QDateTime start = QDateTime::currentDateTime(); 4004 QDateTime start = QDateTime::currentDateTime();
4005 QDateTime end = start.addDays(daysToPublish); 4005 QDateTime end = start.addDays(daysToPublish);
4006 4006
4007 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 4007 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
4008 freebusy->setOrganizer(KOPrefs::instance()->email()); 4008 freebusy->setOrganizer(KOPrefs::instance()->email());
4009 4009
4010 4010
4011 PublishDialog *publishdlg = new PublishDialog(); 4011 PublishDialog *publishdlg = new PublishDialog();
4012 if ( publishdlg->exec() == QDialog::Accepted ) { 4012 if ( publishdlg->exec() == QDialog::Accepted ) {
4013 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4013 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4014 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 4014 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
4015 delete(freebusy); 4015 delete(freebusy);
4016 } 4016 }
4017 } 4017 }
4018 delete publishdlg; 4018 delete publishdlg;
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 0dd5ef5..c738f7e 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -326,933 +326,933 @@ void KOAgenda::init()
326void KOAgenda::shrinkPixmap() 326void KOAgenda::shrinkPixmap()
327{ 327{
328 mPaintPixmap.resize( 20,20); 328 mPaintPixmap.resize( 20,20);
329 mInvalidPixmap = true; 329 mInvalidPixmap = true;
330} 330}
331void KOAgenda::slotContentMove(int,int) 331void KOAgenda::slotContentMove(int,int)
332{ 332{
333 emit sendPing(); 333 emit sendPing();
334 if ( mActionType == NOP ) 334 if ( mActionType == NOP )
335 slotClearSelection(); 335 slotClearSelection();
336 if ( mSelectedItem && !mActionItem ) { 336 if ( mSelectedItem && !mActionItem ) {
337 deselectItem(); 337 deselectItem();
338 emit incidenceSelected( 0 ); 338 emit incidenceSelected( 0 );
339 } 339 }
340} 340}
341void KOAgenda::clear() 341void KOAgenda::clear()
342{ 342{
343 KOAgendaItem *item; 343 KOAgendaItem *item;
344 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 344 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
345 mUnusedItems.append( item ); 345 mUnusedItems.append( item );
346 //item->hide(); 346 //item->hide();
347 } 347 }
348 mItems.clear(); 348 mItems.clear();
349 mSelectedItem = 0; 349 mSelectedItem = 0;
350 clearSelection(); 350 clearSelection();
351} 351}
352 352
353void KOAgenda::clearSelection() 353void KOAgenda::clearSelection()
354{ 354{
355 mSelectionCellX = 0; 355 mSelectionCellX = 0;
356 mSelectionYTop = 0; 356 mSelectionYTop = 0;
357 mSelectionHeight = 0; 357 mSelectionHeight = 0;
358} 358}
359 359
360void KOAgenda::marcus_bains() 360void KOAgenda::marcus_bains()
361{ 361{
362 if(mMarcusBains) mMarcusBains->updateLocation(true); 362 if(mMarcusBains) mMarcusBains->updateLocation(true);
363} 363}
364 364
365 365
366void KOAgenda::changeColumns(int columns) 366void KOAgenda::changeColumns(int columns)
367{ 367{
368 if (columns == 0) { 368 if (columns == 0) {
369 qDebug("KOAgenda::changeColumns() called with argument 0 "); 369 qDebug("KOAgenda::changeColumns() called with argument 0 ");
370 return; 370 return;
371 } 371 }
372 clear(); 372 clear();
373 mColumns = columns; 373 mColumns = columns;
374 computeSizes(); 374 computeSizes();
375} 375}
376 376
377/* 377/*
378 This is the eventFilter function, which gets all events from the KOAgendaItems 378 This is the eventFilter function, which gets all events from the KOAgendaItems
379 contained in the agenda. It has to handle moving and resizing for all items. 379 contained in the agenda. It has to handle moving and resizing for all items.
380*/ 380*/
381bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) 381bool KOAgenda::eventFilter ( QObject *object, QEvent *event )
382{ 382{
383 // kdDebug() << "KOAgenda::eventFilter" << endl; 383 // kdDebug() << "KOAgenda::eventFilter" << endl;
384 switch(event->type()) { 384 switch(event->type()) {
385 case QEvent::MouseButtonPress: 385 case QEvent::MouseButtonPress:
386 case QEvent::MouseButtonDblClick: 386 case QEvent::MouseButtonDblClick:
387 case QEvent::MouseButtonRelease: 387 case QEvent::MouseButtonRelease:
388 case QEvent::MouseMove: 388 case QEvent::MouseMove:
389 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event)); 389 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event));
390 390
391 case (QEvent::Leave): 391 case (QEvent::Leave):
392 if (!mActionItem) 392 if (!mActionItem)
393 setCursor(arrowCursor); 393 setCursor(arrowCursor);
394 return true; 394 return true;
395 395
396 default: 396 default:
397 return QScrollView::eventFilter(object,event); 397 return QScrollView::eventFilter(object,event);
398 } 398 }
399} 399}
400void KOAgenda::popupMenu() 400void KOAgenda::popupMenu()
401{ 401{
402 mPopupTimer->stop(); 402 mPopupTimer->stop();
403 if ( mPopupKind == 1 || mPopupKind == 3 ) { 403 if ( mPopupKind == 1 || mPopupKind == 3 ) {
404 if (mActionItem ) { 404 if (mActionItem ) {
405 endItemAction(); 405 endItemAction();
406 } 406 }
407 mLeftMouseDown = false; // no more leftMouse computation 407 mLeftMouseDown = false; // no more leftMouse computation
408 if (mPopupItem) { 408 if (mPopupItem) {
409 //mClickedItem = mPopupItem; 409 //mClickedItem = mPopupItem;
410 selectItem(mPopupItem); 410 selectItem(mPopupItem);
411 if ( mAllAgendaPopup && KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 1 ) 411 if ( mAllAgendaPopup && KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 1 )
412 mAllAgendaPopup->installEventFilter( this ); 412 mAllAgendaPopup->installEventFilter( this );
413 emit showIncidencePopupSignal(mPopupItem->incidence()); 413 emit showIncidencePopupSignal(mPopupItem->incidence());
414 414
415 } 415 }
416 } else if ( mPopupKind == 2 || mPopupKind == 4 ) { 416 } else if ( mPopupKind == 2 || mPopupKind == 4 ) {
417 if ( mLeftMouseDown ) { // we have a simulated right click - clear left mouse action 417 if ( mLeftMouseDown ) { // we have a simulated right click - clear left mouse action
418 endSelectAction( false ); // do not emit new event signal 418 endSelectAction( false ); // do not emit new event signal
419 mLeftMouseDown = false; // no more leftMouse computation 419 mLeftMouseDown = false; // no more leftMouse computation
420 } 420 }
421 if ( KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 2 ) 421 if ( KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 2 )
422 mNewItemPopup->installEventFilter( this ); 422 mNewItemPopup->installEventFilter( this );
423 mNewItemPopup->popup( mPopupPos); 423 mNewItemPopup->popup( mPopupPos);
424 424
425 } 425 }
426 mLeftMouseDown = false; 426 mLeftMouseDown = false;
427 mPopupItem = 0; 427 mPopupItem = 0;
428 mPopupKind = 0; 428 mPopupKind = 0;
429} 429}
430void KOAgenda::categoryChanged(Incidence * inc) 430void KOAgenda::categoryChanged(Incidence * inc)
431{ 431{
432 KOAgendaItem *item; 432 KOAgendaItem *item;
433 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 433 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
434 if ( item->incidence() == inc ) { 434 if ( item->incidence() == inc ) {
435 item->initColor (); 435 item->initColor ();
436 item->updateItem(); 436 item->updateItem();
437 } 437 }
438 } 438 }
439} 439}
440bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) 440bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
441{ 441{
442 442
443 if ( mInvalidPixmap ) { 443 if ( mInvalidPixmap ) {
444 mInvalidPixmap = false; 444 mInvalidPixmap = false;
445 qDebug("KO: Upsizing Pixmaps "); 445 qDebug("KO: Upsizing Pixmaps ");
446 computeSizes(); 446 computeSizes();
447 emit updateViewSignal(); 447 emit updateViewSignal();
448 return true; 448 return true;
449 } 449 }
450 emit sendPing(); 450 emit sendPing();
451 static int startX = 0; 451 static int startX = 0;
452 static int startY = 0; 452 static int startY = 0;
453 int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 7 : 9 ); 453 int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 7 : 9 );
454 static bool blockMoving = true; 454 static bool blockMoving = true;
455 455
456 //qDebug("KOAgenda::eventFilter_mous "); 456 //qDebug("KOAgenda::eventFilter_mous ");
457 if ( object == mNewItemPopup ) { 457 if ( object == mNewItemPopup ) {
458 //qDebug("mNewItemPopup "); 458 //qDebug("mNewItemPopup ");
459 if ( me->type() == QEvent::MouseButtonRelease ) { 459 if ( me->type() == QEvent::MouseButtonRelease ) {
460 mNewItemPopup->removeEventFilter( this ); 460 mNewItemPopup->removeEventFilter( this );
461 int dX = me->globalPos().x() - mPopupPos.x();; 461 int dX = me->globalPos().x() - mPopupPos.x();;
462 if ( dX < 0 ) 462 if ( dX < 0 )
463 dX = -dX; 463 dX = -dX;
464 int dY = me->globalPos().y() - mPopupPos.y(); 464 int dY = me->globalPos().y() - mPopupPos.y();
465 if ( dY < 0 ) 465 if ( dY < 0 )
466 dY = -dY; 466 dY = -dY;
467 if ( dX > blockmoveDist || dY > blockmoveDist ) { 467 if ( dX > blockmoveDist || dY > blockmoveDist ) {
468 mNewItemPopup->hide(); 468 mNewItemPopup->hide();
469 } 469 }
470 } 470 }
471 return true; 471 return true;
472 } 472 }
473 if ( object == mAllAgendaPopup ) { 473 if ( object == mAllAgendaPopup ) {
474 //qDebug(" mAllAgendaPopup "); 474 //qDebug(" mAllAgendaPopup ");
475 if ( me->type() == QEvent::MouseButtonRelease ) { 475 if ( me->type() == QEvent::MouseButtonRelease ) {
476 mAllAgendaPopup->removeEventFilter( this ); 476 mAllAgendaPopup->removeEventFilter( this );
477 int dX = me->globalPos().x() - mPopupPos.x();; 477 int dX = me->globalPos().x() - mPopupPos.x();;
478 if ( dX < 0 ) 478 if ( dX < 0 )
479 dX = -dX; 479 dX = -dX;
480 int dY = me->globalPos().y() - mPopupPos.y(); 480 int dY = me->globalPos().y() - mPopupPos.y();
481 if ( dY < 0 ) 481 if ( dY < 0 )
482 dY = -dY; 482 dY = -dY;
483 if ( dX > blockmoveDist || dY > blockmoveDist ) { 483 if ( dX > blockmoveDist || dY > blockmoveDist ) {
484 mAllAgendaPopup->hide(); 484 mAllAgendaPopup->hide();
485 } 485 }
486 } 486 }
487 return true; 487 return true;
488 } 488 }
489 QPoint viewportPos; 489 QPoint viewportPos;
490 if (object != viewport()) { 490 if (object != viewport()) {
491 blockmoveDist = blockmoveDist*2; 491 blockmoveDist = blockmoveDist*2;
492 viewportPos = ((QWidget *)object)->mapToParent(me->pos()); 492 viewportPos = ((QWidget *)object)->mapToParent(me->pos());
493 } else { 493 } else {
494 viewportPos = me->pos(); 494 viewportPos = me->pos();
495 } 495 }
496 bool objIsNotViewport = (object != viewport()); 496 bool objIsNotViewport = (object != viewport());
497 bool leftButt = false; 497 bool leftButt = false;
498#ifdef DESKTOP_VERSION 498#ifdef DESKTOP_VERSION
499 leftButt = (me->button() == LeftButton); 499 leftButt = (me->button() == LeftButton);
500#endif 500#endif
501 switch (me->type()) { 501 switch (me->type()) {
502 case QEvent::MouseButtonPress: 502 case QEvent::MouseButtonPress:
503 if (me->button() == LeftButton) { 503 if (me->button() == LeftButton) {
504 mPopupTimer->start( 600 ); 504 mPopupTimer->start( 600 );
505 mLeftMouseDown = true; 505 mLeftMouseDown = true;
506 } 506 }
507 blockMoving = true; 507 blockMoving = true;
508 startX = viewportPos.x(); 508 startX = viewportPos.x();
509 startY = viewportPos.y(); 509 startY = viewportPos.y();
510 mPopupPos = me->globalPos(); 510 mPopupPos = me->globalPos();
511 if ( objIsNotViewport && !leftButt ) { 511 if ( objIsNotViewport && !leftButt ) {
512 KOAgendaItem * tempItem = (KOAgendaItem *)object; 512 KOAgendaItem * tempItem = (KOAgendaItem *)object;
513 if (mAllDayMode) { 513 if (mAllDayMode) {
514 if ( tempItem->height() > 10 ) { 514 if ( tempItem->height() > 10 ) {
515 int minV = tempItem->height()/4; 515 int minV = tempItem->height()/4;
516 if ( minV > (blockmoveDist/2)-2 ) { 516 if ( minV > (blockmoveDist/2)-2 ) {
517 if ( minV > blockmoveDist ) 517 if ( minV > blockmoveDist )
518 minV = blockmoveDist; 518 minV = blockmoveDist;
519 else 519 else
520 minV = (blockmoveDist/2); 520 minV = (blockmoveDist/2);
521 } 521 }
522 bool border = false; 522 bool border = false;
523 int diff = tempItem->y() - viewportPos.y(); 523 int diff = tempItem->y() - viewportPos.y();
524 if ( diff < 0 ) 524 if ( diff < 0 )
525 diff *= -1; 525 diff *= -1;
526 if ( diff < minV ) { 526 if ( diff < minV ) {
527 border = true; 527 border = true;
528 objIsNotViewport = false; 528 objIsNotViewport = false;
529 } 529 }
530 if ( ! border ) { 530 if ( ! border ) {
531 diff = tempItem->y() + tempItem->height()- viewportPos.y(); 531 diff = tempItem->y() + tempItem->height()- viewportPos.y();
532 if ( diff < 0 ) 532 if ( diff < 0 )
533 diff *= -1; 533 diff *= -1;
534 if ( diff < minV ) { 534 if ( diff < minV ) {
535 border = true; 535 border = true;
536 objIsNotViewport = false; 536 objIsNotViewport = false;
537 } 537 }
538 } 538 }
539 } 539 }
540 } else { // not allday 540 } else { // not allday
541 if ( tempItem->width() > 10 ) { 541 if ( tempItem->width() > 10 ) {
542 int minH = tempItem->width()/4; 542 int minH = tempItem->width()/4;
543 if ( minH > (blockmoveDist/2)-2 ) { 543 if ( minH > (blockmoveDist/2)-2 ) {
544 if ( minH > blockmoveDist ) 544 if ( minH > blockmoveDist )
545 minH = blockmoveDist; 545 minH = blockmoveDist;
546 else 546 else
547 minH = (blockmoveDist/2); 547 minH = (blockmoveDist/2);
548 } 548 }
549 bool border = false; 549 bool border = false;
550 int diff = tempItem->x() - viewportPos.x(); 550 int diff = tempItem->x() - viewportPos.x();
551 if ( diff < 0 ) 551 if ( diff < 0 )
552 diff *= -1; 552 diff *= -1;
553 if ( diff < minH ) { 553 if ( diff < minH ) {
554 border = true; 554 border = true;
555 objIsNotViewport = false; 555 objIsNotViewport = false;
556 } 556 }
557 if ( ! border ) { 557 if ( ! border ) {
558 diff = tempItem->x() + tempItem->width() - viewportPos.x(); 558 diff = tempItem->x() + tempItem->width() - viewportPos.x();
559 if ( diff < 0 ) 559 if ( diff < 0 )
560 diff *= -1; 560 diff *= -1;
561 if ( diff < minH ) { 561 if ( diff < minH ) {
562 border = true; 562 border = true;
563 objIsNotViewport = false; 563 objIsNotViewport = false;
564 } 564 }
565 } 565 }
566 } 566 }
567 } 567 }
568 } 568 }
569 if ( objIsNotViewport ) { 569 if ( objIsNotViewport ) {
570 mPopupItem = (KOAgendaItem *)object; 570 mPopupItem = (KOAgendaItem *)object;
571 mPopupKind = 1; 571 mPopupKind = 1;
572 if (me->button() == RightButton) { 572 if (me->button() == RightButton) {
573 mPopupKind = 3; 573 mPopupKind = 3;
574 popupMenu(); 574 popupMenu();
575 } else if (me->button() == LeftButton) { 575 } else if (me->button() == LeftButton) {
576 mActionItem = (KOAgendaItem *)object; 576 mActionItem = (KOAgendaItem *)object;
577 if (mActionItem) { 577 if (mActionItem) {
578 emit signalClearSelection(); 578 emit signalClearSelection();
579 slotClearSelection(); 579 slotClearSelection();
580 selectItem(mActionItem); 580 selectItem(mActionItem);
581 Incidence *incidence = mActionItem->incidence(); 581 Incidence *incidence = mActionItem->incidence();
582 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { 582 if ( incidence->isReadOnly() /*|| incidence->doesRecur() */) {
583 mActionItem = 0; 583 mActionItem = 0;
584 } else { 584 } else {
585 startItemAction(viewportPos); 585 startItemAction(viewportPos);
586 } 586 }
587 } 587 }
588 } 588 }
589 } else { // ---------- viewport() 589 } else { // ---------- viewport()
590 mPopupItem = 0; 590 mPopupItem = 0;
591 mPopupKind = 2; 591 mPopupKind = 2;
592 selectItem(0); 592 selectItem(0);
593 mActionItem = 0; 593 mActionItem = 0;
594 if (me->button() == RightButton) { 594 if (me->button() == RightButton) {
595 int x,y; 595 int x,y;
596 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 596 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
597 int gx,gy; 597 int gx,gy;
598 contentsToGrid(x,y,gx,gy); 598 contentsToGrid(x,y,gx,gy);
599 mCurrentCellX = gx; 599 mCurrentCellX = gx;
600 mCurrentCellY = gy; 600 mCurrentCellY = gy;
601 mStartCellX = gx; 601 mStartCellX = gx;
602 mStartCellY = gy; 602 mStartCellY = gy;
603 mPopupKind = 4; 603 mPopupKind = 4;
604 popupMenu(); 604 popupMenu();
605 } else if (me->button() == LeftButton) { 605 } else if (me->button() == LeftButton) {
606 setCursor(arrowCursor); 606 setCursor(arrowCursor);
607 startSelectAction(viewportPos); 607 startSelectAction(viewportPos);
608 } 608 }
609 } 609 }
610 break; 610 break;
611 611
612 case QEvent::MouseButtonRelease: 612 case QEvent::MouseButtonRelease:
613 if (me->button() == LeftButton ) { 613 if (me->button() == LeftButton ) {
614 mPopupTimer->stop(); 614 mPopupTimer->stop();
615 } 615 }
616 if (object != viewport()) { 616 if (object != viewport()) {
617 if (me->button() == LeftButton && mLeftMouseDown) { 617 if (me->button() == LeftButton && mLeftMouseDown) {
618 if (mActionItem) { 618 if (mActionItem) {
619 QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos)); 619 QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos));
620 //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 ); 620 //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 );
621 if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) { 621 if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) {
622 mScrollUpTimer.stop(); 622 mScrollUpTimer.stop();
623 mScrollDownTimer.stop(); 623 mScrollDownTimer.stop();
624 mActionItem->resetMove(); 624 mActionItem->resetMove();
625 placeSubCells( mActionItem ); 625 placeSubCells( mActionItem );
626 // emit startDragSignal( mActionItem->incidence() ); 626 // emit startDragSignal( mActionItem->incidence() );
627 setCursor( arrowCursor ); 627 setCursor( arrowCursor );
628 mActionItem = 0; 628 mActionItem = 0;
629 mActionType = NOP; 629 mActionType = NOP;
630 mItemMoved = 0; 630 mItemMoved = 0;
631 mLeftMouseDown = false; 631 mLeftMouseDown = false;
632 return true; 632 return true;
633 } 633 }
634 endItemAction(); 634 endItemAction();
635 } 635 }
636 } 636 }
637 637
638 } else { // ---------- viewport() 638 } else { // ---------- viewport()
639 if (me->button() == LeftButton && mLeftMouseDown ) { //left click 639 if (me->button() == LeftButton && mLeftMouseDown ) { //left click
640 endSelectAction( true ); // emit new event signal 640 endSelectAction( true ); // emit new event signal
641 } 641 }
642 } 642 }
643 if (me->button() == LeftButton) 643 if (me->button() == LeftButton)
644 mLeftMouseDown = false; 644 mLeftMouseDown = false;
645 645
646 break; 646 break;
647 647
648 case QEvent::MouseMove: 648 case QEvent::MouseMove:
649 //qDebug("mm "); 649 //qDebug("mm ");
650 if ( !mLeftMouseDown ) 650 if ( !mLeftMouseDown )
651 return false; 651 return false;
652 if ( blockMoving ) { 652 if ( blockMoving ) {
653 int dX, dY; 653 int dX, dY;
654 dX = startX - viewportPos.x(); 654 dX = startX - viewportPos.x();
655 if ( dX < 0 ) 655 if ( dX < 0 )
656 dX = -dX; 656 dX = -dX;
657 dY = viewportPos.y() - startY; 657 dY = viewportPos.y() - startY;
658 if ( dY < 0 ) 658 if ( dY < 0 )
659 dY = -dY; 659 dY = -dY;
660 //qDebug("%d %d %d ", dX, dY , blockmoveDist ); 660 //qDebug("%d %d %d ", dX, dY , blockmoveDist );
661 if ( dX > blockmoveDist || dY > blockmoveDist ) { 661 if ( dX > blockmoveDist || dY > blockmoveDist ) {
662 blockMoving = false; 662 blockMoving = false;
663 } 663 }
664 } 664 }
665 if ( ! blockMoving ) 665 if ( ! blockMoving )
666 mPopupTimer->stop(); 666 mPopupTimer->stop();
667 if (object != viewport()) { 667 if (object != viewport()) {
668 KOAgendaItem *moveItem = (KOAgendaItem *)object; 668 KOAgendaItem *moveItem = (KOAgendaItem *)object;
669 if (!moveItem->incidence()->isReadOnly() ) { 669 if (!moveItem->incidence()->isReadOnly() ) {
670 if (!mActionItem) 670 if (!mActionItem)
671 setNoActionCursor(moveItem,viewportPos); 671 setNoActionCursor(moveItem,viewportPos);
672 else { 672 else {
673 if ( !blockMoving ) 673 if ( !blockMoving )
674 performItemAction(viewportPos); 674 performItemAction(viewportPos);
675 } 675 }
676 } 676 }
677 } else { // ---------- viewport() 677 } else { // ---------- viewport()
678 mPopupPos = viewport()->mapToGlobal( me->pos() ); 678 mPopupPos = viewport()->mapToGlobal( me->pos() );
679 if ( mActionType == SELECT ) { 679 if ( mActionType == SELECT ) {
680 performSelectAction( viewportPos ); 680 performSelectAction( viewportPos );
681 } 681 }
682 } 682 }
683 break; 683 break;
684 684
685 case QEvent::MouseButtonDblClick: 685 case QEvent::MouseButtonDblClick:
686 mPopupTimer->stop(); 686 mPopupTimer->stop();
687 if (object == viewport()) { 687 if (object == viewport()) {
688 selectItem(0); 688 selectItem(0);
689 int x,y; 689 int x,y;
690 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 690 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
691 int gx,gy; 691 int gx,gy;
692 contentsToGrid(x,y,gx,gy); 692 contentsToGrid(x,y,gx,gy);
693 emit newEventSignal(gx,gy); 693 emit newEventSignal(gx,gy);
694 } else { 694 } else {
695 KOAgendaItem *doubleClickedItem = (KOAgendaItem *)object; 695 KOAgendaItem *doubleClickedItem = (KOAgendaItem *)object;
696 selectItem(doubleClickedItem); 696 selectItem(doubleClickedItem);
697 if ( KOPrefs::instance()->mEditOnDoubleClick ) 697 if ( KOPrefs::instance()->mEditOnDoubleClick )
698 emit editIncidenceSignal(doubleClickedItem->incidence()); 698 emit editIncidenceSignal(doubleClickedItem->incidence());
699 else 699 else
700 emit showIncidenceSignal(doubleClickedItem->incidence()); 700 emit showIncidenceSignal(doubleClickedItem->incidence());
701 } 701 }
702 break; 702 break;
703 703
704 default: 704 default:
705 break; 705 break;
706 } 706 }
707 return true; 707 return true;
708 708
709} 709}
710 710
711void KOAgenda::newItem( int item ) 711void KOAgenda::newItem( int item )
712{ 712{
713 if ( item == 1 ) { //new event 713 if ( item == 1 ) { //new event
714 newEventSignal(mStartCellX ,mStartCellY ); 714 newEventSignal(mStartCellX ,mStartCellY );
715 } else 715 } else
716 if ( item == 2 ) { //new event 716 if ( item == 2 ) { //new event
717 newTodoSignal(mStartCellX ,mStartCellY ); 717 newTodoSignal(mStartCellX ,mStartCellY );
718 } else 718 } else
719 { 719 {
720 emit showDateView( item, mStartCellX ); 720 emit showDateView( item, mStartCellX );
721 // 3Day view 721 // 3Day view
722 // 4Week view 722 // 4Week view
723 // 5Month view 723 // 5Month view
724 // 6Journal view 724 // 6Journal view
725 } 725 }
726} 726}
727void KOAgenda::slotClearSelection() 727void KOAgenda::slotClearSelection()
728{ 728{
729 if (mSelectionHeight) { 729 if (mSelectionHeight) {
730 int selectionX = mSelectionCellX * mGridSpacingX; 730 int selectionX = mSelectionCellX * mGridSpacingX;
731 int top = mSelectionYTop - 2 *mGridSpacingY; 731 int top = mSelectionYTop - 2 *mGridSpacingY;
732 int hei = mSelectionHeight + 4 *mGridSpacingY; 732 int hei = mSelectionHeight + 4 *mGridSpacingY;
733 clearSelection(); 733 clearSelection();
734 repaintContents( selectionX, top, 734 repaintContents( selectionX, top,
735 mGridSpacingX, hei ,false ); 735 mGridSpacingX, hei ,false );
736 } 736 }
737 737
738} 738}
739void KOAgenda::startSelectAction(QPoint viewportPos) 739void KOAgenda::startSelectAction(QPoint viewportPos)
740{ 740{
741 741
742 emit signalClearSelection(); 742 emit signalClearSelection();
743 slotClearSelection(); 743 slotClearSelection();
744 744
745 mActionType = SELECT; 745 mActionType = SELECT;
746 746
747 int x,y; 747 int x,y;
748 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 748 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
749 int gx,gy; 749 int gx,gy;
750 contentsToGrid(x,y,gx,gy); 750 contentsToGrid(x,y,gx,gy);
751 751
752 mStartCellX = gx; 752 mStartCellX = gx;
753 mStartCellY = gy; 753 mStartCellY = gy;
754 mCurrentCellX = gx; 754 mCurrentCellX = gx;
755 mCurrentCellY = gy; 755 mCurrentCellY = gy;
756 756
757 // Store new selection 757 // Store new selection
758 mSelectionCellX = gx; 758 mSelectionCellX = gx;
759 mSelectionYTop = gy * mGridSpacingY; 759 mSelectionYTop = gy * mGridSpacingY;
760 mSelectionHeight = mGridSpacingY; 760 mSelectionHeight = mGridSpacingY;
761 761
762 // Paint new selection 762 // Paint new selection
763 repaintContents( mSelectionCellX * mGridSpacingX+1, mSelectionYTop, 763 repaintContents( mSelectionCellX * mGridSpacingX+1, mSelectionYTop,
764 mGridSpacingX-1, mSelectionHeight ); 764 mGridSpacingX-1, mSelectionHeight );
765} 765}
766 766
767void KOAgenda::performSelectAction(QPoint viewportPos) 767void KOAgenda::performSelectAction(QPoint viewportPos)
768{ 768{
769 int x,y; 769 int x,y;
770 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 770 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
771 int gx,gy; 771 int gx,gy;
772 contentsToGrid(x,y,gx,gy); 772 contentsToGrid(x,y,gx,gy);
773 773
774 QPoint clipperPos = clipper()-> 774 QPoint clipperPos = clipper()->
775 mapFromGlobal(viewport()->mapToGlobal(viewportPos)); 775 mapFromGlobal(viewport()->mapToGlobal(viewportPos));
776 776
777 // Scroll if cursor was moved to upper or lower end of agenda. 777 // Scroll if cursor was moved to upper or lower end of agenda.
778 if (clipperPos.y() < mScrollBorderWidth) { 778 if (clipperPos.y() < mScrollBorderWidth) {
779 mScrollUpTimer.start(mScrollDelay); 779 mScrollUpTimer.start(mScrollDelay);
780 } else if (visibleHeight() - clipperPos.y() < 780 } else if (visibleHeight() - clipperPos.y() <
781 mScrollBorderWidth) { 781 mScrollBorderWidth) {
782 mScrollDownTimer.start(mScrollDelay); 782 mScrollDownTimer.start(mScrollDelay);
783 } else { 783 } else {
784 mScrollUpTimer.stop(); 784 mScrollUpTimer.stop();
785 mScrollDownTimer.stop(); 785 mScrollDownTimer.stop();
786 } 786 }
787 787
788 if ( gy > mCurrentCellY ) { 788 if ( gy > mCurrentCellY ) {
789 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; 789 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop;
790 790
791 791
792 repaintContents( (KOGlobals::self()->reverseLayout() ? 792 repaintContents( (KOGlobals::self()->reverseLayout() ?
793 mColumns - 1 - mSelectionCellX : mSelectionCellX) * 793 mColumns - 1 - mSelectionCellX : mSelectionCellX) *
794 mGridSpacingX, mSelectionYTop, 794 mGridSpacingX, mSelectionYTop,
795 mGridSpacingX, mSelectionHeight , false); 795 mGridSpacingX, mSelectionHeight , false);
796 796
797 mCurrentCellY = gy; 797 mCurrentCellY = gy;
798 } else if ( gy < mCurrentCellY ) { 798 } else if ( gy < mCurrentCellY ) {
799 if ( gy >= mStartCellY ) { 799 if ( gy >= mStartCellY ) {
800 int selectionHeight = mSelectionHeight; 800 int selectionHeight = mSelectionHeight;
801 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; 801 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop;
802 802
803 repaintContents( (KOGlobals::self()->reverseLayout() ? 803 repaintContents( (KOGlobals::self()->reverseLayout() ?
804 mColumns - 1 - mSelectionCellX : mSelectionCellX) * 804 mColumns - 1 - mSelectionCellX : mSelectionCellX) *
805 mGridSpacingX, mSelectionYTop, 805 mGridSpacingX, mSelectionYTop,
806 mGridSpacingX, selectionHeight,false ); 806 mGridSpacingX, selectionHeight,false );
807 807
808 mCurrentCellY = gy; 808 mCurrentCellY = gy;
809 } else { 809 } else {
810 } 810 }
811 } 811 }
812} 812}
813 813
814void KOAgenda::endSelectAction( bool emitNewEvent ) 814void KOAgenda::endSelectAction( bool emitNewEvent )
815{ 815{
816 mActionType = NOP; 816 mActionType = NOP;
817 mScrollUpTimer.stop(); 817 mScrollUpTimer.stop();
818 mScrollDownTimer.stop(); 818 mScrollDownTimer.stop();
819 819
820 emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); 820 emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
821 if ( emitNewEvent && mStartCellY < mCurrentCellY ) { 821 if ( emitNewEvent && mStartCellY < mCurrentCellY ) {
822 emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); 822 emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
823 } 823 }
824} 824}
825 825
826void KOAgenda::startItemAction(QPoint viewportPos) 826void KOAgenda::startItemAction(QPoint viewportPos)
827{ 827{
828 int x,y; 828 int x,y;
829 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 829 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
830 int gx,gy; 830 int gx,gy;
831 contentsToGrid(x,y,gx,gy); 831 contentsToGrid(x,y,gx,gy);
832 832
833 mStartCellX = gx; 833 mStartCellX = gx;
834 mStartCellY = gy; 834 mStartCellY = gy;
835 mCurrentCellX = gx; 835 mCurrentCellX = gx;
836 mCurrentCellY = gy; 836 mCurrentCellY = gy;
837 837
838 if (mAllDayMode) { 838 if (mAllDayMode) {
839 int gridDistanceX = (x - gx * mGridSpacingX); 839 int gridDistanceX = (x - gx * mGridSpacingX);
840 if (gridDistanceX < mResizeBorderWidth && 840 if (gridDistanceX < mResizeBorderWidth &&
841 mActionItem->cellX() == mCurrentCellX) { 841 mActionItem->cellX() == mCurrentCellX) {
842 mActionType = RESIZELEFT; 842 mActionType = RESIZELEFT;
843 setCursor(sizeHorCursor); 843 setCursor(sizeHorCursor);
844 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth && 844 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth &&
845 mActionItem->cellXWidth() == mCurrentCellX) { 845 mActionItem->cellXWidth() == mCurrentCellX) {
846 mActionType = RESIZERIGHT; 846 mActionType = RESIZERIGHT;
847 setCursor(sizeHorCursor); 847 setCursor(sizeHorCursor);
848 } else { 848 } else {
849 mActionType = MOVE; 849 mActionType = MOVE;
850 mActionItem->startMove(); 850 mActionItem->startMove();
851 setCursor(sizeAllCursor); 851 setCursor(sizeAllCursor);
852 } 852 }
853 } else { 853 } else {
854 int gridDistanceY = (y - gy * mGridSpacingY); 854 int gridDistanceY = (y - gy * mGridSpacingY);
855 bool allowResize = ( mActionItem->incidence()->typeID() != todoID ); 855 bool allowResize = ( mActionItem->incidence()->typeID() != todoID );
856 if (allowResize && gridDistanceY < mResizeBorderWidth && 856 if (allowResize && gridDistanceY < mResizeBorderWidth &&
857 mActionItem->cellYTop() == mCurrentCellY && 857 mActionItem->cellYTop() == mCurrentCellY &&
858 !mActionItem->firstMultiItem()) { 858 !mActionItem->firstMultiItem()) {
859 mActionType = RESIZETOP; 859 mActionType = RESIZETOP;
860 setCursor(sizeVerCursor); 860 setCursor(sizeVerCursor);
861 } else if (allowResize &&(mGridSpacingY - gridDistanceY) < mResizeBorderWidth && 861 } else if (allowResize &&(mGridSpacingY - gridDistanceY) < mResizeBorderWidth &&
862 mActionItem->cellYBottom() == mCurrentCellY && 862 mActionItem->cellYBottom() == mCurrentCellY &&
863 !mActionItem->lastMultiItem()) { 863 !mActionItem->lastMultiItem()) {
864 mActionType = RESIZEBOTTOM; 864 mActionType = RESIZEBOTTOM;
865 setCursor(sizeVerCursor); 865 setCursor(sizeVerCursor);
866 } else { 866 } else {
867 mActionType = MOVE; 867 mActionType = MOVE;
868 mActionItem->startMove(); 868 mActionItem->startMove();
869 setCursor(sizeAllCursor); 869 setCursor(sizeAllCursor);
870 } 870 }
871 } 871 }
872} 872}
873 873
874void KOAgenda::performItemAction(QPoint viewportPos) 874void KOAgenda::performItemAction(QPoint viewportPos)
875{ 875{
876// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl; 876// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl;
877// QPoint point = viewport()->mapToGlobal(viewportPos); 877// QPoint point = viewport()->mapToGlobal(viewportPos);
878// kdDebug() << "Global: " << point.x() << "," << point.y() << endl; 878// kdDebug() << "Global: " << point.x() << "," << point.y() << endl;
879// point = clipper()->mapFromGlobal(point); 879// point = clipper()->mapFromGlobal(point);
880// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl; 880// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl;
881// kdDebug() << "visible height: " << visibleHeight() << endl; 881// kdDebug() << "visible height: " << visibleHeight() << endl;
882 int x,y; 882 int x,y;
883 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 883 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
884// kdDebug() << "contents: " << x << "," << y << "\n" << endl; 884// kdDebug() << "contents: " << x << "," << y << "\n" << endl;
885 int gx,gy; 885 int gx,gy;
886 contentsToGrid(x,y,gx,gy); 886 contentsToGrid(x,y,gx,gy);
887 QPoint clipperPos = clipper()-> 887 QPoint clipperPos = clipper()->
888 mapFromGlobal(viewport()->mapToGlobal(viewportPos)); 888 mapFromGlobal(viewport()->mapToGlobal(viewportPos));
889 889
890 // Cursor left active agenda area. 890 // Cursor left active agenda area.
891 // This starts a drag. 891 // This starts a drag.
892 if ( /*clipperPos.y() < 0 || clipperPos.y() > visibleHeight() ||*/ 892 if ( /*clipperPos.y() < 0 || clipperPos.y() > visibleHeight() ||*/
893 clipperPos.x() < 0 || clipperPos.x() > visibleWidth() ) { 893 clipperPos.x() < 0 || clipperPos.x() > visibleWidth() ) {
894 if ( mActionType == MOVE ) { 894 if ( mActionType == MOVE ) {
895 mScrollUpTimer.stop(); 895 mScrollUpTimer.stop();
896 mScrollDownTimer.stop(); 896 mScrollDownTimer.stop();
897 mActionItem->resetMove(); 897 mActionItem->resetMove();
898 placeSubCells( mActionItem ); 898 placeSubCells( mActionItem );
899 // emit startDragSignal( mActionItem->incidence() ); 899 // emit startDragSignal( mActionItem->incidence() );
900 setCursor( arrowCursor ); 900 setCursor( arrowCursor );
901 mActionItem = 0; 901 mActionItem = 0;
902 mActionType = NOP; 902 mActionType = NOP;
903 mItemMoved = 0; 903 mItemMoved = 0;
904 return; 904 return;
905 } 905 }
906 } else { 906 } else {
907 switch ( mActionType ) { 907 switch ( mActionType ) {
908 case MOVE: 908 case MOVE:
909 setCursor( sizeAllCursor ); 909 setCursor( sizeAllCursor );
910 break; 910 break;
911 case RESIZETOP: 911 case RESIZETOP:
912 case RESIZEBOTTOM: 912 case RESIZEBOTTOM:
913 setCursor( sizeVerCursor ); 913 setCursor( sizeVerCursor );
914 break; 914 break;
915 case RESIZELEFT: 915 case RESIZELEFT:
916 case RESIZERIGHT: 916 case RESIZERIGHT:
917 setCursor( sizeHorCursor ); 917 setCursor( sizeHorCursor );
918 break; 918 break;
919 default: 919 default:
920 setCursor( arrowCursor ); 920 setCursor( arrowCursor );
921 } 921 }
922 } 922 }
923 923
924 // Scroll if item was moved to upper or lower end of agenda. 924 // Scroll if item was moved to upper or lower end of agenda.
925 if (clipperPos.y() < mScrollBorderWidth) { 925 if (clipperPos.y() < mScrollBorderWidth) {
926 mScrollUpTimer.start(mScrollDelay); 926 mScrollUpTimer.start(mScrollDelay);
927 } else if (visibleHeight() - clipperPos.y() < 927 } else if (visibleHeight() - clipperPos.y() <
928 mScrollBorderWidth) { 928 mScrollBorderWidth) {
929 mScrollDownTimer.start(mScrollDelay); 929 mScrollDownTimer.start(mScrollDelay);
930 } else { 930 } else {
931 mScrollUpTimer.stop(); 931 mScrollUpTimer.stop();
932 mScrollDownTimer.stop(); 932 mScrollDownTimer.stop();
933 } 933 }
934 934
935 // Move or resize item if necessary 935 // Move or resize item if necessary
936 if (mCurrentCellX != gx || mCurrentCellY != gy) { 936 if (mCurrentCellX != gx || mCurrentCellY != gy) {
937 mItemMoved = true; 937 mItemMoved = true;
938 mActionItem->raise(); 938 mActionItem->raise();
939 if (mActionType == MOVE) { 939 if (mActionType == MOVE) {
940 // Move all items belonging to a multi item 940 // Move all items belonging to a multi item
941 KOAgendaItem *moveItem = mActionItem->firstMultiItem(); 941 KOAgendaItem *moveItem = mActionItem->firstMultiItem();
942 bool isMultiItem = (moveItem || mActionItem->lastMultiItem()); 942 bool isMultiItem = (moveItem || mActionItem->lastMultiItem());
943 if (!moveItem) moveItem = mActionItem; 943 if (!moveItem) moveItem = mActionItem;
944 while (moveItem) { 944 while (moveItem) {
945 int dy; 945 int dy;
946 if (isMultiItem) dy = 0; 946 if (isMultiItem) dy = 0;
947 else dy = gy - mCurrentCellY; 947 else dy = gy - mCurrentCellY;
948 moveItem->moveRelative(gx - mCurrentCellX,dy); 948 moveItem->moveRelative(gx - mCurrentCellX,dy);
949 int x,y; 949 int x,y;
950 gridToContents(moveItem->cellX(),moveItem->cellYTop(),x,y); 950 gridToContents(moveItem->cellX(),moveItem->cellYTop(),x,y);
951 moveItem->resize(mGridSpacingX * moveItem->cellWidth(), 951 moveItem->resize(mGridSpacingX * moveItem->cellWidth(),
952 mGridSpacingY * moveItem->cellHeight()); 952 mGridSpacingY * moveItem->cellHeight());
953 moveItem->raise(); 953 moveItem->raise();
954 moveChild(moveItem,x,y); 954 moveChild(moveItem,x,y);
955 moveItem = moveItem->nextMultiItem(); 955 moveItem = moveItem->nextMultiItem();
956 } 956 }
957 } else if (mActionType == RESIZETOP) { 957 } else if (mActionType == RESIZETOP) {
958 if (mCurrentCellY <= mActionItem->cellYBottom()) { 958 if (mCurrentCellY <= mActionItem->cellYBottom()) {
959 mActionItem->expandTop(gy - mCurrentCellY); 959 mActionItem->expandTop(gy - mCurrentCellY);
960 mActionItem->resize(mActionItem->width(), 960 mActionItem->resize(mActionItem->width(),
961 mGridSpacingY * mActionItem->cellHeight()); 961 mGridSpacingY * mActionItem->cellHeight());
962 int x,y; 962 int x,y;
963 gridToContents(mCurrentCellX,mActionItem->cellYTop(),x,y); 963 gridToContents(mCurrentCellX,mActionItem->cellYTop(),x,y);
964 //moveChild(mActionItem,childX(mActionItem),y); 964 //moveChild(mActionItem,childX(mActionItem),y);
965 QScrollView::moveChild( mActionItem,childX(mActionItem),y ); 965 QScrollView::moveChild( mActionItem,childX(mActionItem),y );
966 } 966 }
967 } else if (mActionType == RESIZEBOTTOM) { 967 } else if (mActionType == RESIZEBOTTOM) {
968 if (mCurrentCellY >= mActionItem->cellYTop()) { 968 if (mCurrentCellY >= mActionItem->cellYTop()) {
969 mActionItem->expandBottom(gy - mCurrentCellY); 969 mActionItem->expandBottom(gy - mCurrentCellY);
970 mActionItem->resize(mActionItem->width(), 970 mActionItem->resize(mActionItem->width(),
971 mGridSpacingY * mActionItem->cellHeight()); 971 mGridSpacingY * mActionItem->cellHeight());
972 } 972 }
973 } else if (mActionType == RESIZELEFT) { 973 } else if (mActionType == RESIZELEFT) {
974 if (mCurrentCellX <= mActionItem->cellXWidth()) { 974 if (mCurrentCellX <= mActionItem->cellXWidth()) {
975 mActionItem->expandLeft(gx - mCurrentCellX); 975 mActionItem->expandLeft(gx - mCurrentCellX);
976 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 976 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(),
977 mActionItem->height()); 977 mActionItem->height());
978 int x,y; 978 int x,y;
979 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y); 979 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y);
980 moveChild(mActionItem,x,childY(mActionItem)); 980 moveChild(mActionItem,x,childY(mActionItem));
981 } 981 }
982 } else if (mActionType == RESIZERIGHT) { 982 } else if (mActionType == RESIZERIGHT) {
983 if (mCurrentCellX >= mActionItem->cellX()) { 983 if (mCurrentCellX >= mActionItem->cellX()) {
984 mActionItem->expandRight(gx - mCurrentCellX); 984 mActionItem->expandRight(gx - mCurrentCellX);
985 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 985 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(),
986 mActionItem->height()); 986 mActionItem->height());
987 } 987 }
988 } 988 }
989 mCurrentCellX = gx; 989 mCurrentCellX = gx;
990 mCurrentCellY = gy; 990 mCurrentCellY = gy;
991 } 991 }
992} 992}
993 993
994void KOAgenda::endItemAction() 994void KOAgenda::endItemAction()
995{ 995{
996 996
997 if ( mItemMoved ) { 997 if ( mItemMoved ) {
998 KOAgendaItem *placeItem = mActionItem->firstMultiItem(); 998 KOAgendaItem *placeItem = mActionItem->firstMultiItem();
999 if ( !placeItem ) { 999 if ( !placeItem ) {
1000 placeItem = mActionItem; 1000 placeItem = mActionItem;
1001 } 1001 }
1002 if ( placeItem->incidence()->recurrence()->doesRecur() ) { 1002 if ( placeItem->incidence()->doesRecur() ) {
1003 Incidence* oldInc = placeItem->incidence(); 1003 Incidence* oldInc = placeItem->incidence();
1004 placeItem->recreateIncidence(); 1004 placeItem->recreateIncidence();
1005 emit addToCalSignal(placeItem->incidence(), oldInc ); 1005 emit addToCalSignal(placeItem->incidence(), oldInc );
1006 } 1006 }
1007 int type = mActionType; 1007 int type = mActionType;
1008 if ( mAllDayMode ) 1008 if ( mAllDayMode )
1009 type = -1; 1009 type = -1;
1010 KOAgendaItem *modifiedItem = placeItem; 1010 KOAgendaItem *modifiedItem = placeItem;
1011 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */); 1011 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */);
1012 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems(); 1012 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems();
1013 KOAgendaItem *item; 1013 KOAgendaItem *item;
1014 1014
1015 if ( placeItem->incidence()->typeID() == todoID ) { 1015 if ( placeItem->incidence()->typeID() == todoID ) {
1016 mSelectedItem = 0; 1016 mSelectedItem = 0;
1017 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth()); 1017 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth());
1018 modifiedItem->mLastMoveXPos = mCurrentCellX; 1018 modifiedItem->mLastMoveXPos = mCurrentCellX;
1019 emit itemModified( modifiedItem, mActionType ); 1019 emit itemModified( modifiedItem, mActionType );
1020 } 1020 }
1021 else { 1021 else {
1022 1022
1023 1023
1024 globalFlagBlockAgendaItemPaint = 1; 1024 globalFlagBlockAgendaItemPaint = 1;
1025 for ( item=oldconflictItems.first(); item != 0; 1025 for ( item=oldconflictItems.first(); item != 0;
1026 item=oldconflictItems.next() ) { 1026 item=oldconflictItems.next() ) {
1027 placeSubCells(item); 1027 placeSubCells(item);
1028 } 1028 }
1029 while ( placeItem ) { 1029 while ( placeItem ) {
1030 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); 1030 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1031 oldconflictItems = placeItem->conflictItems(); 1031 oldconflictItems = placeItem->conflictItems();
1032 for ( item=oldconflictItems.first(); item != 0; 1032 for ( item=oldconflictItems.first(); item != 0;
1033 item=oldconflictItems.next() ) { 1033 item=oldconflictItems.next() ) {
1034 placeSubCells(item); 1034 placeSubCells(item);
1035 } 1035 }
1036 placeSubCells( placeItem ); 1036 placeSubCells( placeItem );
1037 placeItem = placeItem->nextMultiItem(); 1037 placeItem = placeItem->nextMultiItem();
1038 } 1038 }
1039 globalFlagBlockAgendaItemPaint = 0; 1039 globalFlagBlockAgendaItemPaint = 0;
1040 for ( item=oldconflictItems.first(); item != 0; 1040 for ( item=oldconflictItems.first(); item != 0;
1041 item=oldconflictItems.next() ) { 1041 item=oldconflictItems.next() ) {
1042 globalFlagBlockAgendaItemUpdate = 0; 1042 globalFlagBlockAgendaItemUpdate = 0;
1043 item->repaintMe(); 1043 item->repaintMe();
1044 globalFlagBlockAgendaItemUpdate = 1; 1044 globalFlagBlockAgendaItemUpdate = 1;
1045 item->repaint( false ); 1045 item->repaint( false );
1046 } 1046 }
1047 placeItem = modifiedItem; 1047 placeItem = modifiedItem;
1048 1048
1049 while ( placeItem ) { 1049 while ( placeItem ) {
1050 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); 1050 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1051 globalFlagBlockAgendaItemUpdate = 0; 1051 globalFlagBlockAgendaItemUpdate = 0;
1052 placeItem->repaintMe(); 1052 placeItem->repaintMe();
1053 globalFlagBlockAgendaItemUpdate = 1; 1053 globalFlagBlockAgendaItemUpdate = 1;
1054 placeItem->repaint(false); 1054 placeItem->repaint(false);
1055 placeItem = placeItem->nextMultiItem(); 1055 placeItem = placeItem->nextMultiItem();
1056 } 1056 }
1057 emit itemModified( modifiedItem, mActionType ); 1057 emit itemModified( modifiedItem, mActionType );
1058 1058
1059 1059
1060 placeItem = modifiedItem; 1060 placeItem = modifiedItem;
1061 while ( placeItem ) { 1061 while ( placeItem ) {
1062 oldconflictItems = placeItem->conflictItems(); 1062 oldconflictItems = placeItem->conflictItems();
1063 for ( item=oldconflictItems.first(); item != 0; 1063 for ( item=oldconflictItems.first(); item != 0;
1064 item=oldconflictItems.next() ) { 1064 item=oldconflictItems.next() ) {
1065 placeSubCells(item); 1065 placeSubCells(item);
1066 } 1066 }
1067 placeSubCells( placeItem ); 1067 placeSubCells( placeItem );
1068 placeItem = placeItem->nextMultiItem(); 1068 placeItem = placeItem->nextMultiItem();
1069 1069
1070 } 1070 }
1071 placeItem = modifiedItem; 1071 placeItem = modifiedItem;
1072 while ( placeItem ) { 1072 while ( placeItem ) {
1073 oldconflictItems = placeItem->conflictItems(); 1073 oldconflictItems = placeItem->conflictItems();
1074 for ( item=oldconflictItems.first(); item != 0; 1074 for ( item=oldconflictItems.first(); item != 0;
1075 item=oldconflictItems.next() ) { 1075 item=oldconflictItems.next() ) {
1076 globalFlagBlockAgendaItemUpdate = 0; 1076 globalFlagBlockAgendaItemUpdate = 0;
1077 item->repaintMe(); 1077 item->repaintMe();
1078 globalFlagBlockAgendaItemUpdate = 1; 1078 globalFlagBlockAgendaItemUpdate = 1;
1079 item->repaint(false); 1079 item->repaint(false);
1080 } 1080 }
1081 placeItem = placeItem->nextMultiItem(); 1081 placeItem = placeItem->nextMultiItem();
1082 } 1082 }
1083 /* 1083 /*
1084 1084
1085 oldconflictItems = modifiedItem->conflictItems(); 1085 oldconflictItems = modifiedItem->conflictItems();
1086 for ( item=oldconflictItems.first(); item != 0; 1086 for ( item=oldconflictItems.first(); item != 0;
1087 item=oldconflictItems.next() ) { 1087 item=oldconflictItems.next() ) {
1088 globalFlagBlockAgendaItemUpdate = 0; 1088 globalFlagBlockAgendaItemUpdate = 0;
1089 item->paintMe(false); 1089 item->paintMe(false);
1090 globalFlagBlockAgendaItemUpdate = 1; 1090 globalFlagBlockAgendaItemUpdate = 1;
1091 item->repaint(false); 1091 item->repaint(false);
1092 } 1092 }
1093 */ 1093 */
1094 1094
1095 1095
1096 } 1096 }
1097 1097
1098 } 1098 }
1099 if ( mActionItem ) 1099 if ( mActionItem )
1100 emit incidenceSelected( mActionItem->incidence() ); 1100 emit incidenceSelected( mActionItem->incidence() );
1101 mScrollUpTimer.stop(); 1101 mScrollUpTimer.stop();
1102 mScrollDownTimer.stop(); 1102 mScrollDownTimer.stop();
1103 setCursor( arrowCursor ); 1103 setCursor( arrowCursor );
1104 mActionItem = 0; 1104 mActionItem = 0;
1105 mActionType = NOP; 1105 mActionType = NOP;
1106 mItemMoved = 0; 1106 mItemMoved = 0;
1107 1107
1108} 1108}
1109 1109
1110void KOAgenda::setNoActionCursor(KOAgendaItem *moveItem,QPoint viewportPos) 1110void KOAgenda::setNoActionCursor(KOAgendaItem *moveItem,QPoint viewportPos)
1111{ 1111{
1112// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl; 1112// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl;
1113// QPoint point = viewport()->mapToGlobal(viewportPos); 1113// QPoint point = viewport()->mapToGlobal(viewportPos);
1114// kdDebug() << "Global: " << point.x() << "," << point.y() << endl; 1114// kdDebug() << "Global: " << point.x() << "," << point.y() << endl;
1115// point = clipper()->mapFromGlobal(point); 1115// point = clipper()->mapFromGlobal(point);
1116// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl; 1116// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl;
1117 1117
1118 int x,y; 1118 int x,y;
1119 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 1119 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
1120// kdDebug() << "contents: " << x << "," << y << "\n" << endl; 1120// kdDebug() << "contents: " << x << "," << y << "\n" << endl;
1121 int gx,gy; 1121 int gx,gy;
1122 contentsToGrid(x,y,gx,gy); 1122 contentsToGrid(x,y,gx,gy);
1123 1123
1124 // Change cursor to resize cursor if appropriate 1124 // Change cursor to resize cursor if appropriate
1125 if (mAllDayMode) { 1125 if (mAllDayMode) {
1126 int gridDistanceX = (x - gx * mGridSpacingX); 1126 int gridDistanceX = (x - gx * mGridSpacingX);
1127 if (gridDistanceX < mResizeBorderWidth && 1127 if (gridDistanceX < mResizeBorderWidth &&
1128 moveItem->cellX() == gx) { 1128 moveItem->cellX() == gx) {
1129 setCursor(sizeHorCursor); 1129 setCursor(sizeHorCursor);
1130 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth && 1130 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth &&
1131 moveItem->cellXWidth() == gx) { 1131 moveItem->cellXWidth() == gx) {
1132 setCursor(sizeHorCursor); 1132 setCursor(sizeHorCursor);
1133 } else { 1133 } else {
1134 setCursor(arrowCursor); 1134 setCursor(arrowCursor);
1135 } 1135 }
1136 } else { 1136 } else {
1137 int gridDistanceY = (y - gy * mGridSpacingY); 1137 int gridDistanceY = (y - gy * mGridSpacingY);
1138 if (gridDistanceY < mResizeBorderWidth && 1138 if (gridDistanceY < mResizeBorderWidth &&
1139 moveItem->cellYTop() == gy && 1139 moveItem->cellYTop() == gy &&
1140 !moveItem->firstMultiItem()) { 1140 !moveItem->firstMultiItem()) {
1141 setCursor(sizeVerCursor); 1141 setCursor(sizeVerCursor);
1142 } else if ((mGridSpacingY - gridDistanceY) < mResizeBorderWidth && 1142 } else if ((mGridSpacingY - gridDistanceY) < mResizeBorderWidth &&
1143 moveItem->cellYBottom() == gy && 1143 moveItem->cellYBottom() == gy &&
1144 !moveItem->lastMultiItem()) { 1144 !moveItem->lastMultiItem()) {
1145 setCursor(sizeVerCursor); 1145 setCursor(sizeVerCursor);
1146 } else { 1146 } else {
1147 setCursor(arrowCursor); 1147 setCursor(arrowCursor);
1148 } 1148 }
1149 } 1149 }
1150} 1150}
1151 1151
1152 1152
1153/* 1153/*
1154 Place item in cell and take care that multiple items using the same cell do 1154 Place item in cell and take care that multiple items using the same cell do
1155 not overlap. This method is not yet optimal. It doesn´t use the maximum space 1155 not overlap. This method is not yet optimal. It doesn´t use the maximum space
1156 it can get in all cases. 1156 it can get in all cases.
1157 At the moment the method has a bug: When an item is placed only the sub cell 1157 At the moment the method has a bug: When an item is placed only the sub cell
1158 widths of the items are changed, which are within the Y region the item to 1158 widths of the items are changed, which are within the Y region the item to
1159 place spans. When the sub cell width change of one of this items affects a 1159 place spans. When the sub cell width change of one of this items affects a
1160 cell, where other items are, which do not overlap in Y with the item to place, 1160 cell, where other items are, which do not overlap in Y with the item to place,
1161 the display gets corrupted, although the corruption looks quite nice. 1161 the display gets corrupted, although the corruption looks quite nice.
1162*/ 1162*/
1163void KOAgenda::placeSubCells(KOAgendaItem *placeItem) 1163void KOAgenda::placeSubCells(KOAgendaItem *placeItem)
1164{ 1164{
1165 1165
1166 QPtrList<KOAgendaItem> conflictItems; 1166 QPtrList<KOAgendaItem> conflictItems;
1167 int maxSubCells = 0; 1167 int maxSubCells = 0;
1168 QIntDict<KOAgendaItem> subCellDict(7); 1168 QIntDict<KOAgendaItem> subCellDict(7);
1169 1169
1170 KOAgendaItem *item; 1170 KOAgendaItem *item;
1171 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1171 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1172 if (item != placeItem) { 1172 if (item != placeItem) {
1173 if (placeItem->cellX() <= item->cellXWidth() && 1173 if (placeItem->cellX() <= item->cellXWidth() &&
1174 placeItem->cellXWidth() >= item->cellX()) { 1174 placeItem->cellXWidth() >= item->cellX()) {
1175 if ((placeItem->cellYTop() <= item->cellYBottom()) && 1175 if ((placeItem->cellYTop() <= item->cellYBottom()) &&
1176 (placeItem->cellYBottom() >= item->cellYTop())) { 1176 (placeItem->cellYBottom() >= item->cellYTop())) {
1177 conflictItems.append(item); 1177 conflictItems.append(item);
1178 if (item->subCells() > maxSubCells) 1178 if (item->subCells() > maxSubCells)
1179 maxSubCells = item->subCells(); 1179 maxSubCells = item->subCells();
1180 subCellDict.insert(item->subCell(),item); 1180 subCellDict.insert(item->subCell(),item);
1181 } 1181 }
1182 } 1182 }
1183 } 1183 }
1184 } 1184 }
1185 1185
1186 if (conflictItems.count() > 0) { 1186 if (conflictItems.count() > 0) {
1187 // Look for unused sub cell and insert item 1187 // Look for unused sub cell and insert item
1188 int i; 1188 int i;
1189 for(i=0;i<maxSubCells;++i) { 1189 for(i=0;i<maxSubCells;++i) {
1190 if (!subCellDict.find(i)) { 1190 if (!subCellDict.find(i)) {
1191 placeItem->setSubCell(i); 1191 placeItem->setSubCell(i);
1192 break; 1192 break;
1193 } 1193 }
1194 } 1194 }
1195 if (i == maxSubCells) { 1195 if (i == maxSubCells) {
1196 placeItem->setSubCell(maxSubCells); 1196 placeItem->setSubCell(maxSubCells);
1197 maxSubCells++; // add new item to number of sub cells 1197 maxSubCells++; // add new item to number of sub cells
1198 } 1198 }
1199 1199
1200 // Prepare for sub cell geometry adjustment 1200 // Prepare for sub cell geometry adjustment
1201 int newSubCellWidth; 1201 int newSubCellWidth;
1202 if (mAllDayMode) newSubCellWidth = mGridSpacingY / maxSubCells; 1202 if (mAllDayMode) newSubCellWidth = mGridSpacingY / maxSubCells;
1203 else newSubCellWidth = mGridSpacingX / maxSubCells; 1203 else newSubCellWidth = mGridSpacingX / maxSubCells;
1204 conflictItems.append(placeItem); 1204 conflictItems.append(placeItem);
1205 1205
1206 1206
1207 // Adjust sub cell geometry of all direct conflict items 1207 // Adjust sub cell geometry of all direct conflict items
1208 for ( item=conflictItems.first(); item != 0; 1208 for ( item=conflictItems.first(); item != 0;
1209 item=conflictItems.next() ) { 1209 item=conflictItems.next() ) {
1210 item->setSubCells(maxSubCells); 1210 item->setSubCells(maxSubCells);
1211 if (mAllDayMode) { 1211 if (mAllDayMode) {
1212 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth); 1212 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth);
1213 } else { 1213 } else {
1214 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY); 1214 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY);
1215 } 1215 }
1216 int x,y; 1216 int x,y;
1217 gridToContents(item->cellX(),item->cellYTop(),x,y); 1217 gridToContents(item->cellX(),item->cellYTop(),x,y);
1218 if (mAllDayMode) { 1218 if (mAllDayMode) {
1219 y += item->subCell() * newSubCellWidth; 1219 y += item->subCell() * newSubCellWidth;
1220 } else { 1220 } else {
1221 x += item->subCell() * newSubCellWidth; 1221 x += item->subCell() * newSubCellWidth;
1222 } 1222 }
1223 moveChild(item,x,y); 1223 moveChild(item,x,y);
1224 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y); 1224 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y);
1225 //item->updateItem(); 1225 //item->updateItem();
1226 } 1226 }
1227 // Adjust sub cell geometry of all conflict items of all conflict items 1227 // Adjust sub cell geometry of all conflict items of all conflict items
1228 for ( item=conflictItems.first(); item != 0; 1228 for ( item=conflictItems.first(); item != 0;
1229 item=conflictItems.next() ) { 1229 item=conflictItems.next() ) {
1230 if ( placeItem != item ) { 1230 if ( placeItem != item ) {
1231 KOAgendaItem *item2; 1231 KOAgendaItem *item2;
1232 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems(); 1232 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems();
1233 for ( item2=conflictItems2.first(); item2 != 0; 1233 for ( item2=conflictItems2.first(); item2 != 0;
1234 item2=conflictItems2.next() ) { 1234 item2=conflictItems2.next() ) {
1235 if ( item2->subCells() != maxSubCells) { 1235 if ( item2->subCells() != maxSubCells) {
1236 item2->setSubCells(maxSubCells); 1236 item2->setSubCells(maxSubCells);
1237 if (mAllDayMode) { 1237 if (mAllDayMode) {
1238 item2->resize(item2->cellWidth() * mGridSpacingX, newSubCellWidth); 1238 item2->resize(item2->cellWidth() * mGridSpacingX, newSubCellWidth);
1239 } else { 1239 } else {
1240 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY); 1240 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY);
1241 } 1241 }
1242 int x,y; 1242 int x,y;
1243 gridToContents(item2->cellX(),item2->cellYTop(),x,y); 1243 gridToContents(item2->cellX(),item2->cellYTop(),x,y);
1244 if (mAllDayMode) { 1244 if (mAllDayMode) {
1245 y += item2->subCell() * newSubCellWidth; 1245 y += item2->subCell() * newSubCellWidth;
1246 } else { 1246 } else {
1247 x += item2->subCell() * newSubCellWidth; 1247 x += item2->subCell() * newSubCellWidth;
1248 } 1248 }
1249 moveChild(item2,x,y); 1249 moveChild(item2,x,y);
1250 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() ); 1250 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() );
1251 } 1251 }
1252 } 1252 }
1253 } 1253 }
1254 } 1254 }
1255 } else { 1255 } else {
1256 placeItem->setSubCell(0); 1256 placeItem->setSubCell(0);
1257 placeItem->setSubCells(1); 1257 placeItem->setSubCells(1);
1258 if (mAllDayMode) placeItem->resize(placeItem->width(),mGridSpacingY); 1258 if (mAllDayMode) placeItem->resize(placeItem->width(),mGridSpacingY);
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index 303a92a..49ad9b8 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -1,493 +1,493 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qlabel.h> 20#include <qlabel.h>
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qhbox.h> 22#include <qhbox.h>
23#include <qvbox.h> 23#include <qvbox.h>
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qwhatsthis.h> 25#include <qwhatsthis.h>
26#include <qdragobject.h> 26#include <qdragobject.h>
27#include <qdrawutil.h> 27#include <qdrawutil.h>
28#include <qpainter.h> 28#include <qpainter.h>
29 29
30#include <kiconloader.h> 30#include <kiconloader.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <klocale.h> 33#include <klocale.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
36#define AGENDA_ICON_SIZE 5 36#define AGENDA_ICON_SIZE 5
37#else 37#else
38#include <qapplication.h> 38#include <qapplication.h>
39#define AGENDA_ICON_SIZE 7 39#define AGENDA_ICON_SIZE 7
40#endif 40#endif
41#include <libkcal/icaldrag.h> 41#include <libkcal/icaldrag.h>
42#include <libkcal/vcaldrag.h> 42#include <libkcal/vcaldrag.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44extern int globalFlagBlockAgenda; 44extern int globalFlagBlockAgenda;
45extern int globalFlagBlockAgendaItemPaint; 45extern int globalFlagBlockAgendaItemPaint;
46extern int globalFlagBlockAgendaItemUpdate; 46extern int globalFlagBlockAgendaItemUpdate;
47 47
48#include "koprefs.h" 48#include "koprefs.h"
49 49
50#include "koagendaitem.h" 50#include "koagendaitem.h"
51//#include "koagendaitem.moc" 51//#include "koagendaitem.moc"
52 52
53 53
54//-------------------------------------------------------------------------- 54//--------------------------------------------------------------------------
55 55
56QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; 56QToolTipGroup *KOAgendaItem::mToolTipGroup = 0;
57 57
58//-------------------------------------------------------------------------- 58//--------------------------------------------------------------------------
59 59
60class KOAgendaItemWhatsThis :public QWhatsThis 60class KOAgendaItemWhatsThis :public QWhatsThis
61{ 61{
62public: 62public:
63 KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; 63 KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { };
64 64
65protected: 65protected:
66 virtual QString text( const QPoint& ) 66 virtual QString text( const QPoint& )
67 { 67 {
68 return _view->getWhatsThisText() ; 68 return _view->getWhatsThisText() ;
69 } 69 }
70private: 70private:
71 KOAgendaItem * _view; 71 KOAgendaItem * _view;
72}; 72};
73 73
74KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, 74KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday,
75 const char *name,WFlags) : 75 const char *name,WFlags) :
76 QWidget(parent, name), mIncidence(incidence), mDate(qd) 76 QWidget(parent, name), mIncidence(incidence), mDate(qd)
77{ 77{
78#ifndef DESKTOP_VERSION 78#ifndef DESKTOP_VERSION
79 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); 79 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
80#endif 80#endif
81 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this); 81 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this);
82 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase 82 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase
83 setWFlags ( wflags); 83 setWFlags ( wflags);
84 mAllDay = allday; 84 mAllDay = allday;
85 init ( incidence, qd ); 85 init ( incidence, qd );
86 //setMouseTracking(true); 86 //setMouseTracking(true);
87 //setAcceptDrops(true); 87 //setAcceptDrops(true);
88 xPaintCoord = -1; 88 xPaintCoord = -1;
89 yPaintCoord = -1; 89 yPaintCoord = -1;
90} 90}
91QString KOAgendaItem::getWhatsThisText() 91QString KOAgendaItem::getWhatsThisText()
92{ 92{
93 if ( mIncidence ) 93 if ( mIncidence )
94 return KIncidenceFormatter::instance()->getFormattedText( mIncidence, 94 return KIncidenceFormatter::instance()->getFormattedText( mIncidence,
95 KOPrefs::instance()->mWTshowDetails, 95 KOPrefs::instance()->mWTshowDetails,
96 KOPrefs::instance()->mWTshowCreated, 96 KOPrefs::instance()->mWTshowCreated,
97 KOPrefs::instance()->mWTshowChanged); 97 KOPrefs::instance()->mWTshowChanged);
98 return "KOAgendaItem::getWhatsThisText()::internal error"; 98 return "KOAgendaItem::getWhatsThisText()::internal error";
99} 99}
100 100
101void KOAgendaItem::initColor () 101void KOAgendaItem::initColor ()
102{ 102{
103 if ( (mIncidence->typeID() == todoID ) && 103 if ( (mIncidence->typeID() == todoID ) &&
104 ( !((static_cast<Todo*>(mIncidence))->isCompleted()) && 104 ( !((static_cast<Todo*>(mIncidence))->isCompleted()) &&
105 ((static_cast<Todo*>(mIncidence))->dtDue().date() <= QDate::currentDate()) ) ) { 105 ((static_cast<Todo*>(mIncidence))->dtDue().date() <= QDate::currentDate()) ) ) {
106 if ( (static_cast<Todo*>(mIncidence))->dtDue() < QDateTime::currentDateTime().date()) 106 if ( (static_cast<Todo*>(mIncidence))->dtDue() < QDateTime::currentDateTime().date())
107 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; 107 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ;
108 else 108 else
109 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; 109 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor;
110 } 110 }
111 else { 111 else {
112 QStringList categories = mIncidence->categories(); 112 QStringList categories = mIncidence->categories();
113 QString cat = categories.first(); 113 QString cat = categories.first();
114 if (cat.isEmpty()) { 114 if (cat.isEmpty()) {
115 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) 115 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) )
116 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; 116 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor;
117 else 117 else
118 mBackgroundColor =KOPrefs::instance()->defaultColor( mIncidence->calID() ); 118 mBackgroundColor =KOPrefs::instance()->defaultColor( mIncidence->calID() );
119 } else { 119 } else {
120 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); 120 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat);
121 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) { 121 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) {
122 if ( mBackgroundColor == KOPrefs::instance()->mEventColor ) 122 if ( mBackgroundColor == KOPrefs::instance()->mEventColor )
123 mBackgroundColor = KOPrefs::instance()->mTodoDoneColor; 123 mBackgroundColor = KOPrefs::instance()->mTodoDoneColor;
124 } 124 }
125 } 125 }
126 126
127 } 127 }
128 128
129 QColor BackgroundColor ( mBackgroundColor ); 129 QColor BackgroundColor ( mBackgroundColor );
130 if ( mIncidence->calID() > 1 ) { 130 if ( mIncidence->calID() > 1 ) {
131 //BackgroundColor = KOPrefs::instance()->defaultColor( mIncidence->calID() ); 131 //BackgroundColor = KOPrefs::instance()->defaultColor( mIncidence->calID() );
132 } 132 }
133 mColorGroup = QColorGroup( BackgroundColor.light(), 133 mColorGroup = QColorGroup( BackgroundColor.light(),
134 BackgroundColor.dark(),BackgroundColor.light(), 134 BackgroundColor.dark(),BackgroundColor.light(),
135 BackgroundColor.dark(),BackgroundColor, black, BackgroundColor) ; 135 BackgroundColor.dark(),BackgroundColor, black, BackgroundColor) ;
136 setBackgroundColor( mBackgroundColor ); 136 setBackgroundColor( mBackgroundColor );
137 mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250); 137 mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250);
138} 138}
139void KOAgendaItem::init ( Incidence *incidence, QDate qd ) 139void KOAgendaItem::init ( Incidence *incidence, QDate qd )
140{ 140{
141 mIncidence = incidence; 141 mIncidence = incidence;
142 mDate = qd; 142 mDate = qd;
143 mFirstMultiItem = 0; 143 mFirstMultiItem = 0;
144 mNextMultiItem = 0; 144 mNextMultiItem = 0;
145 mLastMultiItem = 0; 145 mLastMultiItem = 0;
146 computeText(); 146 computeText();
147 initColor(); 147 initColor();
148 mConflictItems.clear(); 148 mConflictItems.clear();
149 setCellXY(0,0,1); 149 setCellXY(0,0,1);
150 setCellXWidth(0); 150 setCellXWidth(0);
151 setSubCell(0); 151 setSubCell(0);
152 setSubCells(1); 152 setSubCells(1);
153 setMultiItem(0,0,0); 153 setMultiItem(0,0,0);
154 startMove(); 154 startMove();
155 mSelected = true; 155 mSelected = true;
156 select(false); 156 select(false);
157 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); 157 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont);
158 mFontPixelSize = fontinf.height();; 158 mFontPixelSize = fontinf.height();;
159 hide(); 159 hide();
160 xPaintCoord = -1; 160 xPaintCoord = -1;
161 yPaintCoord = -1; 161 yPaintCoord = -1;
162} 162}
163 163
164 164
165KOAgendaItem::~KOAgendaItem() 165KOAgendaItem::~KOAgendaItem()
166{ 166{
167#if QT_VERSION >= 0x030000 167#if QT_VERSION >= 0x030000
168 168
169#else 169#else
170 delete mKOAgendaItemWhatsThis; 170 delete mKOAgendaItemWhatsThis;
171#endif 171#endif
172 172
173} 173}
174 174
175void KOAgendaItem::recreateIncidence() 175void KOAgendaItem::recreateIncidence()
176{ 176{
177#if 0 177#if 0
178 Incidence* newInc = mIncidence->clone(); 178 Incidence* newInc = mIncidence->clone();
179 newInc->recreate(); 179 newInc->recreate();
180 if ( mIncidence->doesRecur() ) { 180 if ( mIncidence->doesRecur() ) {
181 mIncidence->addExDate( mDate ); 181 mIncidence->addExDate( mDate );
182 newInc->recurrence()->unsetRecurs(); 182 newInc->recurrence()->unsetRecurs();
183 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); 183 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd());
184 QTime tim = mIncidence->dtStart().time(); 184 QTime tim = mIncidence->dtStart().time();
185 newInc->setDtStart( QDateTime(mDate, tim) ); 185 newInc->setDtStart( QDateTime(mDate, tim) );
186 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); 186 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) );
187 } 187 }
188#endif 188#endif
189 mIncidence = mIncidence->recreateCloneException( mDate ); 189 mIncidence = mIncidence->recreateCloneException( mDate );
190} 190}
191bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) 191bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout)
192{ 192{
193 int size = AGENDA_ICON_SIZE; 193 int size = AGENDA_ICON_SIZE;
194 194
195 int yOff = 0; 195 int yOff = 0;
196 int xOff = 0; 196 int xOff = 0;
197 int x = pos().x(); 197 int x = pos().x();
198 198
199 if ( x < 0 ) x = 0; 199 if ( x < 0 ) x = 0;
200 x += 3; 200 x += 3;
201 int y; 201 int y;
202 if ( mAllDay ) 202 if ( mAllDay )
203 y = pos().y()+3; 203 y = pos().y()+3;
204 else 204 else
205 y = mCellYTop * ( height() / cellHeight() ) +3; 205 y = mCellYTop * ( height() / cellHeight() ) +3;
206 206
207 207
208 if ( mIncidence->calID() > 1 ) { 208 if ( mIncidence->calID() > 1 ) {
209 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); 209 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, KOPrefs::instance()->defaultColor( mIncidence->calID() ) );
210 p->drawRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x-1, yOff*( 1 +AGENDA_ICON_SIZE)+y-1, AGENDA_ICON_SIZE+2, AGENDA_ICON_SIZE+2 ); 210 p->drawRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x-1, yOff*( 1 +AGENDA_ICON_SIZE)+y-1, AGENDA_ICON_SIZE+2, AGENDA_ICON_SIZE+2 );
211 if ( horLayout ){ 211 if ( horLayout ){
212 ++xOff; 212 ++xOff;
213 ++x; 213 ++x;
214 } 214 }
215 else { 215 else {
216 ++yOff; 216 ++yOff;
217 ++y; 217 ++y;
218 } 218 }
219 } 219 }
220 if (mIncidence->cancelled() && height() < 20 ) { 220 if (mIncidence->cancelled() && height() < 20 ) {
221 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; 221 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x;
222 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; 222 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y;
223 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); 223 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 );
224 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); 224 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos );
225 if ( horLayout ) 225 if ( horLayout )
226 ++xOff; 226 ++xOff;
227 else 227 else
228 ++yOff; 228 ++yOff;
229 } 229 }
230 if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) { 230 if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) {
231 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red ); 231 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red );
232 if ( horLayout ) 232 if ( horLayout )
233 ++xOff; 233 ++xOff;
234 else 234 else
235 ++yOff; 235 ++yOff;
236 } 236 }
237 if (mIncidence->recurrence()->doesRecur()) { 237 if (mIncidence->doesRecur()) {
238 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue ); 238 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue );
239 if ( horLayout ) 239 if ( horLayout )
240 ++xOff; 240 ++xOff;
241 else 241 else
242 ++yOff; 242 ++yOff;
243 } 243 }
244 if (mIncidence->description().length() > 0) { 244 if (mIncidence->description().length() > 0) {
245 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen ); 245 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen );
246 if ( horLayout ) 246 if ( horLayout )
247 ++xOff; 247 ++xOff;
248 else 248 else
249 ++yOff; 249 ++yOff;
250 } 250 }
251 if (mIncidence->isReadOnly()) { 251 if (mIncidence->isReadOnly()) {
252 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white ); 252 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white );
253 if ( horLayout ) 253 if ( horLayout )
254 ++xOff; 254 ++xOff;
255 else 255 else
256 ++yOff; 256 ++yOff;
257 } 257 }
258 258
259 if (mIncidence->attendeeCount()>0) { 259 if (mIncidence->attendeeCount()>0) {
260 260
261 if (mIncidence->organizer() == KOPrefs::instance()->email()) { 261 if (mIncidence->organizer() == KOPrefs::instance()->email()) {
262 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black ); 262 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black );
263 if ( horLayout ) 263 if ( horLayout )
264 ++xOff; 264 ++xOff;
265 else 265 else
266 ++yOff; 266 ++yOff;
267 } else { 267 } else {
268 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 268 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
269 if (me!=0) { 269 if (me!=0) {
270 270
271 271
272 } else { 272 } else {
273 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow ); 273 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow );
274 if ( horLayout ) 274 if ( horLayout )
275 ++xOff; 275 ++xOff;
276 else 276 else
277 ++yOff; 277 ++yOff;
278 278
279 } 279 }
280 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow ); 280 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow );
281 if ( horLayout ) 281 if ( horLayout )
282 ++xOff; 282 ++xOff;
283 else 283 else
284 ++yOff; 284 ++yOff;
285 285
286 } 286 }
287 287
288 } 288 }
289 return ( yOff || xOff ); 289 return ( yOff || xOff );
290} 290}
291 291
292 292
293void KOAgendaItem::select(bool selected) 293void KOAgendaItem::select(bool selected)
294{ 294{
295 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() ); 295 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() );
296 if (mSelected == selected) return; 296 if (mSelected == selected) return;
297 mSelected = selected; 297 mSelected = selected;
298 if ( ! isVisible() ) 298 if ( ! isVisible() )
299 return; 299 return;
300 if ( firstMultiItem() ) 300 if ( firstMultiItem() )
301 firstMultiItem()->select( selected ); 301 firstMultiItem()->select( selected );
302 if ( !firstMultiItem() && nextMultiItem() ) { 302 if ( !firstMultiItem() && nextMultiItem() ) {
303 KOAgendaItem * placeItem = nextMultiItem(); 303 KOAgendaItem * placeItem = nextMultiItem();
304 while ( placeItem ) { 304 while ( placeItem ) {
305 placeItem->select( selected ); 305 placeItem->select( selected );
306 placeItem = placeItem->nextMultiItem(); 306 placeItem = placeItem->nextMultiItem();
307 } 307 }
308 } 308 }
309 globalFlagBlockAgendaItemUpdate = 0; 309 globalFlagBlockAgendaItemUpdate = 0;
310 paintMe( selected ); 310 paintMe( selected );
311 globalFlagBlockAgendaItemUpdate = 1; 311 globalFlagBlockAgendaItemUpdate = 1;
312 repaint( false ); 312 repaint( false );
313} 313}
314 314
315 315
316/* 316/*
317 The eventFilter has to filter the mouse events of the agenda item childs. The 317 The eventFilter has to filter the mouse events of the agenda item childs. The
318 events are fed into the event handling method of KOAgendaItem. This allows the 318 events are fed into the event handling method of KOAgendaItem. This allows the
319 KOAgenda to handle the KOAgendaItems by using an eventFilter. 319 KOAgenda to handle the KOAgendaItems by using an eventFilter.
320*/ 320*/
321bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e ) 321bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e )
322{ 322{
323 if (e->type() == QEvent::MouseButtonPress || 323 if (e->type() == QEvent::MouseButtonPress ||
324 e->type() == QEvent::MouseButtonDblClick || 324 e->type() == QEvent::MouseButtonDblClick ||
325 e->type() == QEvent::MouseButtonRelease || 325 e->type() == QEvent::MouseButtonRelease ||
326 e->type() == QEvent::MouseMove) { 326 e->type() == QEvent::MouseMove) {
327 QMouseEvent *me = (QMouseEvent *)e; 327 QMouseEvent *me = (QMouseEvent *)e;
328 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)-> 328 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)->
329 mapToGlobal(me->pos())); 329 mapToGlobal(me->pos()));
330 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state()); 330 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state());
331 return event(&returnEvent); 331 return event(&returnEvent);
332 } else { 332 } else {
333 return false; 333 return false;
334 } 334 }
335} 335}
336void KOAgendaItem::repaintMe( ) 336void KOAgendaItem::repaintMe( )
337{ 337{
338 paintMe ( mSelected ); 338 paintMe ( mSelected );
339} 339}
340void KOAgendaItem::paintMe( bool selected, QPainter* paint ) 340void KOAgendaItem::paintMe( bool selected, QPainter* paint )
341{ 341{
342 if ( globalFlagBlockAgendaItemUpdate && ! selected) 342 if ( globalFlagBlockAgendaItemUpdate && ! selected)
343 return; 343 return;
344 QPainter pa; 344 QPainter pa;
345 345
346 if ( mSelected ) { 346 if ( mSelected ) {
347 pa.begin( this ); 347 pa.begin( this );
348 } else { 348 } else {
349 if ( mAllDay ) 349 if ( mAllDay )
350 pa.begin( paintPixAllday() ); 350 pa.begin( paintPixAllday() );
351 else 351 else
352 pa.begin( paintPix() ); 352 pa.begin( paintPix() );
353 } 353 }
354 int x, yy, w, h; 354 int x, yy, w, h;
355 float nfh = 7.0; 355 float nfh = 7.0;
356 x = pos().x(); w = width(); h = height (); 356 x = pos().x(); w = width(); h = height ();
357 if ( mAllDay ) 357 if ( mAllDay )
358 yy = y(); 358 yy = y();
359 else 359 else
360 yy = mCellYTop * ( height() / cellHeight() ); 360 yy = mCellYTop * ( height() / cellHeight() );
361 if ( mSelected ) { 361 if ( mSelected ) {
362 pa.translate( -x, -yy ); 362 pa.translate( -x, -yy );
363 } 363 }
364 xPaintCoord= x; 364 xPaintCoord= x;
365 yPaintCoord = yy; 365 yPaintCoord = yy;
366 wPaintCoord = width(); 366 wPaintCoord = width();
367 hPaintCoord = height(); 367 hPaintCoord = height();
368 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height()); 368 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height());
369 if ( paint == 0 ) 369 if ( paint == 0 )
370 paint = &pa; 370 paint = &pa;
371 bool horLayout = ( w < h ); 371 bool horLayout = ( w < h );
372 int maxhei = mFontPixelSize+4; 372 int maxhei = mFontPixelSize+4;
373 if ( horLayout ) 373 if ( horLayout )
374 maxhei += AGENDA_ICON_SIZE -4; 374 maxhei += AGENDA_ICON_SIZE -4;
375 bool small = ( h < maxhei ); 375 bool small = ( h < maxhei );
376 if ( ! small ) 376 if ( ! small )
377 paint->setFont(KOPrefs::instance()->mAgendaViewFont); 377 paint->setFont(KOPrefs::instance()->mAgendaViewFont);
378 else { 378 else {
379 QFont f = KOPrefs::instance()->mAgendaViewFont; 379 QFont f = KOPrefs::instance()->mAgendaViewFont;
380 f.setBold( false ); 380 f.setBold( false );
381 int fh = f.pointSize(); 381 int fh = f.pointSize();
382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh; 382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh;
383 if ( nfh < 6 ) 383 if ( nfh < 6 )
384 nfh = 6; 384 nfh = 6;
385 f.setPointSize( nfh ); 385 f.setPointSize( nfh );
386 paint->setFont(f); 386 paint->setFont(f);
387 } 387 }
388 paint->fillRect ( x, yy, w, h, mBackgroundColor ); 388 paint->fillRect ( x, yy, w, h, mBackgroundColor );
389 static const QPixmap completedPxmp = SmallIcon("greenhook16"); 389 static const QPixmap completedPxmp = SmallIcon("greenhook16");
390 static const QPixmap overduePxmp = SmallIcon("redcross16"); 390 static const QPixmap overduePxmp = SmallIcon("redcross16");
391 if ( mIncidence->typeID() == todoID ) { 391 if ( mIncidence->typeID() == todoID ) {
392 Todo* tempTodo = static_cast<Todo*>(mIncidence); 392 Todo* tempTodo = static_cast<Todo*>(mIncidence);
393 int xx = pos().x()+(width()-completedPxmp.width()-3 ); 393 int xx = pos().x()+(width()-completedPxmp.width()-3 );
394 int yyy = yy+3; 394 int yyy = yy+3;
395 if ( tempTodo->isCompleted() ) 395 if ( tempTodo->isCompleted() )
396 paint->drawPixmap ( xx, yyy, completedPxmp ); 396 paint->drawPixmap ( xx, yyy, completedPxmp );
397 else { 397 else {
398 paint->drawPixmap ( xx, yyy, overduePxmp ); 398 paint->drawPixmap ( xx, yyy, overduePxmp );
399 399
400 } 400 }
401 } 401 }
402 bool addIcon = false; 402 bool addIcon = false;
403 if ( ! small || w > 3 * h || h > 3* w ) 403 if ( ! small || w > 3 * h || h > 3* w )
404 addIcon = updateIcons( paint, horLayout ); 404 addIcon = updateIcons( paint, horLayout );
405 405
406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0); 406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0);
407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0); 407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0);
408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h ); 408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h );
409 if ( ! small ) { 409 if ( ! small ) {
410 x += 3; yy += 3;w -= 6; h-= 5; 410 x += 3; yy += 3;w -= 6; h-= 5;
411 } else { 411 } else {
412 x += 2; yy += 1;w -= 4; h-= 4; 412 x += 2; yy += 1;w -= 4; h-= 4;
413 if ( nfh < 6.01 ) { 413 if ( nfh < 6.01 ) {
414 yy -= 2; 414 yy -= 2;
415 h += 4; 415 h += 4;
416 } 416 }
417 else 417 else
418 if ( nfh < h -2 ) 418 if ( nfh < h -2 )
419 ++yy; 419 ++yy;
420 } 420 }
421 int align; 421 int align;
422#ifndef DESKTOP_VERSION 422#ifndef DESKTOP_VERSION
423 align = ( AlignLeft|WordBreak|AlignTop); 423 align = ( AlignLeft|WordBreak|AlignTop);
424#else 424#else
425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
426#endif 426#endif
427 if ( addIcon ) { 427 if ( addIcon ) {
428 if ( ! horLayout ) { 428 if ( ! horLayout ) {
429 x += AGENDA_ICON_SIZE+3; 429 x += AGENDA_ICON_SIZE+3;
430 w -= (AGENDA_ICON_SIZE+3); 430 w -= (AGENDA_ICON_SIZE+3);
431 } 431 }
432 else { 432 else {
433 yy+= AGENDA_ICON_SIZE+2; 433 yy+= AGENDA_ICON_SIZE+2;
434 h -=(AGENDA_ICON_SIZE+3); 434 h -=(AGENDA_ICON_SIZE+3);
435 } 435 }
436 } 436 }
437 if ( mWhiteText ) 437 if ( mWhiteText )
438 paint->setPen ( white); 438 paint->setPen ( white);
439 if ( x < 0 ) { 439 if ( x < 0 ) {
440 w = w+x-3; 440 w = w+x-3;
441 x = 3; 441 x = 3;
442 if ( !horLayout && addIcon ) 442 if ( !horLayout && addIcon )
443 x += AGENDA_ICON_SIZE+3; 443 x += AGENDA_ICON_SIZE+3;
444 if ( w > parentWidget()->width() ){ 444 if ( w > parentWidget()->width() ){
445 w = parentWidget()->width() - 6; 445 w = parentWidget()->width() - 6;
446#ifndef DESKTOP_VERSION 446#ifndef DESKTOP_VERSION
447 align = ( AlignHCenter|WordBreak|AlignTop); 447 align = ( AlignHCenter|WordBreak|AlignTop);
448#else 448#else
449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop); 449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop);
450#endif 450#endif
451 451
452 } 452 }
453 } 453 }
454 QRect dr; 454 QRect dr;
455 if ( w + x > parentWidget()->width() ) 455 if ( w + x > parentWidget()->width() )
456 w = parentWidget()->width()-x; 456 w = parentWidget()->width()-x;
457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr ); 457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr );
458 //qDebug("%d %d %d %d ", x, yy, w, h ); 458 //qDebug("%d %d %d %d ", x, yy, w, h );
459 if ( mIncidence->cancelled() ){ 459 if ( mIncidence->cancelled() ){
460 460
461 461
462 small = ( height() < 20 ); 462 small = ( height() < 20 );
463 463
464 if ( ! small ) { 464 if ( ! small ) {
465 QFontMetrics fm ( paint->font() ); 465 QFontMetrics fm ( paint->font() );
466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2); 466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2);
467 } 467 }
468 468
469 } 469 }
470 pa.end(); 470 pa.end();
471 471
472} 472}
473 473
474QPixmap * KOAgendaItem::paintPix() 474QPixmap * KOAgendaItem::paintPix()
475{ 475{
476 static QPixmap* mPaintPix = 0; 476 static QPixmap* mPaintPix = 0;
477 if ( ! mPaintPix ) { 477 if ( ! mPaintPix ) {
478 int w = QApplication::desktop()->width(); 478 int w = QApplication::desktop()->width();
479 int h = QApplication::desktop()->height(); 479 int h = QApplication::desktop()->height();
480 mPaintPix = new QPixmap(w,h); 480 mPaintPix = new QPixmap(w,h);
481 } 481 }
482 return mPaintPix ; 482 return mPaintPix ;
483} 483}
484QPixmap * KOAgendaItem::paintPixAllday() 484QPixmap * KOAgendaItem::paintPixAllday()
485{ 485{
486 static QPixmap* mPaintPixA = 0; 486 static QPixmap* mPaintPixA = 0;
487 if ( ! mPaintPixA ) { 487 if ( ! mPaintPixA ) {
488 int w = QApplication::desktop()->width(); 488 int w = QApplication::desktop()->width();
489 int h = QApplication::desktop()->height()/5; 489 int h = QApplication::desktop()->height()/5;
490 mPaintPixA = new QPixmap(w,h); 490 mPaintPixA = new QPixmap(w,h);
491 } 491 }
492 return mPaintPixA ; 492 return mPaintPixA ;
493} 493}
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index a01323a..04f30bb 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -948,513 +948,513 @@ void KOAgendaView::updateView()
948{ 948{
949 if ( mBlockUpdating ) 949 if ( mBlockUpdating )
950 return; 950 return;
951 // kdDebug() << "KOAgendaView::updateView()" << endl; 951 // kdDebug() << "KOAgendaView::updateView()" << endl;
952 fillAgenda(); 952 fillAgenda();
953 953
954} 954}
955 955
956 956
957/* 957/*
958 Update configuration settings for the agenda view. This method is not 958 Update configuration settings for the agenda view. This method is not
959 complete. 959 complete.
960*/ 960*/
961void KOAgendaView::updateConfig() 961void KOAgendaView::updateConfig()
962{ 962{
963 if ( mBlockUpdating ) 963 if ( mBlockUpdating )
964 return; 964 return;
965 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) { 965 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) {
966 int old = KOPrefs::instance()->mHourSize; 966 int old = KOPrefs::instance()->mHourSize;
967 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1; 967 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1;
968 //qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize ); 968 //qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize );
969 } 969 }
970 970
971 971
972 // update config for children 972 // update config for children
973 mTimeLabels->updateConfig(); 973 mTimeLabels->updateConfig();
974 mAgenda->storePosition(); 974 mAgenda->storePosition();
975 mAgenda->updateConfig(); 975 mAgenda->updateConfig();
976 mAllDayAgenda->updateConfig(); 976 mAllDayAgenda->updateConfig();
977 // widget synchronization 977 // widget synchronization
978 //TODO: find a better way, maybe signal/slot 978 //TODO: find a better way, maybe signal/slot
979 mTimeLabels->positionChanged(); 979 mTimeLabels->positionChanged();
980 980
981 // for some reason, this needs to be called explicitly 981 // for some reason, this needs to be called explicitly
982 mTimeLabels->repaint(); 982 mTimeLabels->repaint();
983 983
984 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 984 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
985 985
986 // ToolTips displaying summary of events 986 // ToolTips displaying summary of events
987 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() 987 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance()
988 ->mEnableToolTips); 988 ->mEnableToolTips);
989 989
990 //setHolidayMasks(); 990 //setHolidayMasks();
991 991
992 //createDayLabels(); called by via updateView(); 992 //createDayLabels(); called by via updateView();
993 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); 993 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth());
994 updateView(); 994 updateView();
995 mAgenda->restorePosition(); 995 mAgenda->restorePosition();
996} 996}
997 997
998 998
999void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) 999void KOAgendaView::updateEventDates(KOAgendaItem *item, int type)
1000{ 1000{
1001 1001
1002 1002
1003 int xxx = item->cellX(); 1003 int xxx = item->cellX();
1004 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() ); 1004 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() );
1005 if ( mMinY.at(xxx) > item->cellYTop() ) 1005 if ( mMinY.at(xxx) > item->cellYTop() )
1006 mMinY.at(xxx) = item->cellYTop(); 1006 mMinY.at(xxx) = item->cellYTop();
1007 if ( mMaxY.at(xxx) < item->cellYBottom() ) 1007 if ( mMaxY.at(xxx) < item->cellYBottom() )
1008 mMaxY.at(xxx) = item->cellYBottom(); 1008 mMaxY.at(xxx) = item->cellYBottom();
1009 1009
1010 QDateTime startDt,endDt; 1010 QDateTime startDt,endDt;
1011 QDate startDate; 1011 QDate startDate;
1012 int lenInSecs; 1012 int lenInSecs;
1013 // if ( type == KOAgenda::RESIZETOP ) 1013 // if ( type == KOAgenda::RESIZETOP )
1014 // qDebug("RESIZETOP "); 1014 // qDebug("RESIZETOP ");
1015 // if ( type == KOAgenda::RESIZEBOTTOM ) 1015 // if ( type == KOAgenda::RESIZEBOTTOM )
1016 // qDebug("RESIZEBOTTOM "); 1016 // qDebug("RESIZEBOTTOM ");
1017 // if ( type == KOAgenda::MOVE ) 1017 // if ( type == KOAgenda::MOVE )
1018 // qDebug("MOVE "); 1018 // qDebug("MOVE ");
1019 if ( item->incidence()->typeID() == eventID ) { 1019 if ( item->incidence()->typeID() == eventID ) {
1020 startDt =item->incidence()->dtStart(); 1020 startDt =item->incidence()->dtStart();
1021 endDt = item->incidence()->dtEnd(); 1021 endDt = item->incidence()->dtEnd();
1022 lenInSecs = startDt.secsTo( endDt ); 1022 lenInSecs = startDt.secsTo( endDt );
1023 } 1023 }
1024 1024
1025 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); 1025 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED );
1026 1026
1027 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) { 1027 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) {
1028 startDate = mSelectedDates[item->mLastMoveXPos]; 1028 startDate = mSelectedDates[item->mLastMoveXPos];
1029 } else { 1029 } else {
1030 if (item->cellX() < 0) { 1030 if (item->cellX() < 0) {
1031 startDate = (mSelectedDates.first()).addDays(item->cellX()); 1031 startDate = (mSelectedDates.first()).addDays(item->cellX());
1032 } else { 1032 } else {
1033 startDate = mSelectedDates[item->cellX()]; 1033 startDate = mSelectedDates[item->cellX()];
1034 } 1034 }
1035 } 1035 }
1036 startDt.setDate(startDate); 1036 startDt.setDate(startDate);
1037 1037
1038 if (item->incidence()->doesFloat()) { 1038 if (item->incidence()->doesFloat()) {
1039 endDt.setDate(startDate.addDays(item->cellWidth() - 1)); 1039 endDt.setDate(startDate.addDays(item->cellWidth() - 1));
1040 } else { 1040 } else {
1041 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) 1041 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE )
1042 startDt.setTime(mAgenda->gyToTime(item->cellYTop())); 1042 startDt.setTime(mAgenda->gyToTime(item->cellYTop()));
1043 if ( item->incidence()->typeID() == eventID ) { 1043 if ( item->incidence()->typeID() == eventID ) {
1044 if ( type == KOAgenda::MOVE ) { 1044 if ( type == KOAgenda::MOVE ) {
1045 endDt = startDt.addSecs(lenInSecs); 1045 endDt = startDt.addSecs(lenInSecs);
1046 1046
1047 } else if ( type == KOAgenda::RESIZEBOTTOM ) { 1047 } else if ( type == KOAgenda::RESIZEBOTTOM ) {
1048 if (item->lastMultiItem()) { 1048 if (item->lastMultiItem()) {
1049 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1049 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1050 endDt.setDate(startDate. 1050 endDt.setDate(startDate.
1051 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1051 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1052 } else { 1052 } else {
1053 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1053 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1054 endDt.setDate(startDate); 1054 endDt.setDate(startDate);
1055 } 1055 }
1056 } 1056 }
1057 } else { 1057 } else {
1058 // todo 1058 // todo
1059 if (item->lastMultiItem()) { 1059 if (item->lastMultiItem()) {
1060 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1060 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1061 endDt.setDate(startDate. 1061 endDt.setDate(startDate.
1062 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1062 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1063 } else { 1063 } else {
1064 //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); 1064 //qDebug("tem->cellYBottom() %d",item->cellYBottom() );
1065 if ( item->cellYBottom() > 0 ) 1065 if ( item->cellYBottom() > 0 )
1066 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1066 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1067 else 1067 else
1068 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); 1068 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time());
1069 endDt.setDate(startDate); 1069 endDt.setDate(startDate);
1070 } 1070 }
1071 } 1071 }
1072 } 1072 }
1073 if ( item->incidence()->typeID() == eventID ) { 1073 if ( item->incidence()->typeID() == eventID ) {
1074 item->incidence()->setDtStart(startDt); 1074 item->incidence()->setDtStart(startDt);
1075 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); 1075 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt);
1076 } else if ( item->incidence()->typeID() == todoID ) { 1076 } else if ( item->incidence()->typeID() == todoID ) {
1077 Todo* to = static_cast<Todo*>(item->incidence()); 1077 Todo* to = static_cast<Todo*>(item->incidence());
1078 1078
1079 to->setDtDue(endDt); 1079 to->setDtDue(endDt);
1080 if ( to->hasStartDate() ) { 1080 if ( to->hasStartDate() ) {
1081 if (to->dtStart() >= to->dtDue() ) 1081 if (to->dtStart() >= to->dtDue() )
1082 to->setDtStart(to->dtDue().addDays( -2 )); 1082 to->setDtStart(to->dtDue().addDays( -2 ));
1083 } 1083 }
1084 1084
1085 } 1085 }
1086 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); 1086 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() );
1087 item->incidence()->setRevision(item->incidence()->revision()+1); 1087 item->incidence()->setRevision(item->incidence()->revision()+1);
1088 item->setItemDate(startDt.date()); 1088 item->setItemDate(startDt.date());
1089 //item->updateItem(); 1089 //item->updateItem();
1090 if ( item->incidence()->typeID() == todoID ) { 1090 if ( item->incidence()->typeID() == todoID ) {
1091 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); 1091 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED );
1092 1092
1093 } 1093 }
1094 else 1094 else
1095 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); 1095 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED);
1096 item->updateItem(); 1096 item->updateItem();
1097} 1097}
1098 1098
1099void KOAgendaView::showDates( const QDate &start, const QDate &end ) 1099void KOAgendaView::showDates( const QDate &start, const QDate &end )
1100{ 1100{
1101 // kdDebug() << "KOAgendaView::selectDates" << endl; 1101 // kdDebug() << "KOAgendaView::selectDates" << endl;
1102 1102
1103 mSelectedDates.clear(); 1103 mSelectedDates.clear();
1104 // qDebug("KOAgendaView::showDates "); 1104 // qDebug("KOAgendaView::showDates ");
1105 QDate d = start; 1105 QDate d = start;
1106 while (d <= end) { 1106 while (d <= end) {
1107 mSelectedDates.append(d); 1107 mSelectedDates.append(d);
1108 d = d.addDays( 1 ); 1108 d = d.addDays( 1 );
1109 } 1109 }
1110 1110
1111 // and update the view 1111 // and update the view
1112 fillAgenda(); 1112 fillAgenda();
1113} 1113}
1114 1114
1115 1115
1116void KOAgendaView::showEvents(QPtrList<Event>) 1116void KOAgendaView::showEvents(QPtrList<Event>)
1117{ 1117{
1118 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl; 1118 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl;
1119} 1119}
1120 1120
1121void KOAgendaView::changeEventDisplay(Event *, int) 1121void KOAgendaView::changeEventDisplay(Event *, int)
1122{ 1122{
1123 // qDebug("KOAgendaView::changeEventDisplay "); 1123 // qDebug("KOAgendaView::changeEventDisplay ");
1124 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl; 1124 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl;
1125 // this should be re-written to be MUCH smarter. Right now we 1125 // this should be re-written to be MUCH smarter. Right now we
1126 // are just playing dumb. 1126 // are just playing dumb.
1127 fillAgenda(); 1127 fillAgenda();
1128} 1128}
1129 1129
1130void KOAgendaView::fillAgenda(const QDate &) 1130void KOAgendaView::fillAgenda(const QDate &)
1131{ 1131{
1132 // qDebug("KOAgendaView::fillAgenda "); 1132 // qDebug("KOAgendaView::fillAgenda ");
1133 fillAgenda(); 1133 fillAgenda();
1134} 1134}
1135 1135
1136void KOAgendaView::fillAgenda() 1136void KOAgendaView::fillAgenda()
1137{ 1137{
1138 if ( globalFlagBlockStartup ) 1138 if ( globalFlagBlockStartup )
1139 return; 1139 return;
1140 if ( globalFlagBlockAgenda == 1 ) 1140 if ( globalFlagBlockAgenda == 1 )
1141 return; 1141 return;
1142 static bool onlyOne = false; 1142 static bool onlyOne = false;
1143 if ( onlyOne ) 1143 if ( onlyOne )
1144 return; 1144 return;
1145 onlyOne = true; 1145 onlyOne = true;
1146 //if ( globalFlagBlockAgenda == 2 ) 1146 //if ( globalFlagBlockAgenda == 2 )
1147 //globalFlagBlockAgenda = 0; 1147 //globalFlagBlockAgenda = 0;
1148 // globalFlagBlockPainting = false; 1148 // globalFlagBlockPainting = false;
1149 if ( globalFlagBlockAgenda == 0 ) 1149 if ( globalFlagBlockAgenda == 0 )
1150 globalFlagBlockAgenda = 1; 1150 globalFlagBlockAgenda = 1;
1151 // clearView(); 1151 // clearView();
1152 //qDebug("fillAgenda()++++ "); 1152 //qDebug("fillAgenda()++++ ");
1153 globalFlagBlockAgendaItemPaint = 1; 1153 globalFlagBlockAgendaItemPaint = 1;
1154 1154
1155 mAllDayAgenda->changeColumns(mSelectedDates.count()); 1155 mAllDayAgenda->changeColumns(mSelectedDates.count());
1156 mAgenda->changeColumns(mSelectedDates.count()); 1156 mAgenda->changeColumns(mSelectedDates.count());
1157 qApp->processEvents(); 1157 qApp->processEvents();
1158 mEventIndicatorTop->changeColumns(mSelectedDates.count()); 1158 mEventIndicatorTop->changeColumns(mSelectedDates.count());
1159 mEventIndicatorBottom->changeColumns(mSelectedDates.count()); 1159 mEventIndicatorBottom->changeColumns(mSelectedDates.count());
1160 setHolidayMasks(); 1160 setHolidayMasks();
1161 1161
1162 mMinY.resize(mSelectedDates.count()); 1162 mMinY.resize(mSelectedDates.count());
1163 mMaxY.resize(mSelectedDates.count()); 1163 mMaxY.resize(mSelectedDates.count());
1164 1164
1165 QPtrList<Event> dayEvents; 1165 QPtrList<Event> dayEvents;
1166 1166
1167 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1167 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1168 // Therefore, gtodoset all of them. 1168 // Therefore, gtodoset all of them.
1169 QPtrList<Todo> todos = calendar()->todos(); 1169 QPtrList<Todo> todos = calendar()->todos();
1170 1170
1171 mAgenda->setDateList(mSelectedDates); 1171 mAgenda->setDateList(mSelectedDates);
1172 1172
1173 QDate today = QDate::currentDate(); 1173 QDate today = QDate::currentDate();
1174 1174
1175 DateList::ConstIterator dit; 1175 DateList::ConstIterator dit;
1176 int curCol = 0; 1176 int curCol = 0;
1177 int maxCol = mSelectedDates.count()-1; 1177 int maxCol = mSelectedDates.count()-1;
1178 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 1178 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
1179 QDate currentDate = *dit; 1179 QDate currentDate = *dit;
1180 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString() 1180 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString()
1181 // << endl; 1181 // << endl;
1182 1182
1183 dayEvents = calendar()->events(currentDate,false); 1183 dayEvents = calendar()->events(currentDate,false);
1184 1184
1185 // Default values, which can never be reached 1185 // Default values, which can never be reached
1186 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1; 1186 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1;
1187 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1; 1187 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1;
1188 1188
1189 unsigned int numEvent; 1189 unsigned int numEvent;
1190 //qDebug("+++++NUMEVENT %d", dayEvents.count()); 1190 //qDebug("+++++NUMEVENT %d", dayEvents.count());
1191 for(numEvent=0;numEvent<dayEvents.count();++numEvent) { 1191 for(numEvent=0;numEvent<dayEvents.count();++numEvent) {
1192 Event *event = dayEvents.at(numEvent); 1192 Event *event = dayEvents.at(numEvent);
1193 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1193 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1194 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1194 if ( event->uid().left(15) == QString("last-syncEvent-") )
1195 continue; 1195 continue;
1196 // kdDebug() << " Event: " << event->summary() << endl; 1196 // kdDebug() << " Event: " << event->summary() << endl;
1197 1197
1198 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol; 1198 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol;
1199 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol; 1199 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol;
1200 1200
1201 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl; 1201 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl;
1202 1202
1203 if (event->doesFloat()) { 1203 if (event->doesFloat()) {
1204 if (event->recurrence()->doesRecur()) { 1204 if (event->doesRecur()) {
1205 if (event->isMultiDay() ) { 1205 if (event->isMultiDay() ) {
1206 endX = endX - beginX;// endX is now number of days 1206 endX = endX - beginX;// endX is now number of days
1207 if ( event->recursOn( currentDate ) ) { 1207 if ( event->recursOn( currentDate ) ) {
1208 endX += curCol; 1208 endX += curCol;
1209 beginX = curCol; 1209 beginX = curCol;
1210 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1210 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1211 } else { 1211 } else {
1212 //qDebug("days endX %d curCol %d max Col %d %s",endX ,curCol, maxCol, currentDate.toString().latin1()); 1212 //qDebug("days endX %d curCol %d max Col %d %s",endX ,curCol, maxCol, currentDate.toString().latin1());
1213 if ( curCol == maxCol && maxCol+1 < endX ) { 1213 if ( curCol == maxCol && maxCol+1 < endX ) {
1214 int i; 1214 int i;
1215 for ( i = 1; i< endX; ++i ) { 1215 for ( i = 1; i< endX; ++i ) {
1216 if ( event->recursOn( currentDate.addDays( -i ) ) ) 1216 if ( event->recursOn( currentDate.addDays( -i ) ) )
1217 break; 1217 break;
1218 } 1218 }
1219 if ( i > maxCol ) { 1219 if ( i > maxCol ) {
1220 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol); 1220 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol);
1221 //qDebug("BINGO "); 1221 //qDebug("BINGO ");
1222 } 1222 }
1223 1223
1224 } else { 1224 } else {
1225 QDate dateit = currentDate.addDays( -endX ); 1225 QDate dateit = currentDate.addDays( -endX );
1226 if ( event->recursOn( dateit ) ) { 1226 if ( event->recursOn( dateit ) ) {
1227 //qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() ); 1227 //qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() );
1228 if ( curCol-endX < 0 ) { 1228 if ( curCol-endX < 0 ) {
1229 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol); 1229 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol);
1230 } 1230 }
1231 } 1231 }
1232 } 1232 }
1233 } 1233 }
1234 } else { 1234 } else {
1235 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); 1235 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol);
1236 } 1236 }
1237 1237
1238 } else { 1238 } else {
1239 if (beginX <= 0 && curCol == 0) { 1239 if (beginX <= 0 && curCol == 0) {
1240 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1240 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1241 } else if (beginX == curCol) { 1241 } else if (beginX == curCol) {
1242 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1242 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1243 } 1243 }
1244 } 1244 }
1245 } else if (event->isMultiDay()) { 1245 } else if (event->isMultiDay()) {
1246 if ( event->doesRecur () ) { 1246 if ( event->doesRecur () ) {
1247 QDate dateit = currentDate; 1247 QDate dateit = currentDate;
1248 int count = 0; 1248 int count = 0;
1249 int max = event->dtStart().daysTo( event->dtEnd() ) +2; 1249 int max = event->dtStart().daysTo( event->dtEnd() ) +2;
1250 while (! event->recursOn( dateit ) && count <= max ) { 1250 while (! event->recursOn( dateit ) && count <= max ) {
1251 ++count; 1251 ++count;
1252 dateit = dateit.addDays( -1 ); 1252 dateit = dateit.addDays( -1 );
1253 } 1253 }
1254 bool ok; 1254 bool ok;
1255 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok ); 1255 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok );
1256 if ( ok ) 1256 if ( ok )
1257 { 1257 {
1258 int secs = event->dtStart().secsTo( event->dtEnd() ); 1258 int secs = event->dtStart().secsTo( event->dtEnd() );
1259 QDateTime nextOcend =nextOcstart.addSecs( secs ); ; 1259 QDateTime nextOcend =nextOcstart.addSecs( secs ); ;
1260 beginX = currentDate.daysTo(nextOcstart.date()) + curCol; 1260 beginX = currentDate.daysTo(nextOcstart.date()) + curCol;
1261 endX = currentDate.daysTo(nextOcend.date()) + curCol; 1261 endX = currentDate.daysTo(nextOcend.date()) + curCol;
1262 1262
1263 } 1263 }
1264 } 1264 }
1265 int startY = mAgenda->timeToY(event->dtStart().time()); 1265 int startY = mAgenda->timeToY(event->dtStart().time());
1266 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1266 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1267 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol ); 1267 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol );
1268 if ((beginX <= 0 && curCol == 0) || beginX == curCol) { 1268 if ((beginX <= 0 && curCol == 0) || beginX == curCol) {
1269 //qDebug("insert!!! "); 1269 //qDebug("insert!!! ");
1270 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY); 1270 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY);
1271 } 1271 }
1272 if (beginX == curCol) { 1272 if (beginX == curCol) {
1273 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1273 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1274 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1274 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1275 } else if (endX == curCol) { 1275 } else if (endX == curCol) {
1276 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1276 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1277 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1277 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1278 } else { 1278 } else {
1279 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1279 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1280 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1280 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1281 } 1281 }
1282 } else { 1282 } else {
1283 int startY = mAgenda->timeToY(event->dtStart().time()); 1283 int startY = mAgenda->timeToY(event->dtStart().time());
1284 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1284 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1285 if (endY < startY) endY = startY; 1285 if (endY < startY) endY = startY;
1286 mAgenda->insertItem(event,currentDate,curCol,startY,endY); 1286 mAgenda->insertItem(event,currentDate,curCol,startY,endY);
1287 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1287 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1288 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1288 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1289 } 1289 }
1290 } 1290 }
1291 // ---------- [display Todos -------------- 1291 // ---------- [display Todos --------------
1292 unsigned int numTodo; 1292 unsigned int numTodo;
1293 for (numTodo = 0; numTodo < todos.count(); ++numTodo) { 1293 for (numTodo = 0; numTodo < todos.count(); ++numTodo) {
1294 Todo *todo = todos.at(numTodo); 1294 Todo *todo = todos.at(numTodo);
1295 1295
1296 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date 1296 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date
1297 if ( todo->hasCompletedDate() && !KOPrefs::instance()->mShowCompletedTodoInAgenda ) continue; 1297 if ( todo->hasCompletedDate() && !KOPrefs::instance()->mShowCompletedTodoInAgenda ) continue;
1298 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1298 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1299 // Already completed items can be displayed on their original due date 1299 // Already completed items can be displayed on their original due date
1300 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda 1300 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda
1301 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda; 1301 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda;
1302 bool fillIn = false; 1302 bool fillIn = false;
1303 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate ) 1303 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate )
1304 fillIn = true; 1304 fillIn = true;
1305 if ( ! fillIn && !todo->hasCompletedDate() ) 1305 if ( ! fillIn && !todo->hasCompletedDate() )
1306 fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue); 1306 fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue);
1307 if ( fillIn ) { 1307 if ( fillIn ) {
1308 if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue 1308 if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue
1309 if ( KOPrefs::instance()->mShowTodoInAgenda ) 1309 if ( KOPrefs::instance()->mShowTodoInAgenda )
1310 mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol); 1310 mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol);
1311 } 1311 }
1312 else { 1312 else {
1313 QDateTime dt; 1313 QDateTime dt;
1314 if ( todo->hasCompletedDate() ) 1314 if ( todo->hasCompletedDate() )
1315 dt = todo->completed(); 1315 dt = todo->completed();
1316 else 1316 else
1317 dt = todo->dtDue();; 1317 dt = todo->dtDue();;
1318 1318
1319 1319
1320 int endY = mAgenda->timeToY(dt.time()) - 1; 1320 int endY = mAgenda->timeToY(dt.time()) - 1;
1321 int hi = (18/KOPrefs::instance()->mHourSize); 1321 int hi = (18/KOPrefs::instance()->mHourSize);
1322 //qDebug("hei %d ",KOPrefs::instance()->mHourSize); 1322 //qDebug("hei %d ",KOPrefs::instance()->mHourSize);
1323 int startY = endY -hi; 1323 int startY = endY -hi;
1324 1324
1325 mAgenda->insertItem(todo,currentDate,curCol,startY,endY); 1325 mAgenda->insertItem(todo,currentDate,curCol,startY,endY);
1326 1326
1327 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1327 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1328 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1328 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1329 } 1329 }
1330 } 1330 }
1331 } 1331 }
1332 // ---------- display Todos] -------------- 1332 // ---------- display Todos] --------------
1333 1333
1334 ++curCol; 1334 ++curCol;
1335 } 1335 }
1336 mAgenda->hideUnused(); 1336 mAgenda->hideUnused();
1337 mAllDayAgenda->hideUnused(); 1337 mAllDayAgenda->hideUnused();
1338 mAgenda->checkScrollBoundaries(); 1338 mAgenda->checkScrollBoundaries();
1339 deleteSelectedDateTime(); 1339 deleteSelectedDateTime();
1340 createDayLabels(); 1340 createDayLabels();
1341 emit incidenceSelected( 0 ); 1341 emit incidenceSelected( 0 );
1342 1342
1343 if ( globalFlagBlockAgenda == 2 ) { 1343 if ( globalFlagBlockAgenda == 2 ) {
1344 if ( KOPrefs::instance()->mSetTimeToDayStartAt ) 1344 if ( KOPrefs::instance()->mSetTimeToDayStartAt )
1345 setStartHour( KOPrefs::instance()->mDayBegins ); 1345 setStartHour( KOPrefs::instance()->mDayBegins );
1346 else if ( KOPrefs::instance()->mCenterOnCurrentTime ) 1346 else if ( KOPrefs::instance()->mCenterOnCurrentTime )
1347 setStartHour( QTime::currentTime ().hour() ); 1347 setStartHour( QTime::currentTime ().hour() );
1348 } 1348 }
1349 qApp->processEvents(); 1349 qApp->processEvents();
1350 globalFlagBlockAgenda = 0; 1350 globalFlagBlockAgenda = 0;
1351 mAllDayAgenda->drawContentsToPainter(); 1351 mAllDayAgenda->drawContentsToPainter();
1352 mAgenda->drawContentsToPainter(); 1352 mAgenda->drawContentsToPainter();
1353 repaintAgenda(); 1353 repaintAgenda();
1354 startIdleTimeout(); 1354 startIdleTimeout();
1355 onlyOne = false; 1355 onlyOne = false;
1356} 1356}
1357void KOAgendaView::repaintAgenda() 1357void KOAgendaView::repaintAgenda()
1358{ 1358{
1359 mAgenda->viewport()->repaint( false ); 1359 mAgenda->viewport()->repaint( false );
1360 mAllDayAgenda->viewport()->repaint( false ); 1360 mAllDayAgenda->viewport()->repaint( false );
1361 mAgenda->finishUpdate(); 1361 mAgenda->finishUpdate();
1362 mAllDayAgenda->finishUpdate(); 1362 mAllDayAgenda->finishUpdate();
1363} 1363}
1364 1364
1365 1365
1366void KOAgendaView::clearView() 1366void KOAgendaView::clearView()
1367{ 1367{
1368 mAllDayAgenda->clear(); 1368 mAllDayAgenda->clear();
1369 mAgenda->clear(); 1369 mAgenda->clear();
1370} 1370}
1371void KOAgendaView::clearList() 1371void KOAgendaView::clearList()
1372{ 1372{
1373 clearView(); 1373 clearView();
1374 mAllDayAgenda->hideUnused(); 1374 mAllDayAgenda->hideUnused();
1375 mAgenda->hideUnused(); 1375 mAgenda->hideUnused();
1376} 1376}
1377 1377
1378void KOAgendaView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1378void KOAgendaView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1379 const QDate &td) 1379 const QDate &td)
1380{ 1380{
1381#ifndef KORG_NOPRINTER 1381#ifndef KORG_NOPRINTER
1382 if (fd == td) 1382 if (fd == td)
1383 calPrinter->preview(CalPrinter::Day, fd, td); 1383 calPrinter->preview(CalPrinter::Day, fd, td);
1384 else 1384 else
1385 calPrinter->preview(CalPrinter::Week, fd, td); 1385 calPrinter->preview(CalPrinter::Week, fd, td);
1386#endif 1386#endif
1387} 1387}
1388 1388
1389// void KOAgendaView::updateMovedTodo() 1389// void KOAgendaView::updateMovedTodo()
1390// { 1390// {
1391// // updateConfig(); 1391// // updateConfig();
1392// // emit updateTodoViews(); 1392// // emit updateTodoViews();
1393// } 1393// }
1394 1394
1395void KOAgendaView::slotShowDateView( int mode , int d ) 1395void KOAgendaView::slotShowDateView( int mode , int d )
1396{ 1396{
1397 if ( d >= mSelectedDates.count() ) { 1397 if ( d >= mSelectedDates.count() ) {
1398 qDebug("KOAgendaView::slotShowDateView datecounterror %d %d ", d, mSelectedDates.count() ); 1398 qDebug("KOAgendaView::slotShowDateView datecounterror %d %d ", d, mSelectedDates.count() );
1399 1399
1400 } else { 1400 } else {
1401 QDate day = mSelectedDates[d]; 1401 QDate day = mSelectedDates[d];
1402 emit showDateView(mode , day ); 1402 emit showDateView(mode , day );
1403 } 1403 }
1404 1404
1405} 1405}
1406void KOAgendaView::newEvent(int gx, int gy) 1406void KOAgendaView::newEvent(int gx, int gy)
1407{ 1407{
1408 if (!mSelectedDates.count()) return; 1408 if (!mSelectedDates.count()) return;
1409 1409
1410 QDate day = mSelectedDates[gx]; 1410 QDate day = mSelectedDates[gx];
1411 1411
1412 QTime time = mAgenda->gyToTime(gy); 1412 QTime time = mAgenda->gyToTime(gy);
1413 QDateTime dt(day,time); 1413 QDateTime dt(day,time);
1414 // if ( dt < QDateTime::currentDateTime () ) 1414 // if ( dt < QDateTime::currentDateTime () )
1415 // dt = QDateTime::currentDateTime ().addSecs( 3600 ); 1415 // dt = QDateTime::currentDateTime ().addSecs( 3600 );
1416 emit newEventSignal(dt); 1416 emit newEventSignal(dt);
1417} 1417}
1418 1418
1419void KOAgendaView::newEvent(int gxStart, int gyStart, int gxEnd, int gyEnd) 1419void KOAgendaView::newEvent(int gxStart, int gyStart, int gxEnd, int gyEnd)
1420{ 1420{
1421 if (!mSelectedDates.count()) return; 1421 if (!mSelectedDates.count()) return;
1422 1422
1423 QDate dayStart = mSelectedDates[gxStart]; 1423 QDate dayStart = mSelectedDates[gxStart];
1424 QDate dayEnd = mSelectedDates[gxEnd]; 1424 QDate dayEnd = mSelectedDates[gxEnd];
1425 1425
1426 QTime timeStart = mAgenda->gyToTime(gyStart); 1426 QTime timeStart = mAgenda->gyToTime(gyStart);
1427 QTime timeEnd = mAgenda->gyToTime( gyEnd + 1 ); 1427 QTime timeEnd = mAgenda->gyToTime( gyEnd + 1 );
1428 1428
1429 QDateTime dtStart(dayStart,timeStart); 1429 QDateTime dtStart(dayStart,timeStart);
1430 QDateTime dtEnd(dayEnd,timeEnd); 1430 QDateTime dtEnd(dayEnd,timeEnd);
1431 1431
1432 emit newEventSignal(dtStart,dtEnd); 1432 emit newEventSignal(dtStart,dtEnd);
1433} 1433}
1434 1434
1435void KOAgendaView::newEventAllDay(int gx, int ) 1435void KOAgendaView::newEventAllDay(int gx, int )
1436{ 1436{
1437 if (!mSelectedDates.count()) return; 1437 if (!mSelectedDates.count()) return;
1438 1438
1439 QDate day = mSelectedDates[gx]; 1439 QDate day = mSelectedDates[gx];
1440 1440
1441 emit newEventSignal(day); 1441 emit newEventSignal(day);
1442} 1442}
1443void KOAgendaView::newTodoAllDay(int gx, int ) 1443void KOAgendaView::newTodoAllDay(int gx, int )
1444{ 1444{
1445 if (!mSelectedDates.count()) return; 1445 if (!mSelectedDates.count()) return;
1446 1446
1447 QDateTime day (mSelectedDates[gx] ); 1447 QDateTime day (mSelectedDates[gx] );
1448 emit newTodoSignal(day, true); 1448 emit newTodoSignal(day, true);
1449} 1449}
1450void KOAgendaView::newTodo(int gx, int gy ) 1450void KOAgendaView::newTodo(int gx, int gy )
1451{ 1451{
1452 if (!mSelectedDates.count()) return; 1452 if (!mSelectedDates.count()) return;
1453 QDate dayStart = mSelectedDates[gx]; 1453 QDate dayStart = mSelectedDates[gx];
1454 QTime timeStart = mAgenda->gyToTime(gy); 1454 QTime timeStart = mAgenda->gyToTime(gy);
1455 QDateTime dt (dayStart,timeStart); 1455 QDateTime dt (dayStart,timeStart);
1456 emit newTodoSignal( dt, false ); 1456 emit newTodoSignal( dt, false );
1457} 1457}
1458 1458
1459void KOAgendaView::updateEventIndicatorTop(int newY) 1459void KOAgendaView::updateEventIndicatorTop(int newY)
1460{ 1460{
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index ec1154a..057df0d 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -200,513 +200,513 @@ QString KODayMatrix::getWhatsThisText( QPoint p )
200 } 200 }
201 if ( !event->location().isEmpty() ) 201 if ( !event->location().isEmpty() )
202 mToolTipText += " (" + event->location() + ")"; 202 mToolTipText += " (" + event->location() + ")";
203 //qDebug("TTT: %s ", mToolTipText.latin1()); 203 //qDebug("TTT: %s ", mToolTipText.latin1());
204 mToolTip.append( deTag( mToolTipText ) ); 204 mToolTip.append( deTag( mToolTipText ) );
205 } 205 }
206 mToolTip.sort(); 206 mToolTip.sort();
207 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_T_VIEW ) { 207 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_T_VIEW ) {
208 QPtrList<Todo> todolist = mCalendar->todos(mDate); 208 QPtrList<Todo> todolist = mCalendar->todos(mDate);
209 Todo *todo; 209 Todo *todo;
210 for(todo=todolist.first();todo != 0;todo=todolist.next()) { 210 for(todo=todolist.first();todo != 0;todo=todolist.next()) {
211 QString mToolTipText; 211 QString mToolTipText;
212 if ( !todo->doesFloat() ) 212 if ( !todo->doesFloat() )
213 mToolTipText += KGlobal::locale()->formatTime(todo->dtDue().time())+" "; 213 mToolTipText += KGlobal::locale()->formatTime(todo->dtDue().time())+" ";
214 mToolTipText += todo->summary(); 214 mToolTipText += todo->summary();
215 if ( !todo->location().isEmpty() ) 215 if ( !todo->location().isEmpty() )
216 mToolTipText += " (" + todo->location() + ")"; 216 mToolTipText += " (" + todo->location() + ")";
217 mToolTipText = deTag( mToolTipText); 217 mToolTipText = deTag( mToolTipText);
218 mToolTipText = "<b>" + i18n("Todo: ") + "</b>"+ mToolTipText; 218 mToolTipText = "<b>" + i18n("Todo: ") + "</b>"+ mToolTipText;
219 mToolTip.append( mToolTipText ); 219 mToolTip.append( mToolTipText );
220 } 220 }
221 } 221 }
222 if (KOPrefs::instance()->mCurrentDisplayedView == VIEW_J_VIEW ) { 222 if (KOPrefs::instance()->mCurrentDisplayedView == VIEW_J_VIEW ) {
223 QPtrList<Journal> j_list = mCalendar->journals4Date( mDate ); 223 QPtrList<Journal> j_list = mCalendar->journals4Date( mDate );
224 Journal *j = j_list.first(); 224 Journal *j = j_list.first();
225 while ( j ) { 225 while ( j ) {
226 QString mToolTipText; 226 QString mToolTipText;
227 if ( !j->summary().isEmpty() ) { 227 if ( !j->summary().isEmpty() ) {
228 mToolTipText = j->summary().left(30); 228 mToolTipText = j->summary().left(30);
229 if ( j->summary().length() > 30 ) 229 if ( j->summary().length() > 30 )
230 mToolTipText += " ..."; 230 mToolTipText += " ...";
231 } else { 231 } else {
232 mToolTipText = j->description().left(25); 232 mToolTipText = j->description().left(25);
233 if ( j->description().length() > 25 ) 233 if ( j->description().length() > 25 )
234 mToolTipText += " ..."; 234 mToolTipText += " ...";
235 mToolTipText = deTag( mToolTipText); 235 mToolTipText = deTag( mToolTipText);
236 } 236 }
237 mToolTipText = "<b>" + i18n("Journal: ") + "</b>"+ mToolTipText; 237 mToolTipText = "<b>" + i18n("Journal: ") + "</b>"+ mToolTipText;
238 mToolTip.append( mToolTipText ); 238 mToolTip.append( mToolTipText );
239 j = j_list.next(); 239 j = j_list.next();
240 } 240 }
241 } 241 }
242 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>"); 242 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>");
243} 243}
244 244
245 245
246QString KODayMatrix::deTag( QString mToolTipText ) 246QString KODayMatrix::deTag( QString mToolTipText )
247{ 247{
248 248
249#if QT_VERSION >= 0x030000 249#if QT_VERSION >= 0x030000
250 mToolTipText.replace( '<' , "&lt;" ); 250 mToolTipText.replace( '<' , "&lt;" );
251 mToolTipText.replace( '>' , "&gt;" ); 251 mToolTipText.replace( '>' , "&gt;" );
252#else 252#else
253 if ( mToolTipText.find ('<') >= 0 ) { 253 if ( mToolTipText.find ('<') >= 0 ) {
254 mToolTipText.replace( QRegExp("<") , "&lt;" ); 254 mToolTipText.replace( QRegExp("<") , "&lt;" );
255 } 255 }
256 if ( mToolTipText.find ('>') >= 0 ) { 256 if ( mToolTipText.find ('>') >= 0 ) {
257 mToolTipText.replace( QRegExp(">") , "&gt;" ); 257 mToolTipText.replace( QRegExp(">") , "&gt;" );
258 } 258 }
259#endif 259#endif
260 return mToolTipText; 260 return mToolTipText;
261} 261}
262void KODayMatrix::setCalendar( Calendar *cal ) 262void KODayMatrix::setCalendar( Calendar *cal )
263{ 263{
264 mCalendar = cal; 264 mCalendar = cal;
265 265
266 setAcceptDrops( mCalendar ); 266 setAcceptDrops( mCalendar );
267 267
268 updateEvents(); 268 updateEvents();
269} 269}
270 270
271QColor KODayMatrix::getShadedColor(QColor color) 271QColor KODayMatrix::getShadedColor(QColor color)
272{ 272{
273 QColor shaded; 273 QColor shaded;
274 int h=0; 274 int h=0;
275 int s=0; 275 int s=0;
276 int v=0; 276 int v=0;
277 color.hsv(&h,&s,&v); 277 color.hsv(&h,&s,&v);
278 s = s/4; 278 s = s/4;
279 v = 192+v/4; 279 v = 192+v/4;
280 shaded.setHsv(h,s,v); 280 shaded.setHsv(h,s,v);
281 281
282 return shaded; 282 return shaded;
283} 283}
284 284
285KODayMatrix::~KODayMatrix() 285KODayMatrix::~KODayMatrix()
286{ 286{
287#if QT_VERSION >= 0x030000 287#if QT_VERSION >= 0x030000
288 288
289#else 289#else
290 delete mKODaymatrixWhatsThis; 290 delete mKODaymatrixWhatsThis;
291#endif 291#endif
292 292
293 // delete mKODaymatrixWhatsThis; 293 // delete mKODaymatrixWhatsThis;
294 delete [] days; 294 delete [] days;
295 delete [] daylbls; 295 delete [] daylbls;
296 //delete [] events; 296 //delete [] events;
297 delete mToolTip; 297 delete mToolTip;
298} 298}
299 299
300/* 300/*
301void KODayMatrix::setStartDate(QDate start) 301void KODayMatrix::setStartDate(QDate start)
302{ 302{
303 updateView(start); 303 updateView(start);
304} 304}
305*/ 305*/
306 306
307void KODayMatrix::addSelectedDaysTo(DateList& selDays) 307void KODayMatrix::addSelectedDaysTo(DateList& selDays)
308{ 308{
309 309
310 if (mSelStart == NOSELECTION) { 310 if (mSelStart == NOSELECTION) {
311 return; 311 return;
312 } 312 }
313 313
314 //cope with selection being out of matrix limits at top (< 0) 314 //cope with selection being out of matrix limits at top (< 0)
315 int i0 = mSelStart; 315 int i0 = mSelStart;
316 if (i0 < 0) { 316 if (i0 < 0) {
317 for (int i = i0; i < 0; i++) { 317 for (int i = i0; i < 0; i++) {
318 selDays.append(days[0].addDays(i)); 318 selDays.append(days[0].addDays(i));
319 } 319 }
320 i0 = 0; 320 i0 = 0;
321 } 321 }
322 322
323 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) 323 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1)
324 if (mSelEnd > NUMDAYS-1) { 324 if (mSelEnd > NUMDAYS-1) {
325 for (int i = i0; i <= NUMDAYS-1; i++) { 325 for (int i = i0; i <= NUMDAYS-1; i++) {
326 selDays.append(days[i]); 326 selDays.append(days[i]);
327 } 327 }
328 for (int i = NUMDAYS; i < mSelEnd; i++) { 328 for (int i = NUMDAYS; i < mSelEnd; i++) {
329 selDays.append(days[0].addDays(i)); 329 selDays.append(days[0].addDays(i));
330 } 330 }
331 331
332 // apply normal routine to selection being entirely within matrix limits 332 // apply normal routine to selection being entirely within matrix limits
333 } else { 333 } else {
334 for (int i = i0; i <= mSelEnd; i++) { 334 for (int i = i0; i <= mSelEnd; i++) {
335 selDays.append(days[i]); 335 selDays.append(days[i]);
336 } 336 }
337 } 337 }
338} 338}
339 339
340bool KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 340bool KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
341{ 341{
342 mRedrawNeeded = true; 342 mRedrawNeeded = true;
343 bool noSel = (mSelEnd == NOSELECTION && mSelStart == NOSELECTION ); 343 bool noSel = (mSelEnd == NOSELECTION && mSelStart == NOSELECTION );
344 mSelStart = startdate.daysTo(start); 344 mSelStart = startdate.daysTo(start);
345 if ( mSelStart < 0 ) 345 if ( mSelStart < 0 )
346 mSelStart = 0; 346 mSelStart = 0;
347 mSelEnd = startdate.daysTo(end); 347 mSelEnd = startdate.daysTo(end);
348 if ( mSelEnd > NUMDAYS-1 ) 348 if ( mSelEnd > NUMDAYS-1 )
349 mSelEnd = NUMDAYS-1; 349 mSelEnd = NUMDAYS-1;
350 if ( mSelEnd < 0 || mSelStart > NUMDAYS-1 ) { 350 if ( mSelEnd < 0 || mSelStart > NUMDAYS-1 ) {
351 clearSelection(); 351 clearSelection();
352 if ( noSel ) 352 if ( noSel )
353 return false; 353 return false;
354 } 354 }
355 355
356 return true; 356 return true;
357} 357}
358void KODayMatrix::clearSelection() 358void KODayMatrix::clearSelection()
359{ 359{
360 mSelEnd = mSelStart = NOSELECTION; 360 mSelEnd = mSelStart = NOSELECTION;
361} 361}
362 362
363 363
364void KODayMatrix::recalculateToday() 364void KODayMatrix::recalculateToday()
365{ 365{
366 today = -1; 366 today = -1;
367 for (int i=0; i<NUMDAYS; i++) { 367 for (int i=0; i<NUMDAYS; i++) {
368 //events[i] = 0; 368 //events[i] = 0;
369 days[i] = startdate.addDays(i); 369 days[i] = startdate.addDays(i);
370 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 370 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
371 371
372 // if today is in the currently displayed month, hilight today 372 // if today is in the currently displayed month, hilight today
373 if (days[i].year() == QDate::currentDate().year() && 373 if (days[i].year() == QDate::currentDate().year() &&
374 days[i].month() == QDate::currentDate().month() && 374 days[i].month() == QDate::currentDate().month() &&
375 days[i].day() == QDate::currentDate().day()) { 375 days[i].day() == QDate::currentDate().day()) {
376 today = i; 376 today = i;
377 } 377 }
378 } 378 }
379 // qDebug(QString("Today is visible at %1.").arg(today)); 379 // qDebug(QString("Today is visible at %1.").arg(today));
380} 380}
381 381
382void KODayMatrix::updateView() 382void KODayMatrix::updateView()
383{ 383{
384 updateView(startdate); 384 updateView(startdate);
385} 385}
386void KODayMatrix::repaintViewTimed() 386void KODayMatrix::repaintViewTimed()
387{ 387{
388 mRedrawNeeded = true; 388 mRedrawNeeded = true;
389 // bDays.fill( false); 389 // bDays.fill( false);
390 //pDays.fill( false); 390 //pDays.fill( false);
391 //hDays.fill( false); 391 //hDays.fill( false);
392 //eDays.fill( false); 392 //eDays.fill( false);
393 mRepaintTimer->stop(); 393 mRepaintTimer->stop();
394 int startDay = days[0].dayOfWeek(); // 1...7 7 = sunday 394 int startDay = days[0].dayOfWeek(); // 1...7 7 = sunday
395 int i; 395 int i;
396 for(i = 0; i < NUMDAYS; i++) { 396 for(i = 0; i < NUMDAYS; i++) {
397 if ( ( (i+startDay) % 7 == 0 ) ) { 397 if ( ( (i+startDay) % 7 == 0 ) ) {
398 pDays.setBit(i); 398 pDays.setBit(i);
399 } 399 }
400 } 400 }
401 repaint(false); 401 repaint(false);
402} 402}
403void KODayMatrix::computeEvent(Event *event, int i ) 403void KODayMatrix::computeEvent(Event *event, int i )
404{ 404{
405 QString holiStr = mHolidays[i]; 405 QString holiStr = mHolidays[i];
406 if ( event->isHoliday()) { 406 if ( event->isHoliday()) {
407 pDays.setBit(i); 407 pDays.setBit(i);
408 hDays.setBit(i); 408 hDays.setBit(i);
409 if ( !holiStr.isEmpty() ) 409 if ( !holiStr.isEmpty() )
410 holiStr += "\n"; 410 holiStr += "\n";
411 holiStr += event->summary(); 411 holiStr += event->summary();
412 if ( !event->location().isEmpty() ) 412 if ( !event->location().isEmpty() )
413 holiStr += " (" + event->location() + ")"; 413 holiStr += " (" + event->location() + ")";
414 mHolidays[i] =holiStr ; 414 mHolidays[i] =holiStr ;
415 eDays.setBit(i); 415 eDays.setBit(i);
416 } 416 }
417 if ( KOPrefs::instance()->mCurrentDisplayedView != VIEW_T_VIEW && KOPrefs::instance()->mCurrentDisplayedView != VIEW_J_VIEW ) { 417 if ( KOPrefs::instance()->mCurrentDisplayedView != VIEW_T_VIEW && KOPrefs::instance()->mCurrentDisplayedView != VIEW_J_VIEW ) {
418 if ( event->isBirthday()) { 418 if ( event->isBirthday()) {
419 pDays.setBit(i); 419 pDays.setBit(i);
420 if ( !holiStr.isEmpty() ) 420 if ( !holiStr.isEmpty() )
421 holiStr += "\n"; 421 holiStr += "\n";
422 holiStr += i18n("Birthday") + ": "+event->summary(); 422 holiStr += i18n("Birthday") + ": "+event->summary();
423 if ( !event->location().isEmpty() ) 423 if ( !event->location().isEmpty() )
424 holiStr += " (" + event->location() + ")"; 424 holiStr += " (" + event->location() + ")";
425 bDays.setBit(i); 425 bDays.setBit(i);
426 mHolidays[i] =holiStr ; 426 mHolidays[i] =holiStr ;
427 } 427 }
428 } 428 }
429 if ( KOPrefs::instance()->mCurrentDisplayedView != VIEW_J_VIEW ) 429 if ( KOPrefs::instance()->mCurrentDisplayedView != VIEW_J_VIEW )
430 eDays.setBit(i); 430 eDays.setBit(i);
431} 431}
432void KODayMatrix::updateViewTimed() 432void KODayMatrix::updateViewTimed()
433{ 433{
434 mUpdateTimer->stop(); 434 mUpdateTimer->stop();
435 if ( !mCalendar ) { 435 if ( !mCalendar ) {
436 qDebug("NOT CAL "); 436 qDebug("NOT CAL ");
437 return; 437 return;
438 } 438 }
439#if 1 439#if 1
440 440
441 441
442 int i; 442 int i;
443 int timeSpan = NUMDAYS-1; 443 int timeSpan = NUMDAYS-1;
444 QPtrList<Event> events = mCalendar->events(); 444 QPtrList<Event> events = mCalendar->events();
445 Event *event; 445 Event *event;
446 QDateTime dt; 446 QDateTime dt;
447 bool ok; 447 bool ok;
448 bDays.fill( false); 448 bDays.fill( false);
449 pDays.fill( false); 449 pDays.fill( false);
450 hDays.fill( false); 450 hDays.fill( false);
451 eDays.fill( false); 451 eDays.fill( false);
452 mHolidays.clear(); 452 mHolidays.clear();
453 QDate mStartDate = days[0]; 453 QDate mStartDate = days[0];
454 QDate endDate = mStartDate.addDays( timeSpan ); 454 QDate endDate = mStartDate.addDays( timeSpan );
455 for( event = events.first(); event; event = events.next() ) { // for event 455 for( event = events.first(); event; event = events.next() ) { // for event
456 ushort recurType = event->recurrence()->doesRecur(); 456 ushort recurType = event->doesRecur();
457 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 457 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
458 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 458 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
459 continue; 459 continue;
460 } 460 }
461 if ( event->doesRecur() ) { 461 if ( event->doesRecur() ) {
462 bool last; 462 bool last;
463 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 463 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
464 QDateTime incidenceEnd; 464 QDateTime incidenceEnd;
465 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 465 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
466 bool invalid = false; 466 bool invalid = false;
467 while( true ) { 467 while( true ) {
468 if ( incidenceStart.isValid() ) { 468 if ( incidenceStart.isValid() ) {
469 incidenceEnd = incidenceStart.addDays( eventlen ); 469 incidenceEnd = incidenceStart.addDays( eventlen );
470 int st = incidenceStart.date().daysTo( endDate ); 470 int st = incidenceStart.date().daysTo( endDate );
471 if ( st >= 0 ) { // start before timeend 471 if ( st >= 0 ) { // start before timeend
472 int end = mStartDate.daysTo( incidenceEnd.date() ); 472 int end = mStartDate.daysTo( incidenceEnd.date() );
473 if ( end >= 0 ) { // end after timestart --- got one! 473 if ( end >= 0 ) { // end after timestart --- got one!
474 //normalize 474 //normalize
475 st = timeSpan - st; 475 st = timeSpan - st;
476 if ( st < 0 ) st = 0; 476 if ( st < 0 ) st = 0;
477 if ( end > timeSpan ) end = timeSpan; 477 if ( end > timeSpan ) end = timeSpan;
478 int iii; 478 int iii;
479 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 479 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
480 for ( iii = st;iii<= end;++iii) { 480 for ( iii = st;iii<= end;++iii) {
481 computeEvent( event, iii ); 481 computeEvent( event, iii );
482 } 482 }
483 } 483 }
484 } 484 }
485 } else { 485 } else {
486 if ( invalid ) 486 if ( invalid )
487 break; 487 break;
488 invalid = true; 488 invalid = true;
489 //qDebug("invalid %s", event->summary().latin1()); 489 //qDebug("invalid %s", event->summary().latin1());
490 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 490 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
491 } 491 }
492 if ( last ) 492 if ( last )
493 break; 493 break;
494 bool ok; 494 bool ok;
495 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 495 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
496 if ( ! ok ) 496 if ( ! ok )
497 break; 497 break;
498 if ( incidenceStart.date() > endDate ) 498 if ( incidenceStart.date() > endDate )
499 break; 499 break;
500 } 500 }
501 } else { // no recur 501 } else { // no recur
502 int st = event->dtStart().date().daysTo( endDate ); 502 int st = event->dtStart().date().daysTo( endDate );
503 if ( st >= 0 ) { // start before timeend 503 if ( st >= 0 ) { // start before timeend
504 int end = mStartDate.daysTo( event->dtEnd().date() ); 504 int end = mStartDate.daysTo( event->dtEnd().date() );
505 if ( end >= 0 ) { // end after timestart --- got one! 505 if ( end >= 0 ) { // end after timestart --- got one!
506 //normalize 506 //normalize
507 st = timeSpan - st; 507 st = timeSpan - st;
508 if ( st < 0 ) st = 0; 508 if ( st < 0 ) st = 0;
509 if ( end > timeSpan ) end = timeSpan; 509 if ( end > timeSpan ) end = timeSpan;
510 int iii; 510 int iii;
511 for ( iii = st;iii<= end;++iii) 511 for ( iii = st;iii<= end;++iii)
512 computeEvent( event, iii ); 512 computeEvent( event, iii );
513 } 513 }
514 } 514 }
515 } 515 }
516 } 516 }
517 int startDay = days[0].dayOfWeek(); // 1...7 7 = sunday 517 int startDay = days[0].dayOfWeek(); // 1...7 7 = sunday
518 for(i = 0; i < NUMDAYS; i++) { 518 for(i = 0; i < NUMDAYS; i++) {
519 if ( ( (i+startDay) % 7 == 0 ) ) { 519 if ( ( (i+startDay) % 7 == 0 ) ) {
520 pDays.setBit(i); 520 pDays.setBit(i);
521 } 521 }
522 } 522 }
523 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_T_VIEW ) { 523 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_T_VIEW ) {
524 bDays.fill( false); 524 bDays.fill( false);
525 // insert due todos 525 // insert due todos
526 QPtrList<Todo> todos = mCalendar->todos( ); 526 QPtrList<Todo> todos = mCalendar->todos( );
527 Todo *todo; 527 Todo *todo;
528 for(todo = todos.first(); todo; todo = todos.next()) { 528 for(todo = todos.first(); todo; todo = todos.next()) {
529 //insertTodo( todo ); 529 //insertTodo( todo );
530 if ( todo->hasDueDate() ) { 530 if ( todo->hasDueDate() ) {
531 int day = mStartDate.daysTo( todo->dtDue().date() ); 531 int day = mStartDate.daysTo( todo->dtDue().date() );
532 if ( day >= 0 && day < timeSpan + 1) { 532 if ( day >= 0 && day < timeSpan + 1) {
533 int i = day; 533 int i = day;
534 QString holiStr = mHolidays[i]; 534 QString holiStr = mHolidays[i];
535 pDays.setBit(i); 535 pDays.setBit(i);
536 if ( !holiStr.isEmpty() ) 536 if ( !holiStr.isEmpty() )
537 holiStr += "\n"; 537 holiStr += "\n";
538 holiStr += i18n("Todo") + ": "+todo->summary(); 538 holiStr += i18n("Todo") + ": "+todo->summary();
539 if ( !todo->location().isEmpty() ) 539 if ( !todo->location().isEmpty() )
540 holiStr += " (" + todo->location() + ")"; 540 holiStr += " (" + todo->location() + ")";
541 bDays.setBit(i); 541 bDays.setBit(i);
542 mHolidays[i] =holiStr ; 542 mHolidays[i] =holiStr ;
543 eDays.setBit(i); 543 eDays.setBit(i);
544 } 544 }
545 } 545 }
546 } 546 }
547 } 547 }
548 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_J_VIEW ) { 548 if ( KOPrefs::instance()->mCurrentDisplayedView == VIEW_J_VIEW ) {
549 bDays.fill( false); 549 bDays.fill( false);
550 // insert due todos 550 // insert due todos
551 QPtrList<Journal> todos = mCalendar->journals( ); 551 QPtrList<Journal> todos = mCalendar->journals( );
552 Journal *todo; 552 Journal *todo;
553 for(todo = todos.first(); todo; todo = todos.next()) { 553 for(todo = todos.first(); todo; todo = todos.next()) {
554 int day = mStartDate.daysTo( todo->dtStart().date() ); 554 int day = mStartDate.daysTo( todo->dtStart().date() );
555 if ( day >= 0 && day < timeSpan + 1) { 555 if ( day >= 0 && day < timeSpan + 1) {
556 int i = day; 556 int i = day;
557 QString holiStr = mHolidays[i]; 557 QString holiStr = mHolidays[i];
558 pDays.setBit(i); 558 pDays.setBit(i);
559 if ( !holiStr.isEmpty() ) 559 if ( !holiStr.isEmpty() )
560 holiStr += "\n"; 560 holiStr += "\n";
561 holiStr += i18n("Journal: ")+todo->summary().left(25); 561 holiStr += i18n("Journal: ")+todo->summary().left(25);
562 if ( todo->summary().length() > 25 ) 562 if ( todo->summary().length() > 25 )
563 holiStr +="..."; 563 holiStr +="...";
564 bDays.setBit(i); 564 bDays.setBit(i);
565 mHolidays[i] =holiStr ; 565 mHolidays[i] =holiStr ;
566 eDays.setBit(i); 566 eDays.setBit(i);
567 567
568 } 568 }
569 } 569 }
570 } 570 }
571#else 571#else
572 //qDebug("KODayMatrix::updateViewTimed "); 572 //qDebug("KODayMatrix::updateViewTimed ");
573 for(int i = 0; i < NUMDAYS; i++) { 573 for(int i = 0; i < NUMDAYS; i++) {
574 // if events are set for the day then remember to draw it bold 574 // if events are set for the day then remember to draw it bold
575 QPtrList<Event> eventlist = mCalendar->events(days[i]); 575 QPtrList<Event> eventlist = mCalendar->events(days[i]);
576 Event *event; 576 Event *event;
577 int numEvents = eventlist.count(); 577 int numEvents = eventlist.count();
578 QString holiStr = ""; 578 QString holiStr = "";
579 bDays.clearBit(i); 579 bDays.clearBit(i);
580 hDays.clearBit(i); 580 hDays.clearBit(i);
581 eDays.clearBit(i); 581 eDays.clearBit(i);
582 for(event=eventlist.first();event != 0;event=eventlist.next()) { 582 for(event=eventlist.first();event != 0;event=eventlist.next()) {
583 ushort recurType = event->recurrence()->doesRecur(); 583 ushort recurType = event->recurrence()->doesRecur();
584 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 584 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
585 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 585 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
586 numEvents--; 586 numEvents--;
587 } 587 }
588 if ( event->isHoliday()) { 588 if ( event->isHoliday()) {
589 hDays.setBit(i); 589 hDays.setBit(i);
590 if ( !holiStr.isEmpty() ) 590 if ( !holiStr.isEmpty() )
591 holiStr += "\n"; 591 holiStr += "\n";
592 holiStr += event->summary(); 592 holiStr += event->summary();
593 if ( !event->location().isEmpty() ) 593 if ( !event->location().isEmpty() )
594 holiStr += " (" + event->location() + ")"; 594 holiStr += " (" + event->location() + ")";
595 } 595 }
596 if ( event->isBirthday()) { 596 if ( event->isBirthday()) {
597 if ( !holiStr.isEmpty() ) 597 if ( !holiStr.isEmpty() )
598 holiStr += "\n"; 598 holiStr += "\n";
599 holiStr += i18n("Birthday") + ": "+event->summary(); 599 holiStr += i18n("Birthday") + ": "+event->summary();
600 if ( !event->location().isEmpty() ) 600 if ( !event->location().isEmpty() )
601 holiStr += " (" + event->location() + ")"; 601 holiStr += " (" + event->location() + ")";
602 bDays.setBit(i); 602 bDays.setBit(i);
603 } 603 }
604 } 604 }
605 if ( numEvents ) 605 if ( numEvents )
606 eDays.setBit(i); 606 eDays.setBit(i);
607 //if it is a holy day then draw it red. Sundays are consider holidays, too 607 //if it is a holy day then draw it red. Sundays are consider holidays, too
608 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 608 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
609 !holiStr.isEmpty()) { 609 !holiStr.isEmpty()) {
610 mHolidays[i] = holiStr; 610 mHolidays[i] = holiStr;
611 } else { 611 } else {
612 mHolidays[i] = QString::null; 612 mHolidays[i] = QString::null;
613 } 613 }
614 } 614 }
615#endif 615#endif
616 mRedrawNeeded = true; 616 mRedrawNeeded = true;
617 if ( ! mPendingUpdateBeforeRepaint ) 617 if ( ! mPendingUpdateBeforeRepaint )
618 repaint(false); 618 repaint(false);
619} 619}
620void KODayMatrix::updateView(QDate actdate) 620void KODayMatrix::updateView(QDate actdate)
621{ 621{
622 if ( mLastView != KOPrefs::instance()->mCurrentDisplayedView ) 622 if ( mLastView != KOPrefs::instance()->mCurrentDisplayedView )
623 mRedrawNeeded = true; 623 mRedrawNeeded = true;
624 mLastView = KOPrefs::instance()->mCurrentDisplayedView; 624 mLastView = KOPrefs::instance()->mCurrentDisplayedView;
625 if ( ! actdate.isValid() ) { 625 if ( ! actdate.isValid() ) {
626 //qDebug("date not valid "); 626 //qDebug("date not valid ");
627 return; 627 return;
628 } 628 }
629 mDayChanged = false; 629 mDayChanged = false;
630 //flag to indicate if the starting day of the matrix has changed by this call 630 //flag to indicate if the starting day of the matrix has changed by this call
631 //mDayChanged = false; 631 //mDayChanged = false;
632 // if a new startdate is to be set then apply Cornelius's calculation 632 // if a new startdate is to be set then apply Cornelius's calculation
633 // of the first day to be shown 633 // of the first day to be shown
634 if (actdate != startdate) { 634 if (actdate != startdate) {
635 // reset index of selection according to shift of starting date from startdate to actdate 635 // reset index of selection according to shift of starting date from startdate to actdate
636 if (mSelStart != NOSELECTION) { 636 if (mSelStart != NOSELECTION) {
637 int tmp = actdate.daysTo(startdate); 637 int tmp = actdate.daysTo(startdate);
638 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 638 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
639 // shift selection if new one would be visible at least partly ! 639 // shift selection if new one would be visible at least partly !
640 640
641 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 641 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
642 // nested if is required for next X display pushed from a different month - correction required 642 // nested if is required for next X display pushed from a different month - correction required
643 // otherwise, for month forward and backward, it must be avoided 643 // otherwise, for month forward and backward, it must be avoided
644 if( mSelStart > NUMDAYS || mSelStart < 0 ) 644 if( mSelStart > NUMDAYS || mSelStart < 0 )
645 mSelStart = mSelStart + tmp; 645 mSelStart = mSelStart + tmp;
646 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 646 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
647 mSelEnd = mSelEnd + tmp; 647 mSelEnd = mSelEnd + tmp;
648 } 648 }
649 } 649 }
650 startdate = actdate; 650 startdate = actdate;
651 mDayChanged = true; 651 mDayChanged = true;
652 recalculateToday(); 652 recalculateToday();
653 mRedrawNeeded = true; 653 mRedrawNeeded = true;
654 } 654 }
655 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); 655 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
656 if ( !isVisible() ) { 656 if ( !isVisible() ) {
657 mPendingUpdateBeforeRepaint = true; 657 mPendingUpdateBeforeRepaint = true;
658 } else { 658 } else {
659#ifdef DESKTOP_VERSION 659#ifdef DESKTOP_VERSION
660 //mRepaintTimer->start( 100 ); 660 //mRepaintTimer->start( 100 );
661 //updateViewTimed(); 661 //updateViewTimed();
662 mUpdateTimer->start( 50 ); 662 mUpdateTimer->start( 50 );
663#else 663#else
664 mRepaintTimer->start( 350 ); 664 mRepaintTimer->start( 350 );
665 mUpdateTimer->start( 800 ); 665 mUpdateTimer->start( 800 );
666#endif 666#endif
667 } 667 }
668} 668}
669void KODayMatrix::updateEvents() 669void KODayMatrix::updateEvents()
670{ 670{
671 if ( !mCalendar ) return; 671 if ( !mCalendar ) return;
672 672
673 for( int i = 0; i < NUMDAYS; i++ ) { 673 for( int i = 0; i < NUMDAYS; i++ ) {
674 // if events are set for the day then remember to draw it bold 674 // if events are set for the day then remember to draw it bold
675 QPtrList<Event> eventlist = mCalendar->events( days[ i ] ); 675 QPtrList<Event> eventlist = mCalendar->events( days[ i ] );
676 int numEvents = eventlist.count(); 676 int numEvents = eventlist.count();
677 Event *event; 677 Event *event;
678 for( event = eventlist.first(); event != 0;event=eventlist.next()) { 678 for( event = eventlist.first(); event != 0;event=eventlist.next()) {
679 ushort recurType = event->doesRecur(); 679 ushort recurType = event->doesRecur();
680 680
681 if ( ( recurType == Recurrence::rDaily && 681 if ( ( recurType == Recurrence::rDaily &&
682 !KOPrefs::instance()->mDailyRecur ) || 682 !KOPrefs::instance()->mDailyRecur ) ||
683 ( recurType == Recurrence::rWeekly && 683 ( recurType == Recurrence::rWeekly &&
684 !KOPrefs::instance()->mWeeklyRecur ) ) { 684 !KOPrefs::instance()->mWeeklyRecur ) ) {
685 numEvents--; 685 numEvents--;
686 } 686 }
687 } 687 }
688 if ( numEvents ) 688 if ( numEvents )
689 eDays.setBit(i); 689 eDays.setBit(i);
690 else 690 else
691 eDays.clearBit(i); 691 eDays.clearBit(i);
692 } 692 }
693} 693}
694 694
695const QDate& KODayMatrix::getDate(int offset) 695const QDate& KODayMatrix::getDate(int offset)
696{ 696{
697 if (offset < 0 || offset > NUMDAYS-1) { 697 if (offset < 0 || offset > NUMDAYS-1) {
698 qDebug("Wrong offset2 %d", offset); 698 qDebug("Wrong offset2 %d", offset);
699 return days[0]; 699 return days[0];
700 } 700 }
701 return days[offset]; 701 return days[offset];
702} 702}
703 703
704QString KODayMatrix::getHolidayLabel(int offset) 704QString KODayMatrix::getHolidayLabel(int offset)
705{ 705{
706 if (offset < 0 || offset > NUMDAYS-1) { 706 if (offset < 0 || offset > NUMDAYS-1) {
707 qDebug("Wrong offset1 %d", offset); 707 qDebug("Wrong offset1 %d", offset);
708 return QString(); 708 return QString();
709 } 709 }
710 return mHolidays[offset]; 710 return mHolidays[offset];
711} 711}
712 712
diff --git a/korganizer/koeditorrecurrence.cpp b/korganizer/koeditorrecurrence.cpp
index de4e4f7..89504db 100644
--- a/korganizer/koeditorrecurrence.cpp
+++ b/korganizer/koeditorrecurrence.cpp
@@ -644,477 +644,483 @@ void RecurrenceRangeDialog::setEndDate( const QDate &date )
644 mRecurrenceRangeWidget->setEndDate( date ); 644 mRecurrenceRangeWidget->setEndDate( date );
645} 645}
646 646
647QDate RecurrenceRangeDialog::endDate() 647QDate RecurrenceRangeDialog::endDate()
648{ 648{
649 return mRecurrenceRangeWidget->endDate(); 649 return mRecurrenceRangeWidget->endDate();
650} 650}
651 651
652void RecurrenceRangeDialog::setDateTimes( const QDateTime &start, 652void RecurrenceRangeDialog::setDateTimes( const QDateTime &start,
653 const QDateTime &end ) 653 const QDateTime &end )
654{ 654{
655 mRecurrenceRangeWidget->setDateTimes( start, end ); 655 mRecurrenceRangeWidget->setDateTimes( start, end );
656} 656}
657 657
658//////////////////////////// RecurrenceChooser //////////////////////// 658//////////////////////////// RecurrenceChooser ////////////////////////
659 659
660RecurrenceChooser::RecurrenceChooser( QWidget *parent, const char *name ) : 660RecurrenceChooser::RecurrenceChooser( QWidget *parent, const char *name ) :
661 QWidget( parent, name ) 661 QWidget( parent, name )
662{ 662{
663 QBoxLayout *topLayout = new QVBoxLayout( this ); 663 QBoxLayout *topLayout = new QVBoxLayout( this );
664 664
665 mTypeCombo = new QComboBox( this ); 665 mTypeCombo = new QComboBox( this );
666 mTypeCombo->insertItem( i18n("Daily") ); 666 mTypeCombo->insertItem( i18n("Daily") );
667 mTypeCombo->insertItem( i18n("Weekly") ); 667 mTypeCombo->insertItem( i18n("Weekly") );
668 mTypeCombo->insertItem( i18n("Monthly") ); 668 mTypeCombo->insertItem( i18n("Monthly") );
669 mTypeCombo->insertItem( i18n("Yearly") ); 669 mTypeCombo->insertItem( i18n("Yearly") );
670 670
671 topLayout->addWidget( mTypeCombo ); 671 topLayout->addWidget( mTypeCombo );
672 672
673 connect( mTypeCombo, SIGNAL( activated( int ) ), SLOT( emitChoice() ) ); 673 connect( mTypeCombo, SIGNAL( activated( int ) ), SLOT( emitChoice() ) );
674 674
675} 675}
676 676
677int RecurrenceChooser::type() 677int RecurrenceChooser::type()
678{ 678{
679 if ( mTypeCombo ) { 679 if ( mTypeCombo ) {
680 return mTypeCombo->currentItem(); 680 return mTypeCombo->currentItem();
681 } else { 681 } else {
682 if ( mDailyButton->isChecked() ) return Daily; 682 if ( mDailyButton->isChecked() ) return Daily;
683 else if ( mWeeklyButton->isChecked() ) return Weekly; 683 else if ( mWeeklyButton->isChecked() ) return Weekly;
684 else if ( mMonthlyButton->isChecked() ) return Monthly; 684 else if ( mMonthlyButton->isChecked() ) return Monthly;
685 else return Yearly; 685 else return Yearly;
686 } 686 }
687} 687}
688 688
689void RecurrenceChooser::setType( int type ) 689void RecurrenceChooser::setType( int type )
690{ 690{
691 if ( mTypeCombo ) { 691 if ( mTypeCombo ) {
692 mTypeCombo->setCurrentItem( type ); 692 mTypeCombo->setCurrentItem( type );
693 } else { 693 } else {
694 switch ( type ) { 694 switch ( type ) {
695 case Daily: 695 case Daily:
696 mDailyButton->setChecked( true ); 696 mDailyButton->setChecked( true );
697 break; 697 break;
698 case Weekly: 698 case Weekly:
699 mWeeklyButton->setChecked( true ); 699 mWeeklyButton->setChecked( true );
700 break; 700 break;
701 case Monthly: 701 case Monthly:
702 mMonthlyButton->setChecked( true ); 702 mMonthlyButton->setChecked( true );
703 break; 703 break;
704 case Yearly: 704 case Yearly:
705 default: 705 default:
706 mYearlyButton->setChecked( true ); 706 mYearlyButton->setChecked( true );
707 break; 707 break;
708 } 708 }
709 } 709 }
710} 710}
711 711
712void RecurrenceChooser::emitChoice() 712void RecurrenceChooser::emitChoice()
713{ 713{
714 emit chosen ( type() ); 714 emit chosen ( type() );
715} 715}
716 716
717/////////////////////////////// Main Widget ///////////////////////////// 717/////////////////////////////// Main Widget /////////////////////////////
718 718
719KOEditorRecurrence::KOEditorRecurrence( QWidget* parent, const char *name ) : 719KOEditorRecurrence::KOEditorRecurrence( QWidget* parent, const char *name ) :
720 QWidget( parent, name ) 720 QWidget( parent, name )
721{ 721{
722 QGridLayout *topLayout = new QGridLayout( this, 2,2 ); 722 QGridLayout *topLayout = new QGridLayout( this, 2,2 );
723 topLayout->setSpacing( KDialog::spacingHint() ); 723 topLayout->setSpacing( KDialog::spacingHint() );
724 topLayout->setMargin( KDialog::marginHintSmall() ); 724 topLayout->setMargin( KDialog::marginHintSmall() );
725 725
726 mEnabledCheck = new QCheckBox( i18n("Enable Recurrence"), this ); 726 mEnabledCheck = new QCheckBox( i18n("Enable Recurrence"), this );
727 connect( mEnabledCheck, SIGNAL( toggled( bool ) ), 727 connect( mEnabledCheck, SIGNAL( toggled( bool ) ),
728 SLOT( setEnabled( bool ) ) ); 728 SLOT( setEnabled( bool ) ) );
729 topLayout->addMultiCellWidget( mEnabledCheck, 0, 0, 0, 1 ); 729 topLayout->addMultiCellWidget( mEnabledCheck, 0, 0, 0, 1 );
730 730
731 731
732 mTimeGroupBox = new QGroupBox( 1, Horizontal, i18n("Time"), 732 mTimeGroupBox = new QGroupBox( 1, Horizontal, i18n("Time"),
733 this ); 733 this );
734 topLayout->addMultiCellWidget( mTimeGroupBox, 1, 1 , 0 , 1 ); 734 topLayout->addMultiCellWidget( mTimeGroupBox, 1, 1 , 0 , 1 );
735 735
736 if ( QApplication::desktop()->width() <= 640 ) { 736 if ( QApplication::desktop()->width() <= 640 ) {
737 mTimeGroupBox->hide(); 737 mTimeGroupBox->hide();
738 } 738 }
739 739
740// QFrame *timeFrame = new QFrame( mTimeGroupBox ); 740// QFrame *timeFrame = new QFrame( mTimeGroupBox );
741// QBoxLayout *layoutTimeFrame = new QHBoxLayout( timeFrame ); 741// QBoxLayout *layoutTimeFrame = new QHBoxLayout( timeFrame );
742// layoutTimeFrame->setSpacing( KDialog::spacingHint() ); 742// layoutTimeFrame->setSpacing( KDialog::spacingHint() );
743 743
744 mDateTimeLabel = new QLabel( mTimeGroupBox ); 744 mDateTimeLabel = new QLabel( mTimeGroupBox );
745// mDateTimeLabel = new QLabel( timeFrame ); 745// mDateTimeLabel = new QLabel( timeFrame );
746// layoutTimeFrame->addWidget( mDateTimeLabel ); 746// layoutTimeFrame->addWidget( mDateTimeLabel );
747 //mTimeGroupBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum ) ); 747 //mTimeGroupBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum ) );
748 //mDateTimeLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum) ); 748 //mDateTimeLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum) );
749 mRuleBox = new QGroupBox( 1, Horizontal, i18n("Recurrence Rule"), this ); 749 mRuleBox = new QGroupBox( 1, Horizontal, i18n("Recurrence Rule"), this );
750 topLayout->addMultiCellWidget( mRuleBox, 2, 2, 0, 1 ); 750 topLayout->addMultiCellWidget( mRuleBox, 2, 2, 0, 1 );
751 mRecurrenceChooser = new RecurrenceChooser( mRuleBox ); 751 mRecurrenceChooser = new RecurrenceChooser( mRuleBox );
752 connect( mRecurrenceChooser, SIGNAL( chosen( int ) ), 752 connect( mRecurrenceChooser, SIGNAL( chosen( int ) ),
753 SLOT( showCurrentRule( int ) ) ); 753 SLOT( showCurrentRule( int ) ) );
754 754
755 755
756 mRuleStack = new QWidgetStack( mRuleBox ); 756 mRuleStack = new QWidgetStack( mRuleBox );
757 757
758 mDaily = new RecurDaily( mRuleStack ); 758 mDaily = new RecurDaily( mRuleStack );
759 mRuleStack->addWidget( mDaily, 0 ); 759 mRuleStack->addWidget( mDaily, 0 );
760 760
761 mWeekly = new RecurWeekly( mRuleStack ); 761 mWeekly = new RecurWeekly( mRuleStack );
762 mRuleStack->addWidget( mWeekly, 0 ); 762 mRuleStack->addWidget( mWeekly, 0 );
763 763
764 mMonthly = new RecurMonthly( mRuleStack ); 764 mMonthly = new RecurMonthly( mRuleStack );
765 mRuleStack->addWidget( mMonthly, 0 ); 765 mRuleStack->addWidget( mMonthly, 0 );
766 766
767 mYearly = new RecurYearly( mRuleStack ); 767 mYearly = new RecurYearly( mRuleStack );
768 mRuleStack->addWidget( mYearly, 0 ); 768 mRuleStack->addWidget( mYearly, 0 );
769 769
770 showCurrentRule( mRecurrenceChooser->type() ); 770 showCurrentRule( mRecurrenceChooser->type() );
771 mRecurrenceRangeWidget = 0; 771 mRecurrenceRangeWidget = 0;
772 mRecurrenceRangeDialog = new RecurrenceRangeDialog( this ); 772 mRecurrenceRangeDialog = new RecurrenceRangeDialog( this );
773 mRecurrenceRange = mRecurrenceRangeDialog; 773 mRecurrenceRange = mRecurrenceRangeDialog;
774 mRecurrenceRangeButton = new QPushButton( i18n("Recurrence Range..."), 774 mRecurrenceRangeButton = new QPushButton( i18n("Recurrence Range..."),
775 this ); 775 this );
776 776
777 connect( mRecurrenceRangeButton, SIGNAL( clicked() ), 777 connect( mRecurrenceRangeButton, SIGNAL( clicked() ),
778 SLOT( showRecurrenceRangeDialog() ) ); 778 SLOT( showRecurrenceRangeDialog() ) );
779 779
780 mExceptionsWidget = 0; 780 mExceptionsWidget = 0;
781 mExceptionsDialog = new ExceptionsDialog( this ); 781 mExceptionsDialog = new ExceptionsDialog( this );
782 mExceptions = mExceptionsDialog; 782 mExceptions = mExceptionsDialog;
783 mExceptionsButton = new QPushButton( i18n("Exceptions..."), this ); 783 mExceptionsButton = new QPushButton( i18n("Exceptions..."), this );
784 if ( QApplication::desktop()->width() < 320 ) { 784 if ( QApplication::desktop()->width() < 320 ) {
785 topLayout->addMultiCellWidget( mRecurrenceRangeButton, 3, 3, 0, 1 ); 785 topLayout->addMultiCellWidget( mRecurrenceRangeButton, 3, 3, 0, 1 );
786 topLayout->addMultiCellWidget( mExceptionsButton, 4, 4, 0, 1 ); 786 topLayout->addMultiCellWidget( mExceptionsButton, 4, 4, 0, 1 );
787 } else { 787 } else {
788 topLayout->addWidget( mRecurrenceRangeButton, 3, 0 ); 788 topLayout->addWidget( mRecurrenceRangeButton, 3, 0 );
789 topLayout->addWidget( mExceptionsButton, 3, 1 ); 789 topLayout->addWidget( mExceptionsButton, 3, 1 );
790 } 790 }
791 connect( mExceptionsButton, SIGNAL( clicked() ), 791 connect( mExceptionsButton, SIGNAL( clicked() ),
792 SLOT( showExceptionsDialog() ) ); 792 SLOT( showExceptionsDialog() ) );
793} 793}
794 794
795KOEditorRecurrence::~KOEditorRecurrence() 795KOEditorRecurrence::~KOEditorRecurrence()
796{ 796{
797} 797}
798 798
799void KOEditorRecurrence::setEnabled( bool enabled ) 799void KOEditorRecurrence::setEnabled( bool enabled )
800{ 800{
801// kdDebug() << "KOEditorRecurrence::setEnabled(): " << (enabled ? "on" : "off") << endl; 801// kdDebug() << "KOEditorRecurrence::setEnabled(): " << (enabled ? "on" : "off") << endl;
802 802
803 mTimeGroupBox->setEnabled( enabled ); 803 mTimeGroupBox->setEnabled( enabled );
804 if ( mRecurrenceRangeWidget ) mRecurrenceRangeWidget->setEnabled( enabled ); 804 if ( mRecurrenceRangeWidget ) mRecurrenceRangeWidget->setEnabled( enabled );
805 if ( mRecurrenceRangeButton ) mRecurrenceRangeButton->setEnabled( enabled ); 805 if ( mRecurrenceRangeButton ) mRecurrenceRangeButton->setEnabled( enabled );
806 if ( mExceptionsWidget ) mExceptionsWidget->setEnabled( enabled ); 806 if ( mExceptionsWidget ) mExceptionsWidget->setEnabled( enabled );
807 if ( mExceptionsButton ) mExceptionsButton->setEnabled( enabled ); 807 if ( mExceptionsButton ) mExceptionsButton->setEnabled( enabled );
808 mRuleBox->setEnabled( enabled ); 808 mRuleBox->setEnabled( enabled );
809} 809}
810 810
811void KOEditorRecurrence::showCurrentRule( int current ) 811void KOEditorRecurrence::showCurrentRule( int current )
812{ 812{
813 switch ( current ) { 813 switch ( current ) {
814 case Daily: 814 case Daily:
815 mRuleStack->raiseWidget( mDaily ); 815 mRuleStack->raiseWidget( mDaily );
816 break; 816 break;
817 case Weekly: 817 case Weekly:
818 mRuleStack->raiseWidget( mWeekly ); 818 mRuleStack->raiseWidget( mWeekly );
819 break; 819 break;
820 case Monthly: 820 case Monthly:
821 mRuleStack->raiseWidget( mMonthly ); 821 mRuleStack->raiseWidget( mMonthly );
822 break; 822 break;
823 default: 823 default:
824 case Yearly: 824 case Yearly:
825 mRuleStack->raiseWidget( mYearly ); 825 mRuleStack->raiseWidget( mYearly );
826 break; 826 break;
827 } 827 }
828} 828}
829 829
830void KOEditorRecurrence::setDateTimes( QDateTime start, QDateTime end ) 830void KOEditorRecurrence::setDateTimes( QDateTime start, QDateTime end )
831{ 831{
832// kdDebug() << "KOEditorRecurrence::setDateTimes" << endl; 832// kdDebug() << "KOEditorRecurrence::setDateTimes" << endl;
833 833
834 mRecurrenceRange->setDateTimes( start, end ); 834 mRecurrenceRange->setDateTimes( start, end );
835 mExceptions->setDefaults( end ); 835 mExceptions->setDefaults( end );
836 836
837} 837}
838void KOEditorRecurrence::setDefaultsDates( QDateTime from, QDateTime to ) 838void KOEditorRecurrence::setDefaultsDates( QDateTime from, QDateTime to )
839{ 839{
840 setDateTimes( from, to ); 840 setDateTimes( from, to );
841 QBitArray days( 7 ); 841 QBitArray days( 7 );
842 days.fill( 0 ); 842 days.fill( 0 );
843 days.setBit( from.date().dayOfWeek()- 1); 843 days.setBit( from.date().dayOfWeek()- 1);
844 mWeekly->setDays( days ); 844 mWeekly->setDays( days );
845 bool byPos = mMonthly->byPos(); 845 bool byPos = mMonthly->byPos();
846 if ( byPos ) 846 if ( byPos )
847 mMonthly->setByDay( from.date().day()-1 ); 847 mMonthly->setByDay( from.date().day()-1 );
848 mMonthly->setByPos((from.date().day()/7), from.date().dayOfWeek()-1 ); 848 mMonthly->setByPos((from.date().day()/7), from.date().dayOfWeek()-1 );
849 if ( ! byPos) 849 if ( ! byPos)
850 mMonthly->setByDay( from.date().day()-1 ); 850 mMonthly->setByDay( from.date().day()-1 );
851 851
852 bool byDay = mYearly->byDay(); 852 bool byDay = mYearly->byDay();
853 if ( ! byDay ) 853 if ( ! byDay )
854 mYearly->setByDay( from.date().dayOfYear() ); 854 mYearly->setByDay( from.date().dayOfYear() );
855 mYearly->setByMonth( from.date().month(), from.date().day() ); 855 mYearly->setByMonth( from.date().month(), from.date().day() );
856 if ( byDay ) 856 if ( byDay )
857 mYearly->setByDay( from.date().dayOfYear() ); 857 mYearly->setByDay( from.date().dayOfYear() );
858} 858}
859void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to ) 859void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to )
860{ 860{
861 861
862 // qDebug("KOEditorRecurrence::setDefaults %s %s ",from.toString().latin1(),to.toString().latin1() ); 862 // qDebug("KOEditorRecurrence::setDefaults %s %s ",from.toString().latin1(),to.toString().latin1() );
863 //setDateTimes( from, to ); 863 //setDateTimes( from, to );
864 864
865 bool enabled = false; 865 bool enabled = false;
866 mEnabledCheck->setChecked( enabled ); 866 mEnabledCheck->setChecked( enabled );
867 setEnabled( enabled ); 867 setEnabled( enabled );
868 868
869 mExceptions->setDefaults( to ); 869 mExceptions->setDefaults( to );
870 mRecurrenceRange->setDefaults( to ); 870 mRecurrenceRange->setDefaults( to );
871 871
872 mRecurrenceChooser->setType( RecurrenceChooser::Weekly ); 872 mRecurrenceChooser->setType( RecurrenceChooser::Weekly );
873 showCurrentRule( mRecurrenceChooser->type() ); 873 showCurrentRule( mRecurrenceChooser->type() );
874 874
875 mDaily->setFrequency( 1 ); 875 mDaily->setFrequency( 1 );
876 mWeekly->setFrequency( 1 ); 876 mWeekly->setFrequency( 1 );
877 mMonthly->setFrequency( 1 ); 877 mMonthly->setFrequency( 1 );
878 mYearly->setFrequency( 1 ); 878 mYearly->setFrequency( 1 );
879 setDefaultsDates( from, to ); 879 setDefaultsDates( from, to );
880} 880}
881 881
882void KOEditorRecurrence::readEvent(Incidence *event) 882void KOEditorRecurrence::readEvent(Incidence *event)
883{ 883{
884 884
885 QDateTime dtEnd; 885 QDateTime dtEnd;
886 if ( event->typeID() == eventID ) 886 if ( event->typeID() == eventID )
887 dtEnd = ((Event*)event)->dtEnd(); 887 dtEnd = ((Event*)event)->dtEnd();
888 else 888 else
889 dtEnd = ((Todo*)event)->dtDue(); 889 dtEnd = ((Todo*)event)->dtDue();
890 890
891 setDefaults( event->dtStart(), dtEnd ); 891 setDefaults( event->dtStart(), dtEnd );
892 QBitArray rDays( 7 ); 892 QBitArray rDays( 7 );
893 QPtrList<Recurrence::rMonthPos> rmp; 893 QPtrList<Recurrence::rMonthPos> rmp;
894 QPtrList<int> rmd; 894 QPtrList<int> rmd;
895 int day = 0; 895 int day = 0;
896 int count = 0; 896 int count = 0;
897 int month = 0; 897 int month = 0;
898 setDateTimes( event->dtStart(), dtEnd ); 898 setDateTimes( event->dtStart(), dtEnd );
899 899
900 Recurrence *r = event->recurrence(); 900
901 int f = r->frequency();
902 901
903 int recurs = r->doesRecur(); 902 int recurs = event->doesRecur();
904 903
905 mEnabledCheck->setChecked( recurs ); 904 mEnabledCheck->setChecked( recurs );
906 setEnabled( recurs ); 905 setEnabled( recurs );
907 906
908 int recurrenceType = RecurrenceChooser::Weekly; 907 int recurrenceType = RecurrenceChooser::Weekly;
909 908 if ( recurs ) {
910 switch ( recurs ) { 909 Recurrence *r = event->recurrence();
911 case Recurrence::rNone: 910 int f = r->frequency();
912 setDefaults( event->dtStart(), dtEnd ); 911 switch ( recurs ) {
913 break; 912 case Recurrence::rNone:
914 case Recurrence::rDaily: 913 setDefaults( event->dtStart(), dtEnd );
915 recurrenceType = RecurrenceChooser::Daily; 914 break;
916 mDaily->setFrequency( f ); 915 case Recurrence::rDaily:
917 break; 916 recurrenceType = RecurrenceChooser::Daily;
918 case Recurrence::rWeekly: 917 mDaily->setFrequency( f );
919 recurrenceType = RecurrenceChooser::Weekly; 918 break;
920 mWeekly->setFrequency( f ); 919 case Recurrence::rWeekly:
921 mWeekly->setDays( r->days() ); 920 recurrenceType = RecurrenceChooser::Weekly;
922 break; 921 mWeekly->setFrequency( f );
923 case Recurrence::rMonthlyPos: 922 mWeekly->setDays( r->days() );
924 // we only handle one possibility in the list right now, 923 break;
925 // so I have hardcoded calls with first(). If we make the GUI 924 case Recurrence::rMonthlyPos:
926 // more extended, this can be changed. 925 // we only handle one possibility in the list right now,
927 recurrenceType = RecurrenceChooser::Monthly; 926 // so I have hardcoded calls with first(). If we make the GUI
928 927 // more extended, this can be changed.
929 rmp = r->monthPositions(); 928 recurrenceType = RecurrenceChooser::Monthly;
930 if ( rmp.first()->negative ) 929
931 count = 5 - rmp.first()->rPos - 1; 930 rmp = r->monthPositions();
932 else 931 if ( rmp.first()->negative )
933 count = rmp.first()->rPos - 1; 932 count = 5 - rmp.first()->rPos - 1;
934 day = 0; 933 else
935 while ( !rmp.first()->rDays.testBit( day ) ) ++day; 934 count = rmp.first()->rPos - 1;
936 mMonthly->setByPos( count, day ); 935 day = 0;
937 936 while ( !rmp.first()->rDays.testBit( day ) ) ++day;
938 mMonthly->setFrequency( f ); 937 mMonthly->setByPos( count, day );
939 938
940 break; 939 mMonthly->setFrequency( f );
941 case Recurrence::rMonthlyDay: 940
942 recurrenceType = RecurrenceChooser::Monthly; 941 break;
943 942 case Recurrence::rMonthlyDay:
944 rmd = r->monthDays(); 943 recurrenceType = RecurrenceChooser::Monthly;
945 day = *rmd.first() - 1; 944
946 mMonthly->setByDay( day ); 945 rmd = r->monthDays();
947 946 day = *rmd.first() - 1;
948 mMonthly->setFrequency( f ); 947 mMonthly->setByDay( day );
949 948
950 break; 949 mMonthly->setFrequency( f );
951 case Recurrence::rYearlyMonth: 950
952 { 951 break;
953 recurrenceType = RecurrenceChooser::Yearly; 952 case Recurrence::rYearlyMonth:
954 //qDebug("Recurrence::rYearlyMonth: "); 953 {
955 day = event->dtStart().date().day(); 954 recurrenceType = RecurrenceChooser::Yearly;
956 rmd = r->yearNums(); 955 //qDebug("Recurrence::rYearlyMonth: ");
957 if ( rmd.count() > 0 ) 956 day = event->dtStart().date().day();
958 month = *rmd.first(); 957 rmd = r->yearNums();
959 else 958 if ( rmd.count() > 0 )
960 month = event->dtStart().date().month() ; 959 month = *rmd.first();
961 mYearly->setByMonth( month, day ); 960 else
961 month = event->dtStart().date().month() ;
962 mYearly->setByMonth( month, day );
962#if 0 963#if 0
963 //qDebug("2day = %d ",day ); 964 //qDebug("2day = %d ",day );
964 QPtrList<Recurrence::rMonthPos> monthlist = r->yearMonthPositions(); 965 QPtrList<Recurrence::rMonthPos> monthlist = r->yearMonthPositions();
965 int month; 966 int month;
966 if ( !monthlist.isEmpty() ) { 967 if ( !monthlist.isEmpty() ) {
967 month = monthlist.first()->rPos ; 968 month = monthlist.first()->rPos ;
968 } else { 969 } else {
969 month = event->dtStart().date().month() ; 970 month = event->dtStart().date().month() ;
970 } 971 }
971 mYearly->setByMonth( day, month ); 972 mYearly->setByMonth( day, month );
972#endif 973#endif
973 mYearly->setFrequency( f ); 974 mYearly->setFrequency( f );
974 } 975 }
975 976
976 break; 977 break;
977 case Recurrence::rYearlyDay: 978 case Recurrence::rYearlyDay:
978 //qDebug("Recurrence::rYearlyDay: "); 979 //qDebug("Recurrence::rYearlyDay: ");
979 recurrenceType = RecurrenceChooser::Yearly; 980 recurrenceType = RecurrenceChooser::Yearly;
980 mYearly->setByDay( event->dtStart().date().dayOfYear() ); 981 mYearly->setByDay( event->dtStart().date().dayOfYear() );
981 mYearly->setFrequency( f ); 982 mYearly->setFrequency( f );
982 break; 983 break;
983 default: 984 default:
984 setDefaults( event->dtStart(), dtEnd ); 985 setDefaults( event->dtStart(), dtEnd );
985 break; 986 break;
987 }
986 } 988 }
987
988 mRecurrenceChooser->setType( recurrenceType ); 989 mRecurrenceChooser->setType( recurrenceType );
989 showCurrentRule( recurrenceType ); 990 showCurrentRule( recurrenceType );
990 991
991 mRecurrenceRange->setDateTimes( event->dtStart() ); 992 mRecurrenceRange->setDateTimes( event->dtStart() );
992 993
993 if ( r->doesRecur() ) { 994 if ( event->doesRecur() ) {
995 Recurrence *r = event->recurrence();
994 mRecurrenceRange->setDuration( r->duration() ); 996 mRecurrenceRange->setDuration( r->duration() );
995 if ( r->duration() == 0 ) 997 if ( r->duration() == 0 )
996 { 998 {
997 if ( r->endDate() < event->dtStart().date() ) 999 if ( r->endDate() < event->dtStart().date() )
998 mRecurrenceRange->setEndDate( event->dtStart().date() ); 1000 mRecurrenceRange->setEndDate( event->dtStart().date() );
999 else 1001 else
1000 mRecurrenceRange->setEndDate( r->endDate() ); 1002 mRecurrenceRange->setEndDate( r->endDate() );
1001 } else 1003 } else
1002 mRecurrenceRange->setEndDate( event->dtStart().date() ); 1004 mRecurrenceRange->setEndDate( event->dtStart().date() );
1003 } 1005 }
1004 1006
1005 mExceptions->setDates( event->exDates() ); 1007 mExceptions->setDates( event->exDates() );
1006} 1008}
1007 1009
1008void KOEditorRecurrence::writeEvent( Incidence *event ) 1010void KOEditorRecurrence::writeEvent( Incidence *event )
1009{ 1011{
1010 Recurrence *r = event->recurrence(); 1012
1011 1013
1012 // clear out any old settings; 1014 if ( !mEnabledCheck->isChecked() ) {
1013 r->unsetRecurs(); 1015 if ( event->doesRecur() )
1016 event->recurrence()->unsetRecurs();
1017 } else {
1018 Recurrence *r = event->recurrence();
1014 1019
1015 if ( mEnabledCheck->isChecked() ) { 1020 // clear out any old settings;
1021 r->unsetRecurs();
1016 int duration = mRecurrenceRange->duration(); 1022 int duration = mRecurrenceRange->duration();
1017 QDate endDate; 1023 QDate endDate;
1018 if ( duration == 0 ) endDate = mRecurrenceRange->endDate(); 1024 if ( duration == 0 ) endDate = mRecurrenceRange->endDate();
1019 1025
1020 int recurrenceType = mRecurrenceChooser->type(); 1026 int recurrenceType = mRecurrenceChooser->type();
1021 1027
1022 if ( recurrenceType == RecurrenceChooser::Daily ) { 1028 if ( recurrenceType == RecurrenceChooser::Daily ) {
1023 int freq = mDaily->frequency(); 1029 int freq = mDaily->frequency();
1024 if ( duration != 0 ) r->setDaily( freq, duration ); 1030 if ( duration != 0 ) r->setDaily( freq, duration );
1025 else r->setDaily( freq, endDate ); 1031 else r->setDaily( freq, endDate );
1026 } else if ( recurrenceType == RecurrenceChooser::Weekly ) { 1032 } else if ( recurrenceType == RecurrenceChooser::Weekly ) {
1027 int freq = mWeekly->frequency(); 1033 int freq = mWeekly->frequency();
1028 QBitArray days = mWeekly->days(); 1034 QBitArray days = mWeekly->days();
1029 int j; 1035 int j;
1030 bool found = false; 1036 bool found = false;
1031 for (j = 0; j < 7 ; ++j ) { 1037 for (j = 0; j < 7 ; ++j ) {
1032 found |=days.at(j); 1038 found |=days.at(j);
1033 } 1039 }
1034 if ( !found ) { 1040 if ( !found ) {
1035 days.setBit( event->dtStart().date().dayOfWeek()-1); 1041 days.setBit( event->dtStart().date().dayOfWeek()-1);
1036 //qDebug("bit set %d ", event->dtStart().date().dayOfWeek()-1); 1042 //qDebug("bit set %d ", event->dtStart().date().dayOfWeek()-1);
1037 } 1043 }
1038 if ( duration != 0 ) r->setWeekly( freq, days, duration ); 1044 if ( duration != 0 ) r->setWeekly( freq, days, duration );
1039 else r->setWeekly( freq, days, endDate ); 1045 else r->setWeekly( freq, days, endDate );
1040 } else if ( recurrenceType == RecurrenceChooser::Monthly ) { 1046 } else if ( recurrenceType == RecurrenceChooser::Monthly ) {
1041 int freq = mMonthly->frequency(); 1047 int freq = mMonthly->frequency();
1042 if ( mMonthly->byPos() ) { 1048 if ( mMonthly->byPos() ) {
1043 int pos = mMonthly->count(); 1049 int pos = mMonthly->count();
1044 1050
1045 QBitArray days( 7 ); 1051 QBitArray days( 7 );
1046 days.fill( false ); 1052 days.fill( false );
1047 1053
1048 days.setBit( mMonthly->weekday() ); 1054 days.setBit( mMonthly->weekday() );
1049 if ( duration != 0 ) 1055 if ( duration != 0 )
1050 r->setMonthly( Recurrence::rMonthlyPos, freq, duration ); 1056 r->setMonthly( Recurrence::rMonthlyPos, freq, duration );
1051 else 1057 else
1052 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate ); 1058 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate );
1053 r->addMonthlyPos( pos, days ); 1059 r->addMonthlyPos( pos, days );
1054 } else { 1060 } else {
1055 // it's by day 1061 // it's by day
1056 int day = mMonthly->day(); 1062 int day = mMonthly->day();
1057 1063
1058 if ( duration != 0 ) { 1064 if ( duration != 0 ) {
1059 r->setMonthly( Recurrence::rMonthlyDay, freq, duration ); 1065 r->setMonthly( Recurrence::rMonthlyDay, freq, duration );
1060 } else { 1066 } else {
1061 r->setMonthly( Recurrence::rMonthlyDay, freq, endDate ); 1067 r->setMonthly( Recurrence::rMonthlyDay, freq, endDate );
1062 } 1068 }
1063 r->addMonthlyDay( day ); 1069 r->addMonthlyDay( day );
1064 } 1070 }
1065 } else if ( recurrenceType == RecurrenceChooser::Yearly ) { 1071 } else if ( recurrenceType == RecurrenceChooser::Yearly ) {
1066 //qDebug("RecurrenceChooser::Yearly "); 1072 //qDebug("RecurrenceChooser::Yearly ");
1067 int freq = mYearly->frequency(); 1073 int freq = mYearly->frequency();
1068 if ( mYearly->byDay() ) { 1074 if ( mYearly->byDay() ) {
1069 if ( duration != 0 ) { 1075 if ( duration != 0 ) {
1070 r->setYearly( Recurrence::rYearlyDay, freq, duration ); 1076 r->setYearly( Recurrence::rYearlyDay, freq, duration );
1071 } else { 1077 } else {
1072 r->setYearly( Recurrence::rYearlyDay, freq, endDate ); 1078 r->setYearly( Recurrence::rYearlyDay, freq, endDate );
1073 } 1079 }
1074 r->addYearlyNum( event->dtStart().date().dayOfYear() ); 1080 r->addYearlyNum( event->dtStart().date().dayOfYear() );
1075 } else { 1081 } else {
1076 if ( duration != 0 ) { 1082 if ( duration != 0 ) {
1077 r->setYearly( Recurrence::rYearlyMonth, freq, duration ); 1083 r->setYearly( Recurrence::rYearlyMonth, freq, duration );
1078 } else { 1084 } else {
1079 r->setYearly( Recurrence::rYearlyMonth, freq, endDate ); 1085 r->setYearly( Recurrence::rYearlyMonth, freq, endDate );
1080 } 1086 }
1081 r->addYearlyNum( mYearly->month() ); 1087 r->addYearlyNum( mYearly->month() );
1082 } 1088 }
1083 1089
1084 } 1090 }
1085 1091
1086 event->setExDates( mExceptions->dates() ); 1092 event->setExDates( mExceptions->dates() );
1087 } 1093 }
1088} 1094}
1089 1095
1090void KOEditorRecurrence::setDateTimeStr( const QString &str ) 1096void KOEditorRecurrence::setDateTimeStr( const QString &str )
1091{ 1097{
1092 mDateTimeLabel->setText( str ); 1098 mDateTimeLabel->setText( str );
1093} 1099}
1094 1100
1095bool KOEditorRecurrence::validateInput() 1101bool KOEditorRecurrence::validateInput()
1096{ 1102{
1097 // Check input here 1103 // Check input here
1098 1104
1099 return true; 1105 return true;
1100} 1106}
1101 1107
1102void KOEditorRecurrence::showExceptionsDialog() 1108void KOEditorRecurrence::showExceptionsDialog()
1103{ 1109{
1104 DateList dates = mExceptions->dates(); 1110 DateList dates = mExceptions->dates();
1105 int result = mExceptionsDialog->exec(); 1111 int result = mExceptionsDialog->exec();
1106 if ( result == QDialog::Rejected ) mExceptions->setDates( dates ); 1112 if ( result == QDialog::Rejected ) mExceptions->setDates( dates );
1107} 1113}
1108 1114
1109void KOEditorRecurrence::showRecurrenceRangeDialog() 1115void KOEditorRecurrence::showRecurrenceRangeDialog()
1110{ 1116{
1111 int duration = mRecurrenceRange->duration(); 1117 int duration = mRecurrenceRange->duration();
1112 QDate endDate = mRecurrenceRange->endDate(); 1118 QDate endDate = mRecurrenceRange->endDate();
1113 1119
1114 int result = mRecurrenceRangeDialog->exec(); 1120 int result = mRecurrenceRangeDialog->exec();
1115 if ( result == QDialog::Rejected ) { 1121 if ( result == QDialog::Rejected ) {
1116 mRecurrenceRange->setDuration( duration ); 1122 mRecurrenceRange->setDuration( duration );
1117 mRecurrenceRange->setEndDate( endDate ); 1123 mRecurrenceRange->setEndDate( endDate );
1118 } 1124 }
1119 1125
1120} 1126}
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index a690ab1..db695f5 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -94,647 +94,647 @@ void KOEventViewer::printMe()
94 float scale; 94 float scale;
95 // scale to fit the width or height of the paper 95 // scale to fit the width or height of the paper
96 if ( dx < dy ) 96 if ( dx < dy )
97 scale = dx; 97 scale = dx;
98 else 98 else
99 scale = dy; 99 scale = dy;
100 100
101 p.translate( m.width()/10,0 ); 101 p.translate( m.width()/10,0 );
102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { 102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
103 p.scale( scale, scale ); 103 p.scale( scale, scale );
104 } 104 }
105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
106 p.end(); 106 p.end();
107#endif 107#endif
108 108
109} 109}
110void KOEventViewer::setSource(const QString& n) 110void KOEventViewer::setSource(const QString& n)
111{ 111{
112 112
113 if ( n.left(8) == "todo_uid" ) { 113 if ( n.left(8) == "todo_uid" ) {
114 int midstr = 9; 114 int midstr = 9;
115#ifdef DESKTOP_VERSION 115#ifdef DESKTOP_VERSION
116 midstr = 11; 116 midstr = 11;
117#endif 117#endif
118 //qDebug("-%s- ", n.mid(midstr).latin1()); 118 //qDebug("-%s- ", n.mid(midstr).latin1());
119 emit showIncidence( n.mid(midstr) ); 119 emit showIncidence( n.mid(midstr) );
120 return; 120 return;
121 } 121 }
122 122
123 if ( n.left(3) == "uid" ) 123 if ( n.left(3) == "uid" )
124#ifdef DESKTOP_VERSION 124#ifdef DESKTOP_VERSION
125 { 125 {
126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
127 KABC::AddressBook::Iterator it; 127 KABC::AddressBook::Iterator it;
128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
129 // LR I do not understand, why the uid string is different on zaurus and desktop 129 // LR I do not understand, why the uid string is different on zaurus and desktop
130 QString uid = "uid://"+(*it).uid(); 130 QString uid = "uid://"+(*it).uid();
131 131
132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
133 if (n == uid ) { 133 if (n == uid ) {
134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
135 QDialog dia( this,"dia123", true ); 135 QDialog dia( this,"dia123", true );
136 dia.setCaption( i18n("Details of attendee") ); 136 dia.setCaption( i18n("Details of attendee") );
137 QVBoxLayout lay ( &dia ); 137 QVBoxLayout lay ( &dia );
138 KABC::AddresseeView av ( &dia ); 138 KABC::AddresseeView av ( &dia );
139 av.setAddressee( (*it) ); 139 av.setAddressee( (*it) );
140 lay.addWidget( &av ); 140 lay.addWidget( &av );
141 if ( QApplication::desktop()->width() < 480 ) 141 if ( QApplication::desktop()->width() < 480 )
142 dia.resize( 220, 240); 142 dia.resize( 220, 240);
143 else { 143 else {
144 dia.resize( 400,400); 144 dia.resize( 400,400);
145 } 145 }
146 dia.exec(); 146 dia.exec();
147 break; 147 break;
148 } 148 }
149 } 149 }
150 return; 150 return;
151 } 151 }
152#else 152#else
153 { 153 {
154 if ( "uid:organizer" == n ) { 154 if ( "uid:organizer" == n ) {
155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
156 return; 156 return;
157 } 157 }
158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
159 if (attendees.count()) { 159 if (attendees.count()) {
160 Attendee *a; 160 Attendee *a;
161 for(a=attendees.first();a;a=attendees.next()) { 161 for(a=attendees.first();a;a=attendees.next()) {
162 if ( "uid:"+a->uid() == n ) { 162 if ( "uid:"+a->uid() == n ) {
163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
164 return; 164 return;
165 } 165 }
166 } 166 }
167 } 167 }
168 return; 168 return;
169 } 169 }
170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
171 // the result should now arrive through method insertAttendees 171 // the result should now arrive through method insertAttendees
172 //QString uid = "uid:"+(*it).uid(); 172 //QString uid = "uid:"+(*it).uid();
173#endif 173#endif
174 if ( n.left(6) == "mailto" ) { 174 if ( n.left(6) == "mailto" ) {
175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
176#ifndef DESKTOP_VERSION 176#ifndef DESKTOP_VERSION
177 if ( n.mid(7,3) == "ALL" ) { 177 if ( n.mid(7,3) == "ALL" ) {
178 mailToAttendees( true ); 178 mailToAttendees( true );
179 } else if ( n.mid(7,4) == "RSVP" ) { 179 } else if ( n.mid(7,4) == "RSVP" ) {
180 mailToAttendees( false ); 180 mailToAttendees( false );
181 } else { 181 } else {
182 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 182 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
183 e << n.mid(7); 183 e << n.mid(7);
184 } 184 }
185#endif 185#endif
186 186
187 } 187 }
188 188
189 189
190#ifndef KORG_NODCOP 190#ifndef KORG_NODCOP
191 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 191 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
192 QString tmpStr; 192 QString tmpStr;
193 if (n.startsWith("mailto:")) { 193 if (n.startsWith("mailto:")) {
194 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 194 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
195 //emit showIncidence(n); 195 //emit showIncidence(n);
196 return; 196 return;
197 } else if (n.startsWith("uid:")) { 197 } else if (n.startsWith("uid:")) {
198 DCOPClient *client = KApplication::kApplication()->dcopClient(); 198 DCOPClient *client = KApplication::kApplication()->dcopClient();
199 const QByteArray noParamData; 199 const QByteArray noParamData;
200 const QByteArray paramData; 200 const QByteArray paramData;
201 QByteArray replyData; 201 QByteArray replyData;
202 QCString replyTypeStr; 202 QCString replyTypeStr;
203#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 203#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
204 bool foundAbbrowser = PING_ABBROWSER; 204 bool foundAbbrowser = PING_ABBROWSER;
205 205
206 if (foundAbbrowser) { 206 if (foundAbbrowser) {
207 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 207 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
208 //client->send("kaddressbook","KAddressBookIface", 208 //client->send("kaddressbook","KAddressBookIface",
209 QDataStream arg(paramData, IO_WriteOnly); 209 QDataStream arg(paramData, IO_WriteOnly);
210 arg << n.mid(6); 210 arg << n.mid(6);
211 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 211 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
212 return; 212 return;
213 } else { 213 } else {
214 /* 214 /*
215 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 215 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
216 We start it without its main interface 216 We start it without its main interface
217 */ 217 */
218 KIconLoader* iconLoader = new KIconLoader(); 218 KIconLoader* iconLoader = new KIconLoader();
219 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 219 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
220 ActionManager::setStartedKAddressBook(true); 220 ActionManager::setStartedKAddressBook(true);
221 tmpStr = "kaddressbook --editor-only --uid "; 221 tmpStr = "kaddressbook --editor-only --uid ";
222 tmpStr += KProcess::quote(n.mid(6)); 222 tmpStr += KProcess::quote(n.mid(6));
223 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 223 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
224 return; 224 return;
225 } 225 }
226 } else { 226 } else {
227 //QTextBrowser::setSource(n); 227 //QTextBrowser::setSource(n);
228 } 228 }
229#endif 229#endif
230} 230}
231void KOEventViewer::mailToAttendees( bool all ) 231void KOEventViewer::mailToAttendees( bool all )
232{ 232{
233 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 233 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
234 if (attendees.count() == 0) return; 234 if (attendees.count() == 0) return;
235 QStringList nameList; 235 QStringList nameList;
236 QStringList emailList; 236 QStringList emailList;
237 QStringList uidList; 237 QStringList uidList;
238 Attendee* a; 238 Attendee* a;
239 for(a=attendees.first();a;a=attendees.next()) { 239 for(a=attendees.first();a;a=attendees.next()) {
240 if ( !all && !a->RSVP() ) continue; 240 if ( !all && !a->RSVP() ) continue;
241 if (!a->email().isEmpty()) { 241 if (!a->email().isEmpty()) {
242 nameList.append (a->name() ); 242 nameList.append (a->name() );
243 emailList.append (a->email() ); 243 emailList.append (a->email() );
244 uidList.append (a->uid() ); 244 uidList.append (a->uid() );
245 } 245 }
246 } 246 }
247 QString uid = "ComposeMailUIpick2"+mMailSubject; 247 QString uid = "ComposeMailUIpick2"+mMailSubject;
248#ifndef DESKTOP_VERSION 248#ifndef DESKTOP_VERSION
249 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 249 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
250#endif 250#endif
251 251
252} 252}
253void KOEventViewer::addTag(const QString & tag,const QString & text) 253void KOEventViewer::addTag(const QString & tag,const QString & text)
254{ 254{
255 int number=text.contains("\n"); 255 int number=text.contains("\n");
256 QString str = "<" + tag + ">"; 256 QString str = "<" + tag + ">";
257 QString tmpText=text; 257 QString tmpText=text;
258 QString tmpStr=str; 258 QString tmpStr=str;
259 if(number !=-1) 259 if(number !=-1)
260 { 260 {
261 if (number > 0) { 261 if (number > 0) {
262 int pos=0; 262 int pos=0;
263 QString tmp; 263 QString tmp;
264 for(int i=0;i<=number;i++) { 264 for(int i=0;i<=number;i++) {
265 pos=tmpText.find("\n"); 265 pos=tmpText.find("\n");
266 tmp=tmpText.left(pos); 266 tmp=tmpText.left(pos);
267 tmpText=tmpText.right(tmpText.length()-pos-1); 267 tmpText=tmpText.right(tmpText.length()-pos-1);
268 tmpStr+=tmp+"<br>"; 268 tmpStr+=tmp+"<br>";
269 } 269 }
270 } 270 }
271 else tmpStr += tmpText; 271 else tmpStr += tmpText;
272 tmpStr+="</" + tag + ">"; 272 tmpStr+="</" + tag + ">";
273 mText.append(tmpStr); 273 mText.append(tmpStr);
274 } 274 }
275 else 275 else
276 { 276 {
277 str += text + "</" + tag + ">"; 277 str += text + "</" + tag + ">";
278 mText.append(str); 278 mText.append(str);
279 } 279 }
280} 280}
281 281
282void KOEventViewer::setColorMode( int m ) 282void KOEventViewer::setColorMode( int m )
283{ 283{
284 mColorMode = m; 284 mColorMode = m;
285} 285}
286void KOEventViewer::appendEvent(Event *event, int mode ) 286void KOEventViewer::appendEvent(Event *event, int mode )
287{ 287{
288 mMailSubject = ""; 288 mMailSubject = "";
289 mCurrentIncidence = event; 289 mCurrentIncidence = event;
290 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 290 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
291 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 291 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
292 topLevelWidget()->setCaption(i18n("Event Viewer")); 292 topLevelWidget()->setCaption(i18n("Event Viewer"));
293 if ( mode == 0 ) { 293 if ( mode == 0 ) {
294 addTag("h2",deTag(event->summary())); 294 addTag("h2",deTag(event->summary()));
295 formatReadOnly(event); 295 formatReadOnly(event);
296 } 296 }
297 else { 297 else {
298 if ( mColorMode == 1 ) { 298 if ( mColorMode == 1 ) {
299 mText +="<font color=\"#00A000\">"; 299 mText +="<font color=\"#00A000\">";
300 } 300 }
301 if ( mColorMode == 2 ) { 301 if ( mColorMode == 2 ) {
302 mText +="<font color=\"#C00000\">"; 302 mText +="<font color=\"#C00000\">";
303 } 303 }
304 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 304 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
305 if ( mode == 1 ) { 305 if ( mode == 1 ) {
306 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 306 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
307 } else { 307 } else {
308 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 308 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
309 } 309 }
310 formatReadOnly(event); 310 formatReadOnly(event);
311 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 311 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
312 if ( mColorMode ) 312 if ( mColorMode )
313 mText += "</font>"; 313 mText += "</font>";
314 } 314 }
315 mMailSubject += i18n( "Meeting " )+ event->summary(); 315 mMailSubject += i18n( "Meeting " )+ event->summary();
316 if (event->cancelled ()) { 316 if (event->cancelled ()) {
317 mText +="<font color=\"#B00000\">"; 317 mText +="<font color=\"#B00000\">";
318 addTag("i",i18n("This event has been cancelled!")); 318 addTag("i",i18n("This event has been cancelled!"));
319 mText.append("<br>"); 319 mText.append("<br>");
320 mText += "</font>"; 320 mText += "</font>";
321 mMailSubject += i18n("(cancelled)"); 321 mMailSubject += i18n("(cancelled)");
322 } 322 }
323 323
324 if (event->doesFloat()) { 324 if (event->doesFloat()) {
325 if (event->isMultiDay()) { 325 if (event->isMultiDay()) {
326 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 326 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
327 .arg(event->dtStartDateStr(shortDate)) 327 .arg(event->dtStartDateStr(shortDate))
328 .arg(event->dtEndDateStr(shortDate))); 328 .arg(event->dtEndDateStr(shortDate)));
329 } else { 329 } else {
330 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 330 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
331 } 331 }
332 } else { 332 } else {
333 if (event->isMultiDay()) { 333 if (event->isMultiDay()) {
334 mText.append(i18n("<p><b>From:</b> %1</p> ") 334 mText.append(i18n("<p><b>From:</b> %1</p> ")
335 .arg(event->dtStartStr( shortDate))); 335 .arg(event->dtStartStr( shortDate)));
336 mText.append(i18n("<p><b>To:</b> %1</p>") 336 mText.append(i18n("<p><b>To:</b> %1</p>")
337 .arg(event->dtEndStr(shortDate))); 337 .arg(event->dtEndStr(shortDate)));
338 } else { 338 } else {
339 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 339 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
340 .arg(event->dtStartTimeStr()) 340 .arg(event->dtStartTimeStr())
341 .arg(event->dtEndTimeStr())); 341 .arg(event->dtEndTimeStr()));
342 mText.append(i18n("<p><b>On:</b> %1</p> ") 342 mText.append(i18n("<p><b>On:</b> %1</p> ")
343 .arg(event->dtStartDateStr( shortDate ))); 343 .arg(event->dtStartDateStr( shortDate )));
344 } 344 }
345 } 345 }
346 if (!event->location().isEmpty()) { 346 if (!event->location().isEmpty()) {
347 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 347 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
348 mMailSubject += i18n(" at ") + event->location(); 348 mMailSubject += i18n(" at ") + event->location();
349 } 349 }
350 if (event->recurrence()->doesRecur()) { 350 if (event->doesRecur()) {
351 351
352 QString recurText = event->recurrence()->recurrenceText(); 352 QString recurText = event->recurrenceText();
353 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 353 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
354 bool ok; 354 bool ok;
355 QDate start = QDate::currentDate(); 355 QDate start = QDate::currentDate();
356 QDateTime next; 356 QDateTime next;
357 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 357 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
358 if ( ok ) { 358 if ( ok ) {
359 if ( wideScreen ){ 359 if ( wideScreen ){
360 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) ); 360 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) );
361 } else { 361 } else {
362 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 362 addTag("p",i18n("<b>Next recurrence is on:</b>") );
363 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 363 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
364 } 364 }
365 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 365 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
366 366
367 } else { 367 } else {
368 bool last; 368 bool last;
369 QDate nextd; 369 QDate nextd;
370 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 370 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
371 if ( last ) { 371 if ( last ) {
372 if ( wideScreen ){ 372 if ( wideScreen ){
373 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate )); 373 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate ));
374 } else{ 374 } else{
375 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 375 addTag("p",i18n("<b>Last recurrence was on:</b>") );
376 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 376 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
377 } 377 }
378 } 378 }
379 } 379 }
380 } else { 380 } else {
381 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 381 mMailSubject += i18n(" - " )+event->dtStartStr( true );
382 382
383 } 383 }
384 384
385 385
386 if (event->isAlarmEnabled()) { 386 if (event->isAlarmEnabled()) {
387 Alarm *alarm =event->alarms().first() ; 387 Alarm *alarm =event->alarms().first() ;
388 QDateTime t = alarm->time(); 388 QDateTime t = alarm->time();
389 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 389 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
390 if(wideScreen ){ 390 if(wideScreen ){
391 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 391 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
392 }else{ 392 }else{
393 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 393 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
394 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 394 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
395 } 395 }
396 //addTag("p",s); 396 //addTag("p",s);
397 } 397 }
398 398
399 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 399 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
400 400
401 formatCategories(event); 401 formatCategories(event);
402 402
403 formatAttendees(event); 403 formatAttendees(event);
404 404
405 if ( KOPrefs::instance()->mEVshowCreated ) { 405 if ( KOPrefs::instance()->mEVshowCreated ) {
406 if(wideScreen ){ 406 if(wideScreen ){
407 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 407 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
408 }else{ 408 }else{
409 addTag("p",i18n("<b>Created: ") +" </b>"); 409 addTag("p",i18n("<b>Created: ") +" </b>");
410 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 410 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
411 } 411 }
412 412
413 413
414 } 414 }
415 if ( KOPrefs::instance()->mEVshowChanged ) { 415 if ( KOPrefs::instance()->mEVshowChanged ) {
416 if(wideScreen ){ 416 if(wideScreen ){
417 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 417 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
418 }else{ 418 }else{
419 addTag("p",i18n("<b>Last modified: ") +" </b>"); 419 addTag("p",i18n("<b>Last modified: ") +" </b>");
420 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 420 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
421 } 421 }
422 422
423 } 423 }
424 if ( KOPrefs::instance()->mEVshowDetails ) { 424 if ( KOPrefs::instance()->mEVshowDetails ) {
425 if (!event->description().isEmpty()) { 425 if (!event->description().isEmpty()) {
426 addTag("p",i18n("<b>Details: </b>")); 426 addTag("p",i18n("<b>Details: </b>"));
427 addTag("p",deTag(event->description())); 427 addTag("p",deTag(event->description()));
428 } 428 }
429 } 429 }
430 setText(mText); 430 setText(mText);
431 //QWhatsThis::add(this,mText); 431 //QWhatsThis::add(this,mText);
432 432
433} 433}
434 434
435void KOEventViewer::appendTodo(Todo *event, int mode ) 435void KOEventViewer::appendTodo(Todo *event, int mode )
436{ 436{
437 mMailSubject = ""; 437 mMailSubject = "";
438 mCurrentIncidence = event; 438 mCurrentIncidence = event;
439 topLevelWidget()->setCaption(i18n("Todo Viewer")); 439 topLevelWidget()->setCaption(i18n("Todo Viewer"));
440 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 440 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
441 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 441 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
442 if (mode == 0 ) { 442 if (mode == 0 ) {
443 addTag("h2",deTag(event->summary())); 443 addTag("h2",deTag(event->summary()));
444 formatReadOnly(event); 444 formatReadOnly(event);
445 } 445 }
446 else { 446 else {
447 if ( mColorMode == 1 ) { 447 if ( mColorMode == 1 ) {
448 mText +="<font color=\"#00A000\">"; 448 mText +="<font color=\"#00A000\">";
449 } 449 }
450 if ( mColorMode == 2 ) { 450 if ( mColorMode == 2 ) {
451 mText +="<font color=\"#B00000\">"; 451 mText +="<font color=\"#B00000\">";
452 } 452 }
453 if ( mode == 1 ) { 453 if ( mode == 1 ) {
454 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 454 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
455 } else { 455 } else {
456 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 456 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
457 } 457 }
458 formatReadOnly(event); 458 formatReadOnly(event);
459 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 459 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
460 if ( mColorMode ) 460 if ( mColorMode )
461 mText += "</font>"; 461 mText += "</font>";
462 } 462 }
463 mMailSubject += i18n( "Todo " )+ event->summary(); 463 mMailSubject += i18n( "Todo " )+ event->summary();
464 464
465 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 465 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
466 mText +="<font color=\"#B00000\">"; 466 mText +="<font color=\"#B00000\">";
467 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 467 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
468 mText += "</font>"; 468 mText += "</font>";
469 } else { 469 } else {
470 mText.append(i18n("<p><i>%1 % completed</i></p>") 470 mText.append(i18n("<p><i>%1 % completed</i></p>")
471 .arg(event->percentComplete())); 471 .arg(event->percentComplete()));
472 } 472 }
473 473
474 if (event->cancelled ()) { 474 if (event->cancelled ()) {
475 mText +="<font color=\"#B00000\">"; 475 mText +="<font color=\"#B00000\">";
476 addTag("i",i18n("This todo has been cancelled!")); 476 addTag("i",i18n("This todo has been cancelled!"));
477 mText.append("<br>"); 477 mText.append("<br>");
478 mText += "</font>"; 478 mText += "</font>";
479 mMailSubject += i18n("(cancelled)"); 479 mMailSubject += i18n("(cancelled)");
480 } 480 }
481 481
482 482
483 483
484 if (event->recurrence()->doesRecur()) { 484 if (event->doesRecur()) {
485 485
486 QString recurText = event->recurrence()->recurrenceText(); 486 QString recurText = event->recurrence()->recurrenceText();
487 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 487 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
488 488
489 } 489 }
490 if (event->hasStartDate()) { 490 if (event->hasStartDate()) {
491 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 491 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
492 } 492 }
493 if (event->hasDueDate()) { 493 if (event->hasDueDate()) {
494 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 494 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
495 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 495 mMailSubject += i18n(" - " )+event->dtDueStr( true );
496 } 496 }
497 if (!event->location().isEmpty()) { 497 if (!event->location().isEmpty()) {
498 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 498 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
499 mMailSubject += i18n(" at ") + event->location(); 499 mMailSubject += i18n(" at ") + event->location();
500 } 500 }
501 mText.append(i18n("<p><b>Priority:</b> %2</p>") 501 mText.append(i18n("<p><b>Priority:</b> %2</p>")
502 .arg(QString::number(event->priority()))); 502 .arg(QString::number(event->priority())));
503 503
504 if (event->isAlarmEnabled()) { 504 if (event->isAlarmEnabled()) {
505 Alarm *alarm =event->alarms().first() ; 505 Alarm *alarm =event->alarms().first() ;
506 QDateTime t = alarm->time(); 506 QDateTime t = alarm->time();
507 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 507 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
508 if ( wideScreen ) { 508 if ( wideScreen ) {
509 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 509 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
510 } else { 510 } else {
511 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 511 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
512 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 512 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
513 } 513 }
514 } 514 }
515 515
516 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 516 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
517 517
518 formatCategories(event); 518 formatCategories(event);
519 519
520 formatAttendees(event); 520 formatAttendees(event);
521 521
522 if ( KOPrefs::instance()->mEVshowCreated ) { 522 if ( KOPrefs::instance()->mEVshowCreated ) {
523 if(wideScreen ){ 523 if(wideScreen ){
524 524
525 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 525 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
526 526
527 } else { 527 } else {
528 addTag("p",i18n("<b>Created: ") +" </b>"); 528 addTag("p",i18n("<b>Created: ") +" </b>");
529 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 529 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
530 } 530 }
531 } 531 }
532 if ( KOPrefs::instance()->mEVshowChanged ) { 532 if ( KOPrefs::instance()->mEVshowChanged ) {
533 if(wideScreen ){ 533 if(wideScreen ){
534 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 534 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
535 535
536 } else { 536 } else {
537 addTag("p",i18n("<b>Last modified: ") +" </b>"); 537 addTag("p",i18n("<b>Last modified: ") +" </b>");
538 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 538 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
539 } 539 }
540 } 540 }
541 if ( event->relatedTo() ) { 541 if ( event->relatedTo() ) {
542 addTag("b",i18n("Parent todo:<br>")); 542 addTag("b",i18n("Parent todo:<br>"));
543 543
544 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary()); 544 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary());
545 545
546 mText += t_name; 546 mText += t_name;
547 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">"; 547 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">";
548 mText += deTag(event->relatedTo()->summary()); 548 mText += deTag(event->relatedTo()->summary());
549 mText += "</a><br>"; 549 mText += "</a><br>";
550 550
551 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>"); 551 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>");
552 } 552 }
553 QPtrList<Incidence> Relations = event->relations(); 553 QPtrList<Incidence> Relations = event->relations();
554 Incidence *to; 554 Incidence *to;
555 if ( Relations.first() ) 555 if ( Relations.first() )
556 addTag("b",i18n("Sub todos:<br>")); 556 addTag("b",i18n("Sub todos:<br>"));
557 for (to=Relations.first();to;to=Relations.next()) { 557 for (to=Relations.first();to;to=Relations.next()) {
558 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary()); 558 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary());
559 mText += t_name; 559 mText += t_name;
560 mText += "<a href=\"todo_uid:" + to->uid() + "\">"; 560 mText += "<a href=\"todo_uid:" + to->uid() + "\">";
561 mText += deTag(to->summary()); 561 mText += deTag(to->summary());
562 mText += "</a><br>"; 562 mText += "</a><br>";
563 563
564 } 564 }
565 565
566 if ( KOPrefs::instance()->mEVshowDetails ) { 566 if ( KOPrefs::instance()->mEVshowDetails ) {
567 if (!event->description().isEmpty()) { 567 if (!event->description().isEmpty()) {
568 addTag("p",i18n("<b>Details: </b>")); 568 addTag("p",i18n("<b>Details: </b>"));
569 addTag("p",deTag(event->description())); 569 addTag("p",deTag(event->description()));
570 } 570 }
571 } 571 }
572 setText(mText); 572 setText(mText);
573} 573}
574 574
575void KOEventViewer::formatCategories(Incidence *event) 575void KOEventViewer::formatCategories(Incidence *event)
576{ 576{
577 if (!event->categoriesStr().isEmpty()) { 577 if (!event->categoriesStr().isEmpty()) {
578 if (event->categories().count() == 1) { 578 if (event->categories().count() == 1) {
579 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace()); 579 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace());
580 } else { 580 } else {
581 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ; 581 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ;
582 } 582 }
583 } 583 }
584} 584}
585void KOEventViewer::formatAttendees(Incidence *event) 585void KOEventViewer::formatAttendees(Incidence *event)
586{ 586{
587 QPtrList<Attendee> attendees = event->attendees(); 587 QPtrList<Attendee> attendees = event->attendees();
588 if (attendees.count()) { 588 if (attendees.count()) {
589 589
590 590
591 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 591 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
592 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 592 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
593 addTag("h3",i18n("Organizer")); 593 addTag("h3",i18n("Organizer"));
594 mText.append("<ul><li>"); 594 mText.append("<ul><li>");
595#ifndef KORG_NOKABC 595#ifndef KORG_NOKABC
596 596
597#ifdef DESKTOP_VERSION 597#ifdef DESKTOP_VERSION
598 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 598 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
599 KABC::Addressee::List addressList; 599 KABC::Addressee::List addressList;
600 addressList = add_book->findByEmail(event->organizer()); 600 addressList = add_book->findByEmail(event->organizer());
601 KABC::Addressee o = addressList.first(); 601 KABC::Addressee o = addressList.first();
602 if (!o.isEmpty() && addressList.size()<2) { 602 if (!o.isEmpty() && addressList.size()<2) {
603 mText += "<a href=\"uid:" + o.uid() + "\">"; 603 mText += "<a href=\"uid:" + o.uid() + "\">";
604 mText += o.formattedName(); 604 mText += o.formattedName();
605 mText += "</a>\n"; 605 mText += "</a>\n";
606 } else { 606 } else {
607 mText.append(event->organizer()); 607 mText.append(event->organizer());
608 } 608 }
609#else //DESKTOP_VERSION 609#else //DESKTOP_VERSION
610 mText += "<a href=\"uid:organizer\">"; 610 mText += "<a href=\"uid:organizer\">";
611 mText += event->organizer(); 611 mText += event->organizer();
612 mText += "</a>\n"; 612 mText += "</a>\n";
613#endif //DESKTOP_VERSION 613#endif //DESKTOP_VERSION
614 614
615 615
616#else 616#else
617 mText.append(event->organizer()); 617 mText.append(event->organizer());
618#endif 618#endif
619 619
620 if (iconPath) { 620 if (iconPath) {
621 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 621 mText += " <a href=\"mailto:" + event->organizer() + "\">";
622 mText += "<IMG src=\"" + iconPath + "\">"; 622 mText += "<IMG src=\"" + iconPath + "\">";
623 mText += "</a>\n"; 623 mText += "</a>\n";
624 } 624 }
625 mText.append("</li></ul>"); 625 mText.append("</li></ul>");
626 626
627 addTag("h3",i18n("Attendees")); 627 addTag("h3",i18n("Attendees"));
628 Attendee *a; 628 Attendee *a;
629 mText.append("<ul>"); 629 mText.append("<ul>");
630 int a_count = 0; 630 int a_count = 0;
631 int a_count_nr = 0; 631 int a_count_nr = 0;
632 632
633 for(a=attendees.first();a;a=attendees.next()) { 633 for(a=attendees.first();a;a=attendees.next()) {
634#ifndef KORG_NOKABC 634#ifndef KORG_NOKABC
635#ifdef DESKTOP_VERSION 635#ifdef DESKTOP_VERSION
636 if (a->name().isEmpty()) { 636 if (a->name().isEmpty()) {
637 addressList = add_book->findByEmail(a->email()); 637 addressList = add_book->findByEmail(a->email());
638 KABC::Addressee o = addressList.first(); 638 KABC::Addressee o = addressList.first();
639 if (!o.isEmpty() && addressList.size()<2) { 639 if (!o.isEmpty() && addressList.size()<2) {
640 mText += "<a href=\"uid:" + o.uid() + "\">"; 640 mText += "<a href=\"uid:" + o.uid() + "\">";
641 mText += o.formattedName(); 641 mText += o.formattedName();
642 mText += "</a>\n"; 642 mText += "</a>\n";
643 } else { 643 } else {
644 mText += "<li>"; 644 mText += "<li>";
645 mText.append(a->email()); 645 mText.append(a->email());
646 mText += "\n"; 646 mText += "\n";
647 } 647 }
648 } else { 648 } else {
649 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 649 mText += "<li><a href=\"uid:" + a->uid() + "\">";
650 if (!a->name().isEmpty()) mText += a->name(); 650 if (!a->name().isEmpty()) mText += a->name();
651 else mText += a->email(); 651 else mText += a->email();
652 mText += "</a>\n"; 652 mText += "</a>\n";
653 } 653 }
654#else //DESKTOP_VERSION 654#else //DESKTOP_VERSION
655 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 655 mText += "<li><a href=\"uid:" + a->uid() + "\">";
656 if (!a->name().isEmpty()) mText += a->name(); 656 if (!a->name().isEmpty()) mText += a->name();
657 else mText += a->email(); 657 else mText += a->email();
658 mText += "</a>\n"; 658 mText += "</a>\n";
659#endif //DESKTOP_VERSION 659#endif //DESKTOP_VERSION
660#else 660#else
661 //qDebug("nokabc "); 661 //qDebug("nokabc ");
662 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 662 mText += "<li><a href=\"uid:" + a->uid() + "\">";
663 if (!a->name().isEmpty()) mText += a->name(); 663 if (!a->name().isEmpty()) mText += a->name();
664 else mText += a->email(); 664 else mText += a->email();
665 mText += "</a>\n"; 665 mText += "</a>\n";
666#endif 666#endif
667 667
668 668
669 if (!a->email().isEmpty()) { 669 if (!a->email().isEmpty()) {
670 if (iconPath) { 670 if (iconPath) {
671 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 671 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
672 if ( a->RSVP() ) { 672 if ( a->RSVP() ) {
673 ++a_count_nr; 673 ++a_count_nr;
674 mText += "<IMG src=\"" + iconPath + "\">"; 674 mText += "<IMG src=\"" + iconPath + "\">";
675 } 675 }
676 else { 676 else {
677 ++a_count; 677 ++a_count;
678 mText += "<IMG src=\"" + NOiconPath + "\">"; 678 mText += "<IMG src=\"" + NOiconPath + "\">";
679 } 679 }
680 mText += "</a>\n"; 680 mText += "</a>\n";
681 } 681 }
682 } 682 }
683 if (a->status() != Attendee::NeedsAction ) 683 if (a->status() != Attendee::NeedsAction )
684 mText +="[" + a->statusStr() + "] "; 684 mText +="[" + a->statusStr() + "] ";
685 if (a->role() == Attendee::Chair ) 685 if (a->role() == Attendee::Chair )
686 mText +="(" + a->roleStr().left(1) + ".)"; 686 mText +="(" + a->roleStr().left(1) + ".)";
687 } 687 }
688 mText.append("</li></ul>"); 688 mText.append("</li></ul>");
689 if ( (a_count+a_count_nr) > 1 ) { 689 if ( (a_count+a_count_nr) > 1 ) {
690 mText += "<a href=\"mailto:ALL\">"; 690 mText += "<a href=\"mailto:ALL\">";
691 mText += i18n( "Mail to all" ); 691 mText += i18n( "Mail to all" );
692 mText += "</a> ( "; 692 mText += "</a> ( ";
693 mText += "<IMG src=\"" + iconPath + "\">"; 693 mText += "<IMG src=\"" + iconPath + "\">";
694 mText += i18n( " and " ); 694 mText += i18n( " and " );
695 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 695 mText += "<IMG src=\"" + NOiconPath + "\"> )";
696 mText += "<br>\n"; 696 mText += "<br>\n";
697 697
698 698
699 } 699 }
700 if ( a_count_nr > 1 ) { 700 if ( a_count_nr > 1 ) {
701 mText += "<a href=\"mailto:RSVP\">"; 701 mText += "<a href=\"mailto:RSVP\">";
702 mText += i18n( "Mail to selected" ); 702 mText += i18n( "Mail to selected" );
703 mText += "</a> ( "; 703 mText += "</a> ( ";
704 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 704 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
705 mText += "<br>\n"; 705 mText += "<br>\n";
706 } 706 }
707 } 707 }
708 708
709} 709}
710void KOEventViewer::appendJournal(Journal *jour, int mode ) 710void KOEventViewer::appendJournal(Journal *jour, int mode )
711{ 711{
712 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 712 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
713 QString text_d = i18n("Journal from: "); 713 QString text_d = i18n("Journal from: ");
714 if ( !jour->summary().isEmpty() ) 714 if ( !jour->summary().isEmpty() )
715 text_d = jour->summary(); 715 text_d = jour->summary();
716 if (mode == 0 ) { 716 if (mode == 0 ) {
717 addTag("h2", text_d ); 717 addTag("h2", text_d );
718 } 718 }
719 else { 719 else {
720 if ( mode == 1 ) { 720 if ( mode == 1 ) {
721 addTag("h3",i18n( "Local: " ) + text_d ); 721 addTag("h3",i18n( "Local: " ) + text_d );
722 } else { 722 } else {
723 addTag("h3",i18n( "Remote: " ) + text_d ); 723 addTag("h3",i18n( "Remote: " ) + text_d );
724 } 724 }
725 } 725 }
726 topLevelWidget()->setCaption(i18n("Journal viewer")); 726 topLevelWidget()->setCaption(i18n("Journal viewer"));
727 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 727 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
728 formatReadOnly(jour); 728 formatReadOnly(jour);
729 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 729 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
730 730
731 if (!jour->description().isEmpty()) { 731 if (!jour->description().isEmpty()) {
732 addTag("p",deTag(jour->description())); 732 addTag("p",deTag(jour->description()));
733 } 733 }
734 setText(mText); 734 setText(mText);
735} 735}
736 736
737void KOEventViewer::formatReadOnly(Incidence *event) 737void KOEventViewer::formatReadOnly(Incidence *event)
738{ 738{
739 int id = event->calID(); 739 int id = event->calID();
740 if ( id > 1 ) { 740 if ( id > 1 ) {
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index d25f671..e7a5e0e 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -1,443 +1,443 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qlistview.h> 25#include <qlistview.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qpopupmenu.h> 28#include <qpopupmenu.h>
29#include <qprogressbar.h> 29#include <qprogressbar.h>
30#include <qfileinfo.h> 30#include <qfileinfo.h>
31#include <qmessagebox.h> 31#include <qmessagebox.h>
32#include <qdialog.h> 32#include <qdialog.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34#include <qdir.h> 34#include <qdir.h>
35#include <qwhatsthis.h> 35#include <qwhatsthis.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qpainter.h> 37#include <qpainter.h>
38#include <qpaintdevicemetrics.h> 38#include <qpaintdevicemetrics.h>
39 39
40#include <klocale.h> 40#include <klocale.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <kiconloader.h> 42#include <kiconloader.h>
43#include <kglobal.h> 43#include <kglobal.h>
44 44
45#include <libkdepim/kpimglobalprefs.h> 45#include <libkdepim/kpimglobalprefs.h>
46#include <libkcal/calendar.h> 46#include <libkcal/calendar.h>
47#include <libkcal/calendarlocal.h> 47#include <libkcal/calendarlocal.h>
48#include <libkcal/icalformat.h> 48#include <libkcal/icalformat.h>
49#include <libkcal/vcalformat.h> 49#include <libkcal/vcalformat.h>
50#include <libkcal/recurrence.h> 50#include <libkcal/recurrence.h>
51#include <libkcal/filestorage.h> 51#include <libkcal/filestorage.h>
52#include <libkdepim/categoryselectdialog.h> 52#include <libkdepim/categoryselectdialog.h>
53#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
54#ifndef DESKTOP_VERSION 54#ifndef DESKTOP_VERSION
55#include <qpe/qpeapplication.h> 55#include <qpe/qpeapplication.h>
56#else 56#else
57#include <qapplication.h> 57#include <qapplication.h>
58#endif 58#endif
59 59
60#ifndef KORG_NOPRINTER 60#ifndef KORG_NOPRINTER
61#include "calprinter.h" 61#include "calprinter.h"
62#endif 62#endif
63#include "koglobals.h" 63#include "koglobals.h"
64#include "koprefs.h" 64#include "koprefs.h"
65#include "kfiledialog.h" 65#include "kfiledialog.h"
66 66
67#include "kolistview.h" 67#include "kolistview.h"
68#include "koeventviewer.h" 68#include "koeventviewer.h"
69 69
70extern QPixmap* sgListViewCompletedPix[6]; 70extern QPixmap* sgListViewCompletedPix[6];
71extern QPixmap* sgListViewJournalPix; 71extern QPixmap* sgListViewJournalPix;
72 72
73class KOListViewWhatsThis :public QWhatsThis 73class KOListViewWhatsThis :public QWhatsThis
74{ 74{
75public: 75public:
76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
77 77
78protected: 78protected:
79 virtual QString text( const QPoint& p) 79 virtual QString text( const QPoint& p)
80 { 80 {
81 return _view->getWhatsThisText(p) ; 81 return _view->getWhatsThisText(p) ;
82 } 82 }
83private: 83private:
84 QWidget* _wid; 84 QWidget* _wid;
85 KOListView * _view; 85 KOListView * _view;
86}; 86};
87 87
88 88
89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
90{ 90{
91 mItem = item; 91 mItem = item;
92 mDate = date; 92 mDate = date;
93} 93}
94 94
95ListItemVisitor::~ListItemVisitor() 95ListItemVisitor::~ListItemVisitor()
96{ 96{
97} 97}
98 98
99bool ListItemVisitor::visit(Event *e) 99bool ListItemVisitor::visit(Event *e)
100{ 100{
101 bool ok = false; 101 bool ok = false;
102 QString start, end; 102 QString start, end;
103 QDate ds, de; 103 QDate ds, de;
104 if ( e->doesRecur() ) { 104 if ( e->doesRecur() ) {
105 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); 105 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date();
106 if ( ok ) { 106 if ( ok ) {
107 int days = e->dtStart().date().daysTo(e->dtEnd().date() ); 107 int days = e->dtStart().date().daysTo(e->dtEnd().date() );
108 start = KGlobal::locale()->formatDate(ds,true); 108 start = KGlobal::locale()->formatDate(ds,true);
109 de = ds.addDays( days); 109 de = ds.addDays( days);
110 end = KGlobal::locale()->formatDate(de,true); 110 end = KGlobal::locale()->formatDate(de,true);
111 } 111 }
112 112
113 } 113 }
114 if ( ! ok ) { 114 if ( ! ok ) {
115 start =e->dtStartDateStr(); 115 start =e->dtStartDateStr();
116 end = e->dtEndDateStr(); 116 end = e->dtEndDateStr();
117 ds = e->dtStart().date(); 117 ds = e->dtStart().date();
118 de = e->dtEnd().date(); 118 de = e->dtEnd().date();
119 } 119 }
120 mItem->setText(0,e->summary()); 120 mItem->setText(0,e->summary());
121 mItem->setText(1,start); 121 mItem->setText(1,start);
122 if ( e->doesFloat() ) 122 if ( e->doesFloat() )
123 mItem->setText(2,"---"); 123 mItem->setText(2,"---");
124 else 124 else
125 mItem->setText(2,e->dtStartTimeStr()); 125 mItem->setText(2,e->dtStartTimeStr());
126 mItem->setText(3,end); 126 mItem->setText(3,end);
127 if ( e->doesFloat() ) 127 if ( e->doesFloat() )
128 mItem->setText(4,"---"); 128 mItem->setText(4,"---");
129 else 129 else
130 mItem->setText(4,e->dtEndTimeStr()); 130 mItem->setText(4,e->dtEndTimeStr());
131 if ( e->isAlarmEnabled() ) { 131 if ( e->isAlarmEnabled() ) {
132 mItem->setText(5,e->alarms().first()->offsetText() ); 132 mItem->setText(5,e->alarms().first()->offsetText() );
133 } else { 133 } else {
134 mItem->setText(5, i18n("No")); 134 mItem->setText(5, i18n("No"));
135 } 135 }
136 mItem->setText(6, e->recurrence()->recurrenceText()); 136 mItem->setText(6, e->recurrenceText());
137 if( ! e->doesRecur() ) 137 if( ! e->doesRecur() )
138 mItem->setSortKey( 6, "-" ); 138 mItem->setSortKey( 6, "-" );
139 mItem->setText(7,"---"); 139 mItem->setText(7,"---");
140 mItem->setText(8,"---"); 140 mItem->setText(8,"---");
141 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); 141 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No"));
142 mItem->setText(10,e->categoriesStr()); 142 mItem->setText(10,e->categoriesStr());
143 mItem->setText(11, KOPrefs::instance()->calName( e->calID() )); 143 mItem->setText(11, KOPrefs::instance()->calName( e->calID() ));
144 mItem->setText(12, KGlobal::locale()->formatDateTime( e->lastModified(), true, true )); 144 mItem->setText(12, KGlobal::locale()->formatDateTime( e->lastModified(), true, true ));
145 145
146 QString key; 146 QString key;
147 QDate d = e->lastModified().date(); 147 QDate d = e->lastModified().date();
148 QTime t = e->lastModified().time(); 148 QTime t = e->lastModified().time();
149 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute(),t.second() ); 149 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute(),t.second() );
150 mItem->setSortKey(12,key); 150 mItem->setSortKey(12,key);
151 t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); 151 t = e->doesFloat() ? QTime(0,0) : e->dtStart().time();
152 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); 152 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute());
153 mItem->setSortKey(1,key); 153 mItem->setSortKey(1,key);
154 154
155 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); 155 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time();
156 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); 156 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute());
157 mItem->setSortKey(3,key); 157 mItem->setSortKey(3,key);
158 return true; 158 return true;
159} 159}
160 160
161bool ListItemVisitor::visit(Todo *t) 161bool ListItemVisitor::visit(Todo *t)
162{ 162{
163 mItem->setText(0,t->summary()); 163 mItem->setText(0,t->summary());
164 if ( t->isCompleted() ) { 164 if ( t->isCompleted() ) {
165 mItem->setSortKey(0,"99"+ t->summary().left(10)); 165 mItem->setSortKey(0,"99"+ t->summary().left(10));
166 } else 166 } else
167 mItem->setSortKey(0,QString::number( t->percentComplete()+1 )+ t->summary().left(10)); 167 mItem->setSortKey(0,QString::number( t->percentComplete()+1 )+ t->summary().left(10));
168 mItem->setPixmap( 0, *(sgListViewCompletedPix[t->percentComplete()/20])); 168 mItem->setPixmap( 0, *(sgListViewCompletedPix[t->percentComplete()/20]));
169 if (t->hasStartDate()) { 169 if (t->hasStartDate()) {
170 mItem->setText(1,t->dtStartDateStr()); 170 mItem->setText(1,t->dtStartDateStr());
171 if (t->doesFloat()) { 171 if (t->doesFloat()) {
172 mItem->setText(2,"---"); 172 mItem->setText(2,"---");
173 } else { 173 } else {
174 mItem->setText(2,t->dtStartTimeStr()); 174 mItem->setText(2,t->dtStartTimeStr());
175 } 175 }
176 } else { 176 } else {
177 mItem->setText(1,"---"); 177 mItem->setText(1,"---");
178 mItem->setText(2,"---"); 178 mItem->setText(2,"---");
179 } 179 }
180 mItem->setText(3,"---"); 180 mItem->setText(3,"---");
181 mItem->setText(4,"---"); 181 mItem->setText(4,"---");
182 if ( t->isAlarmEnabled() ) { 182 if ( t->isAlarmEnabled() ) {
183 mItem->setText(5,t->alarms().first()->offsetText() ); 183 mItem->setText(5,t->alarms().first()->offsetText() );
184 } else { 184 } else {
185 mItem->setText(5, i18n("No")); 185 mItem->setText(5, i18n("No"));
186 } 186 }
187 mItem->setText(6, t->recurrence()->recurrenceText()); 187 mItem->setText(6, t->recurrenceText());
188 if( ! t->doesRecur() ) 188 if( ! t->doesRecur() )
189 mItem->setSortKey( 6, "-" ); 189 mItem->setSortKey( 6, "-" );
190 if (t->hasDueDate()) { 190 if (t->hasDueDate()) {
191 mItem->setText(7,t->dtDueDateStr()); 191 mItem->setText(7,t->dtDueDateStr());
192 if (t->doesFloat()) { 192 if (t->doesFloat()) {
193 mItem->setText(8,"---"); 193 mItem->setText(8,"---");
194 } else { 194 } else {
195 mItem->setText(8,t->dtDueTimeStr()); 195 mItem->setText(8,t->dtDueTimeStr());
196 } 196 }
197 } else { 197 } else {
198 mItem->setText(7,"---"); 198 mItem->setText(7,"---");
199 mItem->setText(8,"---"); 199 mItem->setText(8,"---");
200 } 200 }
201 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); 201 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No"));
202 mItem->setText(10,t->categoriesStr()); 202 mItem->setText(10,t->categoriesStr());
203 mItem->setText(11, KOPrefs::instance()->calName( t->calID() )); 203 mItem->setText(11, KOPrefs::instance()->calName( t->calID() ));
204 mItem->setText(12, KGlobal::locale()->formatDateTime( t->lastModified(), true, true )); 204 mItem->setText(12, KGlobal::locale()->formatDateTime( t->lastModified(), true, true ));
205 QString key; 205 QString key;
206 QDate d = t->lastModified().date(); 206 QDate d = t->lastModified().date();
207 QTime tm = t->lastModified().time(); 207 QTime tm = t->lastModified().time();
208 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute(),tm.second() ); 208 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute(),tm.second() );
209 mItem->setSortKey(12,key); 209 mItem->setSortKey(12,key);
210 if (t->hasDueDate()) { 210 if (t->hasDueDate()) {
211 d = t->dtDue().date(); 211 d = t->dtDue().date();
212 tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); 212 tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time();
213 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 213 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
214 mItem->setSortKey(7,key); 214 mItem->setSortKey(7,key);
215 } 215 }
216 if ( t->hasStartDate() ) { 216 if ( t->hasStartDate() ) {
217 d = t->dtStart().date(); 217 d = t->dtStart().date();
218 tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); 218 tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time();
219 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 219 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
220 mItem->setSortKey(1,key); 220 mItem->setSortKey(1,key);
221 } 221 }
222 return true; 222 return true;
223} 223}
224 224
225bool ListItemVisitor::visit(Journal * j) 225bool ListItemVisitor::visit(Journal * j)
226{ 226{
227 227
228 QString des; 228 QString des;
229 mItem->setPixmap( 0, *sgListViewJournalPix); 229 mItem->setPixmap( 0, *sgListViewJournalPix);
230 if ( !j->summary().isEmpty() ) { 230 if ( !j->summary().isEmpty() ) {
231 des = j->summary(); 231 des = j->summary();
232 } else { 232 } else {
233 des = j->description().left(30); 233 des = j->description().left(30);
234 des = des.simplifyWhiteSpace (); 234 des = des.simplifyWhiteSpace ();
235 des.replace (QRegExp ("\\n"),"" ); 235 des.replace (QRegExp ("\\n"),"" );
236 des.replace (QRegExp ("\\r"),"" ); 236 des.replace (QRegExp ("\\r"),"" );
237 } 237 }
238 mItem->setText(0,des.left(25)); 238 mItem->setText(0,des.left(25));
239 mItem->setSortKey(0,"0"+ des.left(25)); 239 mItem->setSortKey(0,"0"+ des.left(25));
240 mItem->setText(1,j->dtStartDateStr()); 240 mItem->setText(1,j->dtStartDateStr());
241 mItem->setText(2,"---"); 241 mItem->setText(2,"---");
242 mItem->setText(3,"---"); 242 mItem->setText(3,"---");
243 mItem->setText(4,"---"); 243 mItem->setText(4,"---");
244 mItem->setText(5,"---"); 244 mItem->setText(5,"---");
245 mItem->setText(6,"---"); 245 mItem->setText(6,"---");
246 mItem->setText(7,j->dtStartDateStr()); 246 mItem->setText(7,j->dtStartDateStr());
247 mItem->setText(8,"---"); 247 mItem->setText(8,"---");
248 mItem->setText(9,"---"); 248 mItem->setText(9,"---");
249 mItem->setText(10,j->categoriesStr()); 249 mItem->setText(10,j->categoriesStr());
250 mItem->setText(11, KOPrefs::instance()->calName( j->calID() )); 250 mItem->setText(11, KOPrefs::instance()->calName( j->calID() ));
251 mItem->setText(12, KGlobal::locale()->formatDateTime( j->lastModified(), true, true )); 251 mItem->setText(12, KGlobal::locale()->formatDateTime( j->lastModified(), true, true ));
252 252
253 QString key; 253 QString key;
254 QDate d = j->lastModified().date(); 254 QDate d = j->lastModified().date();
255 QTime tm = j->lastModified().time(); 255 QTime tm = j->lastModified().time();
256 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute(),tm.second() ); 256 key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute(),tm.second() );
257 mItem->setSortKey(12,key); 257 mItem->setSortKey(12,key);
258 d = j->dtStart().date(); 258 d = j->dtStart().date();
259 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 259 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
260 mItem->setSortKey(1,key); 260 mItem->setSortKey(1,key);
261 mItem->setSortKey(7,key); 261 mItem->setSortKey(7,key);
262 262
263 return true; 263 return true;
264} 264}
265 265
266KOListView::KOListView(Calendar *calendar, QWidget *parent, 266KOListView::KOListView(Calendar *calendar, QWidget *parent,
267 const char *name) 267 const char *name)
268 : KOEventView(calendar, parent, name) 268 : KOEventView(calendar, parent, name)
269{ 269{
270 270
271 mActiveItem = 0; 271 mActiveItem = 0;
272 mForceShowCompletedTodos = false; 272 mForceShowCompletedTodos = false;
273 mListView = new KOListViewListView(this); 273 mListView = new KOListViewListView(this);
274 mListView->addColumn(i18n("Summary")); 274 mListView->addColumn(i18n("Summary"));
275 mListView->addColumn(i18n("Start Date")); 275 mListView->addColumn(i18n("Start Date"));
276 mListView->addColumn(i18n("Start Time")); 276 mListView->addColumn(i18n("Start Time"));
277 mListView->addColumn(i18n("End Date")); 277 mListView->addColumn(i18n("End Date"));
278 mListView->addColumn(i18n("End Time")); 278 mListView->addColumn(i18n("End Time"));
279 mListView->addColumn(i18n("Alarm")); // alarm set? 279 mListView->addColumn(i18n("Alarm")); // alarm set?
280 mListView->addColumn(i18n("Recurs")); // recurs? 280 mListView->addColumn(i18n("Recurs")); // recurs?
281 mListView->addColumn(i18n("Due Date")); 281 mListView->addColumn(i18n("Due Date"));
282 mListView->addColumn(i18n("Due Time")); 282 mListView->addColumn(i18n("Due Time"));
283 mListView->addColumn(i18n("Cancelled")); 283 mListView->addColumn(i18n("Cancelled"));
284 mListView->addColumn(i18n("Categories")); 284 mListView->addColumn(i18n("Categories"));
285 mListView->addColumn(i18n("Calendar")); 285 mListView->addColumn(i18n("Calendar"));
286 mListView->addColumn(i18n("Last Modified")); 286 mListView->addColumn(i18n("Last Modified"));
287 287
288 mListView->setColumnAlignment(0,AlignLeft); 288 mListView->setColumnAlignment(0,AlignLeft);
289 mListView->setColumnAlignment(1,AlignLeft); 289 mListView->setColumnAlignment(1,AlignLeft);
290 mListView->setColumnAlignment(2,AlignHCenter); 290 mListView->setColumnAlignment(2,AlignHCenter);
291 mListView->setColumnAlignment(3,AlignLeft); 291 mListView->setColumnAlignment(3,AlignLeft);
292 mListView->setColumnAlignment(4,AlignHCenter); 292 mListView->setColumnAlignment(4,AlignHCenter);
293 mListView->setColumnAlignment(5,AlignLeft); 293 mListView->setColumnAlignment(5,AlignLeft);
294 mListView->setColumnAlignment(6,AlignLeft); 294 mListView->setColumnAlignment(6,AlignLeft);
295 mListView->setColumnAlignment(7,AlignLeft); 295 mListView->setColumnAlignment(7,AlignLeft);
296 mListView->setColumnAlignment(8,AlignLeft); 296 mListView->setColumnAlignment(8,AlignLeft);
297 mListView->setColumnAlignment(9,AlignLeft); 297 mListView->setColumnAlignment(9,AlignLeft);
298 mListView->setColumnAlignment(10,AlignLeft); 298 mListView->setColumnAlignment(10,AlignLeft);
299 mListView->setColumnAlignment(11,AlignLeft); 299 mListView->setColumnAlignment(11,AlignLeft);
300 mListView->setColumnAlignment(12,AlignLeft); 300 mListView->setColumnAlignment(12,AlignLeft);
301 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); 301 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this);
302 302
303 int iii = 0; 303 int iii = 0;
304 for ( iii = 0; iii< 13 ; ++iii ) 304 for ( iii = 0; iii< 13 ; ++iii )
305 mListView->setColumnWidthMode( iii, QListView::Manual ); 305 mListView->setColumnWidthMode( iii, QListView::Manual );
306 306
307 QBoxLayout *layoutTop = new QVBoxLayout(this); 307 QBoxLayout *layoutTop = new QVBoxLayout(this);
308 layoutTop->addWidget(mListView); 308 layoutTop->addWidget(mListView);
309 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 309 mListView->setFont ( KOPrefs::instance()->mListViewFont );
310 mPopupMenu = eventPopup(); 310 mPopupMenu = eventPopup();
311 QPopupMenu* selPopup = new QPopupMenu ( this ); 311 QPopupMenu* selPopup = new QPopupMenu ( this );
312 mPopupMenu->insertSeparator(); 312 mPopupMenu->insertSeparator();
313 313
314 selPopup->insertItem(i18n("All"),this, 314 selPopup->insertItem(i18n("All"),this,
315 SLOT(allSelection())); 315 SLOT(allSelection()));
316 selPopup->insertItem(i18n("None"),this, 316 selPopup->insertItem(i18n("None"),this,
317 SLOT(clearSelection())); 317 SLOT(clearSelection()));
318 selPopup->insertItem(i18n("Delete selected..."),this, 318 selPopup->insertItem(i18n("Delete selected..."),this,
319 SLOT(deleteAll())); 319 SLOT(deleteAll()));
320 mPopupMenu->insertItem(i18n("Selection"), selPopup ); 320 mPopupMenu->insertItem(i18n("Selection"), selPopup );
321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
322 i18n("Hide all selected"),this, 322 i18n("Hide all selected"),this,
323 SLOT(hideAll()),true); 323 SLOT(hideAll()),true);
324 324
325 selPopup->insertSeparator(); 325 selPopup->insertSeparator();
326 QPopupMenu * exportPO = new QPopupMenu ( this ); 326 QPopupMenu * exportPO = new QPopupMenu ( this );
327 selPopup->insertItem( i18n("Export"), exportPO ); 327 selPopup->insertItem( i18n("Export"), exportPO );
328#ifdef DESKTOP_VERSION 328#ifdef DESKTOP_VERSION
329 mPopupMenu->insertSeparator(); 329 mPopupMenu->insertSeparator();
330 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 330 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
331 i18n("Print complete list..."),this, 331 i18n("Print complete list..."),this,
332 SLOT(printList()),true); 332 SLOT(printList()),true);
333#endif 333#endif
334 mCalPopup = new QPopupMenu ( this ); 334 mCalPopup = new QPopupMenu ( this );
335 selPopup->insertItem( i18n("Set Calendar"), mCalPopup ); 335 selPopup->insertItem( i18n("Set Calendar"), mCalPopup );
336 336
337 selPopup->insertItem(i18n("Set categories")+"...",this, 337 selPopup->insertItem(i18n("Set categories")+"...",this,
338 SLOT(setCat()) ); 338 SLOT(setCat()) );
339 selPopup->insertItem( i18n("Set alarm..."),this, 339 selPopup->insertItem( i18n("Set alarm..."),this,
340 SLOT(setAlarm())); 340 SLOT(setAlarm()));
341#if 0 341#if 0
342 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 342 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
343 i18n("Set categories")+"...",this, 343 i18n("Set categories")+"...",this,
344 SLOT(setCat()),true); 344 SLOT(setCat()),true);
345 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 345 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
346 i18n("Set alarm..."),this, 346 i18n("Set alarm..."),this,
347 SLOT(setAlarm()),true); 347 SLOT(setAlarm()),true);
348#endif 348#endif
349 QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this, 349 QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this,
350 SLOT( populateCalPopup() )); 350 SLOT( populateCalPopup() ));
351 QObject::connect(mCalPopup,SIGNAL(activated( int )),this, 351 QObject::connect(mCalPopup,SIGNAL(activated( int )),this,
352 SLOT( setCalendar( int ) )); 352 SLOT( setCalendar( int ) ));
353 QObject::connect(mPopupMenu,SIGNAL(categoryChanged( Incidence * )),this, 353 QObject::connect(mPopupMenu,SIGNAL(categoryChanged( Incidence * )),this,
354 SLOT( catChanged( Incidence * ) )); 354 SLOT( catChanged( Incidence * ) ));
355 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 355 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
356 SLOT(saveToFile())); 356 SLOT(saveToFile()));
357 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 357 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
358 SLOT(saveToFileVCS())); 358 SLOT(saveToFileVCS()));
359 exportPO->insertItem( i18n("Journal/Details..."),this, 359 exportPO->insertItem( i18n("Journal/Details..."),this,
360 SLOT(saveDescriptionToFile())); 360 SLOT(saveDescriptionToFile()));
361 // mPopupMenu->insertSeparator(); 361 // mPopupMenu->insertSeparator();
362 // mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 362 // mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
363 // i18n("Add Categ. to selected..."),this, 363 // i18n("Add Categ. to selected..."),this,
364 // SLOT(addCat()),true); 364 // SLOT(addCat()),true);
365 //mPopupMenu->insertSeparator(); 365 //mPopupMenu->insertSeparator();
366#ifndef DESKTOP_VERSION 366#ifndef DESKTOP_VERSION
367 selPopup->insertSeparator(); 367 selPopup->insertSeparator();
368 selPopup->insertItem( i18n("Beam via IR..."),this, 368 selPopup->insertItem( i18n("Beam via IR..."),this,
369 SLOT(beamSelected())); 369 SLOT(beamSelected()));
370#if 0 370#if 0
371 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 371 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
372 i18n("Beam via IR"),this, 372 i18n("Beam via IR"),this,
373 SLOT(beamSelected()),true); 373 SLOT(beamSelected()),true);
374#endif 374#endif
375#endif 375#endif
376 /* 376 /*
377 mPopupMenu = new QPopupMenu; 377 mPopupMenu = new QPopupMenu;
378 mPopupMenu->insertItem(i18n("Edit Event"), this, 378 mPopupMenu->insertItem(i18n("Edit Event"), this,
379 SLOT (editEvent())); 379 SLOT (editEvent()));
380 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 380 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
381 SLOT (deleteEvent())); 381 SLOT (deleteEvent()));
382 mPopupMenu->insertSeparator(); 382 mPopupMenu->insertSeparator();
383 mPopupMenu->insertItem(i18n("Show Dates"), this, 383 mPopupMenu->insertItem(i18n("Show Dates"), this,
384 SLOT(showDates())); 384 SLOT(showDates()));
385 mPopupMenu->insertItem(i18n("Hide Dates"), this, 385 mPopupMenu->insertItem(i18n("Hide Dates"), this,
386 SLOT(hideDates())); 386 SLOT(hideDates()));
387 */ 387 */
388 QObject::connect(mListView,SIGNAL( newEvent()), 388 QObject::connect(mListView,SIGNAL( newEvent()),
389 this,SIGNAL(signalNewEvent())); 389 this,SIGNAL(signalNewEvent()));
390 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 390 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
391 this,SLOT(defaultItemAction(QListViewItem *))); 391 this,SLOT(defaultItemAction(QListViewItem *)));
392 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, 392 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *,
393 const QPoint &, int )), 393 const QPoint &, int )),
394 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 394 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
395 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 395 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
396 SLOT(processSelectionChange(QListViewItem *))); 396 SLOT(processSelectionChange(QListViewItem *)));
397 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 397 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
398 SIGNAL(showIncidenceSignal(Incidence *)) ); 398 SIGNAL(showIncidenceSignal(Incidence *)) );
399 399
400 readSettings(KOGlobals::config(),"KOListView Layout"); 400 readSettings(KOGlobals::config(),"KOListView Layout");
401} 401}
402 402
403KOListView::~KOListView() 403KOListView::~KOListView()
404{ 404{
405 delete mPopupMenu; 405 delete mPopupMenu;
406#if QT_VERSION >= 0x030000 406#if QT_VERSION >= 0x030000
407 407
408#else 408#else
409 delete mKOListViewWhatsThis; 409 delete mKOListViewWhatsThis;
410#endif 410#endif
411} 411}
412 412
413void KOListView::catChanged( Incidence* inc) 413void KOListView::catChanged( Incidence* inc)
414{ 414{
415 KOListViewItem* item = getItemForEvent(inc); 415 KOListViewItem* item = getItemForEvent(inc);
416 if (item) { 416 if (item) {
417 ListItemVisitor v(item, mStartDate ); 417 ListItemVisitor v(item, mStartDate );
418 inc->accept(v); 418 inc->accept(v);
419 } 419 }
420} 420}
421QString KOListView::getWhatsThisText(QPoint p) 421QString KOListView::getWhatsThisText(QPoint p)
422{ 422{
423 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 423 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
424 if ( item ) 424 if ( item )
425 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 425 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
426 KOPrefs::instance()->mWTshowDetails, 426 KOPrefs::instance()->mWTshowDetails,
427 KOPrefs::instance()->mWTshowCreated, 427 KOPrefs::instance()->mWTshowCreated,
428 KOPrefs::instance()->mWTshowChanged); 428 KOPrefs::instance()->mWTshowChanged);
429 return i18n("That is the list view" ); 429 return i18n("That is the list view" );
430 430
431} 431}
432 432
433void KOListView::setCalendar( int c ) 433void KOListView::setCalendar( int c )
434{ 434{
435 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 435 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
436 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ), 436 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ),
437 i18n("Continue"), i18n("Cancel"), 0, 437 i18n("Continue"), i18n("Cancel"), 0,
438 0, 1 ); 438 0, 1 );
439 if ( result != 0 ) { 439 if ( result != 0 ) {
440 return; 440 return;
441 } 441 }
442 442
443 QPtrList<Incidence> delSel = getSelectedIncidences() ; 443 QPtrList<Incidence> delSel = getSelectedIncidences() ;
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 498d9b0..eea9a4d 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -534,830 +534,832 @@ MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
534 534
535 /* 535 /*
536 connect( this, SIGNAL( clicked( QListBoxItem * ) ), 536 connect( this, SIGNAL( clicked( QListBoxItem * ) ),
537 SLOT( selection( QListBoxItem * ) ) ); 537 SLOT( selection( QListBoxItem * ) ) );
538 */ 538 */
539} 539}
540#ifdef DESKTOP_VERSION 540#ifdef DESKTOP_VERSION
541QToolTipGroup *MonthViewCell::toolTipGroup() 541QToolTipGroup *MonthViewCell::toolTipGroup()
542{ 542{
543 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 543 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
544 return mToolTipGroup; 544 return mToolTipGroup;
545} 545}
546#endif 546#endif
547 547
548void MonthViewCell::setDate( const QDate &date ) 548void MonthViewCell::setDate( const QDate &date )
549{ 549{
550 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 550 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
551 mDate = date; 551 mDate = date;
552 552
553 553
554 554
555 //resizeEvent( 0 ); 555 //resizeEvent( 0 );
556} 556}
557 557
558QDate MonthViewCell::date() const 558QDate MonthViewCell::date() const
559{ 559{
560 return mDate; 560 return mDate;
561} 561}
562 562
563void MonthViewCell::setPrimary( bool primary ) 563void MonthViewCell::setPrimary( bool primary )
564{ 564{
565 mPrimary = primary; 565 mPrimary = primary;
566 //setMyPalette(); 566 //setMyPalette();
567} 567}
568void MonthViewCell::setMyPalette() 568void MonthViewCell::setMyPalette()
569{ 569{
570 570
571 if ( mHoliday) { 571 if ( mHoliday) {
572 if ( currentPalette == 1 ) return; 572 if ( currentPalette == 1 ) return;
573 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); 573 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) ));
574 setPalette( mHolidayPalette ); 574 setPalette( mHolidayPalette );
575 //mLabel->setPalette( mHolidayPalette ); 575 //mLabel->setPalette( mHolidayPalette );
576 currentPalette = 1; 576 currentPalette = 1;
577 577
578 } else { 578 } else {
579 if ( mPrimary ) { 579 if ( mPrimary ) {
580 if ( currentPalette == 2 ) return; 580 if ( currentPalette == 2 ) return;
581 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 581 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
582 //mLabel->setPalette( mPrimaryPalette ); 582 //mLabel->setPalette( mPrimaryPalette );
583 setPalette( mPrimaryPalette ); 583 setPalette( mPrimaryPalette );
584 currentPalette = 2; 584 currentPalette = 2;
585 585
586 } else { 586 } else {
587 if ( currentPalette == 3 ) return; 587 if ( currentPalette == 3 ) return;
588 setPalette( mNonPrimaryPalette ); 588 setPalette( mNonPrimaryPalette );
589 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 589 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
590 //mLabel->setPalette( mNonPrimaryPalette );; 590 //mLabel->setPalette( mNonPrimaryPalette );;
591 currentPalette = 3; 591 currentPalette = 3;
592 } 592 }
593 } 593 }
594 //QPalette pal = palette(); 594 //QPalette pal = palette();
595 595
596 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 596 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
597} 597}
598QPalette MonthViewCell::getPalette () 598QPalette MonthViewCell::getPalette ()
599{ 599{
600 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 600 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
601 return mStandardPalette; 601 return mStandardPalette;
602 if ( mHoliday) { 602 if ( mHoliday) {
603 return mHolidayPalette ; 603 return mHolidayPalette ;
604 } else { 604 } else {
605 if ( mPrimary ) { 605 if ( mPrimary ) {
606 return mPrimaryPalette ; 606 return mPrimaryPalette ;
607 } 607 }
608 } 608 }
609 return mNonPrimaryPalette; 609 return mNonPrimaryPalette;
610} 610}
611bool MonthViewCell::isPrimary() const 611bool MonthViewCell::isPrimary() const
612{ 612{
613 return mPrimary; 613 return mPrimary;
614} 614}
615 615
616void MonthViewCell::setHoliday( bool holiday ) 616void MonthViewCell::setHoliday( bool holiday )
617{ 617{
618 mHoliday = holiday; 618 mHoliday = holiday;
619 //setMyPalette(); 619 //setMyPalette();
620} 620}
621 621
622void MonthViewCell::setHoliday( const QString &holiday ) 622void MonthViewCell::setHoliday( const QString &holiday )
623{ 623{
624 mHolidayString = holiday; 624 mHolidayString = holiday;
625 625
626 if ( !holiday.isEmpty() ) { 626 if ( !holiday.isEmpty() ) {
627 setHoliday( true ); 627 setHoliday( true );
628 } 628 }
629} 629}
630 630
631void MonthViewCell::startUpdateCell() 631void MonthViewCell::startUpdateCell()
632{ 632{
633 blockSignals( true ); 633 blockSignals( true );
634 mdayCount = 0; 634 mdayCount = 0;
635 setFocusPolicy(NoFocus); 635 setFocusPolicy(NoFocus);
636 if ( !mMonthView->isUpdatePossible() ) 636 if ( !mMonthView->isUpdatePossible() )
637 return; 637 return;
638 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 638 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
639 while ( mitem ) { 639 while ( mitem ) {
640 mitem->setBlockRepaint( true ); 640 mitem->setBlockRepaint( true );
641 mitem = (MonthViewItem *)mitem->next(); 641 mitem = (MonthViewItem *)mitem->next();
642 } 642 }
643 if ( mAvailItemList.count() > 20 ) { 643 if ( mAvailItemList.count() > 20 ) {
644 mAvailItemList.setAutoDelete( true ); 644 mAvailItemList.setAutoDelete( true );
645 mAvailItemList.clear(); 645 mAvailItemList.clear();
646 mAvailItemList.setAutoDelete( false ); 646 mAvailItemList.setAutoDelete( false );
647 clear(); 647 clear();
648 } 648 }
649 649
650 setPrimary( mDate.month()%2 ); 650 setPrimary( mDate.month()%2 );
651 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 651 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
652 if ( mDate == QDate::currentDate() ) { 652 if ( mDate == QDate::currentDate() ) {
653 setLineWidth( 3 ); 653 setLineWidth( 3 );
654 } else { 654 } else {
655 setLineWidth( 1 ); 655 setLineWidth( 1 );
656 } 656 }
657 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); 657 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem ();
658 //clear(); 658 //clear();
659 while ( CurrentAvailItem ) { 659 while ( CurrentAvailItem ) {
660 MonthViewItem *item = CurrentAvailItem; 660 MonthViewItem *item = CurrentAvailItem;
661 //item->setHighlightedFalse(); 661 //item->setHighlightedFalse();
662 item->recycle( 0, ""); 662 item->recycle( 0, "");
663 CurrentAvailItem = (MonthViewItem *)item->next(); 663 CurrentAvailItem = (MonthViewItem *)item->next();
664 mAvailItemList.append( item ); 664 mAvailItemList.append( item );
665 takeItem ( item ); 665 takeItem ( item );
666 } 666 }
667 667
668#ifdef DESKTOP_VERSION 668#ifdef DESKTOP_VERSION
669 QToolTip::remove(this); 669 QToolTip::remove(this);
670#endif 670#endif
671 mToolTip.clear(); 671 mToolTip.clear();
672 //qApp->processEvents(); 672 //qApp->processEvents();
673#if 0 673#if 0
674 if ( !mHolidayString.isEmpty() ) { 674 if ( !mHolidayString.isEmpty() ) {
675 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 675 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
676 item->setPalette( mHolidayPalette ); 676 item->setPalette( mHolidayPalette );
677 insertItem( item ); 677 insertItem( item );
678 mToolTip.append ( mHolidayString ); 678 mToolTip.append ( mHolidayString );
679 } 679 }
680#endif 680#endif
681} 681}
682 682
683int MonthViewCell::insertEvent(Event *event) 683int MonthViewCell::insertEvent(Event *event)
684{ 684{
685 bool useToolTips = true; 685 bool useToolTips = true;
686#ifndef DESKTOP_VERSION 686#ifndef DESKTOP_VERSION
687 useToolTips = false; 687 useToolTips = false;
688#endif 688#endif
689 QString mToolTipText; 689 QString mToolTipText;
690 setFocusPolicy(WheelFocus); 690 setFocusPolicy(WheelFocus);
691 if ( !(event->doesRecur() == Recurrence::rNone) ) { 691 if ( !(event->doesRecur() == Recurrence::rNone) ) {
692 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 692 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
693 return mdayCount; 693 return mdayCount;
694 else 694 else
695 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 695 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
696 return mdayCount; 696 return mdayCount;
697 } 697 }
698 698
699 if ( event->isHoliday()) { 699 if ( event->isHoliday()) {
700 setHoliday( true ); 700 setHoliday( true );
701 if ( mDate.dayOfWeek() == 7 ) 701 if ( mDate.dayOfWeek() == 7 )
702 setLineWidth( 3 ); 702 setLineWidth( 3 );
703 } 703 }
704 QString text; 704 QString text;
705 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 705 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
706 if (event->isMultiDay()) { 706 if (event->isMultiDay()) {
707 QString prefix = "<->";multiday = 2; 707 QString prefix = "<->";multiday = 2;
708 QString time; 708 QString time;
709 if ( event->doesRecur() ) { 709 if ( event->doesRecur() ) {
710 if ( event->recursOn( mDate) ) { 710 if ( event->recursOn( mDate) ) {
711 prefix ="->" ;multiday = 1; 711 prefix ="->" ;multiday = 1;
712 } 712 }
713 else { 713 else {
714 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 714 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
715 if ( event->recursOn( mDate.addDays( -days)) ) { 715 if ( event->recursOn( mDate.addDays( -days)) ) {
716 prefix ="<-" ;multiday = 3; 716 prefix ="<-" ;multiday = 3;
717 } 717 }
718 } 718 }
719 719
720 } else { 720 } else {
721 if (mDate == event->dtStart().date()) { 721 if (mDate == event->dtStart().date()) {
722 prefix ="->" ;multiday = 1; 722 prefix ="->" ;multiday = 1;
723 } else if (mDate == event->dtEnd().date()) { 723 } else if (mDate == event->dtEnd().date()) {
724 prefix ="<-" ;multiday = 3; 724 prefix ="<-" ;multiday = 3;
725 } 725 }
726 } 726 }
727 if ( !event->doesFloat() ) { 727 if ( !event->doesFloat() ) {
728 if ( mDate == event->dtStart().date () ) 728 if ( mDate == event->dtStart().date () )
729 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 729 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
730 else if ( mDate == event->dtEnd().date () ) 730 else if ( mDate == event->dtEnd().date () )
731 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 731 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
732 732
733 } 733 }
734 text = time + event->summary(); 734 text = time + event->summary();
735 if ( useToolTips ) 735 if ( useToolTips )
736 mToolTipText += prefix + text; 736 mToolTipText += prefix + text;
737 } else { 737 } else {
738 if (event->doesFloat()) { 738 if (event->doesFloat()) {
739 text = event->summary(); 739 text = event->summary();
740 if ( useToolTips ) 740 if ( useToolTips )
741 mToolTipText += text; 741 mToolTipText += text;
742 } 742 }
743 else { 743 else {
744 text = KGlobal::locale()->formatTime(event->dtStart().time()); 744 text = KGlobal::locale()->formatTime(event->dtStart().time());
745 text += " " + event->summary(); 745 text += " " + event->summary();
746 if ( useToolTips ) 746 if ( useToolTips )
747 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 747 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
748 } 748 }
749 } 749 }
750 if ( useToolTips && ! event->location().isEmpty() ) { 750 if ( useToolTips && ! event->location().isEmpty() ) {
751 mToolTipText += " (" + event->location() +")"; 751 mToolTipText += " (" + event->location() +")";
752 } 752 }
753 MonthViewItem *item ; 753 MonthViewItem *item ;
754 754
755 if ( mAvailItemList.count() ) { 755 if ( mAvailItemList.count() ) {
756 item = mAvailItemList.first(); 756 item = mAvailItemList.first();
757 mAvailItemList.remove( item ); 757 mAvailItemList.remove( item );
758 item->recycle( event, text ); 758 item->recycle( event, text );
759 } else { 759 } else {
760 item = new MonthViewItem( event, text ); 760 item = new MonthViewItem( event, text );
761 } 761 }
762 762
763 QPalette pal; 763 QPalette pal;
764 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 764 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
765 QStringList categories = event->categories(); 765 QStringList categories = event->categories();
766 QString cat = categories.first(); 766 QString cat = categories.first();
767 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 767 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
768 pal = getPalette(); 768 pal = getPalette();
769 if (cat.isEmpty()) { 769 if (cat.isEmpty()) {
770 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 770 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
771 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); 771 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() ));
772 } else { 772 } else {
773 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 773 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
774 } 774 }
775 775
776 } else { 776 } else {
777 if (cat.isEmpty()) { 777 if (cat.isEmpty()) {
778 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 778 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
779 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); 779 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() ));
780 } else { 780 } else {
781 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 781 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
782 } 782 }
783 } 783 }
784 784
785 } else { 785 } else {
786 pal = mStandardPalette ; 786 pal = mStandardPalette ;
787 } 787 }
788 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 788 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
789 item->setPalette( pal ); 789 item->setPalette( pal );
790 item->setRecur( event->recurrence()->doesRecur() ); 790 item->setRecur( event->doesRecur() );
791 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); 791 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() );
792 item->setMoreInfo( event->description().length() > 0 ); 792 item->setMoreInfo( event->description().length() > 0 );
793#ifdef DESKTOP_VERSION 793#ifdef DESKTOP_VERSION
794 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 794 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
795 KOPrefs::instance()->email()); 795 KOPrefs::instance()->email());
796 if ( me != 0 ) { 796 if ( me != 0 ) {
797 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 797 if ( me->status() == Attendee::NeedsAction && me->RSVP())
798 item->setReply(true && multiday < 2); 798 item->setReply(true && multiday < 2);
799 else 799 else
800 item->setReply(false); 800 item->setReply(false);
801 } else 801 } else
802 item->setReply(false); 802 item->setReply(false);
803#endif 803#endif
804 804
805 item->setMultiDay( multiday ); 805 item->setMultiDay( multiday );
806 if ( multiday ) { 806 if ( multiday ) {
807 insertItem( item ,mdayCount); 807 insertItem( item ,mdayCount);
808 ++mdayCount; 808 ++mdayCount;
809 } else { 809 } else {
810 uint i = mdayCount; 810 uint i = mdayCount;
811 uint pos = mdayCount; 811 uint pos = mdayCount;
812 uint itcount = count(); 812 uint itcount = count();
813 if ( itcount > 1000 ) { 813 if ( itcount > 1000 ) {
814 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount); 814 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount);
815 itcount = 0; 815 itcount = 0;
816 } 816 }
817 for ( i = pos; i < itcount;++i ) { 817 for ( i = pos; i < itcount;++i ) {
818 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount ); 818 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount );
819 QListBoxItem* it = this->item ( i ); 819 QListBoxItem* it = this->item ( i );
820 if ( it && text < it->text() ) { 820 if ( it && text < it->text() ) {
821 pos = i; 821 pos = i;
822 break; 822 break;
823 } 823 }
824 ++pos; 824 ++pos;
825 } 825 }
826 insertItem( item ,pos); 826 insertItem( item ,pos);
827 } 827 }
828 if ( useToolTips ) { 828 if ( useToolTips ) {
829 mToolTip.append( mToolTipText ); 829 mToolTip.append( mToolTipText );
830 } 830 }
831 return mdayCount; 831 return mdayCount;
832} 832}
833void MonthViewCell::insertTodo(Todo *todo) 833void MonthViewCell::insertTodo(Todo *todo)
834{ 834{
835 setFocusPolicy(WheelFocus); 835 setFocusPolicy(WheelFocus);
836 QString text; 836 QString text;
837 if (todo->hasDueDate()) { 837 if (todo->hasDueDate()) {
838 if (!todo->doesFloat()) { 838 if (!todo->doesFloat()) {
839 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 839 text += KGlobal::locale()->formatTime(todo->dtDue().time());
840 text += " "; 840 text += " ";
841 } 841 }
842 } 842 }
843 text += todo->summary(); 843 text += todo->summary();
844 MonthViewItem *item ; 844 MonthViewItem *item ;
845 if ( mAvailItemList.count() ) { 845 if ( mAvailItemList.count() ) {
846 item = mAvailItemList.first(); 846 item = mAvailItemList.first();
847 mAvailItemList.remove( item ); 847 mAvailItemList.remove( item );
848 item->recycle( todo, text ); 848 item->recycle( todo, text );
849 } else { 849 } else {
850 item = new MonthViewItem( todo, text ); 850 item = new MonthViewItem( todo, text );
851 } 851 }
852 //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 852 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
853 //item->setPalette( mStandardPalette ); 853 //item->setPalette( mStandardPalette );
854 QPalette pal; 854 QPalette pal;
855 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 855 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
856 QStringList categories = todo->categories(); 856 QStringList categories = todo->categories();
857 QString cat = categories.first(); 857 QString cat = categories.first();
858 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 858 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
859 pal = getPalette(); 859 pal = getPalette();
860 if (cat.isEmpty()) { 860 if (cat.isEmpty()) {
861 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 861 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
862 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); 862 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() ));
863 } else { 863 } else {
864 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 864 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
865 } 865 }
866 866
867 } else { 867 } else {
868 if (cat.isEmpty()) { 868 if (cat.isEmpty()) {
869 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 869 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
870 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); 870 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() ));
871 } else { 871 } else {
872 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 872 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
873 } 873 }
874 } 874 }
875 875
876 } else { 876 } else {
877 pal = mStandardPalette ; 877 pal = mStandardPalette ;
878 } 878 }
879 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 879 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
880 item->setPalette( pal ); 880 item->setPalette( pal );
881 item->setRecur( todo->recurrence()->doesRecur() ); 881 item->setRecur( todo->doesRecur() );
882 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); 882 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() );
883 item->setMoreInfo( todo->description().length() > 0 ); 883 item->setMoreInfo( todo->description().length() > 0 );
884 insertItem( item , count()); 884 insertItem( item , count());
885#ifdef DESKTOP_VERSION 885#ifdef DESKTOP_VERSION
886 mToolTip.append( text ); 886 mToolTip.append( text );
887#endif 887#endif
888} 888}
889void MonthViewCell::repaintfinishUpdateCell() 889void MonthViewCell::repaintfinishUpdateCell()
890{ 890{
891 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 891 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
892 while ( mitem ) { 892 while ( mitem ) {
893 mitem->setBlockRepaint( false ); 893 mitem->setBlockRepaint( false );
894 updateItem ( mitem ); 894 updateItem ( mitem );
895 mitem = (MonthViewItem *)mitem->next(); 895 mitem = (MonthViewItem *)mitem->next();
896 } 896 }
897 blockSignals( false ); 897 blockSignals( false );
898} 898}
899void MonthViewCell::finishUpdateCell() 899void MonthViewCell::finishUpdateCell()
900{ 900{
901 901
902 902
903 903
904#ifdef DESKTOP_VERSION 904#ifdef DESKTOP_VERSION
905 if (mToolTip.count() > 0 ) { 905 if (mToolTip.count() > 0 ) {
906 mToolTip.sort(); 906 mToolTip.sort();
907 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 907 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
908 } 908 }
909#endif 909#endif
910 //sort(); 910 //sort();
911 //setMyPalette(); 911 //setMyPalette();
912 setMyPalette(); 912 setMyPalette();
913 913
914 resizeEvent( 0 ); 914 resizeEvent( 0 );
915 915
916} 916}
917void MonthViewCell::updateCell() 917void MonthViewCell::updateCell()
918{ 918{
919 if ( !mMonthView->isUpdatePossible() ) 919 if ( !mMonthView->isUpdatePossible() )
920 return; 920 return;
921 startUpdateCell(); 921 startUpdateCell();
922 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 922 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
923 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 923 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
924 Event *event; 924 Event *event;
925 for( event = events.first(); event; event = events.next() ) { // for event 925 for( event = events.first(); event; event = events.next() ) { // for event
926 insertEvent(event); 926 insertEvent(event);
927 } 927 }
928 // insert due todos 928 // insert due todos
929 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 929 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
930 Todo *todo; 930 Todo *todo;
931 for(todo = todos.first(); todo; todo = todos.next()) { 931 for(todo = todos.first(); todo; todo = todos.next()) {
932 insertTodo( todo ); 932 insertTodo( todo );
933 } 933 }
934 finishUpdateCell(); 934 finishUpdateCell();
935 // if ( isVisible()) 935 // if ( isVisible())
936 //qApp->processEvents(); 936 //qApp->processEvents();
937} 937}
938 938
939void MonthViewCell::updateConfig( bool bigFont ) // = false 939void MonthViewCell::updateConfig( bool bigFont ) // = false
940{ 940{
941 941
942 if ( bigFont ) { 942 if ( bigFont ) {
943 QFont fo = KOPrefs::instance()->mMonthViewFont; 943 QFont fo = KOPrefs::instance()->mMonthViewFont;
944 int ps = fo.pointSize() + 2; 944 int ps = fo.pointSize() + 2;
945 if ( ps < 18 ) 945 if ( ps < 18 )
946 ps += 2; 946 ps += 2;
947 fo.setPointSize( ps ); 947 fo.setPointSize( ps );
948 setFont( fo ); 948 setFont( fo );
949 } else 949 } else
950 setFont( KOPrefs::instance()->mMonthViewFont ); 950 setFont( KOPrefs::instance()->mMonthViewFont );
951 951
952 QFontMetrics fm( font() ); 952 QFontMetrics fm( font() );
953 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 953 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
954 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 954 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
955 mHolidayPalette = mStandardPalette; 955 mHolidayPalette = mStandardPalette;
956 mPrimaryPalette = mStandardPalette; 956 mPrimaryPalette = mStandardPalette;
957 mNonPrimaryPalette = mStandardPalette; 957 mNonPrimaryPalette = mStandardPalette;
958 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 958 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
959 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 959 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
960 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 960 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
961 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 961 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
962 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 962 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
963 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 963 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
964 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 964 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
965 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 965 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
966 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 966 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
967 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 967 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
968 } 968 }
969 //updateCell(); 969 //updateCell();
970} 970}
971 971
972void MonthViewCell::enableScrollBars( bool enabled ) 972void MonthViewCell::enableScrollBars( bool enabled )
973{ 973{
974 974
975 return; 975 return;
976 if ( enabled ) { 976 if ( enabled ) {
977 QListBoxItem *fi = firstItem (); 977 QListBoxItem *fi = firstItem ();
978 if (fi ) { 978 if (fi ) {
979 int ihei = fi->height( this ); 979 int ihei = fi->height( this );
980 int hei = numRows () * ihei; 980 int hei = numRows () * ihei;
981 if ( hei < height() - horizontalScrollBar()->height () ) { 981 if ( hei < height() - horizontalScrollBar()->height () ) {
982 setVScrollBarMode(QScrollView::AlwaysOff); 982 setVScrollBarMode(QScrollView::AlwaysOff);
983 } 983 }
984 else 984 else
985 setVScrollBarMode(QScrollView::Auto); 985 setVScrollBarMode(QScrollView::Auto);
986 if ( ihei *3 > height() ) { 986 if ( ihei *3 > height() ) {
987 setHScrollBarMode(QScrollView::AlwaysOff); 987 setHScrollBarMode(QScrollView::AlwaysOff);
988 } 988 }
989 else { 989 else {
990 setHScrollBarMode(QScrollView::Auto); 990 setHScrollBarMode(QScrollView::Auto);
991 } 991 }
992 } else { 992 } else {
993 setVScrollBarMode(QScrollView::Auto); 993 setVScrollBarMode(QScrollView::Auto);
994 setHScrollBarMode(QScrollView::Auto); 994 setHScrollBarMode(QScrollView::Auto);
995 } 995 }
996 } else { 996 } else {
997 setVScrollBarMode(QScrollView::AlwaysOff); 997 setVScrollBarMode(QScrollView::AlwaysOff);
998 setHScrollBarMode(QScrollView::AlwaysOff); 998 setHScrollBarMode(QScrollView::AlwaysOff);
999 } 999 }
1000} 1000}
1001 1001
1002Incidence *MonthViewCell::selectedIncidence() 1002Incidence *MonthViewCell::selectedIncidence()
1003{ 1003{
1004 int index = currentItem(); 1004 int index = currentItem();
1005 if ( index < 0 ) return 0; 1005 if ( index < 0 ) return 0;
1006 1006
1007 MonthViewItem *mitem = 1007 MonthViewItem *mitem =
1008 static_cast<MonthViewItem *>( item( index ) ); 1008 static_cast<MonthViewItem *>( item( index ) );
1009 1009
1010 if ( !mitem ) return 0; 1010 if ( !mitem ) return 0;
1011 1011
1012 return mitem->incidence(); 1012 return mitem->incidence();
1013} 1013}
1014 1014
1015QDate MonthViewCell::selectedIncidenceDate() 1015QDate MonthViewCell::selectedIncidenceDate()
1016{ 1016{
1017 QDate qd; 1017 QDate qd;
1018 int index = currentItem(); 1018 int index = currentItem();
1019 if ( index < 0 ) return qd; 1019 if ( index < 0 ) return qd;
1020 return mDate; 1020 return mDate;
1021} 1021}
1022 1022
1023void MonthViewCell::deselect() 1023void MonthViewCell::deselect()
1024{ 1024{
1025 clearSelection(); 1025 clearSelection();
1026 enableScrollBars( false ); 1026 enableScrollBars( false );
1027 // updateCell(); 1027 // updateCell();
1028} 1028}
1029void MonthViewCell::select() 1029void MonthViewCell::select()
1030{ 1030{
1031 ;// updateCell(); 1031 ;// updateCell();
1032} 1032}
1033 1033
1034void MonthViewCell::resizeEvent ( QResizeEvent * e ) 1034void MonthViewCell::resizeEvent ( QResizeEvent * e )
1035{ 1035{
1036 if ( !mMonthView->isUpdatePossible() ) 1036 if ( !mMonthView->isUpdatePossible() )
1037 return; 1037 return;
1038 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 1038 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
1039 deselect(); 1039 deselect();
1040 mLabel->setMaximumHeight( height() - lineWidth()*2 ); 1040 mLabel->setMaximumHeight( height() - lineWidth()*2 );
1041 1041
1042 QString text; 1042 QString text;
1043 //mLabel->setText( text ); 1043 //mLabel->setText( text );
1044 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 1044 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
1045 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 1045 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
1046 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() ); 1046 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() );
1047 mLabel->resize( mLabelBigSize ); 1047 mLabel->resize( mLabelBigSize );
1048 } else { 1048 } else {
1049 mLabel->resize( mLabelSize ); 1049 mLabel->resize( mLabelSize );
1050 text = QString::number( mDate.day() ); 1050 text = QString::number( mDate.day() );
1051 } 1051 }
1052 mLabel->setText( text ); 1052 mLabel->setText( text );
1053 1053
1054 int size = height() - mLabel->height() - lineWidth()-1; 1054 int size = height() - mLabel->height() - lineWidth()-1;
1055 //qDebug("LW %d ", lineWidth()); 1055 //qDebug("LW %d ", lineWidth());
1056 if ( size > 0 ) 1056 if ( size > 0 )
1057 verticalScrollBar()->setMaximumHeight( size ); 1057 verticalScrollBar()->setMaximumHeight( size );
1058 size = width() - mLabel->width() -lineWidth()-1; 1058 size = width() - mLabel->width() -lineWidth()-1;
1059 if ( size > 0 ) 1059 if ( size > 0 )
1060 horizontalScrollBar()->setMaximumWidth( size ); 1060 horizontalScrollBar()->setMaximumWidth( size );
1061 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() ); 1061 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
1062 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 1062 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
1063 // mItemList->resize ( width(), height () ); 1063 // mItemList->resize ( width(), height () );
1064 if ( e ) 1064 if ( e )
1065 KNoScrollListBox::resizeEvent ( e ); 1065 KNoScrollListBox::resizeEvent ( e );
1066} 1066}
1067 1067
1068void MonthViewCell::defaultAction( QListBoxItem *item ) 1068void MonthViewCell::defaultAction( QListBoxItem *item )
1069{ 1069{
1070 1070
1071 if ( !item ) { 1071 if ( !item ) {
1072 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1072 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1073 emit newEventSignal( dt ); 1073 emit newEventSignal( dt );
1074 return; 1074 return;
1075 } 1075 }
1076 1076
1077 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1077 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1078 Incidence *incidence = eventItem->incidence(); 1078 Incidence *incidence = eventItem->incidence();
1079 if ( incidence ) mMonthView->defaultAction( incidence ); 1079 if ( incidence ) mMonthView->defaultAction( incidence );
1080} 1080}
1081void MonthViewCell::showDay() 1081void MonthViewCell::showDay()
1082{ 1082{
1083 emit showDaySignal( date() ); 1083 emit showDaySignal( date() );
1084} 1084}
1085void MonthViewCell::newEvent() 1085void MonthViewCell::newEvent()
1086{ 1086{
1087 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1087 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1088 emit newEventSignal( dt ); 1088 emit newEventSignal( dt );
1089} 1089}
1090void MonthViewCell::cellClicked( QListBoxItem *item ) 1090void MonthViewCell::cellClicked( QListBoxItem *item )
1091{ 1091{
1092 mMonthView->setSelectedCell( this ); 1092 mMonthView->setSelectedCell( this );
1093 if ( item == 0 ) { 1093 if ( item == 0 ) {
1094 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1094 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1095 emit newEventSignal( dt ); 1095 emit newEventSignal( dt );
1096 return; 1096 return;
1097 } 1097 }
1098 1098
1099} 1099}
1100 1100
1101void MonthViewCell::contextMenu( QListBoxItem *item ) 1101void MonthViewCell::contextMenu( QListBoxItem *item )
1102{ 1102{
1103 mMonthView->setPopupCell( this ); 1103 mMonthView->setPopupCell( this );
1104 if ( !item ) { 1104 if ( !item ) {
1105 mMonthView->showContextMenu( 0 ); 1105 mMonthView->showContextMenu( 0 );
1106 return; 1106 return;
1107 } 1107 }
1108 //selection( item );
1109 //qApp->processEvents();
1108 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1110 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1109 Incidence *incidence = eventItem->incidence(); 1111 Incidence *incidence = eventItem->incidence();
1110 if ( incidence ) mMonthView->showContextMenu( incidence ); 1112 if ( incidence ) mMonthView->showContextMenu( incidence );
1111} 1113}
1112 1114
1113void MonthViewCell::selection( QListBoxItem *item ) 1115void MonthViewCell::selection( QListBoxItem *item )
1114{ 1116{
1115 if ( !item ) { 1117 if ( !item ) {
1116 emit highlightIncidence( 0 , this, 0 ); 1118 emit highlightIncidence( 0 , this, 0 );
1117 return; 1119 return;
1118 } 1120 }
1119 MonthViewItem * it = (static_cast<MonthViewItem *>( item )); 1121 MonthViewItem * it = (static_cast<MonthViewItem *>( item ));
1120 emit highlightIncidence( it->incidence(), this, it->multiDay() ); 1122 emit highlightIncidence( it->incidence(), this, it->multiDay() );
1121 mMonthView->setSelectedCell( this ); 1123 mMonthView->setSelectedCell( this );
1122} 1124}
1123 1125
1124void MonthViewCell::deHighLight() 1126void MonthViewCell::deHighLight()
1125{ 1127{
1126 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1128 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1127 while ( mitem ) { 1129 while ( mitem ) {
1128 if ( mitem->setHighlightedFalse() ) 1130 if ( mitem->setHighlightedFalse() )
1129 updateItem ( mitem ); 1131 updateItem ( mitem );
1130 mitem = (MonthViewItem *)mitem->next(); 1132 mitem = (MonthViewItem *)mitem->next();
1131 } 1133 }
1132} 1134}
1133// returns true if no inc found 1135// returns true if no inc found
1134bool MonthViewCell::doHighLight( Incidence * inc ) 1136bool MonthViewCell::doHighLight( Incidence * inc )
1135{ 1137{
1136 1138
1137 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1139 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1138 while ( mitem ) { 1140 while ( mitem ) {
1139 if ( mitem->incidence() == inc ) { 1141 if ( mitem->incidence() == inc ) {
1140 if ( mitem->setHighlighted( inc ) ) 1142 if ( mitem->setHighlighted( inc ) )
1141 updateItem ( mitem ); 1143 updateItem ( mitem );
1142 return false; 1144 return false;
1143 } 1145 }
1144 mitem = (MonthViewItem *)mitem->next(); 1146 mitem = (MonthViewItem *)mitem->next();
1145 } 1147 }
1146 return true; 1148 return true;
1147} 1149}
1148// ******************************************************************************* 1150// *******************************************************************************
1149// ******************************************************************************* 1151// *******************************************************************************
1150// ******************************************************************************* 1152// *******************************************************************************
1151 1153
1152 1154
1153KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 1155KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1154 : KOEventView( calendar, parent, name ), 1156 : KOEventView( calendar, parent, name ),
1155 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 1157 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
1156 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 1158 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
1157{ 1159{
1158 mFlagKeyPressed = false; 1160 mFlagKeyPressed = false;
1159 mShortDayLabelsM = false; 1161 mShortDayLabelsM = false;
1160 mShortDayLabelsW = false; 1162 mShortDayLabelsW = false;
1161 skipResize = false; 1163 skipResize = false;
1162 clPending = true; 1164 clPending = true;
1163 mPopupCell = 0; 1165 mPopupCell = 0;
1164 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 1166 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
1165 mWidStack = new QWidgetStack( this ); 1167 mWidStack = new QWidgetStack( this );
1166 QVBoxLayout* hb = new QVBoxLayout( this ); 1168 QVBoxLayout* hb = new QVBoxLayout( this );
1167 mMonthView = new QWidget( mWidStack ); 1169 mMonthView = new QWidget( mWidStack );
1168 mWeekView = new QWidget( mWidStack ); 1170 mWeekView = new QWidget( mWidStack );
1169#if QT_VERSION >= 0x030000 1171#if QT_VERSION >= 0x030000
1170 mWidStack->addWidget(mMonthView ); 1172 mWidStack->addWidget(mMonthView );
1171 mWidStack->addWidget(mWeekView ); 1173 mWidStack->addWidget(mWeekView );
1172#else 1174#else
1173 mWidStack->addWidget( mMonthView, 1 ); 1175 mWidStack->addWidget( mMonthView, 1 );
1174 mWidStack->addWidget( mWeekView , 1 ); 1176 mWidStack->addWidget( mWeekView , 1 );
1175#endif 1177#endif
1176 hb->addWidget( mNavigatorBar ); 1178 hb->addWidget( mNavigatorBar );
1177 hb->addWidget( mWidStack ); 1179 hb->addWidget( mWidStack );
1178 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1180 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1179 updatePossible = false; 1181 updatePossible = false;
1180 //updatePossible = true; 1182 //updatePossible = true;
1181 mCells.setAutoDelete( true ); 1183 mCells.setAutoDelete( true );
1182 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1184 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1183 mDayLabels.resize( mDaysPerWeek ); 1185 mDayLabels.resize( mDaysPerWeek );
1184 mDayLabelsW.resize( mDaysPerWeek ); 1186 mDayLabelsW.resize( mDaysPerWeek );
1185 QFont bfont = font(); 1187 QFont bfont = font();
1186 if ( QApplication::desktop()->width() < 650 ) { 1188 if ( QApplication::desktop()->width() < 650 ) {
1187 bfont.setPointSize( bfont.pointSize() - 2 ); 1189 bfont.setPointSize( bfont.pointSize() - 2 );
1188 } 1190 }
1189 bfont.setBold( true ); 1191 bfont.setBold( true );
1190 int i; 1192 int i;
1191 1193
1192 for( i = 0; i < mDaysPerWeek; i++ ) { 1194 for( i = 0; i < mDaysPerWeek; i++ ) {
1193 QLabel *label = new QLabel( mMonthView ); 1195 QLabel *label = new QLabel( mMonthView );
1194 label->setFont(bfont); 1196 label->setFont(bfont);
1195 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1197 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1196 label->setLineWidth(1); 1198 label->setLineWidth(1);
1197 label->setAlignment(AlignCenter); 1199 label->setAlignment(AlignCenter);
1198 mDayLabels.insert( i, label ); 1200 mDayLabels.insert( i, label );
1199 label = new QLabel( mWeekView ); 1201 label = new QLabel( mWeekView );
1200 label->setFont(bfont); 1202 label->setFont(bfont);
1201 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1203 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1202 label->setLineWidth(1); 1204 label->setLineWidth(1);
1203 label->setAlignment(AlignCenter); 1205 label->setAlignment(AlignCenter);
1204 mDayLabelsW.insert( i, label ); 1206 mDayLabelsW.insert( i, label );
1205 } 1207 }
1206 1208
1207 bfont.setBold( false ); 1209 bfont.setBold( false );
1208 mWeekLabels.resize( mNumWeeks+1 ); 1210 mWeekLabels.resize( mNumWeeks+1 );
1209 mWeekLabelsW.resize( 2 ); 1211 mWeekLabelsW.resize( 2 );
1210 for( i = 0; i < mNumWeeks+1; i++ ) { 1212 for( i = 0; i < mNumWeeks+1; i++ ) {
1211 KOWeekButton *label = new KOWeekButton( mMonthView ); 1213 KOWeekButton *label = new KOWeekButton( mMonthView );
1212 label->setFocusPolicy(NoFocus); 1214 label->setFocusPolicy(NoFocus);
1213 label->setFont(bfont); 1215 label->setFont(bfont);
1214 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1216 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1215 label->setFlat(true); 1217 label->setFlat(true);
1216 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1218 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1217 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1219 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1218 //label->setLineWidth(1); 1220 //label->setLineWidth(1);
1219 //label->setAlignment(AlignCenter); 1221 //label->setAlignment(AlignCenter);
1220 mWeekLabels.insert( i, label ); 1222 mWeekLabels.insert( i, label );
1221 } 1223 }
1222 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1224 mWeekLabels[mNumWeeks]->setText( i18n("W"));
1223 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus); 1225 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus);
1224 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 1226 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
1225 1227
1226 for( i = 0; i < 1+1; i++ ) { 1228 for( i = 0; i < 1+1; i++ ) {
1227 KOWeekButton *label = new KOWeekButton( mWeekView ); 1229 KOWeekButton *label = new KOWeekButton( mWeekView );
1228 label->setFocusPolicy(NoFocus); 1230 label->setFocusPolicy(NoFocus);
1229 label->setFont(bfont); 1231 label->setFont(bfont);
1230 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1232 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1231 label->setFlat(true); 1233 label->setFlat(true);
1232 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1234 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1233 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1235 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1234 //label->setLineWidth(1); 1236 //label->setLineWidth(1);
1235 //label->setAlignment(AlignCenter); 1237 //label->setAlignment(AlignCenter);
1236 mWeekLabelsW.insert( i, label ); 1238 mWeekLabelsW.insert( i, label );
1237 } 1239 }
1238 mWeekLabelsW[1]->setText( i18n("W")); 1240 mWeekLabelsW[1]->setText( i18n("W"));
1239 mWeekLabelsW[1]->setFocusPolicy(WheelFocus); 1241 mWeekLabelsW[1]->setFocusPolicy(WheelFocus);
1240 1242
1241 1243
1242 int row, col; 1244 int row, col;
1243 mCells.resize( mNumCells ); 1245 mCells.resize( mNumCells );
1244 for( row = 0; row < mNumWeeks; ++row ) { 1246 for( row = 0; row < mNumWeeks; ++row ) {
1245 for( col = 0; col < mDaysPerWeek; ++col ) { 1247 for( col = 0; col < mDaysPerWeek; ++col ) {
1246 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1248 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1247 mCells.insert( row * mDaysPerWeek + col, cell ); 1249 mCells.insert( row * mDaysPerWeek + col, cell );
1248 1250
1249 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1251 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1250 SLOT( defaultAction( Incidence * ) ) ); 1252 SLOT( defaultAction( Incidence * ) ) );
1251 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1253 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1252 SIGNAL( newEventSignal( QDateTime ) ) ); 1254 SIGNAL( newEventSignal( QDateTime ) ) );
1253 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1255 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1254 SIGNAL( showDaySignal( QDate ) ) ); 1256 SIGNAL( showDaySignal( QDate ) ) );
1255 connect( cell, SIGNAL( nextCell() ), 1257 connect( cell, SIGNAL( nextCell() ),
1256 SLOT( nextCell() ) ); 1258 SLOT( nextCell() ) );
1257 connect( cell, SIGNAL( prevCell() ), 1259 connect( cell, SIGNAL( prevCell() ),
1258 SLOT( prevCell() ) ); 1260 SLOT( prevCell() ) );
1259 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1261 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1260 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1262 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1261 } 1263 }
1262 } 1264 }
1263 mCellsW.resize( mDaysPerWeek ); 1265 mCellsW.resize( mDaysPerWeek );
1264 for( col = 0; col < mDaysPerWeek; ++col ) { 1266 for( col = 0; col < mDaysPerWeek; ++col ) {
1265 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1267 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1266 mCellsW.insert( col, cell ); 1268 mCellsW.insert( col, cell );
1267 1269
1268 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1270 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1269 SLOT( defaultAction( Incidence * ) ) ); 1271 SLOT( defaultAction( Incidence * ) ) );
1270 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1272 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1271 SIGNAL( newEventSignal( QDateTime ) ) ); 1273 SIGNAL( newEventSignal( QDateTime ) ) );
1272 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1274 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1273 SIGNAL( showDaySignal( QDate ) ) ); 1275 SIGNAL( showDaySignal( QDate ) ) );
1274 connect( cell, SIGNAL( nextCell() ), 1276 connect( cell, SIGNAL( nextCell() ),
1275 SLOT( nextCell() ) ); 1277 SLOT( nextCell() ) );
1276 connect( cell, SIGNAL( prevCell() ), 1278 connect( cell, SIGNAL( prevCell() ),
1277 SLOT( prevCell() ) ); 1279 SLOT( prevCell() ) );
1278 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1280 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1279 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1281 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1280 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1282 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1281 } 1283 }
1282 1284
1283 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1285 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1284 mContextMenu = eventPopup(); 1286 mContextMenu = eventPopup();
1285 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1287 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1286 i18n("New Event..."),this, 1288 i18n("New Event..."),this,
1287 SLOT(slotNewEvent()),false); 1289 SLOT(slotNewEvent()),false);
1288 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1290 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1289 i18n("New Todo..."),this, 1291 i18n("New Todo..."),this,
1290 SLOT(slotNewTodo()),false); 1292 SLOT(slotNewTodo()),false);
1291 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1293 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1292 i18n("Journal"),this, 1294 i18n("Journal"),this,
1293 SLOT(slotEditJournal()),false); 1295 SLOT(slotEditJournal()),false);
1294 1296
1295 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this, 1297 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this,
1296 SLOT( catChanged( Incidence * ) )); 1298 SLOT( catChanged( Incidence * ) ));
1297 1299
1298 1300
1299 QString pathString = ""; 1301 QString pathString = "";
1300 if ( !KOPrefs::instance()->mToolBarMiniIcons ) { 1302 if ( !KOPrefs::instance()->mToolBarMiniIcons ) {
1301 if ( QApplication::desktop()->width() < 480 ) 1303 if ( QApplication::desktop()->width() < 480 )
1302 pathString += "icons16/"; 1304 pathString += "icons16/";
1303 } else 1305 } else
1304 pathString += "iconsmini/"; 1306 pathString += "iconsmini/";
1305 mNewItemMenu = new QPopupMenu( this ); 1307 mNewItemMenu = new QPopupMenu( this );
1306 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent())); 1308 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent()));
1307 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false); 1309 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false);
1308 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false); 1310 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false);
1309 1311
1310 // updateConfig(); //useless here... 1312 // updateConfig(); //useless here...
1311 // ... but we need mWidthLongDayLabel computed 1313 // ... but we need mWidthLongDayLabel computed
1312 QFontMetrics fontmetric(mDayLabels[0]->font()); 1314 QFontMetrics fontmetric(mDayLabels[0]->font());
1313 mWidthLongDayLabel = 0; 1315 mWidthLongDayLabel = 0;
1314 for (int i = 0; i < 7; i++) { 1316 for (int i = 0; i < 7; i++) {
1315 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1317 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1316 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1318 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1317 } 1319 }
1318 1320
1319 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1321 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1320 1322
1321#if 0 1323#if 0
1322 if ( mShowWeekView ) 1324 if ( mShowWeekView )
1323 mWidStack->raiseWidget( mWeekView ); 1325 mWidStack->raiseWidget( mWeekView );
1324 else 1326 else
1325 mWidStack->raiseWidget( mMonthView ); 1327 mWidStack->raiseWidget( mMonthView );
1326#endif 1328#endif
1327 1329
1328 emit incidenceSelected( 0 ); 1330 emit incidenceSelected( 0 );
1329 1331
1330 mComputeLayoutTimer = new QTimer( this ); 1332 mComputeLayoutTimer = new QTimer( this );
1331 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout())); 1333 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1332 1334
1333 1335
1334#ifndef DESKTOP_VERSION 1336#ifndef DESKTOP_VERSION
1335 resize( QApplication::desktop()->size() ); 1337 resize( QApplication::desktop()->size() );
1336#else 1338#else
1337 resize(640, 480 ); 1339 resize(640, 480 );
1338 updatePossible = true; 1340 updatePossible = true;
1339#endif 1341#endif
1340 computeLayout(); 1342 computeLayout();
1341 1343
1342 if ( mShowWeekView ) 1344 if ( mShowWeekView )
1343 mWidStack->raiseWidget( mWeekView ); 1345 mWidStack->raiseWidget( mWeekView );
1344 else 1346 else
1345 mWidStack->raiseWidget( mMonthView ); 1347 mWidStack->raiseWidget( mMonthView );
1346} 1348}
1347 1349
1348KOMonthView::~KOMonthView() 1350KOMonthView::~KOMonthView()
1349{ 1351{
1350 delete mContextMenu; 1352 delete mContextMenu;
1351} 1353}
1352 1354
1353void KOMonthView::catChanged( Incidence * ) 1355void KOMonthView::catChanged( Incidence * )
1354{ 1356{
1355 updateView(); 1357 updateView();
1356} 1358}
1357void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday ) 1359void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday )
1358{ 1360{
1359 static Incidence * lastInc = 0; 1361 static Incidence * lastInc = 0;
1360 static MonthViewCell * lastCell = 0; 1362 static MonthViewCell * lastCell = 0;
1361 1363
1362 if ( lastInc == inc && lastCell == mc ) 1364 if ( lastInc == inc && lastCell == mc )
1363 return; 1365 return;
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp
index 100a81b..682f83b 100644
--- a/korganizer/kotodoeditor.cpp
+++ b/korganizer/kotodoeditor.cpp
@@ -124,330 +124,331 @@ void KOTodoEditor::setupGeneral()
124 mGeneral->initHeader(topFrame,topLayout); 124 mGeneral->initHeader(topFrame,topLayout);
125 topLayout->addStretch( 1 ); 125 topLayout->addStretch( 1 );
126 mGeneral->initTime(topFrame,topLayout); 126 mGeneral->initTime(topFrame,topLayout);
127 topLayout->addStretch( 1 ); 127 topLayout->addStretch( 1 );
128 mGeneral->initAlarm(topFrame,topLayout); 128 mGeneral->initAlarm(topFrame,topLayout);
129 topLayout->addStretch( 1 ); 129 topLayout->addStretch( 1 );
130 mGeneral->enableAlarm( false ); 130 mGeneral->enableAlarm( false );
131 131
132 132
133 QBoxLayout *priorityLayout; 133 QBoxLayout *priorityLayout;
134 if ( QApplication::desktop()->width() < 500 ) 134 if ( QApplication::desktop()->width() < 500 )
135 priorityLayout = new QVBoxLayout( topLayout ); 135 priorityLayout = new QVBoxLayout( topLayout );
136 else 136 else
137 priorityLayout = new QHBoxLayout( topLayout ); 137 priorityLayout = new QHBoxLayout( topLayout );
138 QWidget* prioWidget = new QWidget (topFrame); 138 QWidget* prioWidget = new QWidget (topFrame);
139 priorityLayout->addWidget( prioWidget ); 139 priorityLayout->addWidget( prioWidget );
140 QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); 140 QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget);
141 141
142 142
143 QIconSet icon; 143 QIconSet icon;
144 if ( QApplication::desktop()->width() < 321 ) 144 if ( QApplication::desktop()->width() < 321 )
145 icon = SmallIcon("fileimport16"); 145 icon = SmallIcon("fileimport16");
146 else 146 else
147 icon = SmallIcon("fileimport"); 147 icon = SmallIcon("fileimport");
148 QPushButton * loadTemplate = new QPushButton( prioWidget); 148 QPushButton * loadTemplate = new QPushButton( prioWidget);
149 loadTemplate->setIconSet (icon ) ; 149 loadTemplate->setIconSet (icon ) ;
150 int size = loadTemplate->sizeHint().height(); 150 int size = loadTemplate->sizeHint().height();
151 loadTemplate->setFixedSize( size, size ); 151 loadTemplate->setFixedSize( size, size );
152 if ( QApplication::desktop()->width() < 321 ) 152 if ( QApplication::desktop()->width() < 321 )
153 icon = SmallIcon("fileexport16"); 153 icon = SmallIcon("fileexport16");
154 else 154 else
155 icon = SmallIcon("fileexport"); 155 icon = SmallIcon("fileexport");
156 QPushButton * saveTemplate = new QPushButton( prioWidget); 156 QPushButton * saveTemplate = new QPushButton( prioWidget);
157 saveTemplate->setIconSet (icon ) ; 157 saveTemplate->setIconSet (icon ) ;
158 saveTemplate->setFixedSize( size, size ); 158 saveTemplate->setFixedSize( size, size );
159 159
160 priorityLayout2->addWidget(loadTemplate); 160 priorityLayout2->addWidget(loadTemplate);
161 priorityLayout2->addWidget(saveTemplate); 161 priorityLayout2->addWidget(saveTemplate);
162 mGeneral->initPriority(prioWidget,priorityLayout2); 162 mGeneral->initPriority(prioWidget,priorityLayout2);
163 mGeneral->initCategories( topFrame, priorityLayout ); 163 mGeneral->initCategories( topFrame, priorityLayout );
164 topLayout->addStretch(1); 164 topLayout->addStretch(1);
165 165
166 QFrame *topFrame2 = addPage(i18n("Details")); 166 QFrame *topFrame2 = addPage(i18n("Details"));
167 167
168 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); 168 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2);
169 topLayout2->setMargin(marginHint()); 169 topLayout2->setMargin(marginHint());
170 topLayout2->setSpacing(spacingHint()); 170 topLayout2->setSpacing(spacingHint());
171 171
172 QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); 172 QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 );
173 mGeneral->initCompletion(topFrame2,completionLayout); 173 mGeneral->initCompletion(topFrame2,completionLayout);
174 174
175 175
176 mGeneral->initSecrecy( topFrame2, topLayout2 ); 176 mGeneral->initSecrecy( topFrame2, topLayout2 );
177 mGeneral->initDescription(topFrame2,topLayout2); 177 mGeneral->initDescription(topFrame2,topLayout2);
178 178
179 // QHBox * hb = new QHBox ( topFrame2 ); 179 // QHBox * hb = new QHBox ( topFrame2 );
180 // topLayout2->addWidget(hb); 180 // topLayout2->addWidget(hb);
181 // hb->setSpacing( 3 ); 181 // hb->setSpacing( 3 );
182 182
183 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); 183 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
184 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); 184 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
185 185
186 } else { 186 } else {
187 QFrame *topFrame = addPage(i18n("General")); 187 QFrame *topFrame = addPage(i18n("General"));
188 188
189 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 189 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
190 topLayout->setSpacing(spacingHint()); 190 topLayout->setSpacing(spacingHint());
191 191
192 mGeneral->initHeader(topFrame,topLayout); 192 mGeneral->initHeader(topFrame,topLayout);
193 mGeneral->initTime(topFrame,topLayout); 193 mGeneral->initTime(topFrame,topLayout);
194 mGeneral->initStatus(topFrame,topLayout); 194 mGeneral->initStatus(topFrame,topLayout);
195 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); 195 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout);
196 mGeneral->initAlarm(topFrame,alarmLineLayout); 196 mGeneral->initAlarm(topFrame,alarmLineLayout);
197 mGeneral->initDescription(topFrame,topLayout); 197 mGeneral->initDescription(topFrame,topLayout);
198 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); 198 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout);
199 mGeneral->initCategories( topFrame, detailsLayout ); 199 mGeneral->initCategories( topFrame, detailsLayout );
200 mGeneral->initSecrecy( topFrame, detailsLayout ); 200 mGeneral->initSecrecy( topFrame, detailsLayout );
201 } 201 }
202 mGeneral->finishSetup(); 202 mGeneral->finishSetup();
203 203
204} 204}
205 205
206void KOTodoEditor::editTodo(Todo *todo, bool editDescription) 206void KOTodoEditor::editTodo(Todo *todo, bool editDescription)
207{ 207{
208 //init(); 208 //init();
209 209
210 mTodo = todo; 210 mTodo = todo;
211 readTodo(mTodo); 211 readTodo(mTodo);
212 if ( editDescription ) { 212 if ( editDescription ) {
213 showPage( 1 ); 213 showPage( 1 );
214 mGeneral->setFocusOn( 1 ); 214 mGeneral->setFocusOn( 1 );
215 } else { 215 } else {
216 showPage( 0 ); 216 showPage( 0 );
217 mGeneral->setFocusOn( 2 ); 217 mGeneral->setFocusOn( 2 );
218 } 218 }
219 checkRecurrence(); 219 checkRecurrence();
220} 220}
221 221
222void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) 222void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay)
223{ 223{
224 //init(); 224 //init();
225 225
226 mTodo = 0; 226 mTodo = 0;
227 setDefaults(due,relatedTodo,allDay); 227 setDefaults(due,relatedTodo,allDay);
228} 228}
229 229
230void KOTodoEditor::loadDefaults() 230void KOTodoEditor::loadDefaults()
231{ 231{
232 setDefaults(QDateTime::currentDateTime().addDays(7),0,false); 232 setDefaults(QDateTime::currentDateTime().addDays(7),0,false);
233} 233}
234 234
235bool KOTodoEditor::processInput( bool emitTime ) 235bool KOTodoEditor::processInput( bool emitTime )
236{ 236{
237 if (!validateInput()) return false; 237 if (!validateInput()) return false;
238 238
239 Todo *todo = 0; 239 Todo *todo = 0;
240 240
241 if (mTodo) todo = mTodo; 241 if (mTodo) todo = mTodo;
242 else { 242 else {
243 todo = new Todo; 243 todo = new Todo;
244 todo->setOrganizer(KOPrefs::instance()->email()); 244 todo->setOrganizer(KOPrefs::instance()->email());
245 } 245 }
246 246
247 writeTodo(todo); 247 writeTodo(todo);
248 if ( emitTime ) { 248 if ( emitTime ) {
249 globalFlagBlockAgenda = 1; 249 globalFlagBlockAgenda = 1;
250 emit showAgendaView( false ); 250 emit showAgendaView( false );
251 if ( todo->hasDueDate() ) 251 if ( todo->hasDueDate() )
252 emit jumpToTime( todo->dtDue().date() ); 252 emit jumpToTime( todo->dtDue().date() );
253 globalFlagBlockAgenda = 2; 253 globalFlagBlockAgenda = 2;
254 } 254 }
255 if (mTodo) { 255 if (mTodo) {
256 todo->setRevision(todo->revision()+1); 256 todo->setRevision(todo->revision()+1);
257 emit todoChanged(todo); 257 emit todoChanged(todo);
258 } else { 258 } else {
259 mCalendar->addTodo(todo); 259 mCalendar->addTodo(todo);
260 mTodo = todo; 260 mTodo = todo;
261 emit todoAdded(todo); 261 emit todoAdded(todo);
262 } 262 }
263 263
264 return true; 264 return true;
265} 265}
266 266
267void KOTodoEditor::deleteTodo() 267void KOTodoEditor::deleteTodo()
268{ 268{
269 if (mTodo) { 269 if (mTodo) {
270 if (KOPrefs::instance()->mConfirm) { 270 if (KOPrefs::instance()->mConfirm) {
271 switch (msgItemDelete()) { 271 switch (msgItemDelete()) {
272 case KMessageBox::Continue: // OK 272 case KMessageBox::Continue: // OK
273 emit todoToBeDeleted(mTodo); 273 emit todoToBeDeleted(mTodo);
274 emit dialogClose(mTodo); 274 emit dialogClose(mTodo);
275 mCalendar->deleteTodo(mTodo); 275 mCalendar->deleteTodo(mTodo);
276 emit todoDeleted(); 276 emit todoDeleted();
277 reject(); 277 reject();
278 break; 278 break;
279 } 279 }
280 } 280 }
281 else { 281 else {
282 emit todoToBeDeleted(mTodo); 282 emit todoToBeDeleted(mTodo);
283 emit dialogClose(mTodo); 283 emit dialogClose(mTodo);
284 mCalendar->deleteTodo(mTodo); 284 mCalendar->deleteTodo(mTodo);
285 emit todoDeleted(); 285 emit todoDeleted();
286 reject(); 286 reject();
287 } 287 }
288 } else { 288 } else {
289 reject(); 289 reject();
290 } 290 }
291} 291}
292 292
293void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) 293void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay)
294{ 294{
295 mRelatedTodo = relatedEvent; 295 mRelatedTodo = relatedEvent;
296 296
297 mGeneral->setDefaults(due,allDay); 297 mGeneral->setDefaults(due,allDay);
298 mDetails->setDefaults(); 298 mDetails->setDefaults();
299 showPage( 0 ); 299 showPage( 0 );
300 if ( mRelatedTodo ) { 300 if ( mRelatedTodo ) {
301 mGeneral->fillCalCombo(mRelatedTodo->calID() ); 301 mGeneral->fillCalCombo(mRelatedTodo->calID() );
302 mGeneral->setCategories (mRelatedTodo->categoriesStr ()); 302 mGeneral->setCategories (mRelatedTodo->categoriesStr ());
303 mGeneral->setSecrecy (mRelatedTodo->secrecy ()); 303 mGeneral->setSecrecy (mRelatedTodo->secrecy ());
304 if ( mRelatedTodo->priority() < 3 ) 304 if ( mRelatedTodo->priority() < 3 )
305 mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1); 305 mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1);
306 mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); 306 mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": ");
307 int len = mRelatedTodo->summary().length(); 307 int len = mRelatedTodo->summary().length();
308 mGeneral->mSummaryEdit->lineEdit()->setFocus(); 308 mGeneral->mSummaryEdit->lineEdit()->setFocus();
309 mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); 309 mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 );
310 mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); 310 mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 );
311 311
312 } else 312 } else
313 mGeneral->setFocusOn( 2 ); 313 mGeneral->setFocusOn( 2 );
314 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); 314 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false );
315 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); 315 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ));
316} 316}
317void KOTodoEditor::checkRecurrence() 317void KOTodoEditor::checkRecurrence()
318{ 318{
319 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { 319 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) {
320 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); 320 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true );
321 321
322 if ( mTodo ) 322 if ( mTodo )
323 mRecurrence->readEvent( mTodo ); 323 mRecurrence->readEvent( mTodo );
324 else { 324 else {
325 bool time = mGeneral->mTimeButton->isChecked(); 325 bool time = mGeneral->mTimeButton->isChecked();
326 QDateTime from,to; 326 QDateTime from,to;
327 if ( time ) { 327 if ( time ) {
328 to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; 328 to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ;
329 from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; 329 from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ;
330 } else { 330 } else {
331 to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; 331 to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ;
332 from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; 332 from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ;
333 } 333 }
334 if ( to < from ) 334 if ( to < from )
335 to = from; 335 to = from;
336 mRecurrence->setDefaults(from,to); 336 mRecurrence->setDefaults(from,to);
337 } 337 }
338 } else { 338 } else {
339 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); 339 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false );
340 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); 340 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ));
341 } 341 }
342} 342}
343void KOTodoEditor::readTodo(Todo *todo) 343void KOTodoEditor::readTodo(Todo *todo)
344{ 344{
345 mGeneral->readTodo(todo); 345 mGeneral->readTodo(todo);
346 mDetails->readEvent(todo); 346 mDetails->readEvent(todo);
347 mRelatedTodo = 0;//todo->relatedTo(); 347 mRelatedTodo = 0;//todo->relatedTo();
348 // categories 348 // categories
349 // mCategoryDialog->setSelected(todo->categories()); 349 // mCategoryDialog->setSelected(todo->categories());
350 350
351 // We should handle read-only events here. 351 // We should handle read-only events here.
352} 352}
353 353
354void KOTodoEditor::writeTodo(Todo *event) 354void KOTodoEditor::writeTodo(Todo *event)
355{ 355{
356 bool maybeComputeRecurrenceTime = false; 356 bool maybeComputeRecurrenceTime = false;
357 if( event->hasRecurrenceID() && event->percentComplete() < 100) 357 if( event->hasRecurrenceID() && event->percentComplete() < 100)
358 maybeComputeRecurrenceTime = true; 358 maybeComputeRecurrenceTime = true;
359 event->setHasRecurrenceID( false ); 359 event->setHasRecurrenceID( false );
360 mGeneral->writeTodo(event); 360 mGeneral->writeTodo(event);
361 mDetails->writeEvent(event); 361 mDetails->writeEvent(event);
362 362
363 // set related event, i.e. parent to-do in this case. 363 // set related event, i.e. parent to-do in this case.
364 if (mRelatedTodo) { 364 if (mRelatedTodo) {
365 event->setRelatedTo(mRelatedTodo); 365 event->setRelatedTo(mRelatedTodo);
366 } 366 }
367 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { 367 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) {
368 mRecurrence->writeEvent(event); 368 mRecurrence->writeEvent(event);
369 if ( event->doesRecur() ) { 369 if ( event->doesRecur() ) {
370 int addSec = -1 ; 370 int addSec = -1 ;
371 if ( maybeComputeRecurrenceTime && event->percentComplete() == 100 ) 371 if ( maybeComputeRecurrenceTime && event->percentComplete() == 100 )
372 addSec = 1; 372 addSec = 1;
373 event->setRecurrenceID( event->dtStart().addSecs( addSec ) ); 373 event->setRecurrenceID( event->dtStart().addSecs( addSec ) );
374 event->setRecurDates(); 374 event->setRecurDates();
375 } else { 375 } else {
376 event->setHasRecurrenceID( false ); 376 event->setHasRecurrenceID( false );
377 } 377 }
378 } else { 378 } else {
379 event->setHasRecurrenceID( false ); 379 event->setHasRecurrenceID( false );
380 event->recurrence()->unsetRecurs(); 380 if ( event->doesRecur() )
381 event->recurrence()->unsetRecurs();
381 } 382 }
382} 383}
383 384
384bool KOTodoEditor::validateInput() 385bool KOTodoEditor::validateInput()
385{ 386{
386 if (!mGeneral->validateInput()) return false; 387 if (!mGeneral->validateInput()) return false;
387 if (!mDetails->validateInput()) return false; 388 if (!mDetails->validateInput()) return false;
388 return true; 389 return true;
389} 390}
390 391
391int KOTodoEditor::msgItemDelete() 392int KOTodoEditor::msgItemDelete()
392{ 393{
393 return KMessageBox::warningContinueCancel(this, 394 return KMessageBox::warningContinueCancel(this,
394 i18n("This item will be permanently deleted."), 395 i18n("This item will be permanently deleted."),
395 i18n("KOrganizer Confirmation"),i18n("Delete")); 396 i18n("KOrganizer Confirmation"),i18n("Delete"));
396} 397}
397 398
398void KOTodoEditor::modified (int modification) 399void KOTodoEditor::modified (int modification)
399{ 400{
400 if (modification == KOGlobals::CATEGORY_MODIFIED || 401 if (modification == KOGlobals::CATEGORY_MODIFIED ||
401 KOGlobals::UNKNOWN_MODIFIED == modification ) 402 KOGlobals::UNKNOWN_MODIFIED == modification )
402 // mCategoryDialog->setSelected (mTodo->categories ()); 403 // mCategoryDialog->setSelected (mTodo->categories ());
403 mGeneral->modified (mTodo, modification); 404 mGeneral->modified (mTodo, modification);
404 405
405} 406}
406 407
407void KOTodoEditor::slotLoadTemplate() 408void KOTodoEditor::slotLoadTemplate()
408{ 409{
409 410
410 QString fileName =locateLocal( "templates", "todos" ); 411 QString fileName =locateLocal( "templates", "todos" );
411 QDir t_dir; 412 QDir t_dir;
412 if ( !t_dir.exists(fileName) ) 413 if ( !t_dir.exists(fileName) )
413 t_dir.mkdir ( fileName ); 414 t_dir.mkdir ( fileName );
414 fileName += "/todo"; 415 fileName += "/todo";
415 fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this ); 416 fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this );
416 if ( fileName.length() == 0 ) 417 if ( fileName.length() == 0 )
417 return; 418 return;
418 CalendarLocal cal; 419 CalendarLocal cal;
419 ICalFormat format; 420 ICalFormat format;
420 if ( !format.load( &cal, fileName ) ) { 421 if ( !format.load( &cal, fileName ) ) {
421 KMessageBox::error( this, i18n("Error loading template file\n '%1'.") 422 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
422 .arg( fileName ) ); 423 .arg( fileName ) );
423 return ; 424 return ;
424 } 425 }
425 QPtrList<Todo> todos = cal.todos(); 426 QPtrList<Todo> todos = cal.todos();
426 Todo * todo = todos.first(); 427 Todo * todo = todos.first();
427 if ( !todo ) { 428 if ( !todo ) {
428 KMessageBox::error( this, 429 KMessageBox::error( this,
429 i18n("Template does not\ncontain a valid Todo.")); 430 i18n("Template does not\ncontain a valid Todo."));
430 } else { 431 } else {
431 readTodo( todo ); 432 readTodo( todo );
432 } 433 }
433 434
434} 435}
435 436
436void KOTodoEditor::slotSaveTemplate() 437void KOTodoEditor::slotSaveTemplate()
437{ 438{
438 QString fileName =locateLocal( "templates", "todos" ); 439 QString fileName =locateLocal( "templates", "todos" );
439 QDir t_dir; 440 QDir t_dir;
440 if ( !t_dir.exists(fileName) ) 441 if ( !t_dir.exists(fileName) )
441 t_dir.mkdir ( fileName ); 442 t_dir.mkdir ( fileName );
442 fileName += "/todo"; 443 fileName += "/todo";
443 fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this ); 444 fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this );
444 if ( fileName.length() > 0 ) 445 if ( fileName.length() > 0 )
445 saveTemplate( fileName ); 446 saveTemplate( fileName );
446} 447}
447 448
448void KOTodoEditor::saveTemplate( const QString &templateName ) 449void KOTodoEditor::saveTemplate( const QString &templateName )
449{ 450{
450 Todo *todo = new Todo; 451 Todo *todo = new Todo;
451 writeTodo( todo ); 452 writeTodo( todo );
452 saveAsTemplate( todo, templateName ); 453 saveAsTemplate( todo, templateName );
453} 454}
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index fafcb58..f88403c 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -254,550 +254,550 @@ void KOWhatsNextView::updateView()
254 //mText += " <img src=\""; 254 //mText += " <img src=\"";
255 //mText += ipath; 255 //mText += ipath;
256 //mText += "\">"; 256 //mText += "\">";
257 if ( ! itemAdded ) { 257 if ( ! itemAdded ) {
258 appendDay ( iii, mEventDate ); 258 appendDay ( iii, mEventDate );
259 259
260 } 260 }
261 // for first day (iii == 0) 261 // for first day (iii == 0)
262 // we may have syncevents, or events in the past, which maybe should not be diaplayed 262 // we may have syncevents, or events in the past, which maybe should not be diaplayed
263 // for that reason we cannot append <table> in appendDay () for iii == 0 263 // for that reason we cannot append <table> in appendDay () for iii == 0
264 // we must append it in the first successful call of appendEvent() 264 // we must append it in the first successful call of appendEvent()
265 Event *ev = events.first(); 265 Event *ev = events.first();
266 while(ev) { 266 while(ev) {
267 //qDebug("+++++event append %s", ev->summary().latin1()); 267 //qDebug("+++++event append %s", ev->summary().latin1());
268 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 268 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
269 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) ) 269 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) )
270 itemAdded = true; 270 itemAdded = true;
271 } 271 }
272 ev = events.next(); 272 ev = events.next();
273 } 273 }
274 274
275 //mText += "</table>\n"; 275 //mText += "</table>\n";
276 } 276 }
277 277
278 todo = todos.first(); 278 todo = todos.first();
279 while(todo) { 279 while(todo) {
280 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 280 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
281 if ( ! itemAdded ) { 281 if ( ! itemAdded ) {
282 appendDay ( iii, mEventDate ); 282 appendDay ( iii, mEventDate );
283 //itemAdded = true; 283 //itemAdded = true;
284 } 284 }
285 appendEvent(todo, false , iii!= 0,!itemAdded); 285 appendEvent(todo, false , iii!= 0,!itemAdded);
286 itemAdded = true; 286 itemAdded = true;
287 } 287 }
288 todo = todos.next(); 288 todo = todos.next();
289 } 289 }
290 if ( !itemAdded && iii == 0 ) { 290 if ( !itemAdded && iii == 0 ) {
291 // appendDay ( iii, mEventDate ); 291 // appendDay ( iii, mEventDate );
292 //mText += "<table>"; 292 //mText += "<table>";
293 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n"; 293 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n";
294 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n"; 294 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n";
295 //mText +="</table>"; 295 //mText +="</table>";
296 } 296 }
297 if ( itemAdded ) 297 if ( itemAdded )
298 mText += "</table>\n"; 298 mText += "</table>\n";
299 mEventDate = mEventDate.addDays( 1 ); 299 mEventDate = mEventDate.addDays( 1 );
300 } 300 }
301 301
302 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios; 302 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios;
303 if (todos.count() > 0 && topmostPrios > 0 ) { 303 if (todos.count() > 0 && topmostPrios > 0 ) {
304 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 304 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
305 // mText += "<h2>"; 305 // mText += "<h2>";
306 //<img src=\""; 306 //<img src=\"";
307 // mText += ipath; 307 // mText += ipath;
308 // mText += "\">"; 308 // mText += "\">";
309 // mText += i18n("Overdue To-Do:") + "</h2>\n"; 309 // mText += i18n("Overdue To-Do:") + "</h2>\n";
310 310
311 //mText += "<ul>\n"; 311 //mText += "<ul>\n";
312 bool gotone = false; 312 bool gotone = false;
313 int priority = 1; 313 int priority = 1;
314 int priosFound = 0; 314 int priosFound = 0;
315#ifdef DESKTOP_VERSION 315#ifdef DESKTOP_VERSION
316 mText +="<p></p>"; 316 mText +="<p></p>";
317#endif 317#endif
318 318
319 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n"; 319 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n";
320 mText += "<ul>\n"; 320 mText += "<ul>\n";
321 while (!gotone && priority<6) { 321 while (!gotone && priority<6) {
322 todo = todos.first(); 322 todo = todos.first();
323 while(todo) { 323 while(todo) {
324 if (!todo->isCompleted() && (todo->priority() == priority) ) { 324 if (!todo->isCompleted() && (todo->priority() == priority) ) {
325 mCurrentMaxPrio = priority - priosFound + topmostPrios -1; 325 mCurrentMaxPrio = priority - priosFound + topmostPrios -1;
326 if ( appendTodo(todo) ) 326 if ( appendTodo(todo) )
327 gotone = true; 327 gotone = true;
328 } 328 }
329 todo = todos.next(); 329 todo = todos.next();
330 } 330 }
331 if ( gotone ) { 331 if ( gotone ) {
332 gotone = false; 332 gotone = false;
333 ++priosFound; 333 ++priosFound;
334 if ( priosFound == topmostPrios ) 334 if ( priosFound == topmostPrios )
335 break; 335 break;
336 } 336 }
337 priority++; 337 priority++;
338 // kdDebug() << "adding the todos..." << endl; 338 // kdDebug() << "adding the todos..." << endl;
339 } 339 }
340 mText += "</ul>\n"; 340 mText += "</ul>\n";
341 } 341 }
342 342
343 int replys = 0; 343 int replys = 0;
344 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6)); 344 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6));
345 if (events.count() > 0) { 345 if (events.count() > 0) {
346 Event *ev = events.first(); 346 Event *ev = events.first();
347 while(ev) { 347 while(ev) {
348 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 348 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
349 if (me!=0) { 349 if (me!=0) {
350 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 350 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
351 if (replys == 0) { 351 if (replys == 0) {
352 mText += "<p></p>"; 352 mText += "<p></p>";
353 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 353 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
354 //mText += "<h2>"; 354 //mText += "<h2>";
355 //<img src=\""; 355 //<img src=\"";
356 // mText += ipath; 356 // mText += ipath;
357 // mText += "\">"; 357 // mText += "\">";
358 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 358 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
359 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 359 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
360 mText += "<table>\n"; 360 mText += "<table>\n";
361 } 361 }
362 replys++; 362 replys++;
363 appendEvent(ev,true); 363 appendEvent(ev,true);
364 } 364 }
365 } 365 }
366 ev = events.next(); 366 ev = events.next();
367 } 367 }
368 } 368 }
369 todos = calendar()->todos(); 369 todos = calendar()->todos();
370 if (todos.count() > 0) { 370 if (todos.count() > 0) {
371 Todo *to = todos.first(); 371 Todo *to = todos.first();
372 while(to) { 372 while(to) {
373 if ( !to->isCompleted() ){ 373 if ( !to->isCompleted() ){
374 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 374 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
375 if (me!=0) { 375 if (me!=0) {
376 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 376 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
377 if (replys == 0) { 377 if (replys == 0) {
378 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 378 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
379 mText += "<table>\n"; 379 mText += "<table>\n";
380 } 380 }
381 replys++; 381 replys++;
382 appendEvent(to, true); 382 appendEvent(to, true);
383 } 383 }
384 } 384 }
385 } 385 }
386 to = todos.next(); 386 to = todos.next();
387 } 387 }
388 } 388 }
389 if (replys > 0 ) mText += "</table>\n"; 389 if (replys > 0 ) mText += "</table>\n";
390 390
391 391
392 mText += "</td></tr>\n</table>\n"; 392 mText += "</td></tr>\n</table>\n";
393 393
394 mView->setText(mText); 394 mView->setText(mText);
395 mView->setFocus(); 395 mView->setFocus();
396 396
397 // QPixmap bPix = SmallIcon( "back" ); 397 // QPixmap bPix = SmallIcon( "back" );
398 // qDebug("xxxxxxxxxxxxxxxxxxxxx "); 398 // qDebug("xxxxxxxxxxxxxxxxxxxxx ");
399 // QWidget* test = new QWidget(); 399 // QWidget* test = new QWidget();
400 // test->setBackgroundMode(FixedPixmap ); 400 // test->setBackgroundMode(FixedPixmap );
401 // test->setBackgroundPixmap ( bPix ); 401 // test->setBackgroundPixmap ( bPix );
402 // test->resize( 300, 400 ); 402 // test->resize( 300, 400 );
403 // test->show(); 403 // test->show();
404 // mView->setBackgroundMode(FixedPixmap ); 404 // mView->setBackgroundMode(FixedPixmap );
405 // mView->setBackgroundPixmap ( bPix ); 405 // mView->setBackgroundPixmap ( bPix );
406 // qDebug("%s ",mText.latin1()); 406 // qDebug("%s ",mText.latin1());
407} 407}
408 408
409void KOWhatsNextView::appendDay( int i, QDate eventDate ) 409void KOWhatsNextView::appendDay( int i, QDate eventDate )
410{ 410{
411 QString date; 411 QString date;
412 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer); 412 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer);
413 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) { 413 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) {
414 if ( i == 0 ) { 414 if ( i == 0 ) {
415 //mText += "<table>\n"; 415 //mText += "<table>\n";
416 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>"; 416 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>";
417 } 417 }
418 else if ( i == 1 ) 418 else if ( i == 1 )
419 date = "<em><font color=\"#000080\">" + day + "</font></em>" ; 419 date = "<em><font color=\"#000080\">" + day + "</font></em>" ;
420 else date = "<em><font color=\"#000080\">" + day + "</font></em>"; 420 else date = "<em><font color=\"#000080\">" + day + "</font></em>";
421 mText += "<h2>" + date + "</h2>\n"; 421 mText += "<h2>" + date + "</h2>\n";
422 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 422 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
423 mText += "<table>\n"; 423 mText += "<table>\n";
424 424
425 425
426 426
427 } else { 427 } else {
428 if ( i == 0 ) { 428 if ( i == 0 ) {
429 //mText += "<table>\n"; 429 //mText += "<table>\n";
430 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>"; 430 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>";
431 } 431 }
432 432
433#ifdef DESKTOP_VERSION 433#ifdef DESKTOP_VERSION
434 else if ( i == 1 ) { 434 else if ( i == 1 ) {
435 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ; 435 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ;
436 } 436 }
437 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>"; 437 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>";
438#else 438#else
439 else if ( i == 1 ) { 439 else if ( i == 1 ) {
440 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ; 440 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ;
441 } 441 }
442 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>"; 442 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>";
443 443
444#endif 444#endif
445 mText += "<h2>" + date + "</h2>\n"; 445 mText += "<h2>" + date + "</h2>\n";
446 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 446 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
447 mText += "<table>\n"; 447 mText += "<table>\n";
448 } 448 }
449} 449}
450 450
451 451
452void KOWhatsNextView::showDates(const QDate &, const QDate &) 452void KOWhatsNextView::showDates(const QDate &, const QDate &)
453{ 453{
454 updateView(); 454 updateView();
455} 455}
456 456
457void KOWhatsNextView::showEvents(QPtrList<Event>) 457void KOWhatsNextView::showEvents(QPtrList<Event>)
458{ 458{
459} 459}
460 460
461void KOWhatsNextView::changeEventDisplay(Event *, int action) 461void KOWhatsNextView::changeEventDisplay(Event *, int action)
462{ 462{
463 switch(action) { 463 switch(action) {
464 case KOGlobals::EVENTADDED: 464 case KOGlobals::EVENTADDED:
465 updateView(); 465 updateView();
466 break; 466 break;
467 case KOGlobals::EVENTEDITED: 467 case KOGlobals::EVENTEDITED:
468 updateView(); 468 updateView();
469 break; 469 break;
470 case KOGlobals::EVENTDELETED: 470 case KOGlobals::EVENTDELETED:
471 updateView(); 471 updateView();
472 break; 472 break;
473 default: 473 default:
474 updateView(); 474 updateView();
475 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; 475 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl;
476 } 476 }
477} 477}
478 478
479bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable ) 479bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable )
480{ 480{
481 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") ) 481 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") )
482 return false; 482 return false;
483 QDateTime cdt = QDateTime::currentDateTime(); 483 QDateTime cdt = QDateTime::currentDateTime();
484 QDateTime noc; 484 QDateTime noc;
485 QString tempText; 485 QString tempText;
486 if ( appendTable && !notRed ) { 486 if ( appendTable && !notRed ) {
487 tempText = "<table>"; 487 tempText = "<table>";
488 } 488 }
489 bool ok = true; 489 bool ok = true;
490 if ( reply ) { 490 if ( reply ) {
491 noc = ev->getNextOccurence( cdt, &ok ); 491 noc = ev->getNextOccurence( cdt, &ok );
492 if (! ok && ev->typeID() == eventID) 492 if (! ok && ev->typeID() == eventID)
493 return false; 493 return false;
494 } 494 }
495 bool bDay = false; 495 bool bDay = false;
496 if ( ev->isBirthday() || ev->isAnniversary() ) 496 if ( ev->isBirthday() || ev->isAnniversary() )
497 bDay = true; 497 bDay = true;
498 tempText += "<tr><td><b>"; 498 tempText += "<tr><td><b>";
499 if (ev->typeID() == eventID ) { 499 if (ev->typeID() == eventID ) {
500 if (reply) { 500 if (reply) {
501 if (!ev->doesFloat()) 501 if (!ev->doesFloat())
502 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": "; 502 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": ";
503 else 503 else
504 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 504 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
505 505
506 } else { 506 } else {
507 if (!ev->doesFloat()) { 507 if (!ev->doesFloat()) {
508 Event *event = static_cast<Event *>(ev); 508 Event *event = static_cast<Event *>(ev);
509 QDateTime st,end; 509 QDateTime st,end;
510 if ( event->recurrence()->doesRecur() ) { 510 if ( event->doesRecur() ) {
511 QDate recDate= mEventDate; 511 QDate recDate= mEventDate;
512 int days = event->dtStart().date().daysTo (event->dtEnd().date() ); 512 int days = event->dtStart().date().daysTo (event->dtEnd().date() );
513 while ( ! event->recursOn( recDate ) ) { 513 while ( ! event->recursOn( recDate ) ) {
514 recDate = recDate.addDays( -1 ); 514 recDate = recDate.addDays( -1 );
515 515
516 } 516 }
517 st = QDateTime ( recDate, event->dtStart().time() ); 517 st = QDateTime ( recDate, event->dtStart().time() );
518 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); 518 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() );
519 } 519 }
520 else { 520 else {
521 st = event->dtStart(); 521 st = event->dtStart();
522 end = event->dtEnd(); 522 end = event->dtEnd();
523 } 523 }
524 524
525 525
526 QString dateText; 526 QString dateText;
527 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); 527 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() );
528 if ( st.date() < mEventDate ) 528 if ( st.date() < mEventDate )
529 dateText = "++:++-"; 529 dateText = "++:++-";
530 else 530 else
531 dateText = event->dtStartTimeStr() + "-"; 531 dateText = event->dtStartTimeStr() + "-";
532 if ( KOPrefs::instance()->mWhatsNextTime2Lines ) 532 if ( KOPrefs::instance()->mWhatsNextTime2Lines )
533 dateText += " "; 533 dateText += " ";
534 if ( end.date() > mEventDate ) 534 if ( end.date() > mEventDate )
535 dateText += "++:++"; 535 dateText += "++:++";
536 else 536 else
537 dateText += event->dtEndTimeStr(); 537 dateText += event->dtEndTimeStr();
538 if ( notRed ) 538 if ( notRed )
539 tempText += dateText; 539 tempText += dateText;
540 else { 540 else {
541 if ( end < cdt ) { 541 if ( end < cdt ) {
542 if ( !KOPrefs::instance()->mWNViewShowsPast ) 542 if ( !KOPrefs::instance()->mWNViewShowsPast )
543 return false; 543 return false;
544 tempText += "<font color=\"#F00000\">" + dateText + "</font>"; 544 tempText += "<font color=\"#F00000\">" + dateText + "</font>";
545 } 545 }
546 else if ( st < cdt ) 546 else if ( st < cdt )
547 tempText += "<font color=\"#008000\">" + dateText + "</font>"; 547 tempText += "<font color=\"#008000\">" + dateText + "</font>";
548 else 548 else
549 tempText += dateText; 549 tempText += dateText;
550 550
551 } 551 }
552 552
553 } else { 553 } else {
554 if ( bDay ) { 554 if ( bDay ) {
555 555
556 if ( ev->isBirthday()) 556 if ( ev->isBirthday())
557 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>"; 557 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>";
558 else 558 else
559 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>"; 559 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>";
560 } else { 560 } else {
561 if ( ((Event*)ev)->isMultiDay() ) { 561 if ( ((Event*)ev)->isMultiDay() ) {
562 QString dfs = KGlobal::locale()->dateFormatShort(); 562 QString dfs = KGlobal::locale()->dateFormatShort();
563 KGlobal::locale()->setDateFormatShort("%d.%b"); 563 KGlobal::locale()->setDateFormatShort("%d.%b");
564 tempText +=KGlobal::locale()->formatDate(((Event*)ev)->dtStart().date(), true, KLocale::Userdefined) + "-"; 564 tempText +=KGlobal::locale()->formatDate(((Event*)ev)->dtStart().date(), true, KLocale::Userdefined) + "-";
565 if ( KOPrefs::instance()->mWhatsNextTime2Lines ) 565 if ( KOPrefs::instance()->mWhatsNextTime2Lines )
566 tempText += " "; 566 tempText += " ";
567 tempText +=KGlobal::locale()->formatDate(((Event*)ev)->dtEnd().date(), true, KLocale::Userdefined); 567 tempText +=KGlobal::locale()->formatDate(((Event*)ev)->dtEnd().date(), true, KLocale::Userdefined);
568 KGlobal::locale()->setDateFormatShort(dfs); 568 KGlobal::locale()->setDateFormatShort(dfs);
569 } else { 569 } else {
570 tempText += " " ;//i18n("Allday:"); 570 tempText += " " ;//i18n("Allday:");
571 } 571 }
572 } 572 }
573 573
574 } 574 }
575 } 575 }
576 } else { 576 } else {
577 mTodos.append( ev ); 577 mTodos.append( ev );
578 tempText += i18n("ToDo:"); 578 tempText += i18n("ToDo:");
579 if ( KOPrefs::instance()->mWhatsNextTime2Lines ) 579 if ( KOPrefs::instance()->mWhatsNextTime2Lines )
580 tempText += " "; 580 tempText += " ";
581 if (reply) { 581 if (reply) {
582 tempText += " "; 582 tempText += " ";
583 if ( noc != cdt ) { 583 if ( noc != cdt ) {
584 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 584 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
585 } 585 }
586 } else { 586 } else {
587 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { 587 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) {
588 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 588 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
589 QString dfs = KGlobal::locale()->dateFormatShort(); 589 QString dfs = KGlobal::locale()->dateFormatShort();
590 KGlobal::locale()->setDateFormatShort("%d.%b"); 590 KGlobal::locale()->setDateFormatShort("%d.%b");
591 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; 591 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>";
592 KGlobal::locale()->setDateFormatShort(dfs); 592 KGlobal::locale()->setDateFormatShort(dfs);
593 } else { 593 } else {
594 if (!ev->doesFloat() ) 594 if (!ev->doesFloat() )
595 if( ( (Todo*)ev)->dtDue() < cdt ) { 595 if( ( (Todo*)ev)->dtDue() < cdt ) {
596 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; 596 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>";
597 597
598 598
599 } else 599 } else
600 tempText +=((Todo*)ev)->dtDueTimeStr(); 600 tempText +=((Todo*)ev)->dtDueTimeStr();
601 mTodos.append( ev ); 601 mTodos.append( ev );
602 } 602 }
603 } 603 }
604 } 604 }
605 tempText += "</b></td><td>"; 605 tempText += "</b></td><td>";
606 bool needClose = false; 606 bool needClose = false;
607 if ( ev->cancelled() ) { 607 if ( ev->cancelled() ) {
608 tempText += "<font color=\"#F00000\">[c"; 608 tempText += "<font color=\"#F00000\">[c";
609 needClose =true; 609 needClose =true;
610 610
611 } 611 }
612 if ( ev->isAlarmEnabled() && ev->alarmEnabled()) { 612 if ( ev->isAlarmEnabled() && ev->alarmEnabled()) {
613 if ( !needClose) 613 if ( !needClose)
614 tempText +="["; 614 tempText +="[";
615 tempText += "a"; 615 tempText += "a";
616 needClose =true; 616 needClose =true;
617 617
618 } 618 }
619 if ( ev->description().length() > 0 ) { 619 if ( ev->description().length() > 0 ) {
620 if ( !needClose) 620 if ( !needClose)
621 tempText +="["; 621 tempText +="[";
622 tempText += "i"; 622 tempText += "i";
623 needClose =true; 623 needClose =true;
624 } 624 }
625 if ( ev->recurrence()->doesRecur() ) { 625 if ( ev->doesRecur() ) {
626 if ( !needClose) 626 if ( !needClose)
627 tempText +="["; 627 tempText +="[";
628 tempText += "r"; 628 tempText += "r";
629 needClose =true; 629 needClose =true;
630 } 630 }
631 if ( needClose ) { 631 if ( needClose ) {
632 tempText += "] "; 632 tempText += "] ";
633 } 633 }
634 if ( ev->cancelled() ) 634 if ( ev->cancelled() )
635 tempText += "</font>"; 635 tempText += "</font>";
636 tempText += "<a "; 636 tempText += "<a ";
637 if (ev->typeID() == eventID ) tempText += "href=\"event:"; 637 if (ev->typeID() == eventID ) tempText += "href=\"event:";
638 if (ev->typeID() == todoID ) tempText += "href=\"todo:"; 638 if (ev->typeID() == todoID ) tempText += "href=\"todo:";
639 tempText += ev->uid() + "\">"; 639 tempText += ev->uid() + "\">";
640 if ( ev->summary().length() > 0 ) 640 if ( ev->summary().length() > 0 )
641 tempText += ev->summary(); 641 tempText += ev->summary();
642 else 642 else
643 tempText += i18n("-no summary-"); 643 tempText += i18n("-no summary-");
644 if ( bDay ) { 644 if ( bDay ) {
645 noc = ev->getNextOccurence( cdt.addDays(-1), &ok ); 645 noc = ev->getNextOccurence( cdt.addDays(-1), &ok );
646 if ( ok ) { 646 if ( ok ) {
647 int years = 0; 647 int years = 0;
648 if ( ev->typeID() == todoID ) { 648 if ( ev->typeID() == todoID ) {
649 years = noc.date().year() -((Todo*)ev)->dtDue().date().year(); 649 years = noc.date().year() -((Todo*)ev)->dtDue().date().year();
650 } else 650 } else
651 years = noc.date().year() - ev->dtStart().date().year(); 651 years = noc.date().year() - ev->dtStart().date().year();
652 tempText += i18n(" (%1 y.)"). arg( years ); 652 tempText += i18n(" (%1 y.)"). arg( years );
653 } 653 }
654 } 654 }
655 655
656 tempText += "</a>"; 656 tempText += "</a>";
657 if ( KOPrefs::instance()->mWNViewShowLocation ) 657 if ( KOPrefs::instance()->mWNViewShowLocation )
658 if ( !ev->location().isEmpty() ) 658 if ( !ev->location().isEmpty() )
659 tempText += " ("+ev->location() +")"; 659 tempText += " ("+ev->location() +")";
660 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents) 660 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents)
661 tempText += " ["+ev->relatedTo()->summary() +"]"; 661 tempText += " ["+ev->relatedTo()->summary() +"]";
662 tempText += "</td></tr>\n"; 662 tempText += "</td></tr>\n";
663 mText += tempText; 663 mText += tempText;
664 return true; 664 return true;
665} 665}
666 666
667bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) 667bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub )
668{ 668{
669 if ( mTodos.find( ev ) != mTodos.end() ) return false; 669 if ( mTodos.find( ev ) != mTodos.end() ) return false;
670 670
671 mTodos.append( ev ); 671 mTodos.append( ev );
672 if ( !isSub ) 672 if ( !isSub )
673 mText += "<p>"; 673 mText += "<p>";
674 else 674 else
675 mText += "<li>"; 675 mText += "<li>";
676 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] "; 676 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] ";
677 677
678 678
679 mText += ind; 679 mText += ind;
680 bool needClose = false; 680 bool needClose = false;
681 if ( ev->cancelled() ) { 681 if ( ev->cancelled() ) {
682 mText += "<font color=\"#F00000\">[c"; 682 mText += "<font color=\"#F00000\">[c";
683 needClose =true; 683 needClose =true;
684 684
685 } 685 }
686 if ( ev->isAlarmEnabled() && ev->alarmEnabled() ) { 686 if ( ev->isAlarmEnabled() && ev->alarmEnabled() ) {
687 if ( !needClose) 687 if ( !needClose)
688 mText +="["; 688 mText +="[";
689 mText += "a"; 689 mText += "a";
690 needClose =true; 690 needClose =true;
691 691
692 } 692 }
693 693
694 if ( ev->description().length() > 0 ) { 694 if ( ev->description().length() > 0 ) {
695 if ( !needClose) 695 if ( !needClose)
696 mText +="["; 696 mText +="[";
697 mText += "i"; 697 mText += "i";
698 needClose =true; 698 needClose =true;
699 } 699 }
700 if ( ev->doesRecur() ) { 700 if ( ev->doesRecur() ) {
701 if ( !needClose) 701 if ( !needClose)
702 mText +="["; 702 mText +="[";
703 mText += "r"; 703 mText += "r";
704 needClose =true; 704 needClose =true;
705 } 705 }
706 // if ( ev->recurrence()->doesRecur() ) { 706 // if ( ev->recurrence()->doesRecur() ) {
707 // if ( !needClose) 707 // if ( !needClose)
708 // mText +="("; 708 // mText +="(";
709 // mText += "r"; 709 // mText += "r";
710 // needClose =true; 710 // needClose =true;
711 // } 711 // }
712 if ( needClose ) 712 if ( needClose )
713 mText += "] "; 713 mText += "] ";
714 if ( ev->cancelled() ) 714 if ( ev->cancelled() )
715 mText += "</font>"; 715 mText += "</font>";
716 mText += "<a href=\"todo:" + ev->uid() + "\">"; 716 mText += "<a href=\"todo:" + ev->uid() + "\">";
717 if ( ev->summary().length() > 0 ) 717 if ( ev->summary().length() > 0 )
718 mText += ev->summary(); 718 mText += ev->summary();
719 else 719 else
720 mText += i18n("-no summary-"); 720 mText += i18n("-no summary-");
721 mText += "</a>"; 721 mText += "</a>";
722 if ( ((Todo*)ev)->hasDueDate () ) { 722 if ( ((Todo*)ev)->hasDueDate () ) {
723 QString year = ""; 723 QString year = "";
724 int ye = ((Todo*)ev)->dtDue().date().year(); 724 int ye = ((Todo*)ev)->dtDue().date().year();
725 if ( QDateTime::currentDateTime().date().year() != ye ) 725 if ( QDateTime::currentDateTime().date().year() != ye )
726 year = QString::number( ye ); 726 year = QString::number( ye );
727 QString dfs = KGlobal::locale()->dateFormatShort(); 727 QString dfs = KGlobal::locale()->dateFormatShort();
728 KGlobal::locale()->setDateFormatShort("%d.%b"); 728 KGlobal::locale()->setDateFormatShort("%d.%b");
729 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>"; 729 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>";
730 KGlobal::locale()->setDateFormatShort(dfs); 730 KGlobal::locale()->setDateFormatShort(dfs);
731 } 731 }
732 if ( KOPrefs::instance()->mWNViewShowLocation ) 732 if ( KOPrefs::instance()->mWNViewShowLocation )
733 if ( !ev->location().isEmpty() ) 733 if ( !ev->location().isEmpty() )
734 mText += " ("+ev->location() +")"; 734 mText += " ("+ev->location() +")";
735 if ( !isSub ) { 735 if ( !isSub ) {
736 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents) 736 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents)
737 mText += " ["+ev->relatedTo()->summary() +"]"; 737 mText += " ["+ev->relatedTo()->summary() +"]";
738 mText += "</p>\n"; 738 mText += "</p>\n";
739 } 739 }
740 else { 740 else {
741 ind += "-"; 741 ind += "-";
742 mText += "</li>\n"; 742 mText += "</li>\n";
743 } 743 }
744 QPtrList<Incidence> Relations = ev->relations(); 744 QPtrList<Incidence> Relations = ev->relations();
745 Incidence *to; 745 Incidence *to;
746 for (to=Relations.first();to;to=Relations.next()) { 746 for (to=Relations.first();to;to=Relations.next()) {
747 if (!((Todo*)to)->isCompleted() && ((Todo*)to)->priority() <= mCurrentMaxPrio ) 747 if (!((Todo*)to)->isCompleted() && ((Todo*)to)->priority() <= mCurrentMaxPrio )
748 appendTodo( to, ind , true ); 748 appendTodo( to, ind , true );
749 } 749 }
750 750
751 return true; 751 return true;
752} 752}
753 753
754/* 754/*
755 void KOWhatsNextView::createEventViewer() 755 void KOWhatsNextView::createEventViewer()
756 { 756 {
757 if (!mEventViewer) { 757 if (!mEventViewer) {
758 758
759 mEventViewer = new KOEventViewerDialog(this); 759 mEventViewer = new KOEventViewerDialog(this);
760 } 760 }
761 } 761 }
762*/ 762*/
763void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v ) 763void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v )
764{ 764{
765 mEventViewer = v; 765 mEventViewer = v;
766} 766}
767 767
768// TODO: Create this function in CalendarView and remove it from here 768// TODO: Create this function in CalendarView and remove it from here
769void KOWhatsNextView::showIncidence(const QString &uid) 769void KOWhatsNextView::showIncidence(const QString &uid)
770{ 770{
771 771
772 if ( !mEventViewer ) { 772 if ( !mEventViewer ) {
773 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set "); 773 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set ");
774 return; 774 return;
775 } 775 }
776 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl; 776 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl;
777 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1()); 777 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1());
778 if (uid.startsWith("event:")) { 778 if (uid.startsWith("event:")) {
779#ifdef DESKTOP_VERSION 779#ifdef DESKTOP_VERSION
780 Event *event = calendar()->event(uid.mid(8)); 780 Event *event = calendar()->event(uid.mid(8));
781#else 781#else
782 Event *event = calendar()->event(uid.mid(6)); 782 Event *event = calendar()->event(uid.mid(6));
783#endif 783#endif
784 //qDebug("event %d uid %s ", event, uid.mid(6).latin1()); 784 //qDebug("event %d uid %s ", event, uid.mid(6).latin1());
785 if (!event) return; 785 if (!event) return;
786 //createEventViewer(); 786 //createEventViewer();
787 mEventViewer->setEvent(event); 787 mEventViewer->setEvent(event);
788 } else if (uid.startsWith("todo:")) { 788 } else if (uid.startsWith("todo:")) {
789#ifdef DESKTOP_VERSION 789#ifdef DESKTOP_VERSION
790 Todo *todo = calendar()->todo(uid.mid(7)); 790 Todo *todo = calendar()->todo(uid.mid(7));
791#else 791#else
792 Todo *todo = calendar()->todo(uid.mid(5)); 792 Todo *todo = calendar()->todo(uid.mid(5));
793#endif 793#endif
794 if (!todo) return; 794 if (!todo) return;
795 //createEventViewer(); 795 //createEventViewer();
796 mEventViewer->setTodo(todo); 796 mEventViewer->setTodo(todo);
797 } else { 797 } else {
798 return; 798 return;
799 799
800 } 800 }
801 mEventViewer->showMe(); 801 mEventViewer->showMe();
802 mEventViewer->raise(); 802 mEventViewer->raise();
803} 803}