-rw-r--r-- | korganizer/calendarview.cpp | 2 | ||||
-rw-r--r-- | korganizer/koagenda.cpp | 4 | ||||
-rw-r--r-- | korganizer/koagendaitem.cpp | 2 | ||||
-rw-r--r-- | korganizer/koagendaview.cpp | 2 | ||||
-rw-r--r-- | korganizer/kodaymatrix.cpp | 2 | ||||
-rw-r--r-- | korganizer/koeditorrecurrence.cpp | 172 | ||||
-rw-r--r-- | korganizer/koeventviewer.cpp | 6 | ||||
-rw-r--r-- | korganizer/kolistview.cpp | 4 | ||||
-rw-r--r-- | korganizer/komonthview.cpp | 6 | ||||
-rw-r--r-- | korganizer/kotodoeditor.cpp | 3 | ||||
-rw-r--r-- | korganizer/kowhatsnextview.cpp | 4 |
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 | ||
3510 | void CalendarView::newSubTodo(Todo *parentEvent) | 3510 | void 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 | ||
3519 | void CalendarView::newFloatingEvent() | 3519 | void 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 | ||
3529 | void CalendarView::editEvent( Event *event ) | 3529 | void 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 | } |
3543 | void CalendarView::editJournal( Journal *jour ) | 3543 | void 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 | } |
3550 | void CalendarView::editTodo( Todo *todo ) | 3550 | void 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 | ||
3565 | KOEventViewerDialog* CalendarView::getEventViewerDialog() | 3565 | KOEventViewerDialog* 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 | } |
3585 | void CalendarView::showEvent(Event *event) | 3585 | void CalendarView::showEvent(Event *event) |
3586 | { | 3586 | { |
3587 | getEventViewerDialog()->setEvent(event); | 3587 | getEventViewerDialog()->setEvent(event); |
3588 | getEventViewerDialog()->showMe(); | 3588 | getEventViewerDialog()->showMe(); |
3589 | } | 3589 | } |
3590 | 3590 | ||
3591 | void CalendarView::showTodo(Todo *event) | 3591 | void CalendarView::showTodo(Todo *event) |
3592 | { | 3592 | { |
3593 | getEventViewerDialog()->setTodo(event); | 3593 | getEventViewerDialog()->setTodo(event); |
3594 | getEventViewerDialog()->showMe(); | 3594 | getEventViewerDialog()->showMe(); |
3595 | } | 3595 | } |
3596 | void CalendarView::showJournal( Journal *jour ) | 3596 | void 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 | ||
3614 | void CalendarView::appointment_show() | 3614 | void 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 | ||
3634 | void CalendarView::appointment_edit() | 3634 | void 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 | ||
3654 | void CalendarView::appointment_delete() | 3654 | void 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 | ||
3674 | void CalendarView::todo_resub( Todo * parent, Todo * sub ) | 3674 | void 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 | } |
3684 | void CalendarView::todo_unsub(Todo *anTodo ) | 3684 | void CalendarView::todo_unsub(Todo *anTodo ) |
3685 | { | 3685 | { |
3686 | todo_resub( 0, anTodo ); | 3686 | todo_resub( 0, anTodo ); |
3687 | } | 3687 | } |
3688 | 3688 | ||
3689 | void CalendarView::deleteTodo(Todo *todo) | 3689 | void 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 | } |
3725 | void CalendarView::deleteJournal(Journal *jour) | 3725 | void 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 | ||
3755 | void CalendarView::deleteEvent(Event *anEvent) | 3755 | void 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 | ||
3839 | bool CalendarView::deleteEvent(const QString &uid) | 3839 | bool 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 | ||
3852 | void CalendarView::action_mail() | 3852 | void 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 | ||
3906 | void CalendarView::schedule_publish(Incidence *incidence) | 3906 | void 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 | ||
3967 | void CalendarView::schedule_request(Incidence *incidence) | 3967 | void CalendarView::schedule_request(Incidence *incidence) |
3968 | { | 3968 | { |
3969 | schedule(Scheduler::Request,incidence); | 3969 | schedule(Scheduler::Request,incidence); |
3970 | } | 3970 | } |
3971 | 3971 | ||
3972 | void CalendarView::schedule_refresh(Incidence *incidence) | 3972 | void CalendarView::schedule_refresh(Incidence *incidence) |
3973 | { | 3973 | { |
3974 | schedule(Scheduler::Refresh,incidence); | 3974 | schedule(Scheduler::Refresh,incidence); |
3975 | } | 3975 | } |
3976 | 3976 | ||
3977 | void CalendarView::schedule_cancel(Incidence *incidence) | 3977 | void CalendarView::schedule_cancel(Incidence *incidence) |
3978 | { | 3978 | { |
3979 | schedule(Scheduler::Cancel,incidence); | 3979 | schedule(Scheduler::Cancel,incidence); |
3980 | } | 3980 | } |
3981 | 3981 | ||
3982 | void CalendarView::schedule_add(Incidence *incidence) | 3982 | void CalendarView::schedule_add(Incidence *incidence) |
3983 | { | 3983 | { |
3984 | schedule(Scheduler::Add,incidence); | 3984 | schedule(Scheduler::Add,incidence); |
3985 | } | 3985 | } |
3986 | 3986 | ||
3987 | void CalendarView::schedule_reply(Incidence *incidence) | 3987 | void CalendarView::schedule_reply(Incidence *incidence) |
3988 | { | 3988 | { |
3989 | schedule(Scheduler::Reply,incidence); | 3989 | schedule(Scheduler::Reply,incidence); |
3990 | } | 3990 | } |
3991 | 3991 | ||
3992 | void CalendarView::schedule_counter(Incidence *incidence) | 3992 | void CalendarView::schedule_counter(Incidence *incidence) |
3993 | { | 3993 | { |
3994 | schedule(Scheduler::Counter,incidence); | 3994 | schedule(Scheduler::Counter,incidence); |
3995 | } | 3995 | } |
3996 | 3996 | ||
3997 | void CalendarView::schedule_declinecounter(Incidence *incidence) | 3997 | void CalendarView::schedule_declinecounter(Incidence *incidence) |
3998 | { | 3998 | { |
3999 | schedule(Scheduler::Declinecounter,incidence); | 3999 | schedule(Scheduler::Declinecounter,incidence); |
4000 | } | 4000 | } |
4001 | 4001 | ||
4002 | void CalendarView::schedule_publish_freebusy(int daysToPublish) | 4002 | void 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() | |||
326 | void KOAgenda::shrinkPixmap() | 326 | void KOAgenda::shrinkPixmap() |
327 | { | 327 | { |
328 | mPaintPixmap.resize( 20,20); | 328 | mPaintPixmap.resize( 20,20); |
329 | mInvalidPixmap = true; | 329 | mInvalidPixmap = true; |
330 | } | 330 | } |
331 | void KOAgenda::slotContentMove(int,int) | 331 | void 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 | } |
341 | void KOAgenda::clear() | 341 | void 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 | ||
353 | void KOAgenda::clearSelection() | 353 | void 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 | ||
360 | void KOAgenda::marcus_bains() | 360 | void KOAgenda::marcus_bains() |
361 | { | 361 | { |
362 | if(mMarcusBains) mMarcusBains->updateLocation(true); | 362 | if(mMarcusBains) mMarcusBains->updateLocation(true); |
363 | } | 363 | } |
364 | 364 | ||
365 | 365 | ||
366 | void KOAgenda::changeColumns(int columns) | 366 | void 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 | */ |
381 | bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) | 381 | bool 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 | } |
400 | void KOAgenda::popupMenu() | 400 | void 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 | } |
430 | void KOAgenda::categoryChanged(Incidence * inc) | 430 | void 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 | } |
440 | bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) | 440 | bool 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 | ||
711 | void KOAgenda::newItem( int item ) | 711 | void 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 | } |
727 | void KOAgenda::slotClearSelection() | 727 | void 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 | } |
739 | void KOAgenda::startSelectAction(QPoint viewportPos) | 739 | void 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 | ||
767 | void KOAgenda::performSelectAction(QPoint viewportPos) | 767 | void 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 | ||
814 | void KOAgenda::endSelectAction( bool emitNewEvent ) | 814 | void 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 | ||
826 | void KOAgenda::startItemAction(QPoint viewportPos) | 826 | void 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 | ||
874 | void KOAgenda::performItemAction(QPoint viewportPos) | 874 | void 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 | ||
994 | void KOAgenda::endItemAction() | 994 | void 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 | ||
1110 | void KOAgenda::setNoActionCursor(KOAgendaItem *moveItem,QPoint viewportPos) | 1110 | void 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 | */ |
1163 | void KOAgenda::placeSubCells(KOAgendaItem *placeItem) | 1163 | void 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> |
44 | extern int globalFlagBlockAgenda; | 44 | extern int globalFlagBlockAgenda; |
45 | extern int globalFlagBlockAgendaItemPaint; | 45 | extern int globalFlagBlockAgendaItemPaint; |
46 | extern int globalFlagBlockAgendaItemUpdate; | 46 | extern 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 | ||
56 | QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; | 56 | QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; |
57 | 57 | ||
58 | //-------------------------------------------------------------------------- | 58 | //-------------------------------------------------------------------------- |
59 | 59 | ||
60 | class KOAgendaItemWhatsThis :public QWhatsThis | 60 | class KOAgendaItemWhatsThis :public QWhatsThis |
61 | { | 61 | { |
62 | public: | 62 | public: |
63 | KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; | 63 | KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; |
64 | 64 | ||
65 | protected: | 65 | protected: |
66 | virtual QString text( const QPoint& ) | 66 | virtual QString text( const QPoint& ) |
67 | { | 67 | { |
68 | return _view->getWhatsThisText() ; | 68 | return _view->getWhatsThisText() ; |
69 | } | 69 | } |
70 | private: | 70 | private: |
71 | KOAgendaItem * _view; | 71 | KOAgendaItem * _view; |
72 | }; | 72 | }; |
73 | 73 | ||
74 | KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, | 74 | KOAgendaItem::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 | } |
91 | QString KOAgendaItem::getWhatsThisText() | 91 | QString 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 | ||
101 | void KOAgendaItem::initColor () | 101 | void 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 | } |
139 | void KOAgendaItem::init ( Incidence *incidence, QDate qd ) | 139 | void 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 | ||
165 | KOAgendaItem::~KOAgendaItem() | 165 | KOAgendaItem::~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 | ||
175 | void KOAgendaItem::recreateIncidence() | 175 | void 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 | } |
191 | bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) | 191 | bool 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 | ||
293 | void KOAgendaItem::select(bool selected) | 293 | void 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 | */ |
321 | bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e ) | 321 | bool 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 | } |
336 | void KOAgendaItem::repaintMe( ) | 336 | void KOAgendaItem::repaintMe( ) |
337 | { | 337 | { |
338 | paintMe ( mSelected ); | 338 | paintMe ( mSelected ); |
339 | } | 339 | } |
340 | void KOAgendaItem::paintMe( bool selected, QPainter* paint ) | 340 | void 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 | ||
474 | QPixmap * KOAgendaItem::paintPix() | 474 | QPixmap * 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 | } |
484 | QPixmap * KOAgendaItem::paintPixAllday() | 484 | QPixmap * 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 | */ |
961 | void KOAgendaView::updateConfig() | 961 | void 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 | ||
999 | void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) | 999 | void 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 | ||
1099 | void KOAgendaView::showDates( const QDate &start, const QDate &end ) | 1099 | void 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 | ||
1116 | void KOAgendaView::showEvents(QPtrList<Event>) | 1116 | void 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 | ||
1121 | void KOAgendaView::changeEventDisplay(Event *, int) | 1121 | void 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 | ||
1130 | void KOAgendaView::fillAgenda(const QDate &) | 1130 | void KOAgendaView::fillAgenda(const QDate &) |
1131 | { | 1131 | { |
1132 | // qDebug("KOAgendaView::fillAgenda "); | 1132 | // qDebug("KOAgendaView::fillAgenda "); |
1133 | fillAgenda(); | 1133 | fillAgenda(); |
1134 | } | 1134 | } |
1135 | 1135 | ||
1136 | void KOAgendaView::fillAgenda() | 1136 | void 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 | } |
1357 | void KOAgendaView::repaintAgenda() | 1357 | void 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 | ||
1366 | void KOAgendaView::clearView() | 1366 | void KOAgendaView::clearView() |
1367 | { | 1367 | { |
1368 | mAllDayAgenda->clear(); | 1368 | mAllDayAgenda->clear(); |
1369 | mAgenda->clear(); | 1369 | mAgenda->clear(); |
1370 | } | 1370 | } |
1371 | void KOAgendaView::clearList() | 1371 | void KOAgendaView::clearList() |
1372 | { | 1372 | { |
1373 | clearView(); | 1373 | clearView(); |
1374 | mAllDayAgenda->hideUnused(); | 1374 | mAllDayAgenda->hideUnused(); |
1375 | mAgenda->hideUnused(); | 1375 | mAgenda->hideUnused(); |
1376 | } | 1376 | } |
1377 | 1377 | ||
1378 | void KOAgendaView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 1378 | void 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 | ||
1395 | void KOAgendaView::slotShowDateView( int mode , int d ) | 1395 | void 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 | } |
1406 | void KOAgendaView::newEvent(int gx, int gy) | 1406 | void 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 | ||
1419 | void KOAgendaView::newEvent(int gxStart, int gyStart, int gxEnd, int gyEnd) | 1419 | void 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 | ||
1435 | void KOAgendaView::newEventAllDay(int gx, int ) | 1435 | void 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 | } |
1443 | void KOAgendaView::newTodoAllDay(int gx, int ) | 1443 | void 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 | } |
1450 | void KOAgendaView::newTodo(int gx, int gy ) | 1450 | void 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 | ||
1459 | void KOAgendaView::updateEventIndicatorTop(int newY) | 1459 | void 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 | ||
246 | QString KODayMatrix::deTag( QString mToolTipText ) | 246 | QString KODayMatrix::deTag( QString mToolTipText ) |
247 | { | 247 | { |
248 | 248 | ||
249 | #if QT_VERSION >= 0x030000 | 249 | #if QT_VERSION >= 0x030000 |
250 | mToolTipText.replace( '<' , "<" ); | 250 | mToolTipText.replace( '<' , "<" ); |
251 | mToolTipText.replace( '>' , ">" ); | 251 | mToolTipText.replace( '>' , ">" ); |
252 | #else | 252 | #else |
253 | if ( mToolTipText.find ('<') >= 0 ) { | 253 | if ( mToolTipText.find ('<') >= 0 ) { |
254 | mToolTipText.replace( QRegExp("<") , "<" ); | 254 | mToolTipText.replace( QRegExp("<") , "<" ); |
255 | } | 255 | } |
256 | if ( mToolTipText.find ('>') >= 0 ) { | 256 | if ( mToolTipText.find ('>') >= 0 ) { |
257 | mToolTipText.replace( QRegExp(">") , ">" ); | 257 | mToolTipText.replace( QRegExp(">") , ">" ); |
258 | } | 258 | } |
259 | #endif | 259 | #endif |
260 | return mToolTipText; | 260 | return mToolTipText; |
261 | } | 261 | } |
262 | void KODayMatrix::setCalendar( Calendar *cal ) | 262 | void 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 | ||
271 | QColor KODayMatrix::getShadedColor(QColor color) | 271 | QColor 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 | ||
285 | KODayMatrix::~KODayMatrix() | 285 | KODayMatrix::~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 | /* |
301 | void KODayMatrix::setStartDate(QDate start) | 301 | void KODayMatrix::setStartDate(QDate start) |
302 | { | 302 | { |
303 | updateView(start); | 303 | updateView(start); |
304 | } | 304 | } |
305 | */ | 305 | */ |
306 | 306 | ||
307 | void KODayMatrix::addSelectedDaysTo(DateList& selDays) | 307 | void 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 | ||
340 | bool KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) | 340 | bool 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 | } |
358 | void KODayMatrix::clearSelection() | 358 | void KODayMatrix::clearSelection() |
359 | { | 359 | { |
360 | mSelEnd = mSelStart = NOSELECTION; | 360 | mSelEnd = mSelStart = NOSELECTION; |
361 | } | 361 | } |
362 | 362 | ||
363 | 363 | ||
364 | void KODayMatrix::recalculateToday() | 364 | void 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 | ||
382 | void KODayMatrix::updateView() | 382 | void KODayMatrix::updateView() |
383 | { | 383 | { |
384 | updateView(startdate); | 384 | updateView(startdate); |
385 | } | 385 | } |
386 | void KODayMatrix::repaintViewTimed() | 386 | void 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 | } |
403 | void KODayMatrix::computeEvent(Event *event, int i ) | 403 | void 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 | } |
432 | void KODayMatrix::updateViewTimed() | 432 | void 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 | } |
620 | void KODayMatrix::updateView(QDate actdate) | 620 | void 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 | } |
669 | void KODayMatrix::updateEvents() | 669 | void 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 | ||
695 | const QDate& KODayMatrix::getDate(int offset) | 695 | const 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 | ||
704 | QString KODayMatrix::getHolidayLabel(int offset) | 704 | QString 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 | ||
647 | QDate RecurrenceRangeDialog::endDate() | 647 | QDate RecurrenceRangeDialog::endDate() |
648 | { | 648 | { |
649 | return mRecurrenceRangeWidget->endDate(); | 649 | return mRecurrenceRangeWidget->endDate(); |
650 | } | 650 | } |
651 | 651 | ||
652 | void RecurrenceRangeDialog::setDateTimes( const QDateTime &start, | 652 | void 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 | ||
660 | RecurrenceChooser::RecurrenceChooser( QWidget *parent, const char *name ) : | 660 | RecurrenceChooser::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 | ||
677 | int RecurrenceChooser::type() | 677 | int 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 | ||
689 | void RecurrenceChooser::setType( int type ) | 689 | void 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 | ||
712 | void RecurrenceChooser::emitChoice() | 712 | void RecurrenceChooser::emitChoice() |
713 | { | 713 | { |
714 | emit chosen ( type() ); | 714 | emit chosen ( type() ); |
715 | } | 715 | } |
716 | 716 | ||
717 | /////////////////////////////// Main Widget ///////////////////////////// | 717 | /////////////////////////////// Main Widget ///////////////////////////// |
718 | 718 | ||
719 | KOEditorRecurrence::KOEditorRecurrence( QWidget* parent, const char *name ) : | 719 | KOEditorRecurrence::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 | ||
795 | KOEditorRecurrence::~KOEditorRecurrence() | 795 | KOEditorRecurrence::~KOEditorRecurrence() |
796 | { | 796 | { |
797 | } | 797 | } |
798 | 798 | ||
799 | void KOEditorRecurrence::setEnabled( bool enabled ) | 799 | void 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 | ||
811 | void KOEditorRecurrence::showCurrentRule( int current ) | 811 | void 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 | ||
830 | void KOEditorRecurrence::setDateTimes( QDateTime start, QDateTime end ) | 830 | void 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 | } |
838 | void KOEditorRecurrence::setDefaultsDates( QDateTime from, QDateTime to ) | 838 | void 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 | } |
859 | void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to ) | 859 | void 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 | ||
882 | void KOEditorRecurrence::readEvent(Incidence *event) | 882 | void 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 | ||
1008 | void KOEditorRecurrence::writeEvent( Incidence *event ) | 1010 | void 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 | ||
1090 | void KOEditorRecurrence::setDateTimeStr( const QString &str ) | 1096 | void KOEditorRecurrence::setDateTimeStr( const QString &str ) |
1091 | { | 1097 | { |
1092 | mDateTimeLabel->setText( str ); | 1098 | mDateTimeLabel->setText( str ); |
1093 | } | 1099 | } |
1094 | 1100 | ||
1095 | bool KOEditorRecurrence::validateInput() | 1101 | bool KOEditorRecurrence::validateInput() |
1096 | { | 1102 | { |
1097 | // Check input here | 1103 | // Check input here |
1098 | 1104 | ||
1099 | return true; | 1105 | return true; |
1100 | } | 1106 | } |
1101 | 1107 | ||
1102 | void KOEditorRecurrence::showExceptionsDialog() | 1108 | void 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 | ||
1109 | void KOEditorRecurrence::showRecurrenceRangeDialog() | 1115 | void 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 | } |
110 | void KOEventViewer::setSource(const QString& n) | 110 | void 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 | } |
231 | void KOEventViewer::mailToAttendees( bool all ) | 231 | void 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 | } |
253 | void KOEventViewer::addTag(const QString & tag,const QString & text) | 253 | void 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 | ||
282 | void KOEventViewer::setColorMode( int m ) | 282 | void KOEventViewer::setColorMode( int m ) |
283 | { | 283 | { |
284 | mColorMode = m; | 284 | mColorMode = m; |
285 | } | 285 | } |
286 | void KOEventViewer::appendEvent(Event *event, int mode ) | 286 | void 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 | ||
435 | void KOEventViewer::appendTodo(Todo *event, int mode ) | 435 | void 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 | ||
575 | void KOEventViewer::formatCategories(Incidence *event) | 575 | void 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 | } |
585 | void KOEventViewer::formatAttendees(Incidence *event) | 585 | void 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 | } |
710 | void KOEventViewer::appendJournal(Journal *jour, int mode ) | 710 | void 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 | ||
737 | void KOEventViewer::formatReadOnly(Incidence *event) | 737 | void 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 | ||
70 | extern QPixmap* sgListViewCompletedPix[6]; | 70 | extern QPixmap* sgListViewCompletedPix[6]; |
71 | extern QPixmap* sgListViewJournalPix; | 71 | extern QPixmap* sgListViewJournalPix; |
72 | 72 | ||
73 | class KOListViewWhatsThis :public QWhatsThis | 73 | class KOListViewWhatsThis :public QWhatsThis |
74 | { | 74 | { |
75 | public: | 75 | public: |
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 | ||
78 | protected: | 78 | protected: |
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 | } |
83 | private: | 83 | private: |
84 | QWidget* _wid; | 84 | QWidget* _wid; |
85 | KOListView * _view; | 85 | KOListView * _view; |
86 | }; | 86 | }; |
87 | 87 | ||
88 | 88 | ||
89 | ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) | 89 | ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) |
90 | { | 90 | { |
91 | mItem = item; | 91 | mItem = item; |
92 | mDate = date; | 92 | mDate = date; |
93 | } | 93 | } |
94 | 94 | ||
95 | ListItemVisitor::~ListItemVisitor() | 95 | ListItemVisitor::~ListItemVisitor() |
96 | { | 96 | { |
97 | } | 97 | } |
98 | 98 | ||
99 | bool ListItemVisitor::visit(Event *e) | 99 | bool 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 | ||
161 | bool ListItemVisitor::visit(Todo *t) | 161 | bool 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 | ||
225 | bool ListItemVisitor::visit(Journal * j) | 225 | bool 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 | ||
266 | KOListView::KOListView(Calendar *calendar, QWidget *parent, | 266 | KOListView::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 | ||
403 | KOListView::~KOListView() | 403 | KOListView::~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 | ||
413 | void KOListView::catChanged( Incidence* inc) | 413 | void 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 | } |
421 | QString KOListView::getWhatsThisText(QPoint p) | 421 | QString 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 | ||
433 | void KOListView::setCalendar( int c ) | 433 | void 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 |
541 | QToolTipGroup *MonthViewCell::toolTipGroup() | 541 | QToolTipGroup *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 | ||
548 | void MonthViewCell::setDate( const QDate &date ) | 548 | void 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 | ||
558 | QDate MonthViewCell::date() const | 558 | QDate MonthViewCell::date() const |
559 | { | 559 | { |
560 | return mDate; | 560 | return mDate; |
561 | } | 561 | } |
562 | 562 | ||
563 | void MonthViewCell::setPrimary( bool primary ) | 563 | void MonthViewCell::setPrimary( bool primary ) |
564 | { | 564 | { |
565 | mPrimary = primary; | 565 | mPrimary = primary; |
566 | //setMyPalette(); | 566 | //setMyPalette(); |
567 | } | 567 | } |
568 | void MonthViewCell::setMyPalette() | 568 | void 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 | } |
598 | QPalette MonthViewCell::getPalette () | 598 | QPalette 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 | } |
611 | bool MonthViewCell::isPrimary() const | 611 | bool MonthViewCell::isPrimary() const |
612 | { | 612 | { |
613 | return mPrimary; | 613 | return mPrimary; |
614 | } | 614 | } |
615 | 615 | ||
616 | void MonthViewCell::setHoliday( bool holiday ) | 616 | void MonthViewCell::setHoliday( bool holiday ) |
617 | { | 617 | { |
618 | mHoliday = holiday; | 618 | mHoliday = holiday; |
619 | //setMyPalette(); | 619 | //setMyPalette(); |
620 | } | 620 | } |
621 | 621 | ||
622 | void MonthViewCell::setHoliday( const QString &holiday ) | 622 | void 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 | ||
631 | void MonthViewCell::startUpdateCell() | 631 | void 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 | ||
683 | int MonthViewCell::insertEvent(Event *event) | 683 | int 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 | } |
833 | void MonthViewCell::insertTodo(Todo *todo) | 833 | void 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 | } |
889 | void MonthViewCell::repaintfinishUpdateCell() | 889 | void 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 | } |
899 | void MonthViewCell::finishUpdateCell() | 899 | void 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 | } |
917 | void MonthViewCell::updateCell() | 917 | void 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 | ||
939 | void MonthViewCell::updateConfig( bool bigFont ) // = false | 939 | void 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 | ||
972 | void MonthViewCell::enableScrollBars( bool enabled ) | 972 | void 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 | ||
1002 | Incidence *MonthViewCell::selectedIncidence() | 1002 | Incidence *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 | ||
1015 | QDate MonthViewCell::selectedIncidenceDate() | 1015 | QDate 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 | ||
1023 | void MonthViewCell::deselect() | 1023 | void MonthViewCell::deselect() |
1024 | { | 1024 | { |
1025 | clearSelection(); | 1025 | clearSelection(); |
1026 | enableScrollBars( false ); | 1026 | enableScrollBars( false ); |
1027 | // updateCell(); | 1027 | // updateCell(); |
1028 | } | 1028 | } |
1029 | void MonthViewCell::select() | 1029 | void MonthViewCell::select() |
1030 | { | 1030 | { |
1031 | ;// updateCell(); | 1031 | ;// updateCell(); |
1032 | } | 1032 | } |
1033 | 1033 | ||
1034 | void MonthViewCell::resizeEvent ( QResizeEvent * e ) | 1034 | void 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 | ||
1068 | void MonthViewCell::defaultAction( QListBoxItem *item ) | 1068 | void 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 | } |
1081 | void MonthViewCell::showDay() | 1081 | void MonthViewCell::showDay() |
1082 | { | 1082 | { |
1083 | emit showDaySignal( date() ); | 1083 | emit showDaySignal( date() ); |
1084 | } | 1084 | } |
1085 | void MonthViewCell::newEvent() | 1085 | void 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 | } |
1090 | void MonthViewCell::cellClicked( QListBoxItem *item ) | 1090 | void 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 | ||
1101 | void MonthViewCell::contextMenu( QListBoxItem *item ) | 1101 | void 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 | ||
1113 | void MonthViewCell::selection( QListBoxItem *item ) | 1115 | void 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 | ||
1124 | void MonthViewCell::deHighLight() | 1126 | void 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 |
1134 | bool MonthViewCell::doHighLight( Incidence * inc ) | 1136 | bool 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 | ||
1153 | KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) | 1155 | KOMonthView::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 | ||
1348 | KOMonthView::~KOMonthView() | 1350 | KOMonthView::~KOMonthView() |
1349 | { | 1351 | { |
1350 | delete mContextMenu; | 1352 | delete mContextMenu; |
1351 | } | 1353 | } |
1352 | 1354 | ||
1353 | void KOMonthView::catChanged( Incidence * ) | 1355 | void KOMonthView::catChanged( Incidence * ) |
1354 | { | 1356 | { |
1355 | updateView(); | 1357 | updateView(); |
1356 | } | 1358 | } |
1357 | void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday ) | 1359 | void 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 | ||
206 | void KOTodoEditor::editTodo(Todo *todo, bool editDescription) | 206 | void 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 | ||
222 | void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) | 222 | void 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 | ||
230 | void KOTodoEditor::loadDefaults() | 230 | void KOTodoEditor::loadDefaults() |
231 | { | 231 | { |
232 | setDefaults(QDateTime::currentDateTime().addDays(7),0,false); | 232 | setDefaults(QDateTime::currentDateTime().addDays(7),0,false); |
233 | } | 233 | } |
234 | 234 | ||
235 | bool KOTodoEditor::processInput( bool emitTime ) | 235 | bool 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 | ||
267 | void KOTodoEditor::deleteTodo() | 267 | void 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 | ||
293 | void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) | 293 | void 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 | } |
317 | void KOTodoEditor::checkRecurrence() | 317 | void 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 | } |
343 | void KOTodoEditor::readTodo(Todo *todo) | 343 | void 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 | ||
354 | void KOTodoEditor::writeTodo(Todo *event) | 354 | void 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 | ||
384 | bool KOTodoEditor::validateInput() | 385 | bool 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 | ||
391 | int KOTodoEditor::msgItemDelete() | 392 | int 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 | ||
398 | void KOTodoEditor::modified (int modification) | 399 | void 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 | ||
407 | void KOTodoEditor::slotLoadTemplate() | 408 | void 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 | ||
436 | void KOTodoEditor::slotSaveTemplate() | 437 | void 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 | ||
448 | void KOTodoEditor::saveTemplate( const QString &templateName ) | 449 | void 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 | ||
409 | void KOWhatsNextView::appendDay( int i, QDate eventDate ) | 409 | void 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 | ||
452 | void KOWhatsNextView::showDates(const QDate &, const QDate &) | 452 | void KOWhatsNextView::showDates(const QDate &, const QDate &) |
453 | { | 453 | { |
454 | updateView(); | 454 | updateView(); |
455 | } | 455 | } |
456 | 456 | ||
457 | void KOWhatsNextView::showEvents(QPtrList<Event>) | 457 | void KOWhatsNextView::showEvents(QPtrList<Event>) |
458 | { | 458 | { |
459 | } | 459 | } |
460 | 460 | ||
461 | void KOWhatsNextView::changeEventDisplay(Event *, int action) | 461 | void 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 | ||
479 | bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable ) | 479 | bool 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 | ||
667 | bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) | 667 | bool 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 | */ |
763 | void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v ) | 763 | void 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 |
769 | void KOWhatsNextView::showIncidence(const QString &uid) | 769 | void 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 | } |