summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
-rw-r--r--korganizer/koagenda.cpp1
-rw-r--r--korganizer/kotodoview.cpp3
-rw-r--r--korganizer/mainwindow.cpp8
-rw-r--r--microkde/ofileselector_p.cpp4
5 files changed, 12 insertions, 8 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 7566c6f..4b3f806 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -3488,1030 +3488,1028 @@ void CalendarView::deleteTodo(Todo *todo)
3488 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3488 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3489 updateView(); 3489 updateView();
3490 } 3490 }
3491 break; 3491 break;
3492 } // switch 3492 } // switch
3493 } else { 3493 } else {
3494 checkExternalId( todo ); 3494 checkExternalId( todo );
3495 mCalendar->deleteTodo(todo); 3495 mCalendar->deleteTodo(todo);
3496 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3496 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3497 updateView(); 3497 updateView();
3498 } 3498 }
3499 3499
3500 emit updateSearchDialog(); 3500 emit updateSearchDialog();
3501} 3501}
3502void CalendarView::deleteJournal(Journal *jour) 3502void CalendarView::deleteJournal(Journal *jour)
3503{ 3503{
3504 if (!jour) { 3504 if (!jour) {
3505 KNotifyClient::beep(); 3505 KNotifyClient::beep();
3506 return; 3506 return;
3507 } 3507 }
3508 if (KOPrefs::instance()->mConfirm) { 3508 if (KOPrefs::instance()->mConfirm) {
3509 switch (msgItemDelete( jour->description().left(20))) { 3509 switch (msgItemDelete( jour->description().left(20))) {
3510 case KMessageBox::Continue: // OK 3510 case KMessageBox::Continue: // OK
3511 calendar()->deleteJournal(jour); 3511 calendar()->deleteJournal(jour);
3512 updateView(); 3512 updateView();
3513 break; 3513 break;
3514 } // switch 3514 } // switch
3515 } else { 3515 } else {
3516 calendar()->deleteJournal(jour);; 3516 calendar()->deleteJournal(jour);;
3517 updateView(); 3517 updateView();
3518 } 3518 }
3519 emit updateSearchDialog(); 3519 emit updateSearchDialog();
3520} 3520}
3521 3521
3522void CalendarView::deleteEvent(Event *anEvent) 3522void CalendarView::deleteEvent(Event *anEvent)
3523{ 3523{
3524 if (!anEvent) { 3524 if (!anEvent) {
3525 KNotifyClient::beep(); 3525 KNotifyClient::beep();
3526 return; 3526 return;
3527 } 3527 }
3528 3528
3529 if (anEvent->recurrence()->doesRecur()) { 3529 if (anEvent->recurrence()->doesRecur()) {
3530 QDate itemDate = mViewManager->currentSelectionDate(); 3530 QDate itemDate = mViewManager->currentSelectionDate();
3531 int km; 3531 int km;
3532 if (!itemDate.isValid()) { 3532 if (!itemDate.isValid()) {
3533 //kdDebug() << "Date Not Valid" << endl; 3533 //kdDebug() << "Date Not Valid" << endl;
3534 if (KOPrefs::instance()->mConfirm) { 3534 if (KOPrefs::instance()->mConfirm) {
3535 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3535 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3536 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3536 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3537 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3537 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3538 if ( km == KMessageBox::Continue ) 3538 if ( km == KMessageBox::Continue )
3539 km = KMessageBox::No; // No = all below 3539 km = KMessageBox::No; // No = all below
3540 } else 3540 } else
3541 km = KMessageBox::No; 3541 km = KMessageBox::No;
3542 } else { 3542 } else {
3543 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3543 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3544 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3544 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3545 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3545 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3546 i18n("KO/Pi Confirmation"),i18n("Current"), 3546 i18n("KO/Pi Confirmation"),i18n("Current"),
3547 i18n("All")); 3547 i18n("All"));
3548 } 3548 }
3549 switch(km) { 3549 switch(km) {
3550 3550
3551 case KMessageBox::No: // Continue // all 3551 case KMessageBox::No: // Continue // all
3552 //qDebug("KMessageBox::No "); 3552 //qDebug("KMessageBox::No ");
3553 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3553 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3554 schedule(Scheduler::Cancel,anEvent); 3554 schedule(Scheduler::Cancel,anEvent);
3555 3555
3556 checkExternalId( anEvent); 3556 checkExternalId( anEvent);
3557 mCalendar->deleteEvent(anEvent); 3557 mCalendar->deleteEvent(anEvent);
3558 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3558 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3559 break; 3559 break;
3560 3560
3561 // Disabled because it does not work 3561 // Disabled because it does not work
3562 //#if 0 3562 //#if 0
3563 case KMessageBox::Yes: // just this one 3563 case KMessageBox::Yes: // just this one
3564 //QDate qd = mNavigator->selectedDates().first(); 3564 //QDate qd = mNavigator->selectedDates().first();
3565 //if (!qd.isValid()) { 3565 //if (!qd.isValid()) {
3566 // kdDebug() << "no date selected, or invalid date" << endl; 3566 // kdDebug() << "no date selected, or invalid date" << endl;
3567 // KNotifyClient::beep(); 3567 // KNotifyClient::beep();
3568 // return; 3568 // return;
3569 //} 3569 //}
3570 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3570 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3571 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3571 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3572 anEvent->addExDate(itemDate); 3572 anEvent->addExDate(itemDate);
3573 int duration = anEvent->recurrence()->duration(); 3573 int duration = anEvent->recurrence()->duration();
3574 if ( duration > 0 ) { 3574 if ( duration > 0 ) {
3575 anEvent->recurrence()->setDuration( duration - 1 ); 3575 anEvent->recurrence()->setDuration( duration - 1 );
3576 } 3576 }
3577 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3577 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3578 } 3578 }
3579 break; 3579 break;
3580 //#endif 3580 //#endif
3581 } // switch 3581 } // switch
3582 } else { 3582 } else {
3583 if (KOPrefs::instance()->mConfirm) { 3583 if (KOPrefs::instance()->mConfirm) {
3584 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3584 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3585 i18n("\nAre you sure you want\nto delete this event?"), 3585 i18n("\nAre you sure you want\nto delete this event?"),
3586 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3586 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3587 case KMessageBox::Continue: // OK 3587 case KMessageBox::Continue: // OK
3588 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3588 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3589 schedule(Scheduler::Cancel,anEvent); 3589 schedule(Scheduler::Cancel,anEvent);
3590 checkExternalId( anEvent); 3590 checkExternalId( anEvent);
3591 mCalendar->deleteEvent(anEvent); 3591 mCalendar->deleteEvent(anEvent);
3592 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3592 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3593 break; 3593 break;
3594 } // switch 3594 } // switch
3595 } else { 3595 } else {
3596 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3596 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3597 schedule(Scheduler::Cancel,anEvent); 3597 schedule(Scheduler::Cancel,anEvent);
3598 checkExternalId( anEvent); 3598 checkExternalId( anEvent);
3599 mCalendar->deleteEvent(anEvent); 3599 mCalendar->deleteEvent(anEvent);
3600 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3600 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3601 } 3601 }
3602 } // if-else 3602 } // if-else
3603 emit updateSearchDialog(); 3603 emit updateSearchDialog();
3604} 3604}
3605 3605
3606bool CalendarView::deleteEvent(const QString &uid) 3606bool CalendarView::deleteEvent(const QString &uid)
3607{ 3607{
3608 Event *ev = mCalendar->event(uid); 3608 Event *ev = mCalendar->event(uid);
3609 if (ev) { 3609 if (ev) {
3610 deleteEvent(ev); 3610 deleteEvent(ev);
3611 return true; 3611 return true;
3612 } else { 3612 } else {
3613 return false; 3613 return false;
3614 } 3614 }
3615} 3615}
3616 3616
3617/*****************************************************************************/ 3617/*****************************************************************************/
3618 3618
3619void CalendarView::action_mail() 3619void CalendarView::action_mail()
3620{ 3620{
3621#ifndef KORG_NOMAIL 3621#ifndef KORG_NOMAIL
3622 KOMailClient mailClient; 3622 KOMailClient mailClient;
3623 3623
3624 Incidence *incidence = currentSelection(); 3624 Incidence *incidence = currentSelection();
3625 3625
3626 if (!incidence) { 3626 if (!incidence) {
3627 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3627 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3628 return; 3628 return;
3629 } 3629 }
3630 if(incidence->attendeeCount() == 0 ) { 3630 if(incidence->attendeeCount() == 0 ) {
3631 KMessageBox::sorry(this, 3631 KMessageBox::sorry(this,
3632 i18n("Can't generate mail:\nNo attendees defined.\n")); 3632 i18n("Can't generate mail:\nNo attendees defined.\n"));
3633 return; 3633 return;
3634 } 3634 }
3635 3635
3636 CalendarLocal cal_tmp; 3636 CalendarLocal cal_tmp;
3637 Event *event = 0; 3637 Event *event = 0;
3638 Event *ev = 0; 3638 Event *ev = 0;
3639 if ( incidence && incidence->typeID() == eventID ) { 3639 if ( incidence && incidence->typeID() == eventID ) {
3640 event = static_cast<Event *>(incidence); 3640 event = static_cast<Event *>(incidence);
3641 ev = new Event(*event); 3641 ev = new Event(*event);
3642 cal_tmp.addEvent(ev); 3642 cal_tmp.addEvent(ev);
3643 } 3643 }
3644 ICalFormat mForm(); 3644 ICalFormat mForm();
3645 QString attachment = mForm.toString( &cal_tmp ); 3645 QString attachment = mForm.toString( &cal_tmp );
3646 if (ev) delete(ev); 3646 if (ev) delete(ev);
3647 3647
3648 mailClient.mailAttendees(currentSelection(), attachment); 3648 mailClient.mailAttendees(currentSelection(), attachment);
3649 3649
3650#endif 3650#endif
3651 3651
3652#if 0 3652#if 0
3653 Event *anEvent = 0; 3653 Event *anEvent = 0;
3654 if (mViewManager->currentView()->isEventView()) { 3654 if (mViewManager->currentView()->isEventView()) {
3655 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3655 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3656 } 3656 }
3657 3657
3658 if (!anEvent) { 3658 if (!anEvent) {
3659 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3659 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3660 return; 3660 return;
3661 } 3661 }
3662 if(anEvent->attendeeCount() == 0 ) { 3662 if(anEvent->attendeeCount() == 0 ) {
3663 KMessageBox::sorry(this, 3663 KMessageBox::sorry(this,
3664 i18n("Can't generate mail:\nNo attendees defined.\n")); 3664 i18n("Can't generate mail:\nNo attendees defined.\n"));
3665 return; 3665 return;
3666 } 3666 }
3667 3667
3668 mailobject.emailEvent(anEvent); 3668 mailobject.emailEvent(anEvent);
3669#endif 3669#endif
3670} 3670}
3671 3671
3672 3672
3673void CalendarView::schedule_publish(Incidence *incidence) 3673void CalendarView::schedule_publish(Incidence *incidence)
3674{ 3674{
3675 Event *event = 0; 3675 Event *event = 0;
3676 Todo *todo = 0; 3676 Todo *todo = 0;
3677 3677
3678 if (incidence == 0) { 3678 if (incidence == 0) {
3679 incidence = mViewManager->currentView()->selectedIncidences().first(); 3679 incidence = mViewManager->currentView()->selectedIncidences().first();
3680 if (incidence == 0) { 3680 if (incidence == 0) {
3681 incidence = mTodoList->selectedIncidences().first(); 3681 incidence = mTodoList->selectedIncidences().first();
3682 } 3682 }
3683 } 3683 }
3684 if ( incidence && incidence->typeID() == eventID ) { 3684 if ( incidence && incidence->typeID() == eventID ) {
3685 event = static_cast<Event *>(incidence); 3685 event = static_cast<Event *>(incidence);
3686 } else { 3686 } else {
3687 if ( incidence && incidence->typeID() == todoID ) { 3687 if ( incidence && incidence->typeID() == todoID ) {
3688 todo = static_cast<Todo *>(incidence); 3688 todo = static_cast<Todo *>(incidence);
3689 } 3689 }
3690 } 3690 }
3691 3691
3692 if (!event && !todo) { 3692 if (!event && !todo) {
3693 KMessageBox::sorry(this,i18n("No event selected.")); 3693 KMessageBox::sorry(this,i18n("No event selected."));
3694 return; 3694 return;
3695 } 3695 }
3696 3696
3697 PublishDialog *publishdlg = new PublishDialog(); 3697 PublishDialog *publishdlg = new PublishDialog();
3698 if (incidence->attendeeCount()>0) { 3698 if (incidence->attendeeCount()>0) {
3699 QPtrList<Attendee> attendees = incidence->attendees(); 3699 QPtrList<Attendee> attendees = incidence->attendees();
3700 attendees.first(); 3700 attendees.first();
3701 while ( attendees.current()!=0 ) { 3701 while ( attendees.current()!=0 ) {
3702 publishdlg->addAttendee(attendees.current()); 3702 publishdlg->addAttendee(attendees.current());
3703 attendees.next(); 3703 attendees.next();
3704 } 3704 }
3705 } 3705 }
3706 bool send = true; 3706 bool send = true;
3707 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3707 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3708 if ( publishdlg->exec() != QDialog::Accepted ) 3708 if ( publishdlg->exec() != QDialog::Accepted )
3709 send = false; 3709 send = false;
3710 } 3710 }
3711 if ( send ) { 3711 if ( send ) {
3712 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3712 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3713 if ( event ) { 3713 if ( event ) {
3714 Event *ev = new Event(*event); 3714 Event *ev = new Event(*event);
3715 ev->registerObserver(0); 3715 ev->registerObserver(0);
3716 ev->clearAttendees(); 3716 ev->clearAttendees();
3717 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3717 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3718 delete(ev); 3718 delete(ev);
3719 } 3719 }
3720 } else { 3720 } else {
3721 if ( todo ) { 3721 if ( todo ) {
3722 Todo *ev = new Todo(*todo); 3722 Todo *ev = new Todo(*todo);
3723 ev->registerObserver(0); 3723 ev->registerObserver(0);
3724 ev->clearAttendees(); 3724 ev->clearAttendees();
3725 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3725 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3726 delete(ev); 3726 delete(ev);
3727 } 3727 }
3728 } 3728 }
3729 } 3729 }
3730 } 3730 }
3731 delete publishdlg; 3731 delete publishdlg;
3732} 3732}
3733 3733
3734void CalendarView::schedule_request(Incidence *incidence) 3734void CalendarView::schedule_request(Incidence *incidence)
3735{ 3735{
3736 schedule(Scheduler::Request,incidence); 3736 schedule(Scheduler::Request,incidence);
3737} 3737}
3738 3738
3739void CalendarView::schedule_refresh(Incidence *incidence) 3739void CalendarView::schedule_refresh(Incidence *incidence)
3740{ 3740{
3741 schedule(Scheduler::Refresh,incidence); 3741 schedule(Scheduler::Refresh,incidence);
3742} 3742}
3743 3743
3744void CalendarView::schedule_cancel(Incidence *incidence) 3744void CalendarView::schedule_cancel(Incidence *incidence)
3745{ 3745{
3746 schedule(Scheduler::Cancel,incidence); 3746 schedule(Scheduler::Cancel,incidence);
3747} 3747}
3748 3748
3749void CalendarView::schedule_add(Incidence *incidence) 3749void CalendarView::schedule_add(Incidence *incidence)
3750{ 3750{
3751 schedule(Scheduler::Add,incidence); 3751 schedule(Scheduler::Add,incidence);
3752} 3752}
3753 3753
3754void CalendarView::schedule_reply(Incidence *incidence) 3754void CalendarView::schedule_reply(Incidence *incidence)
3755{ 3755{
3756 schedule(Scheduler::Reply,incidence); 3756 schedule(Scheduler::Reply,incidence);
3757} 3757}
3758 3758
3759void CalendarView::schedule_counter(Incidence *incidence) 3759void CalendarView::schedule_counter(Incidence *incidence)
3760{ 3760{
3761 schedule(Scheduler::Counter,incidence); 3761 schedule(Scheduler::Counter,incidence);
3762} 3762}
3763 3763
3764void CalendarView::schedule_declinecounter(Incidence *incidence) 3764void CalendarView::schedule_declinecounter(Incidence *incidence)
3765{ 3765{
3766 schedule(Scheduler::Declinecounter,incidence); 3766 schedule(Scheduler::Declinecounter,incidence);
3767} 3767}
3768 3768
3769void CalendarView::schedule_publish_freebusy(int daysToPublish) 3769void CalendarView::schedule_publish_freebusy(int daysToPublish)
3770{ 3770{
3771 QDateTime start = QDateTime::currentDateTime(); 3771 QDateTime start = QDateTime::currentDateTime();
3772 QDateTime end = start.addDays(daysToPublish); 3772 QDateTime end = start.addDays(daysToPublish);
3773 3773
3774 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3774 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3775 freebusy->setOrganizer(KOPrefs::instance()->email()); 3775 freebusy->setOrganizer(KOPrefs::instance()->email());
3776 3776
3777 3777
3778 PublishDialog *publishdlg = new PublishDialog(); 3778 PublishDialog *publishdlg = new PublishDialog();
3779 if ( publishdlg->exec() == QDialog::Accepted ) { 3779 if ( publishdlg->exec() == QDialog::Accepted ) {
3780 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3780 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3781 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3781 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3782 delete(freebusy); 3782 delete(freebusy);
3783 } 3783 }
3784 } 3784 }
3785 delete publishdlg; 3785 delete publishdlg;
3786} 3786}
3787 3787
3788void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3788void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3789{ 3789{
3790 Event *event = 0; 3790 Event *event = 0;
3791 Todo *todo = 0; 3791 Todo *todo = 0;
3792 3792
3793 if (incidence == 0) { 3793 if (incidence == 0) {
3794 incidence = mViewManager->currentView()->selectedIncidences().first(); 3794 incidence = mViewManager->currentView()->selectedIncidences().first();
3795 if (incidence == 0) { 3795 if (incidence == 0) {
3796 incidence = mTodoList->selectedIncidences().first(); 3796 incidence = mTodoList->selectedIncidences().first();
3797 } 3797 }
3798 } 3798 }
3799 if ( incidence && incidence->typeID() == eventID ) { 3799 if ( incidence && incidence->typeID() == eventID ) {
3800 event = static_cast<Event *>(incidence); 3800 event = static_cast<Event *>(incidence);
3801 } 3801 }
3802 if ( incidence && incidence->typeID() == todoID ) { 3802 if ( incidence && incidence->typeID() == todoID ) {
3803 todo = static_cast<Todo *>(incidence); 3803 todo = static_cast<Todo *>(incidence);
3804 } 3804 }
3805 3805
3806 if (!event && !todo) { 3806 if (!event && !todo) {
3807 KMessageBox::sorry(this,i18n("No event selected.")); 3807 KMessageBox::sorry(this,i18n("No event selected."));
3808 return; 3808 return;
3809 } 3809 }
3810 3810
3811 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3811 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3812 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3812 KMessageBox::sorry(this,i18n("The event has no attendees."));
3813 return; 3813 return;
3814 } 3814 }
3815 3815
3816 Event *ev = 0; 3816 Event *ev = 0;
3817 if (event) ev = new Event(*event); 3817 if (event) ev = new Event(*event);
3818 Todo *to = 0; 3818 Todo *to = 0;
3819 if (todo) to = new Todo(*todo); 3819 if (todo) to = new Todo(*todo);
3820 3820
3821 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3821 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3822 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3822 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3823 if (!me) { 3823 if (!me) {
3824 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3824 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3825 return; 3825 return;
3826 } 3826 }
3827 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3827 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3828 StatusDialog *statdlg = new StatusDialog(this); 3828 StatusDialog *statdlg = new StatusDialog(this);
3829 if (!statdlg->exec()==QDialog::Accepted) return; 3829 if (!statdlg->exec()==QDialog::Accepted) return;
3830 me->setStatus( statdlg->status() ); 3830 me->setStatus( statdlg->status() );
3831 delete(statdlg); 3831 delete(statdlg);
3832 } 3832 }
3833 Attendee *menew = new Attendee(*me); 3833 Attendee *menew = new Attendee(*me);
3834 if (ev) { 3834 if (ev) {
3835 ev->clearAttendees(); 3835 ev->clearAttendees();
3836 ev->addAttendee(menew,false); 3836 ev->addAttendee(menew,false);
3837 } else { 3837 } else {
3838 if (to) { 3838 if (to) {
3839 todo->clearAttendees(); 3839 todo->clearAttendees();
3840 todo->addAttendee(menew,false); 3840 todo->addAttendee(menew,false);
3841 } 3841 }
3842 } 3842 }
3843 } 3843 }
3844 3844
3845 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3845 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3846 if (ev) { 3846 if (ev) {
3847 if ( !dlg->addMessage(ev,method) ) delete(ev); 3847 if ( !dlg->addMessage(ev,method) ) delete(ev);
3848 } else { 3848 } else {
3849 if (to) { 3849 if (to) {
3850 if ( !dlg->addMessage(to,method) ) delete(to); 3850 if ( !dlg->addMessage(to,method) ) delete(to);
3851 } 3851 }
3852 } 3852 }
3853} 3853}
3854 3854
3855void CalendarView::openAddressbook() 3855void CalendarView::openAddressbook()
3856{ 3856{
3857 KRun::runCommand("kaddressbook"); 3857 KRun::runCommand("kaddressbook");
3858} 3858}
3859 3859
3860void CalendarView::setModified(bool modified) 3860void CalendarView::setModified(bool modified)
3861{ 3861{
3862 if ( modified ) 3862 if ( modified )
3863 emit signalmodified(); 3863 emit signalmodified();
3864 if (mModified != modified) { 3864 if (mModified != modified) {
3865 mModified = modified; 3865 mModified = modified;
3866 emit modifiedChanged(mModified); 3866 emit modifiedChanged(mModified);
3867 } 3867 }
3868} 3868}
3869 3869
3870bool CalendarView::isReadOnly() 3870bool CalendarView::isReadOnly()
3871{ 3871{
3872 return mReadOnly; 3872 return mReadOnly;
3873} 3873}
3874 3874
3875void CalendarView::setReadOnly(bool readOnly) 3875void CalendarView::setReadOnly(bool readOnly)
3876{ 3876{
3877 if (mReadOnly != readOnly) { 3877 if (mReadOnly != readOnly) {
3878 mReadOnly = readOnly; 3878 mReadOnly = readOnly;
3879 emit readOnlyChanged(mReadOnly); 3879 emit readOnlyChanged(mReadOnly);
3880 } 3880 }
3881} 3881}
3882 3882
3883bool CalendarView::isModified() 3883bool CalendarView::isModified()
3884{ 3884{
3885 return mModified; 3885 return mModified;
3886} 3886}
3887void CalendarView::slotprintSelInc() 3887void CalendarView::slotprintSelInc()
3888{ 3888{
3889 if ( currentSelection() == 0 ) { 3889 if ( currentSelection() == 0 ) {
3890 KMessageBox::sorry(this,i18n("There is nothing selected!")); 3890 KMessageBox::sorry(this,i18n("There is nothing selected!"));
3891 return; 3891 return;
3892 } 3892 }
3893 showIncidence(); 3893 showIncidence();
3894 getEventViewerDialog()->print(); 3894 getEventViewerDialog()->print();
3895 3895
3896} 3896}
3897void CalendarView::printSetup() 3897void CalendarView::printSetup()
3898{ 3898{
3899#ifndef KORG_NOPRINTER 3899#ifndef KORG_NOPRINTER
3900 createPrinter(); 3900 createPrinter();
3901 3901
3902 mCalPrinter->setupPrinter(); 3902 mCalPrinter->setupPrinter();
3903#endif 3903#endif
3904} 3904}
3905 3905
3906void CalendarView::print() 3906void CalendarView::print()
3907{ 3907{
3908#ifndef KORG_NOPRINTER 3908#ifndef KORG_NOPRINTER
3909 createPrinter(); 3909 createPrinter();
3910 3910
3911 DateList tmpDateList = mNavigator->selectedDates(); 3911 DateList tmpDateList = mNavigator->selectedDates();
3912 mCalPrinter->print(CalPrinter::Month, 3912 mCalPrinter->print(CalPrinter::Month,
3913 tmpDateList.first(), tmpDateList.last()); 3913 tmpDateList.first(), tmpDateList.last());
3914#endif 3914#endif
3915} 3915}
3916 3916
3917void CalendarView::printPreview() 3917void CalendarView::printPreview()
3918{ 3918{
3919#ifndef KORG_NOPRINTER 3919#ifndef KORG_NOPRINTER
3920 kdDebug() << "CalendarView::printPreview()" << endl; 3920 kdDebug() << "CalendarView::printPreview()" << endl;
3921 3921
3922 createPrinter(); 3922 createPrinter();
3923 3923
3924 DateList tmpDateList = mNavigator->selectedDates(); 3924 DateList tmpDateList = mNavigator->selectedDates();
3925 3925
3926 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3926 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3927 tmpDateList.last()); 3927 tmpDateList.last());
3928#endif 3928#endif
3929} 3929}
3930 3930
3931void CalendarView::exportICalendar() 3931void CalendarView::exportICalendar()
3932{ 3932{
3933 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3933 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3934 3934
3935 // Force correct extension 3935 // Force correct extension
3936 if (filename.right(4) != ".ics") filename += ".ics"; 3936 if (filename.right(4) != ".ics") filename += ".ics";
3937 3937
3938 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3938 FileStorage storage( mCalendar, filename, new ICalFormat() );
3939 storage.save(); 3939 storage.save();
3940} 3940}
3941 3941
3942bool CalendarView::exportVCalendar( QString filename ) 3942bool CalendarView::exportVCalendar( QString filename )
3943{ 3943{
3944 if (mCalendar->journals().count() > 0) { 3944 if (mCalendar->journals().count() > 0) {
3945 int result = KMessageBox::warningContinueCancel(this, 3945 int result = KMessageBox::warningContinueCancel(this,
3946 i18n("The journal entries can not be\nexported to a vCalendar file."), 3946 i18n("The journal entries can not be\nexported to a vCalendar file."),
3947 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3947 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3948 true); 3948 true);
3949 if (result != KMessageBox::Continue) return false; 3949 if (result != KMessageBox::Continue) return false;
3950 } 3950 }
3951 3951
3952 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3952 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3953 3953
3954 // Force correct extension 3954 // Force correct extension
3955 if (filename.right(4) != ".vcs") filename += ".vcs"; 3955 if (filename.right(4) != ".vcs") filename += ".vcs";
3956 3956
3957 FileStorage storage( mCalendar, filename, new VCalFormat ); 3957 FileStorage storage( mCalendar, filename, new VCalFormat );
3958 return storage.save(); 3958 return storage.save();
3959 3959
3960} 3960}
3961 3961
3962void CalendarView::eventUpdated(Incidence *) 3962void CalendarView::eventUpdated(Incidence *)
3963{ 3963{
3964 setModified(); 3964 setModified();
3965 // Don't call updateView here. The code, which has caused the update of the 3965 // Don't call updateView here. The code, which has caused the update of the
3966 // event is responsible for updating the view. 3966 // event is responsible for updating the view.
3967 // updateView(); 3967 // updateView();
3968} 3968}
3969 3969
3970void CalendarView::adaptNavigationUnits() 3970void CalendarView::adaptNavigationUnits()
3971{ 3971{
3972 if (mViewManager->currentView()->isEventView()) { 3972 if (mViewManager->currentView()->isEventView()) {
3973 int days = mViewManager->currentView()->currentDateCount(); 3973 int days = mViewManager->currentView()->currentDateCount();
3974 if (days == 1) { 3974 if (days == 1) {
3975 emit changeNavStringPrev(i18n("&Previous Day")); 3975 emit changeNavStringPrev(i18n("&Previous Day"));
3976 emit changeNavStringNext(i18n("&Next Day")); 3976 emit changeNavStringNext(i18n("&Next Day"));
3977 } else { 3977 } else {
3978 emit changeNavStringPrev(i18n("&Previous Week")); 3978 emit changeNavStringPrev(i18n("&Previous Week"));
3979 emit changeNavStringNext(i18n("&Next Week")); 3979 emit changeNavStringNext(i18n("&Next Week"));
3980 } 3980 }
3981 } 3981 }
3982} 3982}
3983 3983
3984void CalendarView::processMainViewSelection( Incidence *incidence ) 3984void CalendarView::processMainViewSelection( Incidence *incidence )
3985{ 3985{
3986 if ( incidence ) mTodoList->clearSelection(); 3986 if ( incidence ) mTodoList->clearSelection();
3987 processIncidenceSelection( incidence ); 3987 processIncidenceSelection( incidence );
3988} 3988}
3989 3989
3990void CalendarView::processTodoListSelection( Incidence *incidence ) 3990void CalendarView::processTodoListSelection( Incidence *incidence )
3991{ 3991{
3992 if ( incidence && mViewManager->currentView() ) { 3992 if ( incidence && mViewManager->currentView() ) {
3993 mViewManager->currentView()->clearSelection(); 3993 mViewManager->currentView()->clearSelection();
3994 } 3994 }
3995 processIncidenceSelection( incidence ); 3995 processIncidenceSelection( incidence );
3996} 3996}
3997 3997
3998void CalendarView::processIncidenceSelection( Incidence *incidence ) 3998void CalendarView::processIncidenceSelection( Incidence *incidence )
3999{ 3999{
4000 emit incidenceSelected( incidence );
4000 if ( incidence == mSelectedIncidence ) return; 4001 if ( incidence == mSelectedIncidence ) return;
4001
4002 mSelectedIncidence = incidence; 4002 mSelectedIncidence = incidence;
4003 4003
4004 emit incidenceSelected( mSelectedIncidence );
4005
4006 if ( incidence && incidence->typeID() == eventID ) { 4004 if ( incidence && incidence->typeID() == eventID ) {
4007 Event *event = static_cast<Event *>( incidence ); 4005 Event *event = static_cast<Event *>( incidence );
4008 if ( event->organizer() == KOPrefs::instance()->email() ) { 4006 if ( event->organizer() == KOPrefs::instance()->email() ) {
4009 emit organizerEventsSelected( true ); 4007 emit organizerEventsSelected( true );
4010 } else { 4008 } else {
4011 emit organizerEventsSelected(false); 4009 emit organizerEventsSelected(false);
4012 } 4010 }
4013 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4011 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4014 KOPrefs::instance()->email() ) ) { 4012 KOPrefs::instance()->email() ) ) {
4015 emit groupEventsSelected( true ); 4013 emit groupEventsSelected( true );
4016 } else { 4014 } else {
4017 emit groupEventsSelected(false); 4015 emit groupEventsSelected(false);
4018 } 4016 }
4019 return; 4017 return;
4020 } else { 4018 } else {
4021 if ( incidence && incidence->typeID() == todoID ) { 4019 if ( incidence && incidence->typeID() == todoID ) {
4022 emit todoSelected( true ); 4020 emit todoSelected( true );
4023 Todo *event = static_cast<Todo *>( incidence ); 4021 Todo *event = static_cast<Todo *>( incidence );
4024 if ( event->organizer() == KOPrefs::instance()->email() ) { 4022 if ( event->organizer() == KOPrefs::instance()->email() ) {
4025 emit organizerEventsSelected( true ); 4023 emit organizerEventsSelected( true );
4026 } else { 4024 } else {
4027 emit organizerEventsSelected(false); 4025 emit organizerEventsSelected(false);
4028 } 4026 }
4029 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4027 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4030 KOPrefs::instance()->email() ) ) { 4028 KOPrefs::instance()->email() ) ) {
4031 emit groupEventsSelected( true ); 4029 emit groupEventsSelected( true );
4032 } else { 4030 } else {
4033 emit groupEventsSelected(false); 4031 emit groupEventsSelected(false);
4034 } 4032 }
4035 return; 4033 return;
4036 } else { 4034 } else {
4037 emit todoSelected( false ); 4035 emit todoSelected( false );
4038 emit organizerEventsSelected(false); 4036 emit organizerEventsSelected(false);
4039 emit groupEventsSelected(false); 4037 emit groupEventsSelected(false);
4040 } 4038 }
4041 return; 4039 return;
4042 } 4040 }
4043 4041
4044 /* if ( incidence && incidence->typeID() == todoID ) { 4042 /* if ( incidence && incidence->typeID() == todoID ) {
4045 emit todoSelected( true ); 4043 emit todoSelected( true );
4046 } else { 4044 } else {
4047 emit todoSelected( false ); 4045 emit todoSelected( false );
4048 }*/ 4046 }*/
4049} 4047}
4050 4048
4051 4049
4052void CalendarView::checkClipboard() 4050void CalendarView::checkClipboard()
4053{ 4051{
4054#ifndef KORG_NODND 4052#ifndef KORG_NODND
4055 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 4053 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
4056 emit pasteEnabled(true); 4054 emit pasteEnabled(true);
4057 } else { 4055 } else {
4058 emit pasteEnabled(false); 4056 emit pasteEnabled(false);
4059 } 4057 }
4060#endif 4058#endif
4061} 4059}
4062 4060
4063void CalendarView::showDates(const DateList &selectedDates) 4061void CalendarView::showDates(const DateList &selectedDates)
4064{ 4062{
4065 // kdDebug() << "CalendarView::selectDates()" << endl; 4063 // kdDebug() << "CalendarView::selectDates()" << endl;
4066 4064
4067 4065
4068 if ( !mBlockShowDates ) { 4066 if ( !mBlockShowDates ) {
4069 if ( mViewManager->currentView() ) { 4067 if ( mViewManager->currentView() ) {
4070 updateView( selectedDates.first(), selectedDates.last() ); 4068 updateView( selectedDates.first(), selectedDates.last() );
4071 } else { 4069 } else {
4072 mViewManager->showAgendaView(); 4070 mViewManager->showAgendaView();
4073 } 4071 }
4074 } 4072 }
4075 4073
4076 QDate date = selectedDates.first(); 4074 QDate date = selectedDates.first();
4077 if ( ! date.isValid() ) { 4075 if ( ! date.isValid() ) {
4078 topLevelWidget()->setCaption(""); 4076 topLevelWidget()->setCaption("");
4079 return; 4077 return;
4080 } 4078 }
4081 4079
4082 QString selDates; 4080 QString selDates;
4083 selDates = KGlobal::locale()->formatDate( date, true); 4081 selDates = KGlobal::locale()->formatDate( date, true);
4084 if (selectedDates.first() < selectedDates.last() ) 4082 if (selectedDates.first() < selectedDates.last() )
4085 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 4083 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
4086 else { 4084 else {
4087 QString addString; 4085 QString addString;
4088 if ( date == QDateTime::currentDateTime().date() ) 4086 if ( date == QDateTime::currentDateTime().date() )
4089 addString = i18n("Today"); 4087 addString = i18n("Today");
4090 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 4088 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
4091 addString = i18n("Tomorrow"); 4089 addString = i18n("Tomorrow");
4092 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 4090 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
4093 addString = i18n("Yesterday"); 4091 addString = i18n("Yesterday");
4094 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 4092 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
4095 addString = i18n("Day before yesterday"); 4093 addString = i18n("Day before yesterday");
4096 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 4094 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
4097 addString = i18n("Day after tomorrow"); 4095 addString = i18n("Day after tomorrow");
4098 if ( !addString.isEmpty() ) { 4096 if ( !addString.isEmpty() ) {
4099 topLevelWidget()->setCaption( addString+", " + selDates ); 4097 topLevelWidget()->setCaption( addString+", " + selDates );
4100 return; 4098 return;
4101 } 4099 }
4102 } 4100 }
4103 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 4101 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
4104 4102
4105} 4103}
4106 4104
4107QPtrList<CalFilter> CalendarView::filters() 4105QPtrList<CalFilter> CalendarView::filters()
4108{ 4106{
4109 return mFilters; 4107 return mFilters;
4110 4108
4111} 4109}
4112void CalendarView::editFilters() 4110void CalendarView::editFilters()
4113{ 4111{
4114 // kdDebug() << "CalendarView::editFilters()" << endl; 4112 // kdDebug() << "CalendarView::editFilters()" << endl;
4115 4113
4116 CalFilter *filter = mFilters.first(); 4114 CalFilter *filter = mFilters.first();
4117 while(filter) { 4115 while(filter) {
4118 filter = mFilters.next(); 4116 filter = mFilters.next();
4119 } 4117 }
4120 4118
4121 mDialogManager->showFilterEditDialog(&mFilters); 4119 mDialogManager->showFilterEditDialog(&mFilters);
4122 updateFilter(); 4120 updateFilter();
4123} 4121}
4124void CalendarView::toggleFilter() 4122void CalendarView::toggleFilter()
4125{ 4123{
4126 if ( mLeftFrame->isHidden() ) { 4124 if ( mLeftFrame->isHidden() ) {
4127 toggleExpand(); 4125 toggleExpand();
4128 showFilter( true ); 4126 showFilter( true );
4129 } else 4127 } else
4130 showFilter(! mCalEditView->isVisible()); 4128 showFilter(! mCalEditView->isVisible());
4131} 4129}
4132 4130
4133KOFilterView *CalendarView::filterView() 4131KOFilterView *CalendarView::filterView()
4134{ 4132{
4135 return mFilterView; 4133 return mFilterView;
4136} 4134}
4137void CalendarView::selectFilter( int fil ) 4135void CalendarView::selectFilter( int fil )
4138{ 4136{
4139 mFilterView->setSelectedFilter( fil ); 4137 mFilterView->setSelectedFilter( fil );
4140 updateUnmanagedViews(); 4138 updateUnmanagedViews();
4141} 4139}
4142void CalendarView::showFilter(bool visible) 4140void CalendarView::showFilter(bool visible)
4143{ 4141{
4144#if 1 4142#if 1
4145 if (visible) { 4143 if (visible) {
4146 mCalEditView->readConfig(); 4144 mCalEditView->readConfig();
4147 mCalEditView->show(); 4145 mCalEditView->show();
4148 QValueList<int> sizes; 4146 QValueList<int> sizes;
4149 sizes = mLeftFrame->sizes(); 4147 sizes = mLeftFrame->sizes();
4150 if ( sizes.count() == 4 && sizes[3] < 20 ) { 4148 if ( sizes.count() == 4 && sizes[3] < 20 ) {
4151 sizes.clear(); 4149 sizes.clear();
4152 sizes << 100; 4150 sizes << 100;
4153 sizes << 0; 4151 sizes << 0;
4154 sizes << 0; 4152 sizes << 0;
4155 sizes << 100; 4153 sizes << 100;
4156 mLeftFrame->setSizes(sizes); 4154 mLeftFrame->setSizes(sizes);
4157 } 4155 }
4158#if 0 4156#if 0
4159 sizes = mLeftFrame->sizes(); 4157 sizes = mLeftFrame->sizes();
4160 int ccc = 0; 4158 int ccc = 0;
4161 while ( ccc < sizes.count()) { 4159 while ( ccc < sizes.count()) {
4162 qDebug("size %d %d ", ccc, sizes[ccc]); 4160 qDebug("size %d %d ", ccc, sizes[ccc]);
4163 ++ccc; 4161 ++ccc;
4164 } 4162 }
4165#endif 4163#endif
4166 4164
4167 } 4165 }
4168 else { 4166 else {
4169 mCalEditView->hide(); 4167 mCalEditView->hide();
4170 } 4168 }
4171#else 4169#else
4172 if (visible) mFilterView->show(); 4170 if (visible) mFilterView->show();
4173 else mFilterView->hide(); 4171 else mFilterView->hide();
4174#endif 4172#endif
4175} 4173}
4176void CalendarView::toggleFilerEnabled( ) 4174void CalendarView::toggleFilerEnabled( )
4177{ 4175{
4178 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 4176 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
4179 if ( !mFilterView->filtersEnabled() ) 4177 if ( !mFilterView->filtersEnabled() )
4180 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 4178 topLevelWidget()->setCaption( i18n("Filter disabled ") );
4181 updateUnmanagedViews(); 4179 updateUnmanagedViews();
4182 4180
4183} 4181}
4184void CalendarView::updateFilter() 4182void CalendarView::updateFilter()
4185{ 4183{
4186 CalFilter *filter = mFilterView->selectedFilter(); 4184 CalFilter *filter = mFilterView->selectedFilter();
4187 if (filter) { 4185 if (filter) {
4188 QString mess; 4186 QString mess;
4189 if (mFilterView->filtersEnabled()) { 4187 if (mFilterView->filtersEnabled()) {
4190 mess = i18n("Filter selected: ")+filter->name(); 4188 mess = i18n("Filter selected: ")+filter->name();
4191 filter->setEnabled(true); 4189 filter->setEnabled(true);
4192 } 4190 }
4193 else filter->setEnabled(false); 4191 else filter->setEnabled(false);
4194 mCalendar->setFilter(filter); 4192 mCalendar->setFilter(filter);
4195 updateView(); 4193 updateView();
4196 if ( !mess.isEmpty() ) 4194 if ( !mess.isEmpty() )
4197 topLevelWidget()->setCaption( mess ); 4195 topLevelWidget()->setCaption( mess );
4198 4196
4199 } 4197 }
4200 emit filtersUpdated(); 4198 emit filtersUpdated();
4201} 4199}
4202 4200
4203void CalendarView::filterEdited() 4201void CalendarView::filterEdited()
4204{ 4202{
4205 mFilterView->updateFilters(); 4203 mFilterView->updateFilters();
4206 updateFilter(); 4204 updateFilter();
4207 writeSettings(); 4205 writeSettings();
4208} 4206}
4209 4207
4210 4208
4211void CalendarView::takeOverEvent() 4209void CalendarView::takeOverEvent()
4212{ 4210{
4213 Incidence *incidence = currentSelection(); 4211 Incidence *incidence = currentSelection();
4214 4212
4215 if (!incidence) return; 4213 if (!incidence) return;
4216 4214
4217 incidence->setOrganizer(KOPrefs::instance()->email()); 4215 incidence->setOrganizer(KOPrefs::instance()->email());
4218 incidence->recreate(); 4216 incidence->recreate();
4219 incidence->setReadOnly(false); 4217 incidence->setReadOnly(false);
4220 4218
4221 updateView(); 4219 updateView();
4222} 4220}
4223 4221
4224void CalendarView::takeOverCalendar() 4222void CalendarView::takeOverCalendar()
4225{ 4223{
4226 // TODO: Create Calendar::allIncidences() function and use it here 4224 // TODO: Create Calendar::allIncidences() function and use it here
4227 4225
4228 clearAllViews(); 4226 clearAllViews();
4229 QPtrList<Event> events = mCalendar->events(); 4227 QPtrList<Event> events = mCalendar->events();
4230 for(uint i=0; i<events.count(); ++i) { 4228 for(uint i=0; i<events.count(); ++i) {
4231 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 4229 events.at(i)->setOrganizer(KOPrefs::instance()->email());
4232 events.at(i)->recreate(); 4230 events.at(i)->recreate();
4233 events.at(i)->setReadOnly(false); 4231 events.at(i)->setReadOnly(false);
4234 } 4232 }
4235 4233
4236 QPtrList<Todo> todos = mCalendar->todos(); 4234 QPtrList<Todo> todos = mCalendar->todos();
4237 for(uint i=0; i<todos.count(); ++i) { 4235 for(uint i=0; i<todos.count(); ++i) {
4238 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 4236 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
4239 todos.at(i)->recreate(); 4237 todos.at(i)->recreate();
4240 todos.at(i)->setReadOnly(false); 4238 todos.at(i)->setReadOnly(false);
4241 } 4239 }
4242 4240
4243 QPtrList<Journal> journals = mCalendar->journals(); 4241 QPtrList<Journal> journals = mCalendar->journals();
4244 for(uint i=0; i<journals.count(); ++i) { 4242 for(uint i=0; i<journals.count(); ++i) {
4245 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 4243 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
4246 journals.at(i)->recreate(); 4244 journals.at(i)->recreate();
4247 journals.at(i)->setReadOnly(false); 4245 journals.at(i)->setReadOnly(false);
4248 } 4246 }
4249 4247
4250 updateView(); 4248 updateView();
4251} 4249}
4252 4250
4253void CalendarView::showIntro() 4251void CalendarView::showIntro()
4254{ 4252{
4255 kdDebug() << "To be implemented." << endl; 4253 kdDebug() << "To be implemented." << endl;
4256} 4254}
4257 4255
4258QWidgetStack *CalendarView::viewStack() 4256QWidgetStack *CalendarView::viewStack()
4259{ 4257{
4260 return mRightFrame; 4258 return mRightFrame;
4261} 4259}
4262 4260
4263QWidget *CalendarView::leftFrame() 4261QWidget *CalendarView::leftFrame()
4264{ 4262{
4265 return ( QWidget *)mLeftFrame; 4263 return ( QWidget *)mLeftFrame;
4266} 4264}
4267 4265
4268DateNavigator *CalendarView::dateNavigator() 4266DateNavigator *CalendarView::dateNavigator()
4269{ 4267{
4270 return mNavigator; 4268 return mNavigator;
4271} 4269}
4272 4270
4273KDateNavigator* CalendarView::dateNavigatorWidget() 4271KDateNavigator* CalendarView::dateNavigatorWidget()
4274{ 4272{
4275 return mDateNavigator->navigatorView(); 4273 return mDateNavigator->navigatorView();
4276} 4274}
4277void CalendarView::toggleDateNavigatorWidget() 4275void CalendarView::toggleDateNavigatorWidget()
4278{ 4276{
4279 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4277 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4280 4278
4281 if (!KOPrefs::instance()->mShowDateNavigator ) 4279 if (!KOPrefs::instance()->mShowDateNavigator )
4282 mDateNavigator->hide(); 4280 mDateNavigator->hide();
4283 else 4281 else
4284 mDateNavigator->show(); 4282 mDateNavigator->show();
4285} 4283}
4286void CalendarView::addView(KOrg::BaseView *view) 4284void CalendarView::addView(KOrg::BaseView *view)
4287{ 4285{
4288 mViewManager->addView(view); 4286 mViewManager->addView(view);
4289} 4287}
4290 4288
4291void CalendarView::showView(KOrg::BaseView *view) 4289void CalendarView::showView(KOrg::BaseView *view)
4292{ 4290{
4293 mViewManager->showView(view, mLeftFrame->isVisible()); 4291 mViewManager->showView(view, mLeftFrame->isVisible());
4294} 4292}
4295 4293
4296Incidence *CalendarView::currentSelection() 4294Incidence *CalendarView::currentSelection()
4297{ 4295{
4298 return mViewManager->currentSelection(); 4296 return mViewManager->currentSelection();
4299} 4297}
4300void CalendarView::toggleAllDaySize() 4298void CalendarView::toggleAllDaySize()
4301{ 4299{
4302 /* 4300 /*
4303 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4301 if ( KOPrefs::instance()->mAllDaySize > 47 )
4304 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4302 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4305 else 4303 else
4306 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4304 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4307 */ 4305 */
4308 viewManager()->agendaView()->toggleAllDay(); 4306 viewManager()->agendaView()->toggleAllDay();
4309} 4307}
4310void CalendarView::toggleExpand() 4308void CalendarView::toggleExpand()
4311{ 4309{
4312 // if ( mLeftFrame->isHidden() ) { 4310 // if ( mLeftFrame->isHidden() ) {
4313 // mLeftFrame->show(); 4311 // mLeftFrame->show();
4314 // emit calendarViewExpanded( false ); 4312 // emit calendarViewExpanded( false );
4315 // } else { 4313 // } else {
4316 // mLeftFrame->hide(); 4314 // mLeftFrame->hide();
4317 // emit calendarViewExpanded( true ); 4315 // emit calendarViewExpanded( true );
4318 // } 4316 // }
4319 //qDebug(" CalendarView::toggleExpand()"); 4317 //qDebug(" CalendarView::toggleExpand()");
4320 globalFlagBlockAgenda = 1; 4318 globalFlagBlockAgenda = 1;
4321 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4319 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4322 globalFlagBlockAgenda = 5; 4320 globalFlagBlockAgenda = 5;
4323 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4321 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4324 //mViewManager->showView( 0, true ); 4322 //mViewManager->showView( 0, true );
4325} 4323}
4326 4324
4327void CalendarView::calendarModified( bool modified, Calendar * ) 4325void CalendarView::calendarModified( bool modified, Calendar * )
4328{ 4326{
4329 setModified( modified ); 4327 setModified( modified );
4330} 4328}
4331 4329
4332Todo *CalendarView::selectedTodo() 4330Todo *CalendarView::selectedTodo()
4333{ 4331{
4334 Incidence *incidence = currentSelection(); 4332 Incidence *incidence = currentSelection();
4335 if ( incidence && incidence->typeID() == todoID ) { 4333 if ( incidence && incidence->typeID() == todoID ) {
4336 return static_cast<Todo *>( incidence ); 4334 return static_cast<Todo *>( incidence );
4337 } 4335 }
4338 4336
4339 incidence = mTodoList->selectedIncidences().first(); 4337 incidence = mTodoList->selectedIncidences().first();
4340 if ( incidence && incidence->typeID() == todoID ) { 4338 if ( incidence && incidence->typeID() == todoID ) {
4341 return static_cast<Todo *>( incidence ); 4339 return static_cast<Todo *>( incidence );
4342 } 4340 }
4343 4341
4344 return 0; 4342 return 0;
4345} 4343}
4346 4344
4347void CalendarView::showIncidence() 4345void CalendarView::showIncidence()
4348{ 4346{
4349 mViewerCallerIsSearchDialog = false; 4347 mViewerCallerIsSearchDialog = false;
4350 Incidence *incidence = currentSelection(); 4348 Incidence *incidence = currentSelection();
4351 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4349 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4352 if ( incidence ) { 4350 if ( incidence ) {
4353 ShowIncidenceVisitor v; 4351 ShowIncidenceVisitor v;
4354 v.act( incidence, this ); 4352 v.act( incidence, this );
4355 } 4353 }
4356} 4354}
4357void CalendarView::editIncidenceDescription() 4355void CalendarView::editIncidenceDescription()
4358{ 4356{
4359 mFlagEditDescription = true; 4357 mFlagEditDescription = true;
4360 editIncidence(); 4358 editIncidence();
4361 mFlagEditDescription = false; 4359 mFlagEditDescription = false;
4362} 4360}
4363void CalendarView::editIncidence() 4361void CalendarView::editIncidence()
4364{ 4362{
4365 // qDebug("editIncidence() "); 4363 // qDebug("editIncidence() ");
4366 Incidence *incidence = currentSelection(); 4364 Incidence *incidence = currentSelection();
4367 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4365 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4368 if ( incidence ) { 4366 if ( incidence ) {
4369 EditIncidenceVisitor v; 4367 EditIncidenceVisitor v;
4370 v.act( incidence, this ); 4368 v.act( incidence, this );
4371 } 4369 }
4372} 4370}
4373 4371
4374void CalendarView::deleteIncidence() 4372void CalendarView::deleteIncidence()
4375{ 4373{
4376 Incidence *incidence = currentSelection(); 4374 Incidence *incidence = currentSelection();
4377 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4375 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4378 if ( incidence ) { 4376 if ( incidence ) {
4379 deleteIncidence(incidence); 4377 deleteIncidence(incidence);
4380 } 4378 }
4381} 4379}
4382void CalendarView::showIncidence(QString uid) 4380void CalendarView::showIncidence(QString uid)
4383{ 4381{
4384 Incidence *inc = mCalendar->incidence( uid ); 4382 Incidence *inc = mCalendar->incidence( uid );
4385 if ( inc ) 4383 if ( inc )
4386 showIncidence( inc ); 4384 showIncidence( inc );
4387} 4385}
4388void CalendarView::showIncidence(Incidence *incidence) 4386void CalendarView::showIncidence(Incidence *incidence)
4389{ 4387{
4390 mViewerCallerIsSearchDialog = false; 4388 mViewerCallerIsSearchDialog = false;
4391 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4389 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4392 if ( sender() && mDialogManager->getSearchDialog() ) { 4390 if ( sender() && mDialogManager->getSearchDialog() ) {
4393 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4391 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4394 mViewerCallerIsSearchDialog = true; 4392 mViewerCallerIsSearchDialog = true;
4395 } 4393 }
4396 } 4394 }
4397 if ( incidence ) { 4395 if ( incidence ) {
4398 ShowIncidenceVisitor v; 4396 ShowIncidenceVisitor v;
4399 v.act( incidence, this ); 4397 v.act( incidence, this );
4400 } 4398 }
4401} 4399}
4402 4400
4403void CalendarView::editIncidence(Incidence *incidence) 4401void CalendarView::editIncidence(Incidence *incidence)
4404{ 4402{
4405 if ( incidence ) { 4403 if ( incidence ) {
4406 4404
4407 EditIncidenceVisitor v; 4405 EditIncidenceVisitor v;
4408 v.act( incidence, this ); 4406 v.act( incidence, this );
4409 4407
4410 } 4408 }
4411} 4409}
4412 4410
4413void CalendarView::deleteIncidence(Incidence *incidence) 4411void CalendarView::deleteIncidence(Incidence *incidence)
4414{ 4412{
4415 //qDebug(" CalendarView::deleteIncidence "); 4413 //qDebug(" CalendarView::deleteIncidence ");
4416 if ( incidence ) { 4414 if ( incidence ) {
4417 DeleteIncidenceVisitor v; 4415 DeleteIncidenceVisitor v;
4418 v.act( incidence, this ); 4416 v.act( incidence, this );
4419 } 4417 }
4420} 4418}
4421 4419
4422 4420
4423void CalendarView::lookForOutgoingMessages() 4421void CalendarView::lookForOutgoingMessages()
4424{ 4422{
4425 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4423 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4426 ogd->loadMessages(); 4424 ogd->loadMessages();
4427} 4425}
4428 4426
4429void CalendarView::lookForIncomingMessages() 4427void CalendarView::lookForIncomingMessages()
4430{ 4428{
4431 IncomingDialog *icd = mDialogManager->incomingDialog(); 4429 IncomingDialog *icd = mDialogManager->incomingDialog();
4432 icd->retrieve(); 4430 icd->retrieve();
4433} 4431}
4434 4432
4435bool CalendarView::removeCompletedSubTodos( Todo* t ) 4433bool CalendarView::removeCompletedSubTodos( Todo* t )
4436{ 4434{
4437 bool deleteTodo = true; 4435 bool deleteTodo = true;
4438 QPtrList<Incidence> subTodos; 4436 QPtrList<Incidence> subTodos;
4439 Incidence *aTodo; 4437 Incidence *aTodo;
4440 subTodos = t->relations(); 4438 subTodos = t->relations();
4441 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4439 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4442 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4440 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4443 deleteTodo = false; 4441 deleteTodo = false;
4444 } 4442 }
4445 if ( deleteTodo ) { 4443 if ( deleteTodo ) {
4446 if ( t->isCompleted() && !t->doesRecur()) { 4444 if ( t->isCompleted() && !t->doesRecur()) {
4447 checkExternalId( t ); 4445 checkExternalId( t );
4448 mCalendar->deleteTodo( t ); 4446 mCalendar->deleteTodo( t );
4449 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4447 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4450 } 4448 }
4451 else 4449 else
4452 deleteTodo = false; 4450 deleteTodo = false;
4453 } 4451 }
4454 return deleteTodo; 4452 return deleteTodo;
4455 4453
4456} 4454}
4457void CalendarView::purgeCompleted() 4455void CalendarView::purgeCompleted()
4458{ 4456{
4459 int result = KMessageBox::warningContinueCancel(this, 4457 int result = KMessageBox::warningContinueCancel(this,
4460 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 4458 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
4461 4459
4462 if (result == KMessageBox::Continue) { 4460 if (result == KMessageBox::Continue) {
4463 4461
4464 QPtrList<Todo> todoCal; 4462 QPtrList<Todo> todoCal;
4465 QPtrList<Todo> rootTodos; 4463 QPtrList<Todo> rootTodos;
4466 //QPtrList<Incidence> rel; 4464 //QPtrList<Incidence> rel;
4467 Todo *aTodo; 4465 Todo *aTodo;
4468 todoCal = calendar()->todos(); 4466 todoCal = calendar()->todos();
4469 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4467 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4470 if ( !aTodo->relatedTo() ) 4468 if ( !aTodo->relatedTo() )
4471 rootTodos.append( aTodo ); 4469 rootTodos.append( aTodo );
4472 } 4470 }
4473 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4471 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4474 removeCompletedSubTodos( aTodo ); 4472 removeCompletedSubTodos( aTodo );
4475 } 4473 }
4476 4474
4477 updateView(); 4475 updateView();
4478 } 4476 }
4479} 4477}
4480 4478
4481void CalendarView::slotCalendarChanged() 4479void CalendarView::slotCalendarChanged()
4482{ 4480{
4483 ; 4481 ;
4484} 4482}
4485 4483
4486void CalendarView::keyPressEvent ( QKeyEvent *e) 4484void CalendarView::keyPressEvent ( QKeyEvent *e)
4487{ 4485{
4488 //qDebug(" alendarView::keyPressEvent "); 4486 //qDebug(" alendarView::keyPressEvent ");
4489 e->ignore(); 4487 e->ignore();
4490} 4488}
4491 4489
4492 4490
4493bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4491bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4494{ 4492{
4495 4493
4496 if ( manager != mSyncManager) 4494 if ( manager != mSyncManager)
4497 qDebug("KO: Internal error-1. SyncManager mismatch "); 4495 qDebug("KO: Internal error-1. SyncManager mismatch ");
4498 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4496 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4499 qDebug("KO: SyncKDE request detected!"); 4497 qDebug("KO: SyncKDE request detected!");
4500 } 4498 }
4501 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4499 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4502 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4500 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4503 return syncCalendar( filename, mode ); 4501 return syncCalendar( filename, mode );
4504} 4502}
4505bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4503bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4506{ 4504{
4507 //mSyncManager = manager; 4505 //mSyncManager = manager;
4508 if ( manager != mSyncManager) 4506 if ( manager != mSyncManager)
4509 qDebug("KO: Internal error-2. SyncManager mismatch "); 4507 qDebug("KO: Internal error-2. SyncManager mismatch ");
4510 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4508 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4511 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4509 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4512 if ( resource == "sharp" ) 4510 if ( resource == "sharp" )
4513 syncExternal( 0 ); 4511 syncExternal( 0 );
4514 if ( resource == "phone" ) 4512 if ( resource == "phone" )
4515 syncExternal( 1 ); 4513 syncExternal( 1 );
4516 // pending setmodified 4514 // pending setmodified
4517 return true; 4515 return true;
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 92c1cd6..acdf5a0 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -1,669 +1,668 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 Marcus Bains line. 5 Marcus Bains line.
6 Copyright (c) 2001 Ali Rahimi 6 Copyright (c) 2001 Ali Rahimi
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or 10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version. 11 (at your option) any later version.
12 12
13 This program is distributed in the hope that it will be useful, 13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details. 16 GNU General Public License for more details.
17 17
18 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 21
22 As a special exception, permission is given to link this program 22 As a special exception, permission is given to link this program
23 with any edition of Qt, and distribute the resulting executable, 23 with any edition of Qt, and distribute the resulting executable,
24 without including the source code for Qt in the source distribution. 24 without including the source code for Qt in the source distribution.
25*/ 25*/
26 26
27#ifndef _WIN32_ 27#ifndef _WIN32_
28#define protected public 28#define protected public
29#include <qwidget.h> 29#include <qwidget.h>
30#undef protected 30#undef protected
31#endif 31#endif
32#include <qintdict.h> 32#include <qintdict.h>
33#include <qdatetime.h> 33#include <qdatetime.h>
34#include <qapplication.h> 34#include <qapplication.h>
35#include <qpopupmenu.h> 35#include <qpopupmenu.h>
36#include <qcursor.h> 36#include <qcursor.h>
37#include <qpainter.h> 37#include <qpainter.h>
38 38
39#include <kdebug.h> 39#include <kdebug.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <kiconloader.h> 41#include <kiconloader.h>
42#include <kglobal.h> 42#include <kglobal.h>
43 43
44#include "koagendaitem.h" 44#include "koagendaitem.h"
45#include "koprefs.h" 45#include "koprefs.h"
46#include "koglobals.h" 46#include "koglobals.h"
47 47
48#include "koagenda.h" 48#include "koagenda.h"
49 49
50#include <libkcal/event.h> 50#include <libkcal/event.h>
51#include <libkcal/todo.h> 51#include <libkcal/todo.h>
52 52
53#ifndef DESKTOP_VERSION 53#ifndef DESKTOP_VERSION
54#include <qpe/qpeapplication.h> 54#include <qpe/qpeapplication.h>
55#endif 55#endif
56 56
57//extern bool globalFlagBlockPainting; 57//extern bool globalFlagBlockPainting;
58extern int globalFlagBlockAgenda; 58extern int globalFlagBlockAgenda;
59extern int globalFlagBlockAgendaItemPaint; 59extern int globalFlagBlockAgendaItemPaint;
60extern int globalFlagBlockAgendaItemUpdate; 60extern int globalFlagBlockAgendaItemUpdate;
61extern int globalFlagBlockStartup; 61extern int globalFlagBlockStartup;
62 62
63 63
64//////////////////////////////////////////////////////////////////////////// 64////////////////////////////////////////////////////////////////////////////
65MarcusBains::MarcusBains(KOAgenda *_agenda,const char *name) 65MarcusBains::MarcusBains(KOAgenda *_agenda,const char *name)
66 : QFrame(_agenda->viewport(),name), agenda(_agenda) 66 : QFrame(_agenda->viewport(),name), agenda(_agenda)
67{ 67{
68 setLineWidth(0); 68 setLineWidth(0);
69 setMargin(0); 69 setMargin(0);
70 setBackgroundColor(Qt::red); 70 setBackgroundColor(Qt::red);
71 minutes = new QTimer(this); 71 minutes = new QTimer(this);
72 connect(minutes, SIGNAL(timeout()), this, SLOT(updateLoc())); 72 connect(minutes, SIGNAL(timeout()), this, SLOT(updateLoc()));
73 minutes->start(0, true); 73 minutes->start(0, true);
74 mTimeBox = new QLabel(this); 74 mTimeBox = new QLabel(this);
75 mTimeBox->setAlignment(Qt::AlignRight | Qt::AlignBottom); 75 mTimeBox->setAlignment(Qt::AlignRight | Qt::AlignBottom);
76 QPalette pal = mTimeBox->palette(); 76 QPalette pal = mTimeBox->palette();
77 pal.setColor(QColorGroup::Foreground, Qt::red); 77 pal.setColor(QColorGroup::Foreground, Qt::red);
78 mTimeBox->setPalette(pal); 78 mTimeBox->setPalette(pal);
79 //mTimeBox->setAutoMask(true); 79 //mTimeBox->setAutoMask(true);
80 80
81 agenda->addChild(mTimeBox); 81 agenda->addChild(mTimeBox);
82 82
83 oldToday = -1; 83 oldToday = -1;
84} 84}
85 85
86MarcusBains::~MarcusBains() 86MarcusBains::~MarcusBains()
87{ 87{
88 //delete minutes; 88 //delete minutes;
89} 89}
90 90
91int MarcusBains::todayColumn() 91int MarcusBains::todayColumn()
92{ 92{
93 QDate currentDate = QDate::currentDate(); 93 QDate currentDate = QDate::currentDate();
94 94
95 DateList dateList = agenda->dateList(); 95 DateList dateList = agenda->dateList();
96 DateList::ConstIterator it; 96 DateList::ConstIterator it;
97 int col = 0; 97 int col = 0;
98 for(it = dateList.begin(); it != dateList.end(); ++it) { 98 for(it = dateList.begin(); it != dateList.end(); ++it) {
99 if((*it) == currentDate) 99 if((*it) == currentDate)
100 return KOGlobals::self()->reverseLayout() ? 100 return KOGlobals::self()->reverseLayout() ?
101 agenda->columns() - 1 - col : col; 101 agenda->columns() - 1 - col : col;
102 ++col; 102 ++col;
103 } 103 }
104 104
105 return -1; 105 return -1;
106} 106}
107void MarcusBains::updateLoc() 107void MarcusBains::updateLoc()
108{ 108{
109 updateLocation(); 109 updateLocation();
110} 110}
111void MarcusBains::updateLocation(bool recalculate) 111void MarcusBains::updateLocation(bool recalculate)
112{ 112{
113 113
114 QTime tim = QTime::currentTime(); 114 QTime tim = QTime::currentTime();
115 //qDebug(" MarcusBains::updateLocation %s ", tim.toString().latin1()); 115 //qDebug(" MarcusBains::updateLocation %s ", tim.toString().latin1());
116 if((tim.hour() == 0) && (oldTime.hour()==23)) 116 if((tim.hour() == 0) && (oldTime.hour()==23))
117 recalculate = true; 117 recalculate = true;
118 118
119 int mins = tim.hour()*60 + tim.minute(); 119 int mins = tim.hour()*60 + tim.minute();
120 int minutesPerCell = 24 * 60 / agenda->rows(); 120 int minutesPerCell = 24 * 60 / agenda->rows();
121 int y = mins*agenda->gridSpacingY()/minutesPerCell; 121 int y = mins*agenda->gridSpacingY()/minutesPerCell;
122 int today = recalculate ? todayColumn() : oldToday; 122 int today = recalculate ? todayColumn() : oldToday;
123 int x = agenda->gridSpacingX()*today; 123 int x = agenda->gridSpacingX()*today;
124 bool disabled = !(KOPrefs::instance()->mMarcusBainsEnabled); 124 bool disabled = !(KOPrefs::instance()->mMarcusBainsEnabled);
125 125
126 oldTime = tim; 126 oldTime = tim;
127 oldToday = today; 127 oldToday = today;
128 128
129 if(disabled || (today<0)) { 129 if(disabled || (today<0)) {
130 hide(); mTimeBox->hide(); 130 hide(); mTimeBox->hide();
131 return; 131 return;
132 } else { 132 } else {
133 show(); mTimeBox->show(); 133 show(); mTimeBox->show();
134 } 134 }
135 135
136 if(recalculate) 136 if(recalculate)
137 setFixedSize(agenda->gridSpacingX(),1); 137 setFixedSize(agenda->gridSpacingX(),1);
138 agenda->moveChild(this, x, y); 138 agenda->moveChild(this, x, y);
139 raise(); 139 raise();
140 140
141 if(recalculate) 141 if(recalculate)
142 //mTimeBox->setFont(QFont("helvetica",10)); 142 //mTimeBox->setFont(QFont("helvetica",10));
143 mTimeBox->setFont(KOPrefs::instance()->mMarcusBainsFont); 143 mTimeBox->setFont(KOPrefs::instance()->mMarcusBainsFont);
144 144
145 mTimeBox->setText(KGlobal::locale()->formatTime(tim, KOPrefs::instance()->mMarcusBainsShowSeconds)); 145 mTimeBox->setText(KGlobal::locale()->formatTime(tim, KOPrefs::instance()->mMarcusBainsShowSeconds));
146 mTimeBox->adjustSize(); 146 mTimeBox->adjustSize();
147 // the -2 below is there because there is a bug in this program 147 // the -2 below is there because there is a bug in this program
148 // somewhere, where the last column of this widget is a few pixels 148 // somewhere, where the last column of this widget is a few pixels
149 // narrower than the other columns. 149 // narrower than the other columns.
150 int offs = (today==agenda->columns()-1) ? -4 : 0; 150 int offs = (today==agenda->columns()-1) ? -4 : 0;
151 agenda->moveChild(mTimeBox, 151 agenda->moveChild(mTimeBox,
152 x+agenda->gridSpacingX()-mTimeBox->width()+offs-1, 152 x+agenda->gridSpacingX()-mTimeBox->width()+offs-1,
153 y-mTimeBox->height()); 153 y-mTimeBox->height());
154 mTimeBox->raise(); 154 mTimeBox->raise();
155 //mTimeBox->setAutoMask(true); 155 //mTimeBox->setAutoMask(true);
156 int secs = QTime::currentTime().second(); 156 int secs = QTime::currentTime().second();
157 qDebug("second %d ", secs );
158 minutes->start( (60 - secs +1)*1000 ,true); 157 minutes->start( (60 - secs +1)*1000 ,true);
159} 158}
160 159
161 160
162//////////////////////////////////////////////////////////////////////////// 161////////////////////////////////////////////////////////////////////////////
163 162
164 163
165/* 164/*
166 Create an agenda widget with rows rows and columns columns. 165 Create an agenda widget with rows rows and columns columns.
167*/ 166*/
168KOAgenda::KOAgenda(int columns,int rows,int rowSize,QWidget *parent, 167KOAgenda::KOAgenda(int columns,int rows,int rowSize,QWidget *parent,
169 const char *name,WFlags f) : 168 const char *name,WFlags f) :
170 QScrollView(parent,name,f) 169 QScrollView(parent,name,f)
171{ 170{
172 171
173 mAllAgendaPopup = 0; 172 mAllAgendaPopup = 0;
174 mColumns = columns; 173 mColumns = columns;
175 mRows = rows; 174 mRows = rows;
176 mGridSpacingY = rowSize; 175 mGridSpacingY = rowSize;
177 mAllDayMode = false; 176 mAllDayMode = false;
178#ifndef DESKTOP_VERSION 177#ifndef DESKTOP_VERSION
179 //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 178 //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
180#endif 179#endif
181 mHolidayMask = 0; 180 mHolidayMask = 0;
182 init(); 181 init();
183 connect ( this, SIGNAL (contentsMoving ( int , int ) ), this, SLOT ( slotContentMove(int,int)) ); 182 connect ( this, SIGNAL (contentsMoving ( int , int ) ), this, SLOT ( slotContentMove(int,int)) );
184} 183}
185 184
186/* 185/*
187 Create an agenda widget with columns columns and one row. This is used for 186 Create an agenda widget with columns columns and one row. This is used for
188 all-day events. 187 all-day events.
189*/ 188*/
190KOAgenda::KOAgenda(int columns,QWidget *parent,const char *name,WFlags f) : 189KOAgenda::KOAgenda(int columns,QWidget *parent,const char *name,WFlags f) :
191 QScrollView(parent,name,f) 190 QScrollView(parent,name,f)
192{ 191{
193 mAllAgendaPopup = 0; 192 mAllAgendaPopup = 0;
194 blockResize = false; 193 blockResize = false;
195 mColumns = columns; 194 mColumns = columns;
196 mRows = 1; 195 mRows = 1;
197 //qDebug("aaaaaaaaaaaaaaaaaaldays %d ", KOPrefs::instance()->mAllDaySize); 196 //qDebug("aaaaaaaaaaaaaaaaaaldays %d ", KOPrefs::instance()->mAllDaySize);
198 mGridSpacingY = KOPrefs::instance()->mAllDaySize; 197 mGridSpacingY = KOPrefs::instance()->mAllDaySize;
199 mAllDayMode = true; 198 mAllDayMode = true;
200#ifndef DESKTOP_VERSION 199#ifndef DESKTOP_VERSION
201 //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 200 //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
202#endif 201#endif
203 mHolidayMask = 0; 202 mHolidayMask = 0;
204 init(); 203 init();
205} 204}
206 205
207 206
208KOAgenda::~KOAgenda() 207KOAgenda::~KOAgenda()
209{ 208{
210 if(mMarcusBains) delete mMarcusBains; 209 if(mMarcusBains) delete mMarcusBains;
211 210
212} 211}
213 212
214Incidence *KOAgenda::selectedIncidence() const 213Incidence *KOAgenda::selectedIncidence() const
215{ 214{
216 return (mSelectedItem ? mSelectedItem->incidence() : 0); 215 return (mSelectedItem ? mSelectedItem->incidence() : 0);
217} 216}
218 217
219 218
220QDate KOAgenda::selectedIncidenceDate() const 219QDate KOAgenda::selectedIncidenceDate() const
221{ 220{
222 return (mSelectedItem ? mSelectedItem->itemDate() : QDate()); 221 return (mSelectedItem ? mSelectedItem->itemDate() : QDate());
223} 222}
224 223
225 224
226void KOAgenda::init() 225void KOAgenda::init()
227{ 226{
228 mPopupTimer = new QTimer(this); 227 mPopupTimer = new QTimer(this);
229 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); 228 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu()));
230 229
231 mNewItemPopup = new QPopupMenu( this ); 230 mNewItemPopup = new QPopupMenu( this );
232 connect ( mNewItemPopup, SIGNAL (activated ( int ) ), this, SLOT ( newItem(int)) ); 231 connect ( mNewItemPopup, SIGNAL (activated ( int ) ), this, SLOT ( newItem(int)) );
233 QString pathString = ""; 232 QString pathString = "";
234 if ( !KOPrefs::instance()->mToolBarMiniIcons ) { 233 if ( !KOPrefs::instance()->mToolBarMiniIcons ) {
235 if ( QApplication::desktop()->width() < 480 ) 234 if ( QApplication::desktop()->width() < 480 )
236 pathString += "icons16/"; 235 pathString += "icons16/";
237 } else 236 } else
238 pathString += "iconsmini/"; 237 pathString += "iconsmini/";
239 238
240 mNewItemPopup->insertItem ( SmallIcon( pathString +"newevent" ), i18n("New Event..."), 1 ); 239 mNewItemPopup->insertItem ( SmallIcon( pathString +"newevent" ), i18n("New Event..."), 1 );
241 mNewItemPopup->insertItem ( SmallIcon( pathString +"newtodo" ), i18n("New Todo..."),2 ); 240 mNewItemPopup->insertItem ( SmallIcon( pathString +"newtodo" ), i18n("New Todo..."),2 );
242 mNewItemPopup->insertSeparator ( ); 241 mNewItemPopup->insertSeparator ( );
243 mNewItemPopup->insertItem ( SmallIcon( pathString +"day" ), i18n("Day view"),3 ); 242 mNewItemPopup->insertItem ( SmallIcon( pathString +"day" ), i18n("Day view"),3 );
244 mNewItemPopup->insertItem ( SmallIcon( pathString +"xdays" ), i18n("Next days"),8 ); 243 mNewItemPopup->insertItem ( SmallIcon( pathString +"xdays" ), i18n("Next days"),8 );
245 mNewItemPopup->insertItem ( SmallIcon( pathString +"week" ), i18n("Next week"),4 ); 244 mNewItemPopup->insertItem ( SmallIcon( pathString +"week" ), i18n("Next week"),4 );
246 mNewItemPopup->insertItem ( SmallIcon( pathString +"week" ), i18n("Next two weeks"),5 ); 245 mNewItemPopup->insertItem ( SmallIcon( pathString +"week" ), i18n("Next two weeks"),5 );
247 mNewItemPopup->insertItem ( SmallIcon( pathString +"month" ), i18n("This month"),6 ); 246 mNewItemPopup->insertItem ( SmallIcon( pathString +"month" ), i18n("This month"),6 );
248 mNewItemPopup->insertItem ( SmallIcon( pathString +"journal" ), i18n("Journal view"),7 ); 247 mNewItemPopup->insertItem ( SmallIcon( pathString +"journal" ), i18n("Journal view"),7 );
249#ifndef _WIN32_ 248#ifndef _WIN32_
250 int wflags = viewport()-> getWFlags() |WRepaintNoErase;//WResizeNoErase 249 int wflags = viewport()-> getWFlags() |WRepaintNoErase;//WResizeNoErase
251 viewport()->setWFlags ( wflags); 250 viewport()->setWFlags ( wflags);
252#endif 251#endif
253 mGridSpacingX = 80; 252 mGridSpacingX = 80;
254 mResizeBorderWidth = 8; 253 mResizeBorderWidth = 8;
255 mScrollBorderWidth = 8; 254 mScrollBorderWidth = 8;
256 mScrollDelay = 30; 255 mScrollDelay = 30;
257 mScrollOffset = 10; 256 mScrollOffset = 10;
258 mPaintPixmap.resize( 20,20); 257 mPaintPixmap.resize( 20,20);
259 //enableClipper(true); 258 //enableClipper(true);
260 259
261 // Grab key strokes for keyboard navigation of agenda. Seems to have no 260 // Grab key strokes for keyboard navigation of agenda. Seems to have no
262 // effect. Has to be fixed. 261 // effect. Has to be fixed.
263 setFocusPolicy(WheelFocus); 262 setFocusPolicy(WheelFocus);
264 263
265 connect(&mScrollUpTimer,SIGNAL(timeout()),SLOT(scrollUp())); 264 connect(&mScrollUpTimer,SIGNAL(timeout()),SLOT(scrollUp()));
266 connect(&mScrollDownTimer,SIGNAL(timeout()),SLOT(scrollDown())); 265 connect(&mScrollDownTimer,SIGNAL(timeout()),SLOT(scrollDown()));
267 connect(&mResizeTimer,SIGNAL(timeout()),SLOT(finishResize())); 266 connect(&mResizeTimer,SIGNAL(timeout()),SLOT(finishResize()));
268 267
269 mStartCellX = 0; 268 mStartCellX = 0;
270 mStartCellY = 0; 269 mStartCellY = 0;
271 mCurrentCellX = 0; 270 mCurrentCellX = 0;
272 mCurrentCellY = 0; 271 mCurrentCellY = 0;
273 272
274 mSelectionCellX = 0; 273 mSelectionCellX = 0;
275 mSelectionYTop = 0; 274 mSelectionYTop = 0;
276 mSelectionHeight = 0; 275 mSelectionHeight = 0;
277 276
278 mOldLowerScrollValue = -1; 277 mOldLowerScrollValue = -1;
279 mOldUpperScrollValue = -1; 278 mOldUpperScrollValue = -1;
280 279
281 mClickedItem = 0; 280 mClickedItem = 0;
282 281
283 mActionItem = 0; 282 mActionItem = 0;
284 mActionType = NOP; 283 mActionType = NOP;
285 mItemMoved = false; 284 mItemMoved = false;
286 285
287 mSelectedItem = 0; 286 mSelectedItem = 0;
288 287
289 // mItems.setAutoDelete(true); 288 // mItems.setAutoDelete(true);
290 289
291 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 290 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
292 291
293 viewport()->update(); 292 viewport()->update();
294 293
295 setMinimumSize(30, 1); 294 setMinimumSize(30, 1);
296// setMaximumHeight(mGridSpacingY * mRows + 5); 295// setMaximumHeight(mGridSpacingY * mRows + 5);
297 296
298 // Disable horizontal scrollbar. This is a hack. The geometry should be 297 // Disable horizontal scrollbar. This is a hack. The geometry should be
299 // controlled in a way that the contents horizontally always fits. Then it is 298 // controlled in a way that the contents horizontally always fits. Then it is
300 // not necessary to turn off the scrollbar. 299 // not necessary to turn off the scrollbar.
301 setHScrollBarMode(AlwaysOff); 300 setHScrollBarMode(AlwaysOff);
302 if ( ! mAllDayMode ) 301 if ( ! mAllDayMode )
303 setVScrollBarMode(AlwaysOn); 302 setVScrollBarMode(AlwaysOn);
304 else 303 else
305 setVScrollBarMode(AlwaysOff); 304 setVScrollBarMode(AlwaysOff);
306 305
307 setStartHour(KOPrefs::instance()->mDayBegins); 306 setStartHour(KOPrefs::instance()->mDayBegins);
308 307
309 calculateWorkingHours(); 308 calculateWorkingHours();
310 309
311 connect(verticalScrollBar(),SIGNAL(valueChanged(int)), 310 connect(verticalScrollBar(),SIGNAL(valueChanged(int)),
312 SLOT(checkScrollBoundaries(int))); 311 SLOT(checkScrollBoundaries(int)));
313 312
314 // Create the Marcus Bains line. 313 // Create the Marcus Bains line.
315 if(mAllDayMode) 314 if(mAllDayMode)
316 mMarcusBains = 0; 315 mMarcusBains = 0;
317 else { 316 else {
318 mMarcusBains = new MarcusBains(this); 317 mMarcusBains = new MarcusBains(this);
319 addChild(mMarcusBains); 318 addChild(mMarcusBains);
320 } 319 }
321 mPopupKind = 0; 320 mPopupKind = 0;
322 mPopupItem = 0; 321 mPopupItem = 0;
323 mInvalidPixmap = false; 322 mInvalidPixmap = false;
324 323
325} 324}
326 325
327void KOAgenda::shrinkPixmap() 326void KOAgenda::shrinkPixmap()
328{ 327{
329 mPaintPixmap.resize( 20,20); 328 mPaintPixmap.resize( 20,20);
330 mInvalidPixmap = true; 329 mInvalidPixmap = true;
331} 330}
332void KOAgenda::slotContentMove(int,int) 331void KOAgenda::slotContentMove(int,int)
333{ 332{
334 emit sendPing(); 333 emit sendPing();
335 if ( mActionType == NOP ) 334 if ( mActionType == NOP )
336 slotClearSelection(); 335 slotClearSelection();
337 if ( mSelectedItem && !mActionItem ) { 336 if ( mSelectedItem && !mActionItem ) {
338 deselectItem(); 337 deselectItem();
339 emit incidenceSelected( 0 ); 338 emit incidenceSelected( 0 );
340 } 339 }
341} 340}
342void KOAgenda::clear() 341void KOAgenda::clear()
343{ 342{
344 KOAgendaItem *item; 343 KOAgendaItem *item;
345 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 344 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
346 mUnusedItems.append( item ); 345 mUnusedItems.append( item );
347 //item->hide(); 346 //item->hide();
348 } 347 }
349 mItems.clear(); 348 mItems.clear();
350 mSelectedItem = 0; 349 mSelectedItem = 0;
351 clearSelection(); 350 clearSelection();
352} 351}
353 352
354void KOAgenda::clearSelection() 353void KOAgenda::clearSelection()
355{ 354{
356 mSelectionCellX = 0; 355 mSelectionCellX = 0;
357 mSelectionYTop = 0; 356 mSelectionYTop = 0;
358 mSelectionHeight = 0; 357 mSelectionHeight = 0;
359} 358}
360 359
361void KOAgenda::marcus_bains() 360void KOAgenda::marcus_bains()
362{ 361{
363 if(mMarcusBains) mMarcusBains->updateLocation(true); 362 if(mMarcusBains) mMarcusBains->updateLocation(true);
364} 363}
365 364
366 365
367void KOAgenda::changeColumns(int columns) 366void KOAgenda::changeColumns(int columns)
368{ 367{
369 if (columns == 0) { 368 if (columns == 0) {
370 qDebug("KOAgenda::changeColumns() called with argument 0 "); 369 qDebug("KOAgenda::changeColumns() called with argument 0 ");
371 return; 370 return;
372 } 371 }
373 clear(); 372 clear();
374 mColumns = columns; 373 mColumns = columns;
375 computeSizes(); 374 computeSizes();
376} 375}
377 376
378/* 377/*
379 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
380 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.
381*/ 380*/
382bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) 381bool KOAgenda::eventFilter ( QObject *object, QEvent *event )
383{ 382{
384 // kdDebug() << "KOAgenda::eventFilter" << endl; 383 // kdDebug() << "KOAgenda::eventFilter" << endl;
385 switch(event->type()) { 384 switch(event->type()) {
386 case QEvent::MouseButtonPress: 385 case QEvent::MouseButtonPress:
387 case QEvent::MouseButtonDblClick: 386 case QEvent::MouseButtonDblClick:
388 case QEvent::MouseButtonRelease: 387 case QEvent::MouseButtonRelease:
389 case QEvent::MouseMove: 388 case QEvent::MouseMove:
390 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event)); 389 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event));
391 390
392 case (QEvent::Leave): 391 case (QEvent::Leave):
393 if (!mActionItem) 392 if (!mActionItem)
394 setCursor(arrowCursor); 393 setCursor(arrowCursor);
395 return true; 394 return true;
396 395
397 default: 396 default:
398 return QScrollView::eventFilter(object,event); 397 return QScrollView::eventFilter(object,event);
399 } 398 }
400} 399}
401void KOAgenda::popupMenu() 400void KOAgenda::popupMenu()
402{ 401{
403 mPopupTimer->stop(); 402 mPopupTimer->stop();
404 if ( mPopupKind == 1 || mPopupKind == 3 ) { 403 if ( mPopupKind == 1 || mPopupKind == 3 ) {
405 if (mActionItem ) { 404 if (mActionItem ) {
406 endItemAction(); 405 endItemAction();
407 } 406 }
408 mLeftMouseDown = false; // no more leftMouse computation 407 mLeftMouseDown = false; // no more leftMouse computation
409 if (mPopupItem) { 408 if (mPopupItem) {
410 //mClickedItem = mPopupItem; 409 //mClickedItem = mPopupItem;
411 selectItem(mPopupItem); 410 selectItem(mPopupItem);
412 if ( mAllAgendaPopup && KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 1 ) 411 if ( mAllAgendaPopup && KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 1 )
413 mAllAgendaPopup->installEventFilter( this ); 412 mAllAgendaPopup->installEventFilter( this );
414 emit showIncidencePopupSignal(mPopupItem->incidence()); 413 emit showIncidencePopupSignal(mPopupItem->incidence());
415 414
416 } 415 }
417 } else if ( mPopupKind == 2 || mPopupKind == 4 ) { 416 } else if ( mPopupKind == 2 || mPopupKind == 4 ) {
418 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
419 endSelectAction( false ); // do not emit new event signal 418 endSelectAction( false ); // do not emit new event signal
420 mLeftMouseDown = false; // no more leftMouse computation 419 mLeftMouseDown = false; // no more leftMouse computation
421 } 420 }
422 if ( KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 2 ) 421 if ( KOPrefs::instance()->mBlockPopupMenu && mPopupKind == 2 )
423 mNewItemPopup->installEventFilter( this ); 422 mNewItemPopup->installEventFilter( this );
424 mNewItemPopup->popup( mPopupPos); 423 mNewItemPopup->popup( mPopupPos);
425 424
426 } 425 }
427 mLeftMouseDown = false; 426 mLeftMouseDown = false;
428 mPopupItem = 0; 427 mPopupItem = 0;
429 mPopupKind = 0; 428 mPopupKind = 0;
430} 429}
431void KOAgenda::categoryChanged(Incidence * inc) 430void KOAgenda::categoryChanged(Incidence * inc)
432{ 431{
433 KOAgendaItem *item; 432 KOAgendaItem *item;
434 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 433 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
435 if ( item->incidence() == inc ) { 434 if ( item->incidence() == inc ) {
436 item->initColor (); 435 item->initColor ();
437 item->updateItem(); 436 item->updateItem();
438 } 437 }
439 } 438 }
440} 439}
441bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) 440bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
442{ 441{
443 442
444 if ( mInvalidPixmap ) { 443 if ( mInvalidPixmap ) {
445 mInvalidPixmap = false; 444 mInvalidPixmap = false;
446 qDebug("KO: Upsizing Pixmaps "); 445 qDebug("KO: Upsizing Pixmaps ");
447 computeSizes(); 446 computeSizes();
448 emit updateViewSignal(); 447 emit updateViewSignal();
449 return true; 448 return true;
450 } 449 }
451 emit sendPing(); 450 emit sendPing();
452 static int startX = 0; 451 static int startX = 0;
453 static int startY = 0; 452 static int startY = 0;
454 int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 7 : 9 ); 453 int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 7 : 9 );
455 static bool blockMoving = true; 454 static bool blockMoving = true;
456 455
457 //qDebug("KOAgenda::eventFilter_mous "); 456 //qDebug("KOAgenda::eventFilter_mous ");
458 if ( object == mNewItemPopup ) { 457 if ( object == mNewItemPopup ) {
459 //qDebug("mNewItemPopup "); 458 //qDebug("mNewItemPopup ");
460 if ( me->type() == QEvent::MouseButtonRelease ) { 459 if ( me->type() == QEvent::MouseButtonRelease ) {
461 mNewItemPopup->removeEventFilter( this ); 460 mNewItemPopup->removeEventFilter( this );
462 int dX = me->globalPos().x() - mPopupPos.x();; 461 int dX = me->globalPos().x() - mPopupPos.x();;
463 if ( dX < 0 ) 462 if ( dX < 0 )
464 dX = -dX; 463 dX = -dX;
465 int dY = me->globalPos().y() - mPopupPos.y(); 464 int dY = me->globalPos().y() - mPopupPos.y();
466 if ( dY < 0 ) 465 if ( dY < 0 )
467 dY = -dY; 466 dY = -dY;
468 if ( dX > blockmoveDist || dY > blockmoveDist ) { 467 if ( dX > blockmoveDist || dY > blockmoveDist ) {
469 mNewItemPopup->hide(); 468 mNewItemPopup->hide();
470 } 469 }
471 } 470 }
472 return true; 471 return true;
473 } 472 }
474 if ( object == mAllAgendaPopup ) { 473 if ( object == mAllAgendaPopup ) {
475 //qDebug(" mAllAgendaPopup "); 474 //qDebug(" mAllAgendaPopup ");
476 if ( me->type() == QEvent::MouseButtonRelease ) { 475 if ( me->type() == QEvent::MouseButtonRelease ) {
477 mAllAgendaPopup->removeEventFilter( this ); 476 mAllAgendaPopup->removeEventFilter( this );
478 int dX = me->globalPos().x() - mPopupPos.x();; 477 int dX = me->globalPos().x() - mPopupPos.x();;
479 if ( dX < 0 ) 478 if ( dX < 0 )
480 dX = -dX; 479 dX = -dX;
481 int dY = me->globalPos().y() - mPopupPos.y(); 480 int dY = me->globalPos().y() - mPopupPos.y();
482 if ( dY < 0 ) 481 if ( dY < 0 )
483 dY = -dY; 482 dY = -dY;
484 if ( dX > blockmoveDist || dY > blockmoveDist ) { 483 if ( dX > blockmoveDist || dY > blockmoveDist ) {
485 mAllAgendaPopup->hide(); 484 mAllAgendaPopup->hide();
486 } 485 }
487 } 486 }
488 return true; 487 return true;
489 } 488 }
490 QPoint viewportPos; 489 QPoint viewportPos;
491 if (object != viewport()) { 490 if (object != viewport()) {
492 blockmoveDist = blockmoveDist*2; 491 blockmoveDist = blockmoveDist*2;
493 viewportPos = ((QWidget *)object)->mapToParent(me->pos()); 492 viewportPos = ((QWidget *)object)->mapToParent(me->pos());
494 } else { 493 } else {
495 viewportPos = me->pos(); 494 viewportPos = me->pos();
496 } 495 }
497 bool objIsNotViewport = (object != viewport()); 496 bool objIsNotViewport = (object != viewport());
498 bool leftButt = false; 497 bool leftButt = false;
499#ifdef DESKTOP_VERSION 498#ifdef DESKTOP_VERSION
500 leftButt = (me->button() == LeftButton); 499 leftButt = (me->button() == LeftButton);
501#endif 500#endif
502 switch (me->type()) { 501 switch (me->type()) {
503 case QEvent::MouseButtonPress: 502 case QEvent::MouseButtonPress:
504 if (me->button() == LeftButton) { 503 if (me->button() == LeftButton) {
505 mPopupTimer->start( 600 ); 504 mPopupTimer->start( 600 );
506 mLeftMouseDown = true; 505 mLeftMouseDown = true;
507 } 506 }
508 blockMoving = true; 507 blockMoving = true;
509 startX = viewportPos.x(); 508 startX = viewportPos.x();
510 startY = viewportPos.y(); 509 startY = viewportPos.y();
511 mPopupPos = me->globalPos(); 510 mPopupPos = me->globalPos();
512 if ( objIsNotViewport && !leftButt ) { 511 if ( objIsNotViewport && !leftButt ) {
513 KOAgendaItem * tempItem = (KOAgendaItem *)object; 512 KOAgendaItem * tempItem = (KOAgendaItem *)object;
514 if (mAllDayMode) { 513 if (mAllDayMode) {
515 if ( tempItem->height() > 10 ) { 514 if ( tempItem->height() > 10 ) {
516 int minV = tempItem->height()/4; 515 int minV = tempItem->height()/4;
517 if ( minV > (blockmoveDist/2)-2 ) { 516 if ( minV > (blockmoveDist/2)-2 ) {
518 if ( minV > blockmoveDist ) 517 if ( minV > blockmoveDist )
519 minV = blockmoveDist; 518 minV = blockmoveDist;
520 else 519 else
521 minV = (blockmoveDist/2); 520 minV = (blockmoveDist/2);
522 } 521 }
523 bool border = false; 522 bool border = false;
524 int diff = tempItem->y() - viewportPos.y(); 523 int diff = tempItem->y() - viewportPos.y();
525 if ( diff < 0 ) 524 if ( diff < 0 )
526 diff *= -1; 525 diff *= -1;
527 if ( diff < minV ) { 526 if ( diff < minV ) {
528 border = true; 527 border = true;
529 objIsNotViewport = false; 528 objIsNotViewport = false;
530 } 529 }
531 if ( ! border ) { 530 if ( ! border ) {
532 diff = tempItem->y() + tempItem->height()- viewportPos.y(); 531 diff = tempItem->y() + tempItem->height()- viewportPos.y();
533 if ( diff < 0 ) 532 if ( diff < 0 )
534 diff *= -1; 533 diff *= -1;
535 if ( diff < minV ) { 534 if ( diff < minV ) {
536 border = true; 535 border = true;
537 objIsNotViewport = false; 536 objIsNotViewport = false;
538 } 537 }
539 } 538 }
540 } 539 }
541 } else { // not allday 540 } else { // not allday
542 if ( tempItem->width() > 10 ) { 541 if ( tempItem->width() > 10 ) {
543 int minH = tempItem->width()/4; 542 int minH = tempItem->width()/4;
544 if ( minH > (blockmoveDist/2)-2 ) { 543 if ( minH > (blockmoveDist/2)-2 ) {
545 if ( minH > blockmoveDist ) 544 if ( minH > blockmoveDist )
546 minH = blockmoveDist; 545 minH = blockmoveDist;
547 else 546 else
548 minH = (blockmoveDist/2); 547 minH = (blockmoveDist/2);
549 } 548 }
550 bool border = false; 549 bool border = false;
551 int diff = tempItem->x() - viewportPos.x(); 550 int diff = tempItem->x() - viewportPos.x();
552 if ( diff < 0 ) 551 if ( diff < 0 )
553 diff *= -1; 552 diff *= -1;
554 if ( diff < minH ) { 553 if ( diff < minH ) {
555 border = true; 554 border = true;
556 objIsNotViewport = false; 555 objIsNotViewport = false;
557 } 556 }
558 if ( ! border ) { 557 if ( ! border ) {
559 diff = tempItem->x() + tempItem->width() - viewportPos.x(); 558 diff = tempItem->x() + tempItem->width() - viewportPos.x();
560 if ( diff < 0 ) 559 if ( diff < 0 )
561 diff *= -1; 560 diff *= -1;
562 if ( diff < minH ) { 561 if ( diff < minH ) {
563 border = true; 562 border = true;
564 objIsNotViewport = false; 563 objIsNotViewport = false;
565 } 564 }
566 } 565 }
567 } 566 }
568 } 567 }
569 } 568 }
570 if ( objIsNotViewport ) { 569 if ( objIsNotViewport ) {
571 mPopupItem = (KOAgendaItem *)object; 570 mPopupItem = (KOAgendaItem *)object;
572 mPopupKind = 1; 571 mPopupKind = 1;
573 if (me->button() == RightButton) { 572 if (me->button() == RightButton) {
574 mPopupKind = 3; 573 mPopupKind = 3;
575 popupMenu(); 574 popupMenu();
576 } else if (me->button() == LeftButton) { 575 } else if (me->button() == LeftButton) {
577 mActionItem = (KOAgendaItem *)object; 576 mActionItem = (KOAgendaItem *)object;
578 if (mActionItem) { 577 if (mActionItem) {
579 emit signalClearSelection(); 578 emit signalClearSelection();
580 slotClearSelection(); 579 slotClearSelection();
581 selectItem(mActionItem); 580 selectItem(mActionItem);
582 Incidence *incidence = mActionItem->incidence(); 581 Incidence *incidence = mActionItem->incidence();
583 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { 582 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) {
584 mActionItem = 0; 583 mActionItem = 0;
585 } else { 584 } else {
586 startItemAction(viewportPos); 585 startItemAction(viewportPos);
587 } 586 }
588 } 587 }
589 } 588 }
590 } else { // ---------- viewport() 589 } else { // ---------- viewport()
591 mPopupItem = 0; 590 mPopupItem = 0;
592 mPopupKind = 2; 591 mPopupKind = 2;
593 selectItem(0); 592 selectItem(0);
594 mActionItem = 0; 593 mActionItem = 0;
595 if (me->button() == RightButton) { 594 if (me->button() == RightButton) {
596 int x,y; 595 int x,y;
597 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 596 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
598 int gx,gy; 597 int gx,gy;
599 contentsToGrid(x,y,gx,gy); 598 contentsToGrid(x,y,gx,gy);
600 mCurrentCellX = gx; 599 mCurrentCellX = gx;
601 mCurrentCellY = gy; 600 mCurrentCellY = gy;
602 mStartCellX = gx; 601 mStartCellX = gx;
603 mStartCellY = gy; 602 mStartCellY = gy;
604 mPopupKind = 4; 603 mPopupKind = 4;
605 popupMenu(); 604 popupMenu();
606 } else if (me->button() == LeftButton) { 605 } else if (me->button() == LeftButton) {
607 setCursor(arrowCursor); 606 setCursor(arrowCursor);
608 startSelectAction(viewportPos); 607 startSelectAction(viewportPos);
609 } 608 }
610 } 609 }
611 break; 610 break;
612 611
613 case QEvent::MouseButtonRelease: 612 case QEvent::MouseButtonRelease:
614 if (me->button() == LeftButton ) { 613 if (me->button() == LeftButton ) {
615 mPopupTimer->stop(); 614 mPopupTimer->stop();
616 } 615 }
617 if (object != viewport()) { 616 if (object != viewport()) {
618 if (me->button() == LeftButton && mLeftMouseDown) { 617 if (me->button() == LeftButton && mLeftMouseDown) {
619 if (mActionItem) { 618 if (mActionItem) {
620 QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos)); 619 QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos));
621 //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 ); 620 //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 );
622 if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) { 621 if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) {
623 mScrollUpTimer.stop(); 622 mScrollUpTimer.stop();
624 mScrollDownTimer.stop(); 623 mScrollDownTimer.stop();
625 mActionItem->resetMove(); 624 mActionItem->resetMove();
626 placeSubCells( mActionItem ); 625 placeSubCells( mActionItem );
627 // emit startDragSignal( mActionItem->incidence() ); 626 // emit startDragSignal( mActionItem->incidence() );
628 setCursor( arrowCursor ); 627 setCursor( arrowCursor );
629 mActionItem = 0; 628 mActionItem = 0;
630 mActionType = NOP; 629 mActionType = NOP;
631 mItemMoved = 0; 630 mItemMoved = 0;
632 mLeftMouseDown = false; 631 mLeftMouseDown = false;
633 return true; 632 return true;
634 } 633 }
635 endItemAction(); 634 endItemAction();
636 } 635 }
637 } 636 }
638 637
639 } else { // ---------- viewport() 638 } else { // ---------- viewport()
640 if (me->button() == LeftButton && mLeftMouseDown ) { //left click 639 if (me->button() == LeftButton && mLeftMouseDown ) { //left click
641 endSelectAction( true ); // emit new event signal 640 endSelectAction( true ); // emit new event signal
642 } 641 }
643 } 642 }
644 if (me->button() == LeftButton) 643 if (me->button() == LeftButton)
645 mLeftMouseDown = false; 644 mLeftMouseDown = false;
646 645
647 break; 646 break;
648 647
649 case QEvent::MouseMove: 648 case QEvent::MouseMove:
650 //qDebug("mm "); 649 //qDebug("mm ");
651 if ( !mLeftMouseDown ) 650 if ( !mLeftMouseDown )
652 return false; 651 return false;
653 if ( blockMoving ) { 652 if ( blockMoving ) {
654 int dX, dY; 653 int dX, dY;
655 dX = startX - viewportPos.x(); 654 dX = startX - viewportPos.x();
656 if ( dX < 0 ) 655 if ( dX < 0 )
657 dX = -dX; 656 dX = -dX;
658 dY = viewportPos.y() - startY; 657 dY = viewportPos.y() - startY;
659 if ( dY < 0 ) 658 if ( dY < 0 )
660 dY = -dY; 659 dY = -dY;
661 //qDebug("%d %d %d ", dX, dY , blockmoveDist ); 660 //qDebug("%d %d %d ", dX, dY , blockmoveDist );
662 if ( dX > blockmoveDist || dY > blockmoveDist ) { 661 if ( dX > blockmoveDist || dY > blockmoveDist ) {
663 blockMoving = false; 662 blockMoving = false;
664 } 663 }
665 } 664 }
666 if ( ! blockMoving ) 665 if ( ! blockMoving )
667 mPopupTimer->stop(); 666 mPopupTimer->stop();
668 if (object != viewport()) { 667 if (object != viewport()) {
669 KOAgendaItem *moveItem = (KOAgendaItem *)object; 668 KOAgendaItem *moveItem = (KOAgendaItem *)object;
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 86e1bd9..a87e6fc 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -645,982 +645,985 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
645 this, SLOT( toggleQuickTodo() ),0,4 ); 645 this, SLOT( toggleQuickTodo() ),0,4 );
646 mDocPrefs = new DocPrefs( name ); 646 mDocPrefs = new DocPrefs( name );
647 647
648 mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); 648 mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu );
649 mPopupMenu->setCheckable( true ); 649 mPopupMenu->setCheckable( true );
650 mItemPopupMenu->setCheckable( true ); 650 mItemPopupMenu->setCheckable( true );
651 651
652 652
653 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 653 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
654 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 654 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
655 655
656 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 656 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
657 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 657 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
658 658
659 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 659 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
660 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 660 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
661 661
662 662
663 // Double clicking conflicts with opening/closing the subtree 663 // Double clicking conflicts with opening/closing the subtree
664 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), 664 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ),
665 SLOT( editItem( QListViewItem *) ) ); 665 SLOT( editItem( QListViewItem *) ) );
666 /* 666 /*
667 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, 667 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *,
668 const QPoint &,int ) ), 668 const QPoint &,int ) ),
669 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 669 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
670 */ 670 */
671 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, 671 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *,
672 const QPoint &,int ) ), 672 const QPoint &,int ) ),
673 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 673 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
674 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), 674 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ),
675 SLOT( itemClicked( QListViewItem * ) ) ); 675 SLOT( itemClicked( QListViewItem * ) ) );
676 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), 676 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ),
677 SLOT( itemDoubleClicked( QListViewItem * ) ) ); 677 SLOT( itemDoubleClicked( QListViewItem * ) ) );
678 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 678 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
679 SLOT( updateView() ) ); 679 SLOT( updateView() ) );
680 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 680 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
681 SLOT( todoModified(Todo *, int) ) ); 681 SLOT( todoModified(Todo *, int) ) );
682 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), 682 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ),
683 SLOT( itemStateChanged( QListViewItem * ) ) ); 683 SLOT( itemStateChanged( QListViewItem * ) ) );
684 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), 684 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ),
685 SLOT( itemStateChanged( QListViewItem * ) ) ); 685 SLOT( itemStateChanged( QListViewItem * ) ) );
686 connect( mTodoListView, SIGNAL( paintNeeded() ), 686 connect( mTodoListView, SIGNAL( paintNeeded() ),
687 SLOT( paintNeeded()) ); 687 SLOT( paintNeeded()) );
688 688
689#if 0 689#if 0
690 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), 690 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)),
691 SLOT(selectionChanged(QListViewItem *))); 691 SLOT(selectionChanged(QListViewItem *)));
692 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 692 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
693 SLOT(selectionChanged(QListViewItem *))); 693 SLOT(selectionChanged(QListViewItem *)));
694 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 694 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
695 SLOT(selectionChanged(QListViewItem *))); 695 SLOT(selectionChanged(QListViewItem *)));
696#endif 696#endif
697 697
698 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 698 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
699 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 699 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
700 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 700 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
701 701
702 connect( mTodoListView, SIGNAL(selectionChanged() ), 702 connect( mTodoListView, SIGNAL(selectionChanged() ),
703 SLOT( processSelectionChange() ) ); 703 SLOT( processSelectionChange() ) );
704 connect( mQuickAdd, SIGNAL( returnPressed () ), 704 connect( mQuickAdd, SIGNAL( returnPressed () ),
705 SLOT( addQuickTodo() ) ); 705 SLOT( addQuickTodo() ) );
706 706
707} 707}
708 708
709KOTodoView::~KOTodoView() 709KOTodoView::~KOTodoView()
710{ 710{
711 711
712#if QT_VERSION >= 0x030000 712#if QT_VERSION >= 0x030000
713 713
714#else 714#else
715 delete mKOTodoViewWhatsThis; 715 delete mKOTodoViewWhatsThis;
716#endif 716#endif
717 717
718 delete mDocPrefs; 718 delete mDocPrefs;
719} 719}
720QString KOTodoView::getWhatsThisText(QPoint p) 720QString KOTodoView::getWhatsThisText(QPoint p)
721{ 721{
722 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); 722 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p );
723 if ( item ) 723 if ( item )
724 return KIncidenceFormatter::instance()->getFormattedText( item->todo(), 724 return KIncidenceFormatter::instance()->getFormattedText( item->todo(),
725 KOPrefs::instance()->mWTshowDetails, 725 KOPrefs::instance()->mWTshowDetails,
726 KOPrefs::instance()->mWTshowCreated, 726 KOPrefs::instance()->mWTshowCreated,
727 KOPrefs::instance()->mWTshowChanged); 727 KOPrefs::instance()->mWTshowChanged);
728 return i18n("That is the todo view" ); 728 return i18n("That is the todo view" );
729 729
730} 730}
731 731
732void KOTodoView::jumpToDate () 732void KOTodoView::jumpToDate ()
733{ 733{
734 // if (mActiveItem) { 734 // if (mActiveItem) {
735// mActiveItem->todo()); 735// mActiveItem->todo());
736// if ( mActiveItem->todo()->hasDueDate() ) 736// if ( mActiveItem->todo()->hasDueDate() )
737// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 737// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
738} 738}
739void KOTodoView::paintNeeded() 739void KOTodoView::paintNeeded()
740{ 740{
741 if ( mPendingUpdateBeforeRepaint ) { 741 if ( mPendingUpdateBeforeRepaint ) {
742 updateView(); 742 updateView();
743 mPendingUpdateBeforeRepaint = false; 743 mPendingUpdateBeforeRepaint = false;
744 } 744 }
745} 745}
746void KOTodoView::paintEvent(QPaintEvent * pevent) 746void KOTodoView::paintEvent(QPaintEvent * pevent)
747{ 747{
748 if ( mPendingUpdateBeforeRepaint ) { 748 if ( mPendingUpdateBeforeRepaint ) {
749 updateView(); 749 updateView();
750 mPendingUpdateBeforeRepaint = false; 750 mPendingUpdateBeforeRepaint = false;
751 } 751 }
752 KOrg::BaseView::paintEvent( pevent); 752 KOrg::BaseView::paintEvent( pevent);
753} 753}
754 754
755void KOTodoView::updateView() 755void KOTodoView::updateView()
756{ 756{
757 pendingSubtodo = 0; 757 pendingSubtodo = 0;
758 if ( mBlockUpdate ) { 758 if ( mBlockUpdate ) {
759 return; 759 return;
760 } 760 }
761 if ( !isVisible() ) { 761 if ( !isVisible() ) {
762 mPendingUpdateBeforeRepaint = true; 762 mPendingUpdateBeforeRepaint = true;
763 return; 763 return;
764 } 764 }
765 //qDebug("KOTodoView::updateView() %x", this); 765 //qDebug("KOTodoView::updateView() %x", this);
766 if ( isFlatDisplay ) { 766 if ( isFlatDisplay ) {
767 displayAllFlat(); 767 displayAllFlat();
768 return; 768 return;
769 } 769 }
770 storeCurrentItem(); 770 storeCurrentItem();
771 //qDebug("update "); 771 //qDebug("update ");
772// kdDebug() << "KOTodoView::updateView()" << endl; 772// kdDebug() << "KOTodoView::updateView()" << endl;
773 QFont fo = KOPrefs::instance()->mTodoViewFont; 773 QFont fo = KOPrefs::instance()->mTodoViewFont;
774 774
775 775
776 mTodoListView->clear(); 776 mTodoListView->clear();
777 if ( mName == "todolistsmall" ) { 777 if ( mName == "todolistsmall" ) {
778 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 778 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
779 int ps = fo.pointSize() -2; 779 int ps = fo.pointSize() -2;
780 if ( ps > 12 ) 780 if ( ps > 12 )
781 ps -= 2; 781 ps -= 2;
782 fo.setPointSize( ps ); 782 fo.setPointSize( ps );
783 } 783 }
784 } 784 }
785 785
786 mTodoListView->setFont( fo ); 786 mTodoListView->setFont( fo );
787 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 787 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
788 //mTodoListView->header()->setMaximumHeight(fm.height()); 788 //mTodoListView->header()->setMaximumHeight(fm.height());
789 QPtrList<Todo> todoList = calendar()->todos(); 789 QPtrList<Todo> todoList = calendar()->todos();
790 790
791/* 791/*
792 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 792 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
793 Event *t; 793 Event *t;
794 for(t = todoList.first(); t; t = todoList.next()) { 794 for(t = todoList.first(); t; t = todoList.next()) {
795 kdDebug() << " " << t->getSummary() << endl; 795 kdDebug() << " " << t->getSummary() << endl;
796 796
797 if (t->getRelatedTo()) { 797 if (t->getRelatedTo()) {
798 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 798 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
799 } 799 }
800 800
801 QPtrList<Event> l = t->getRelations(); 801 QPtrList<Event> l = t->getRelations();
802 Event *c; 802 Event *c;
803 for(c=l.first();c;c=l.next()) { 803 for(c=l.first();c;c=l.next()) {
804 kdDebug() << " - relation: " << c->getSummary() << endl; 804 kdDebug() << " - relation: " << c->getSummary() << endl;
805 } 805 }
806 } 806 }
807*/ 807*/
808 808
809 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 809 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
810 // specific order of events. That means that we have to generate parent items 810 // specific order of events. That means that we have to generate parent items
811 // recursively for proper hierarchical display of Todos. 811 // recursively for proper hierarchical display of Todos.
812 mTodoMap.clear(); 812 mTodoMap.clear();
813 Todo *todo; 813 Todo *todo;
814 todo = todoList.first();// todo; todo = todoList.next()) { 814 todo = todoList.first();// todo; todo = todoList.next()) {
815 while ( todo ) { 815 while ( todo ) {
816 bool next = true; 816 bool next = true;
817 // qDebug("todo %s ", todo->summary().latin1()); 817 // qDebug("todo %s ", todo->summary().latin1());
818 Incidence *incidence = todo->relatedTo(); 818 Incidence *incidence = todo->relatedTo();
819 while ( incidence ) { 819 while ( incidence ) {
820 if ( incidence->typeID() == todoID ) { 820 if ( incidence->typeID() == todoID ) {
821 //qDebug("related %s ",incidence->summary().latin1() ); 821 //qDebug("related %s ",incidence->summary().latin1() );
822 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { 822 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) {
823 //qDebug("related not found "); 823 //qDebug("related not found ");
824 todoList.remove( ); 824 todoList.remove( );
825 todo = todoList.current(); 825 todo = todoList.current();
826 next = false; 826 next = false;
827 incidence = 0; 827 incidence = 0;
828 828
829 } else { 829 } else {
830 //qDebug("related found "); 830 //qDebug("related found ");
831 incidence = incidence->relatedTo(); 831 incidence = incidence->relatedTo();
832 } 832 }
833 } else 833 } else
834 incidence = 0; 834 incidence = 0;
835 } 835 }
836 if ( next ) 836 if ( next )
837 todo = todoList.next(); 837 todo = todoList.next();
838 } 838 }
839 839
840 for(todo = todoList.first(); todo; todo = todoList.next()) { 840 for(todo = todoList.first(); todo; todo = todoList.next()) {
841 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 841 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
842 { 842 {
843 insertTodoItem(todo); 843 insertTodoItem(todo);
844 } 844 }
845 } 845 }
846 // Restore opened/closed state 846 // Restore opened/closed state
847 mTodoListView->blockSignals( true ); 847 mTodoListView->blockSignals( true );
848 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 848 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
849 mTodoListView->blockSignals( false ); 849 mTodoListView->blockSignals( false );
850 resetCurrentItem(); 850 resetCurrentItem();
851} 851}
852 852
853void KOTodoView::storeCurrentItem() 853void KOTodoView::storeCurrentItem()
854{ 854{
855 mCurItem = 0; 855 mCurItem = 0;
856 mCurItemRootParent = 0; 856 mCurItemRootParent = 0;
857 mCurItemParent = 0; 857 mCurItemParent = 0;
858 mCurItemAbove = 0; 858 mCurItemAbove = 0;
859 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 859 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
860 if (mActiveItem) { 860 if (mActiveItem) {
861 mCurItem = mActiveItem->todo(); 861 mCurItem = mActiveItem->todo();
862 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); 862 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove ();
863 if ( activeItemAbove ) 863 if ( activeItemAbove )
864 mCurItemAbove = activeItemAbove->todo(); 864 mCurItemAbove = activeItemAbove->todo();
865 mCurItemRootParent = mCurItem; 865 mCurItemRootParent = mCurItem;
866 mCurItemParent = mCurItemRootParent->relatedTo(); 866 mCurItemParent = mCurItemRootParent->relatedTo();
867 while ( mCurItemRootParent->relatedTo() != 0 ) 867 while ( mCurItemRootParent->relatedTo() != 0 )
868 mCurItemRootParent = mCurItemRootParent->relatedTo(); 868 mCurItemRootParent = mCurItemRootParent->relatedTo();
869 } 869 }
870 mActiveItem = 0; 870 mActiveItem = 0;
871} 871}
872 872
873void KOTodoView::resetCurrentItem() 873void KOTodoView::resetCurrentItem()
874{ 874{
875 //mTodoListView->setFocus(); 875 //mTodoListView->setFocus();
876 KOTodoViewItem* foundItem = 0; 876 KOTodoViewItem* foundItem = 0;
877 KOTodoViewItem* foundItemRoot = 0; 877 KOTodoViewItem* foundItemRoot = 0;
878 KOTodoViewItem* foundItemParent = 0; 878 KOTodoViewItem* foundItemParent = 0;
879 KOTodoViewItem* foundItemAbove = 0; 879 KOTodoViewItem* foundItemAbove = 0;
880 if ( mTodoListView->firstChild () ) { 880 if ( mTodoListView->firstChild () ) {
881 if ( mCurItem ) { 881 if ( mCurItem ) {
882 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); 882 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
883 while ( item ) { 883 while ( item ) {
884 if ( item->todo() == mCurItem ) { 884 if ( item->todo() == mCurItem ) {
885 foundItem = item; 885 foundItem = item;
886 break; 886 break;
887 } else if ( item->todo() == mCurItemAbove ) { 887 } else if ( item->todo() == mCurItemAbove ) {
888 foundItemAbove = item; 888 foundItemAbove = item;
889 889
890 } 890 }
891 if ( item->todo() == mCurItemRootParent ) { 891 if ( item->todo() == mCurItemRootParent ) {
892 foundItemRoot = item; 892 foundItemRoot = item;
893 } 893 }
894 if ( item->todo() == mCurItemParent ) { 894 if ( item->todo() == mCurItemParent ) {
895 foundItemParent = item; 895 foundItemParent = item;
896 } 896 }
897 item = (KOTodoViewItem*)item->itemBelow(); 897 item = (KOTodoViewItem*)item->itemBelow();
898 } 898 }
899 if ( ! foundItem ) { 899 if ( ! foundItem ) {
900 if ( foundItemParent ) { 900 if ( foundItemParent ) {
901 foundItem = foundItemParent; 901 foundItem = foundItemParent;
902 } else { 902 } else {
903 if ( foundItemRoot ) 903 if ( foundItemRoot )
904 foundItem = foundItemRoot; 904 foundItem = foundItemRoot;
905 else 905 else
906 foundItem = foundItemAbove; 906 foundItem = foundItemAbove;
907 } 907 }
908 } 908 }
909 } 909 }
910 if ( foundItem ) { 910 if ( foundItem ) {
911 mTodoListView->setSelected ( foundItem, true ); 911 mTodoListView->setSelected ( foundItem, true );
912 mTodoListView->setCurrentItem( foundItem ); 912 mTodoListView->setCurrentItem( foundItem );
913 mTodoListView->ensureItemVisible( foundItem ); 913 mTodoListView->ensureItemVisible( foundItem );
914 } else { 914 } else {
915 if ( mTodoListView->firstChild () ) { 915 if ( mTodoListView->firstChild () ) {
916 mTodoListView->setSelected ( mTodoListView->firstChild (), true ); 916 mTodoListView->setSelected ( mTodoListView->firstChild (), true );
917 mTodoListView->setCurrentItem( mTodoListView->firstChild () ); 917 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
918 } 918 }
919 } 919 }
920 } 920 }
921 processSelectionChange(); 921 processSelectionChange();
922 QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); 922 QTimer::singleShot( 100, this, SLOT ( resetFocusToList() ));
923} 923}
924void KOTodoView::resetFocusToList() 924void KOTodoView::resetFocusToList()
925{ 925{
926 topLevelWidget()->setActiveWindow(); 926 topLevelWidget()->setActiveWindow();
927 mTodoListView->setFocus(); 927 mTodoListView->setFocus();
928} 928}
929//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 929//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove;
930bool KOTodoView::checkTodo( Todo * todo ) 930bool KOTodoView::checkTodo( Todo * todo )
931{ 931{
932 932
933 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 933 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
934 return false; 934 return false;
935 if ( !todo->isCompleted() ) { 935 if ( !todo->isCompleted() ) {
936 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 936 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
937 return true; 937 return true;
938 } 938 }
939 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 939 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
940 if ( todo->hasStartDate() ) 940 if ( todo->hasStartDate() )
941 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 941 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
942 return false; 942 return false;
943 if ( todo->hasDueDate() ) 943 if ( todo->hasDueDate() )
944 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 944 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
945 return false; 945 return false;
946 } 946 }
947 return true; 947 return true;
948} 948}
949 949
950void KOTodoView::restoreItemState( QListViewItem *item ) 950void KOTodoView::restoreItemState( QListViewItem *item )
951{ 951{
952 pendingSubtodo = 0; 952 pendingSubtodo = 0;
953 while( item ) { 953 while( item ) {
954 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 954 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
955 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); 955 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) );
956 if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); 956 if( item->childCount() > 0 ) restoreItemState( item->firstChild() );
957 item = item->nextSibling(); 957 item = item->nextSibling();
958 } 958 }
959} 959}
960 960
961 961
962QMap<Todo *,KOTodoViewItem *>::ConstIterator 962QMap<Todo *,KOTodoViewItem *>::ConstIterator
963KOTodoView::insertTodoItem(Todo *todo) 963KOTodoView::insertTodoItem(Todo *todo)
964{ 964{
965 965
966 // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; 966 // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl;
967 // TODO: Check, if dynmaic cast is necessary 967 // TODO: Check, if dynmaic cast is necessary
968 968
969 pendingSubtodo = 0; 969 pendingSubtodo = 0;
970 Incidence *incidence = todo->relatedTo(); 970 Incidence *incidence = todo->relatedTo();
971 while ( incidence && !incidence->calEnabled() ) 971 while ( incidence && !incidence->calEnabled() )
972 incidence = incidence->relatedTo(); 972 incidence = incidence->relatedTo();
973 if (incidence && incidence->typeID() == todoID ) { 973 if (incidence && incidence->typeID() == todoID ) {
974 Todo *relatedTodo = static_cast<Todo *>(incidence); 974 Todo *relatedTodo = static_cast<Todo *>(incidence);
975 975
976 // kdDebug() << " has Related" << endl; 976 // kdDebug() << " has Related" << endl;
977 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 977 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
978 itemIterator = mTodoMap.find(relatedTodo); 978 itemIterator = mTodoMap.find(relatedTodo);
979 if (itemIterator == mTodoMap.end()) { 979 if (itemIterator == mTodoMap.end()) {
980 // kdDebug() << " related not yet in list" << endl; 980 // kdDebug() << " related not yet in list" << endl;
981 itemIterator = insertTodoItem (relatedTodo); 981 itemIterator = insertTodoItem (relatedTodo);
982 } 982 }
983 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem 983 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
984 // and one into the map. Sure finding is more easy but why? -zecke 984 // and one into the map. Sure finding is more easy but why? -zecke
985 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); 985 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
986 return mTodoMap.insert(todo,todoItem); 986 return mTodoMap.insert(todo,todoItem);
987 } else { 987 } else {
988 // kdDebug() << " no Related" << endl; 988 // kdDebug() << " no Related" << endl;
989 // see above -zecke 989 // see above -zecke
990 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 990 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
991 return mTodoMap.insert(todo,todoItem); 991 return mTodoMap.insert(todo,todoItem);
992 } 992 }
993} 993}
994 994
995 995
996void KOTodoView::updateConfig() 996void KOTodoView::updateConfig()
997{ 997{
998 updateView(); 998 updateView();
999 mTodoListView->repaintContents(); 999 mTodoListView->repaintContents();
1000} 1000}
1001 1001
1002QPtrList<Incidence> KOTodoView::selectedIncidences() 1002QPtrList<Incidence> KOTodoView::selectedIncidences()
1003{ 1003{
1004 QPtrList<Incidence> selected; 1004 QPtrList<Incidence> selected;
1005 1005
1006 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 1006 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
1007// if (!item) item = mActiveItem; 1007// if (!item) item = mActiveItem;
1008 if (item) selected.append(item->todo()); 1008 if (item) selected.append(item->todo());
1009 1009
1010 return selected; 1010 return selected;
1011} 1011}
1012 1012
1013QPtrList<Todo> KOTodoView::selectedTodos() 1013QPtrList<Todo> KOTodoView::selectedTodos()
1014{ 1014{
1015 QPtrList<Todo> selected; 1015 QPtrList<Todo> selected;
1016 1016
1017 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 1017 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
1018// if (!item) item = mActiveItem; 1018// if (!item) item = mActiveItem;
1019 if (item) selected.append(item->todo()); 1019 if (item) selected.append(item->todo());
1020 1020
1021 return selected; 1021 return selected;
1022} 1022}
1023 1023
1024void KOTodoView::changeEventDisplay(Event *, int) 1024void KOTodoView::changeEventDisplay(Event *, int)
1025{ 1025{
1026 updateView(); 1026 updateView();
1027} 1027}
1028 1028
1029void KOTodoView::showDates(const QDate &, const QDate &) 1029void KOTodoView::showDates(const QDate &, const QDate &)
1030{ 1030{
1031} 1031}
1032 1032
1033void KOTodoView::showEvents(QPtrList<Event>) 1033void KOTodoView::showEvents(QPtrList<Event>)
1034{ 1034{
1035 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; 1035 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl;
1036} 1036}
1037 1037
1038void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1038void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1039 const QDate &td) 1039 const QDate &td)
1040{ 1040{
1041#ifndef KORG_NOPRINTER 1041#ifndef KORG_NOPRINTER
1042 calPrinter->preview(CalPrinter::Todolist, fd, td); 1042 calPrinter->preview(CalPrinter::Todolist, fd, td);
1043#endif 1043#endif
1044} 1044}
1045 1045
1046void KOTodoView::editItem(QListViewItem *item ) 1046void KOTodoView::editItem(QListViewItem *item )
1047{ 1047{
1048 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 1048 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
1049} 1049}
1050 1050
1051void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 1051void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
1052{ 1052{
1053 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 1053 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
1054} 1054}
1055 1055
1056void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) 1056void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column)
1057{ 1057{
1058 pendingSubtodo = 0; 1058 pendingSubtodo = 0;
1059 mActiveItem = (KOTodoViewItem *)item; 1059 mActiveItem = (KOTodoViewItem *)item;
1060 if (item) { 1060 if (item) {
1061 switch (column){ 1061 switch (column){
1062 case 1: 1062 case 1:
1063 mPriorityPopupMenu->popup(QCursor::pos ()); break; 1063 mPriorityPopupMenu->popup(QCursor::pos ()); break;
1064 case 2: 1064 case 2:
1065 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 1065 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
1066 case 3: 1066 case 3:
1067 moveTodo(); 1067 moveTodo();
1068 break; 1068 break;
1069 case 8: 1069 case 8:
1070 mCategoryPopupMenu->popup(QCursor::pos ()); break; 1070 mCategoryPopupMenu->popup(QCursor::pos ()); break;
1071 case 9: 1071 case 9:
1072 mCalPopupMenu->popup(QCursor::pos ()); break; 1072 mCalPopupMenu->popup(QCursor::pos ()); break;
1073 default: 1073 default:
1074 mItemPopupMenu->popup(QCursor::pos()); 1074 mItemPopupMenu->popup(QCursor::pos());
1075 } 1075 }
1076 } else mPopupMenu->popup(QCursor::pos()); 1076 } else mPopupMenu->popup(QCursor::pos());
1077} 1077}
1078void KOTodoView::newTodo() 1078void KOTodoView::newTodo()
1079{ 1079{
1080 emit newTodoSignal(); 1080 emit newTodoSignal();
1081} 1081}
1082 1082
1083void KOTodoView::newSubTodo() 1083void KOTodoView::newSubTodo()
1084{ 1084{
1085 if (mActiveItem) { 1085 if (mActiveItem) {
1086 emit newSubTodoSignal(mActiveItem->todo()); 1086 emit newSubTodoSignal(mActiveItem->todo());
1087 } 1087 }
1088} 1088}
1089void KOTodoView::unparentTodo() 1089void KOTodoView::unparentTodo()
1090{ 1090{
1091 if (mActiveItem) { 1091 if (mActiveItem) {
1092 emit unparentTodoSignal(mActiveItem->todo()); 1092 emit unparentTodoSignal(mActiveItem->todo());
1093 } 1093 }
1094} 1094}
1095 1095
1096void KOTodoView::reparentTodo() 1096void KOTodoView::reparentTodo()
1097{ 1097{
1098 if (mActiveItem) { 1098 if (mActiveItem) {
1099 topLevelWidget()->setCaption(i18n("Click on new parent item")); 1099 topLevelWidget()->setCaption(i18n("Click on new parent item"));
1100 pendingSubtodo = mActiveItem; 1100 pendingSubtodo = mActiveItem;
1101 } 1101 }
1102} 1102}
1103void KOTodoView::editTodo() 1103void KOTodoView::editTodo()
1104{ 1104{
1105 if (mActiveItem) { 1105 if (mActiveItem) {
1106 emit editTodoSignal(mActiveItem->todo()); 1106 emit editTodoSignal(mActiveItem->todo());
1107 } 1107 }
1108} 1108}
1109void KOTodoView::cloneTodo() 1109void KOTodoView::cloneTodo()
1110{ 1110{
1111 if (mActiveItem) { 1111 if (mActiveItem) {
1112 emit cloneTodoSignal((Incidence*)mActiveItem->todo()); 1112 emit cloneTodoSignal((Incidence*)mActiveItem->todo());
1113 } 1113 }
1114} 1114}
1115void KOTodoView::cancelTodo() 1115void KOTodoView::cancelTodo()
1116{ 1116{
1117 if (mActiveItem) { 1117 if (mActiveItem) {
1118 emit cancelTodoSignal((Incidence*)mActiveItem->todo()); 1118 emit cancelTodoSignal((Incidence*)mActiveItem->todo());
1119 } 1119 }
1120} 1120}
1121void KOTodoView::moveTodo() 1121void KOTodoView::moveTodo()
1122{ 1122{
1123 if (mActiveItem) { 1123 if (mActiveItem) {
1124 emit moveTodoSignal((Incidence*)mActiveItem->todo()); 1124 emit moveTodoSignal((Incidence*)mActiveItem->todo());
1125 } 1125 }
1126} 1126}
1127void KOTodoView::beamTodo() 1127void KOTodoView::beamTodo()
1128{ 1128{
1129 if (mActiveItem) { 1129 if (mActiveItem) {
1130 emit beamTodoSignal((Incidence*)mActiveItem->todo()); 1130 emit beamTodoSignal((Incidence*)mActiveItem->todo());
1131 } 1131 }
1132} 1132}
1133 1133
1134 1134
1135void KOTodoView::showTodo() 1135void KOTodoView::showTodo()
1136{ 1136{
1137 if (mActiveItem) { 1137 if (mActiveItem) {
1138 emit showTodoSignal(mActiveItem->todo()); 1138 emit showTodoSignal(mActiveItem->todo());
1139 } 1139 }
1140} 1140}
1141 1141
1142void KOTodoView::deleteTodo() 1142void KOTodoView::deleteTodo()
1143{ 1143{
1144 if (mActiveItem) { 1144 if (mActiveItem) {
1145 emit deleteTodoSignal(mActiveItem->todo()); 1145 emit deleteTodoSignal(mActiveItem->todo());
1146 } 1146 }
1147} 1147}
1148 1148
1149void KOTodoView::setNewPriority(int index) 1149void KOTodoView::setNewPriority(int index)
1150{ 1150{
1151 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 1151 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
1152 mActiveItem->todo()->setPriority(mPriority[index]); 1152 mActiveItem->todo()->setPriority(mPriority[index]);
1153 mActiveItem->construct(); 1153 mActiveItem->construct();
1154 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); 1154 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED);
1155 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 1155 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
1156 } 1156 }
1157 processSelectionChange();
1157} 1158}
1158 1159
1159void KOTodoView::setNewPercentage(int index) 1160void KOTodoView::setNewPercentage(int index)
1160{ 1161{
1161 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 1162 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
1162 1163
1163 if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) { 1164 if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) {
1164 mActiveItem->setOn( true ); 1165 mActiveItem->setOn( true );
1166 processSelectionChange();
1165 return; 1167 return;
1166 } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) { 1168 } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) {
1167 KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent())); 1169 KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent()));
1168 if ( par && par->isOn() ) 1170 if ( par && par->isOn() )
1169 par->setOn( false ); 1171 par->setOn( false );
1170 } 1172 }
1171 if (mPercentage[index] == 100) { 1173 if (mPercentage[index] == 100) {
1172 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); 1174 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime());
1173 } else { 1175 } else {
1174 mActiveItem->todo()->setCompleted(false); 1176 mActiveItem->todo()->setCompleted(false);
1175 } 1177 }
1176 mActiveItem->todo()->setPercentComplete(mPercentage[index]); 1178 mActiveItem->todo()->setPercentComplete(mPercentage[index]);
1177 mActiveItem->construct(); 1179 mActiveItem->construct();
1178 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); 1180 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED);
1179 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 1181 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
1180 } 1182 }
1183 processSelectionChange();
1181} 1184}
1182 1185
1183void KOTodoView::fillCategories () 1186void KOTodoView::fillCategories ()
1184{ 1187{
1185 mCategoryPopupMenu->clear(); 1188 mCategoryPopupMenu->clear();
1186 if ( ! mActiveItem ) return; 1189 if ( ! mActiveItem ) return;
1187 QStringList checkedCategories = mActiveItem->todo()->categories (); 1190 QStringList checkedCategories = mActiveItem->todo()->categories ();
1188 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 1191 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
1189 it != KOPrefs::instance()->mCustomCategories.end (); 1192 it != KOPrefs::instance()->mCustomCategories.end ();
1190 ++it) { 1193 ++it) {
1191 int index = mCategoryPopupMenu->insertItem (*it); 1194 int index = mCategoryPopupMenu->insertItem (*it);
1192 mCategory[index] = *it; 1195 mCategory[index] = *it;
1193 if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); 1196 if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true);
1194 } 1197 }
1195} 1198}
1196void KOTodoView::fillCal () 1199void KOTodoView::fillCal ()
1197{ 1200{
1198 mCalPopupMenu->clear(); 1201 mCalPopupMenu->clear();
1199 if (!mActiveItem) return; 1202 if (!mActiveItem) return;
1200 bool readO = mActiveItem->todo()->isReadOnly(); 1203 bool readO = mActiveItem->todo()->isReadOnly();
1201 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 1204 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
1202 while ( kkf ) { 1205 while ( kkf ) {
1203 int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber); 1206 int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber);
1204 if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) 1207 if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO )
1205 mCalPopupMenu->setItemEnabled( index, false ); 1208 mCalPopupMenu->setItemEnabled( index, false );
1206 mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID()); 1209 mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID());
1207 kkf = KOPrefs::instance()->mCalendars.next(); 1210 kkf = KOPrefs::instance()->mCalendars.next();
1208 } 1211 }
1209} 1212}
1210void KOTodoView::changedCal (int index ) 1213void KOTodoView::changedCal (int index )
1211{ 1214{
1212 if (!mActiveItem) return; 1215 if (!mActiveItem) return;
1213 mActiveItem->todo()->setCalID( index ); 1216 mActiveItem->todo()->setCalID( index );
1214 mActiveItem->construct(); 1217 mActiveItem->construct();
1215} 1218}
1216void KOTodoView::changedCategories(int index) 1219void KOTodoView::changedCategories(int index)
1217{ 1220{
1218 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 1221 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
1219 QStringList categories = mActiveItem->todo()->categories (); 1222 QStringList categories = mActiveItem->todo()->categories ();
1220 QString colcat = categories.first(); 1223 QString colcat = categories.first();
1221 if (categories.find (mCategory[index]) != categories.end ()) 1224 if (categories.find (mCategory[index]) != categories.end ())
1222 categories.remove (mCategory[index]); 1225 categories.remove (mCategory[index]);
1223 else 1226 else
1224 categories.insert (categories.end(), mCategory[index]); 1227 categories.insert (categories.end(), mCategory[index]);
1225 categories.sort (); 1228 categories.sort ();
1226 if ( !colcat.isEmpty() ) { 1229 if ( !colcat.isEmpty() ) {
1227 if ( categories.find ( colcat ) != categories.end () ) { 1230 if ( categories.find ( colcat ) != categories.end () ) {
1228 categories.remove( colcat ); 1231 categories.remove( colcat );
1229 categories.prepend( colcat ); 1232 categories.prepend( colcat );
1230 } 1233 }
1231 } 1234 }
1232 mActiveItem->todo()->setCategories (categories); 1235 mActiveItem->todo()->setCategories (categories);
1233 mActiveItem->construct(); 1236 mActiveItem->construct();
1234 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 1237 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
1235 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); 1238 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED);
1236 } 1239 }
1237} 1240}
1238void KOTodoView::itemDoubleClicked(QListViewItem *item) 1241void KOTodoView::itemDoubleClicked(QListViewItem *item)
1239{ 1242{
1240 if ( pendingSubtodo != 0 ) { 1243 if ( pendingSubtodo != 0 ) {
1241 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 1244 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
1242 } 1245 }
1243 pendingSubtodo = 0; 1246 pendingSubtodo = 0;
1244 //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() ); 1247 //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() );
1245 int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() ); 1248 int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() );
1246 //qDebug("ROW %d ", row); 1249 //qDebug("ROW %d ", row);
1247 if (!item) { 1250 if (!item) {
1248 newTodo(); 1251 newTodo();
1249 return; 1252 return;
1250 } else { 1253 } else {
1251 if ( row == 1 ) { 1254 if ( row == 1 ) {
1252 mActiveItem = (KOTodoViewItem *) item; 1255 mActiveItem = (KOTodoViewItem *) item;
1253 newSubTodo(); 1256 newSubTodo();
1254 return; 1257 return;
1255 } 1258 }
1256 if ( row == 5 || row == 6 || row == 2) { 1259 if ( row == 5 || row == 6 || row == 2) {
1257 mActiveItem = (KOTodoViewItem *) item; 1260 mActiveItem = (KOTodoViewItem *) item;
1258 Todo * t = mActiveItem->todo(); 1261 Todo * t = mActiveItem->todo();
1259 if ( t->isRunning() ) { 1262 if ( t->isRunning() ) {
1260 if ( t->runTime() < 15) { 1263 if ( t->runTime() < 15) {
1261 t->stopRunning(); 1264 t->stopRunning();
1262 mActiveItem->construct(); 1265 mActiveItem->construct();
1263 topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!")); 1266 topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!"));
1264 return; 1267 return;
1265 } 1268 }
1266 else 1269 else
1267 toggleRunningItem(); 1270 toggleRunningItem();
1268 return; 1271 return;
1269 } else { 1272 } else {
1270 t->setRunning( true ); 1273 t->setRunning( true );
1271 mActiveItem->construct(); 1274 mActiveItem->construct();
1272 topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!")); 1275 topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!"));
1273 return; 1276 return;
1274 } 1277 }
1275 } 1278 }
1276 } 1279 }
1277 if ( KOPrefs::instance()->mEditOnDoubleClick ) 1280 if ( KOPrefs::instance()->mEditOnDoubleClick )
1278 editItem( item ); 1281 editItem( item );
1279 else 1282 else
1280 showItem( item , QPoint(), 0 ); 1283 showItem( item , QPoint(), 0 );
1281} 1284}
1282void KOTodoView::toggleRunningItem() 1285void KOTodoView::toggleRunningItem()
1283{ 1286{
1284 // qDebug("KOTodoView::toggleRunning() "); 1287 // qDebug("KOTodoView::toggleRunning() ");
1285 if ( ! mActiveItem ) 1288 if ( ! mActiveItem )
1286 return; 1289 return;
1287 Todo * t = mActiveItem->todo(); 1290 Todo * t = mActiveItem->todo();
1288 if ( t->isRunning() ) { 1291 if ( t->isRunning() ) {
1289 KOStopTodoPrefs tp ( t, this ); 1292 KOStopTodoPrefs tp ( t, this );
1290 if (QApplication::desktop()->width() <= 800 ){ 1293 if (QApplication::desktop()->width() <= 800 ){
1291 int wid = tp.width(); 1294 int wid = tp.width();
1292 int hei = tp.height(); 1295 int hei = tp.height();
1293 int xx = (QApplication::desktop()->width()-wid)/2; 1296 int xx = (QApplication::desktop()->width()-wid)/2;
1294 int yy = (QApplication::desktop()->height()-hei)/2; 1297 int yy = (QApplication::desktop()->height()-hei)/2;
1295 tp.setGeometry( xx,yy,wid,hei ); 1298 tp.setGeometry( xx,yy,wid,hei );
1296 } 1299 }
1297 tp.exec(); 1300 tp.exec();
1298 mActiveItem->construct(); 1301 mActiveItem->construct();
1299 } else { 1302 } else {
1300 KOStartTodoPrefs tp ( t->summary(), this ); 1303 KOStartTodoPrefs tp ( t->summary(), this );
1301 if (QApplication::desktop()->width() <= 800 ){ 1304 if (QApplication::desktop()->width() <= 800 ){
1302 int wid = tp.width(); 1305 int wid = tp.width();
1303 int hei = tp.height(); 1306 int hei = tp.height();
1304 int xx = (QApplication::desktop()->width()-wid)/2; 1307 int xx = (QApplication::desktop()->width()-wid)/2;
1305 int yy = (QApplication::desktop()->height()-hei)/2; 1308 int yy = (QApplication::desktop()->height()-hei)/2;
1306 tp.setGeometry( xx,yy,wid,hei ); 1309 tp.setGeometry( xx,yy,wid,hei );
1307 } 1310 }
1308 if ( !tp.exec() ) return; 1311 if ( !tp.exec() ) return;
1309 if ( tp.stopAll() ) { 1312 if ( tp.stopAll() ) {
1310 mCalendar->stopAllTodos(); 1313 mCalendar->stopAllTodos();
1311 t->setRunning( true ); 1314 t->setRunning( true );
1312 updateView(); 1315 updateView();
1313 } else { 1316 } else {
1314 t->setRunning( true ); 1317 t->setRunning( true );
1315 mActiveItem->construct(); 1318 mActiveItem->construct();
1316 } 1319 }
1317 } 1320 }
1318} 1321}
1319 1322
1320void KOTodoView::itemClicked(QListViewItem *item) 1323void KOTodoView::itemClicked(QListViewItem *item)
1321{ 1324{
1322 //qDebug("KOTodoView::itemClicked %d", item); 1325 //qDebug("KOTodoView::itemClicked %d", item);
1323 if (!item) { 1326 if (!item) {
1324 if ( pendingSubtodo != 0 ) { 1327 if ( pendingSubtodo != 0 ) {
1325 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 1328 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
1326 } 1329 }
1327 pendingSubtodo = 0; 1330 pendingSubtodo = 0;
1328 return; 1331 return;
1329 } 1332 }
1330 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 1333 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
1331 if ( pendingSubtodo != 0 ) { 1334 if ( pendingSubtodo != 0 ) {
1332 bool allowReparent = true; 1335 bool allowReparent = true;
1333 QListViewItem *par = item; 1336 QListViewItem *par = item;
1334 while ( par ) { 1337 while ( par ) {
1335 if ( par == pendingSubtodo ) { 1338 if ( par == pendingSubtodo ) {
1336 allowReparent = false; 1339 allowReparent = false;
1337 break; 1340 break;
1338 } 1341 }
1339 par = par->parent(); 1342 par = par->parent();
1340 } 1343 }
1341 if ( !allowReparent ) { 1344 if ( !allowReparent ) {
1342 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); 1345 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!"));
1343 pendingSubtodo = 0; 1346 pendingSubtodo = 0;
1344 } else { 1347 } else {
1345 Todo* newParent = todoItem->todo(); 1348 Todo* newParent = todoItem->todo();
1346 Todo* newSub = pendingSubtodo->todo(); 1349 Todo* newSub = pendingSubtodo->todo();
1347 pendingSubtodo = 0; 1350 pendingSubtodo = 0;
1348 emit reparentTodoSignal( newParent,newSub ); 1351 emit reparentTodoSignal( newParent,newSub );
1349 return; 1352 return;
1350 } 1353 }
1351 } 1354 }
1352 1355
1353} 1356}
1354 1357
1355void KOTodoView::setDocumentId( const QString &id ) 1358void KOTodoView::setDocumentId( const QString &id )
1356{ 1359{
1357 1360
1358 mDocPrefs->setDoc( id ); 1361 mDocPrefs->setDoc( id );
1359} 1362}
1360 1363
1361void KOTodoView::itemStateChanged( QListViewItem *item ) 1364void KOTodoView::itemStateChanged( QListViewItem *item )
1362{ 1365{
1363 if (!item) return; 1366 if (!item) return;
1364 1367
1365 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 1368 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
1366 1369
1367// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; 1370// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl;
1368 1371
1369 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); 1372 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() );
1370} 1373}
1371 1374
1372void KOTodoView::saveLayout(KConfig *config, const QString &group) const 1375void KOTodoView::saveLayout(KConfig *config, const QString &group) const
1373{ 1376{
1374 mTodoListView->saveLayout(config,group); 1377 mTodoListView->saveLayout(config,group);
1375} 1378}
1376 1379
1377void KOTodoView::restoreLayout(KConfig *config, const QString &group) 1380void KOTodoView::restoreLayout(KConfig *config, const QString &group)
1378{ 1381{
1379 mTodoListView->restoreLayout(config,group); 1382 mTodoListView->restoreLayout(config,group);
1380} 1383}
1381 1384
1382void KOTodoView::processSelectionChange() 1385void KOTodoView::processSelectionChange()
1383{ 1386{
1384// kdDebug() << "KOTodoView::processSelectionChange()" << endl; 1387// kdDebug() << "KOTodoView::processSelectionChange()" << endl;
1385 1388
1386 KOTodoViewItem *item = 1389 KOTodoViewItem *item =
1387 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); 1390 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() );
1388 1391
1389 if ( !item ) { 1392 if ( !item ) {
1390 emit incidenceSelected( 0 ); 1393 emit incidenceSelected( 0 );
1391 } else { 1394 } else {
1392 emit incidenceSelected( item->todo() ); 1395 emit incidenceSelected( item->todo() );
1393 } 1396 }
1394} 1397}
1395 1398
1396void KOTodoView::modified(bool b) 1399void KOTodoView::modified(bool b)
1397{ 1400{
1398 emit isModified(b); 1401 emit isModified(b);
1399} 1402}
1400void KOTodoView::setTodoModified( Todo* todo ) 1403void KOTodoView::setTodoModified( Todo* todo )
1401{ 1404{
1402 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); 1405 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED );
1403} 1406}
1404void KOTodoView::clearSelection() 1407void KOTodoView::clearSelection()
1405{ 1408{
1406 mTodoListView->selectAll( false ); 1409 mTodoListView->selectAll( false );
1407} 1410}
1408void KOTodoView::setAllOpen() 1411void KOTodoView::setAllOpen()
1409{ 1412{
1410 if ( isFlatDisplay ) { 1413 if ( isFlatDisplay ) {
1411 isFlatDisplay = false; 1414 isFlatDisplay = false;
1412 mPopupMenu->setItemChecked( 8,false ); 1415 mPopupMenu->setItemChecked( 8,false );
1413 updateView(); 1416 updateView();
1414 } else { 1417 } else {
1415 storeCurrentItem(); 1418 storeCurrentItem();
1416 } 1419 }
1417 setOpen(mTodoListView->firstChild(), true); 1420 setOpen(mTodoListView->firstChild(), true);
1418 resetCurrentItem(); 1421 resetCurrentItem();
1419} 1422}
1420void KOTodoView::setAllClose() 1423void KOTodoView::setAllClose()
1421{ 1424{
1422 if ( isFlatDisplay ) { 1425 if ( isFlatDisplay ) {
1423 isFlatDisplay = false; 1426 isFlatDisplay = false;
1424 mPopupMenu->setItemChecked( 8,false ); 1427 mPopupMenu->setItemChecked( 8,false );
1425 updateView(); 1428 updateView();
1426 } else { 1429 } else {
1427 storeCurrentItem(); 1430 storeCurrentItem();
1428 } 1431 }
1429 setOpen(mTodoListView->firstChild(), false); 1432 setOpen(mTodoListView->firstChild(), false);
1430 resetCurrentItem(); 1433 resetCurrentItem();
1431} 1434}
1432void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) 1435void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
1433{ 1436{
1434 1437
1435 while ( item ) { 1438 while ( item ) {
1436 setOpen( item->firstChild(), setOpenI ); 1439 setOpen( item->firstChild(), setOpenI );
1437 item->setOpen( setOpenI ); 1440 item->setOpen( setOpenI );
1438 item = item->nextSibling(); 1441 item = item->nextSibling();
1439 } 1442 }
1440} 1443}
1441 1444
1442void KOTodoView::displayAllFlat() 1445void KOTodoView::displayAllFlat()
1443{ 1446{
1444 storeCurrentItem(); 1447 storeCurrentItem();
1445 pendingSubtodo = 0; 1448 pendingSubtodo = 0;
1446 if ( mBlockUpdate ) { 1449 if ( mBlockUpdate ) {
1447 return; 1450 return;
1448 } 1451 }
1449 mPopupMenu->setItemChecked( 8,true ); 1452 mPopupMenu->setItemChecked( 8,true );
1450 isFlatDisplay = true; 1453 isFlatDisplay = true;
1451 QPtrList<Todo> todoList = calendar()->todos(); 1454 QPtrList<Todo> todoList = calendar()->todos();
1452 mTodoMap.clear(); 1455 mTodoMap.clear();
1453 mTodoListView->clear(); 1456 mTodoListView->clear();
1454 Todo *todo; 1457 Todo *todo;
1455 for(todo = todoList.first(); todo; todo = todoList.next()) { 1458 for(todo = todoList.first(); todo; todo = todoList.next()) {
1456 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 1459 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
1457 mTodoMap.insert(todo,todoItem); 1460 mTodoMap.insert(todo,todoItem);
1458 } 1461 }
1459 resetCurrentItem(); 1462 resetCurrentItem();
1460} 1463}
1461 1464
1462void KOTodoView::setAllFlat() 1465void KOTodoView::setAllFlat()
1463{ 1466{
1464 if ( isFlatDisplay ) { 1467 if ( isFlatDisplay ) {
1465 isFlatDisplay = false; 1468 isFlatDisplay = false;
1466 mPopupMenu->setItemChecked( 8,false ); 1469 mPopupMenu->setItemChecked( 8,false );
1467 updateView(); 1470 updateView();
1468 return; 1471 return;
1469 } 1472 }
1470 displayAllFlat(); 1473 displayAllFlat();
1471} 1474}
1472 1475
1473void KOTodoView::purgeCompleted() 1476void KOTodoView::purgeCompleted()
1474{ 1477{
1475 emit purgeCompletedSignal(); 1478 emit purgeCompletedSignal();
1476 1479
1477} 1480}
1478void KOTodoView::toggleQuickTodo() 1481void KOTodoView::toggleQuickTodo()
1479{ 1482{
1480 if ( mQuickAdd->isVisible() ) { 1483 if ( mQuickAdd->isVisible() ) {
1481 mQuickAdd->hide(); 1484 mQuickAdd->hide();
1482 KOPrefs::instance()->mEnableQuickTodo = false; 1485 KOPrefs::instance()->mEnableQuickTodo = false;
1483 } 1486 }
1484 else { 1487 else {
1485 mQuickAdd->show(); 1488 mQuickAdd->show();
1486 KOPrefs::instance()->mEnableQuickTodo = true; 1489 KOPrefs::instance()->mEnableQuickTodo = true;
1487 } 1490 }
1488 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 1491 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
1489 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 1492 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
1490} 1493}
1491 1494
1492void KOTodoView::toggleRunning() 1495void KOTodoView::toggleRunning()
1493{ 1496{
1494 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; 1497 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos;
1495 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 1498 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
1496 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 1499 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
1497 updateView(); 1500 updateView();
1498} 1501}
1499 1502
1500void KOTodoView::toggleCompleted() 1503void KOTodoView::toggleCompleted()
1501{ 1504{
1502 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; 1505 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo;
1503 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 1506 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
1504 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 1507 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
1505 updateView(); 1508 updateView();
1506} 1509}
1507 1510
1508void KOTodoView::addQuickTodo() 1511void KOTodoView::addQuickTodo()
1509{ 1512{
1510 Todo *todo = new Todo(); 1513 Todo *todo = new Todo();
1511 todo->setSummary(mQuickAdd->text()); 1514 todo->setSummary(mQuickAdd->text());
1512 todo->setOrganizer(KOPrefs::instance()->email()); 1515 todo->setOrganizer(KOPrefs::instance()->email());
1513 CalFilter * cf = mCalendar->filter(); 1516 CalFilter * cf = mCalendar->filter();
1514 if ( cf ) { 1517 if ( cf ) {
1515 if ( cf->isEnabled()&& cf->showCategories()) { 1518 if ( cf->isEnabled()&& cf->showCategories()) {
1516 todo->setCategories(cf->categoryList()); 1519 todo->setCategories(cf->categoryList());
1517 } 1520 }
1518 if ( cf->isEnabled() ) 1521 if ( cf->isEnabled() )
1519 todo->setSecrecy( cf->getSecrecy()); 1522 todo->setSecrecy( cf->getSecrecy());
1520 } 1523 }
1521 mCalendar->addTodo(todo); 1524 mCalendar->addTodo(todo);
1522 mQuickAdd->setText(""); 1525 mQuickAdd->setText("");
1523 todoModified (todo, KOGlobals::EVENTADDED ); 1526 todoModified (todo, KOGlobals::EVENTADDED );
1524 updateView(); 1527 updateView();
1525} 1528}
1526 1529
1527void KOTodoView::keyPressEvent ( QKeyEvent * e ) 1530void KOTodoView::keyPressEvent ( QKeyEvent * e )
1528{ 1531{
1529 // e->ignore(); 1532 // e->ignore();
1530 //return; 1533 //return;
1531 //qDebug("KOTodoView::keyPressEvent "); 1534 //qDebug("KOTodoView::keyPressEvent ");
1532 switch ( e->key() ) { 1535 switch ( e->key() ) {
1533 case Qt::Key_Down: 1536 case Qt::Key_Down:
1534 case Qt::Key_Up: 1537 case Qt::Key_Up:
1535 QWidget::keyPressEvent ( e ); 1538 QWidget::keyPressEvent ( e );
1536 break; 1539 break;
1537 1540
1538 case Qt::Key_Q: 1541 case Qt::Key_Q:
1539 toggleQuickTodo(); 1542 toggleQuickTodo();
1540 break; 1543 break;
1541 case Qt::Key_U: 1544 case Qt::Key_U:
1542 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1545 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1543 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1546 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1544 unparentTodo(); 1547 unparentTodo();
1545 e->accept(); 1548 e->accept();
1546 } else 1549 } else
1547 e->ignore(); 1550 e->ignore();
1548 break; 1551 break;
1549 case Qt::Key_S: 1552 case Qt::Key_S:
1550 if ( e->state() == Qt::ControlButton ) { 1553 if ( e->state() == Qt::ControlButton ) {
1551 e->ignore(); 1554 e->ignore();
1552 break; 1555 break;
1553 } 1556 }
1554 if ( e->state() == Qt::ShiftButton ) { 1557 if ( e->state() == Qt::ShiftButton ) {
1555 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1558 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1556 reparentTodo(); 1559 reparentTodo();
1557 e->accept(); 1560 e->accept();
1558 } else 1561 } else
1559 e->ignore(); 1562 e->ignore();
1560 break; 1563 break;
1561 case Qt::Key_P: 1564 case Qt::Key_P:
1562 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1565 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1563 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1566 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1564 if ( pendingSubtodo ) 1567 if ( pendingSubtodo )
1565 itemClicked(mActiveItem); 1568 itemClicked(mActiveItem);
1566 e->accept(); 1569 e->accept();
1567 } else 1570 } else
1568 e->ignore(); 1571 e->ignore();
1569 break; 1572 break;
1570 case Qt::Key_Escape: 1573 case Qt::Key_Escape:
1571 if ( pendingSubtodo ) { 1574 if ( pendingSubtodo ) {
1572 itemClicked(0); 1575 itemClicked(0);
1573 e->accept(); 1576 e->accept();
1574 } else 1577 } else
1575 e->ignore(); 1578 e->ignore();
1576 break; 1579 break;
1577 default: 1580 default:
1578 e->ignore(); 1581 e->ignore();
1579 } 1582 }
1580 1583
1581 if ( true ) { 1584 if ( true ) {
1582 if ( e->key() == Qt::Key_I ) { 1585 if ( e->key() == Qt::Key_I ) {
1583 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); 1586 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem();
1584 if ( cn ) { 1587 if ( cn ) {
1585 mActiveItem = cn; 1588 mActiveItem = cn;
1586 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 1589 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
1587 if ( ci ){ 1590 if ( ci ){
1588 showTodo(); 1591 showTodo();
1589 cn = (KOTodoViewItem*)cn->itemBelow(); 1592 cn = (KOTodoViewItem*)cn->itemBelow();
1590 if ( cn ) { 1593 if ( cn ) {
1591 mTodoListView->setCurrentItem ( cn ); 1594 mTodoListView->setCurrentItem ( cn );
1592 mTodoListView->ensureItemVisible ( cn ); 1595 mTodoListView->ensureItemVisible ( cn );
1593 } 1596 }
1594 1597
1595 } 1598 }
1596 } 1599 }
1597 e->accept(); 1600 e->accept();
1598 1601
1599 } 1602 }
1600 1603
1601 } 1604 }
1602 1605
1603} 1606}
1604void KOTodoView::updateTodo( Todo * t, int type ) 1607void KOTodoView::updateTodo( Todo * t, int type )
1605{ 1608{
1606 if ( mBlockUpdate) 1609 if ( mBlockUpdate)
1607 return; 1610 return;
1608 1611
1609 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 1612 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
1610 itemIterator = mTodoMap.find(t); 1613 itemIterator = mTodoMap.find(t);
1611 if (itemIterator != mTodoMap.end()) { 1614 if (itemIterator != mTodoMap.end()) {
1612 (*itemIterator)->construct(); 1615 (*itemIterator)->construct();
1613 } else { 1616 } else {
1614 if ( type == KOGlobals::EVENTADDED ) { 1617 if ( type == KOGlobals::EVENTADDED ) {
1615 insertTodoItem( t ); 1618 insertTodoItem( t );
1616 } 1619 }
1617 } 1620 }
1618 1621
1619} 1622}
1620 1623
1621void KOTodoView::todoModified(Todo * t , int p ) 1624void KOTodoView::todoModified(Todo * t , int p )
1622{ 1625{
1623 mBlockUpdate = true; 1626 mBlockUpdate = true;
1624 emit todoModifiedSignal ( t, p ); 1627 emit todoModifiedSignal ( t, p );
1625 mBlockUpdate = false; 1628 mBlockUpdate = false;
1626} 1629}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 88dbd4f..cbf6096 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1173,1026 +1173,1030 @@ void MainWindow::initActions()
1173 SLOT( timetrackinghowto() ) ); 1173 SLOT( timetrackinghowto() ) );
1174 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 1174 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
1175 action->addTo( helpMenu ); 1175 action->addTo( helpMenu );
1176 connect( action, SIGNAL( activated() ), 1176 connect( action, SIGNAL( activated() ),
1177 SLOT( synchowto() ) ); 1177 SLOT( synchowto() ) );
1178 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 1178 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
1179 action->addTo( helpMenu ); 1179 action->addTo( helpMenu );
1180 connect( action, SIGNAL( activated() ), 1180 connect( action, SIGNAL( activated() ),
1181 SLOT( kdesynchowto() ) ); 1181 SLOT( kdesynchowto() ) );
1182 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 1182 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
1183 action->addTo( helpMenu ); 1183 action->addTo( helpMenu );
1184 connect( action, SIGNAL( activated() ), 1184 connect( action, SIGNAL( activated() ),
1185 SLOT( multisynchowto() ) ); 1185 SLOT( multisynchowto() ) );
1186 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 1186 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
1187 action->addTo( helpMenu ); 1187 action->addTo( helpMenu );
1188 connect( action, SIGNAL( activated() ), 1188 connect( action, SIGNAL( activated() ),
1189 SLOT( aboutAutoSaving() ) ); 1189 SLOT( aboutAutoSaving() ) );
1190 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 1190 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
1191 action->addTo( helpMenu ); 1191 action->addTo( helpMenu );
1192 connect( action, SIGNAL( activated() ), 1192 connect( action, SIGNAL( activated() ),
1193 SLOT( aboutKnownBugs() ) ); 1193 SLOT( aboutKnownBugs() ) );
1194 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 1194 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
1195 action->addTo( helpMenu ); 1195 action->addTo( helpMenu );
1196 connect( action, SIGNAL( activated() ), 1196 connect( action, SIGNAL( activated() ),
1197 SLOT( usertrans() ) ); 1197 SLOT( usertrans() ) );
1198 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 1198 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
1199 action->addTo( helpMenu ); 1199 action->addTo( helpMenu );
1200 connect( action, SIGNAL( activated() ), 1200 connect( action, SIGNAL( activated() ),
1201 SLOT( faq() ) ); 1201 SLOT( faq() ) );
1202 action = new QAction( "licence", i18n("Licence..."), 0, this ); 1202 action = new QAction( "licence", i18n("Licence..."), 0, this );
1203 action->addTo( helpMenu ); 1203 action->addTo( helpMenu );
1204 connect( action, SIGNAL( activated() ), 1204 connect( action, SIGNAL( activated() ),
1205 SLOT( licence() ) ); 1205 SLOT( licence() ) );
1206 action = new QAction( "about", i18n("About..."), 0, this ); 1206 action = new QAction( "about", i18n("About..."), 0, this );
1207 action->addTo( helpMenu ); 1207 action->addTo( helpMenu );
1208 connect( action, SIGNAL( activated() ), 1208 connect( action, SIGNAL( activated() ),
1209 SLOT( about() ) ); 1209 SLOT( about() ) );
1210 //menuBar->insertSeparator(); 1210 //menuBar->insertSeparator();
1211 1211
1212 // ****************************************************** 1212 // ******************************************************
1213 // menubar icons 1213 // menubar icons
1214 1214
1215 1215
1216 1216
1217 //menuBar->insertItem( iconToolBar ); 1217 //menuBar->insertItem( iconToolBar );
1218 //xdays_action 1218 //xdays_action
1219 if (p-> mShowIconNewEvent) 1219 if (p-> mShowIconNewEvent)
1220 ne_action->addTo( iconToolBar ); 1220 ne_action->addTo( iconToolBar );
1221 if (p->mShowIconNewTodo ) 1221 if (p->mShowIconNewTodo )
1222 nt_action->addTo( iconToolBar ); 1222 nt_action->addTo( iconToolBar );
1223 if (p-> mShowIconSearch) 1223 if (p-> mShowIconSearch)
1224 search_action->addTo( iconToolBar ); 1224 search_action->addTo( iconToolBar );
1225 if (p-> mShowIconWhatsThis) 1225 if (p-> mShowIconWhatsThis)
1226 QWhatsThis::whatsThisButton ( iconToolBar ); 1226 QWhatsThis::whatsThisButton ( iconToolBar );
1227 if (p-> mShowIconNext) 1227 if (p-> mShowIconNext)
1228 whatsnext_action->addTo( viewToolBar ); 1228 whatsnext_action->addTo( viewToolBar );
1229 if (p-> mShowIconNextDays) 1229 if (p-> mShowIconNextDays)
1230 xdays_action->addTo( viewToolBar ); 1230 xdays_action->addTo( viewToolBar );
1231 if (p-> mShowIconJournal) 1231 if (p-> mShowIconJournal)
1232 viewjournal_action->addTo( viewToolBar ); 1232 viewjournal_action->addTo( viewToolBar );
1233 if (p-> mShowIconDay1) 1233 if (p-> mShowIconDay1)
1234 day1_action->addTo( viewToolBar ); 1234 day1_action->addTo( viewToolBar );
1235 if (p-> mShowIconDay5) 1235 if (p-> mShowIconDay5)
1236 day5_action->addTo( viewToolBar ); 1236 day5_action->addTo( viewToolBar );
1237 if (p-> mShowIconDay7) 1237 if (p-> mShowIconDay7)
1238 day7_action->addTo( viewToolBar ); 1238 day7_action->addTo( viewToolBar );
1239 if (p-> mShowIconDay6) 1239 if (p-> mShowIconDay6)
1240 day6_action->addTo( viewToolBar ); 1240 day6_action->addTo( viewToolBar );
1241 if (p-> mShowIconMonth) 1241 if (p-> mShowIconMonth)
1242 month_action->addTo( viewToolBar ); 1242 month_action->addTo( viewToolBar );
1243 if (p-> mShowIconList) 1243 if (p-> mShowIconList)
1244 showlist_action->addTo( viewToolBar ); 1244 showlist_action->addTo( viewToolBar );
1245 if (p-> mShowIconTodoview) 1245 if (p-> mShowIconTodoview)
1246 todoview_action->addTo( viewToolBar ); 1246 todoview_action->addTo( viewToolBar );
1247 1247
1248 icon = loadPixmap( pathString + "2leftarrowB" ); 1248 icon = loadPixmap( pathString + "2leftarrowB" );
1249 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200); 1249 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200);
1250 if (p-> mShowIconBackFast) { 1250 if (p-> mShowIconBackFast) {
1251 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 1251 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
1252 connect( action, SIGNAL( activated() ), 1252 connect( action, SIGNAL( activated() ),
1253 mView, SLOT( goPreviousMonth() ) ); 1253 mView, SLOT( goPreviousMonth() ) );
1254 action->addTo( navigatorToolBar ); 1254 action->addTo( navigatorToolBar );
1255 } 1255 }
1256 icon = loadPixmap( pathString + "1leftarrowB" ); 1256 icon = loadPixmap( pathString + "1leftarrowB" );
1257 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210); 1257 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210);
1258 if (p-> mShowIconBack) { 1258 if (p-> mShowIconBack) {
1259 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 1259 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
1260 connect( action, SIGNAL( activated() ), 1260 connect( action, SIGNAL( activated() ),
1261 mView, SLOT( goPrevious() ) ); 1261 mView, SLOT( goPrevious() ) );
1262 action->addTo( navigatorToolBar ); 1262 action->addTo( navigatorToolBar );
1263 } 1263 }
1264 icon = loadPixmap( pathString + "today" ); 1264 icon = loadPixmap( pathString + "today" );
1265 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 1265 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
1266 if (p-> mShowIconToday) 1266 if (p-> mShowIconToday)
1267 today_action->addTo( navigatorToolBar ); 1267 today_action->addTo( navigatorToolBar );
1268 icon = loadPixmap( pathString + "1rightarrowB" ); 1268 icon = loadPixmap( pathString + "1rightarrowB" );
1269 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 1269 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
1270 if (p-> mShowIconForward) { 1270 if (p-> mShowIconForward) {
1271 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 1271 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
1272 connect( action, SIGNAL( activated() ), 1272 connect( action, SIGNAL( activated() ),
1273 mView, SLOT( goNext() ) ); 1273 mView, SLOT( goNext() ) );
1274 action->addTo( navigatorToolBar ); 1274 action->addTo( navigatorToolBar );
1275 } 1275 }
1276 icon = loadPixmap( pathString + "2rightarrowB" ); 1276 icon = loadPixmap( pathString + "2rightarrowB" );
1277 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1277 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1278 if (p-> mShowIconForwardFast) { 1278 if (p-> mShowIconForwardFast) {
1279 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1279 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1280 connect( action, SIGNAL( activated() ), 1280 connect( action, SIGNAL( activated() ),
1281 mView, SLOT( goNextMonth() ) ); 1281 mView, SLOT( goNextMonth() ) );
1282 action->addTo( navigatorToolBar ); 1282 action->addTo( navigatorToolBar );
1283 } 1283 }
1284 1284
1285 1285
1286 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6); 1286 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6);
1287 1287
1288 1288
1289 if ( p->mShowIconNavigator ) configureToolBarMenu->setItemChecked( 22 , true); 1289 if ( p->mShowIconNavigator ) configureToolBarMenu->setItemChecked( 22 , true);
1290 if ( p->mShowIconAllday ) configureToolBarMenu->setItemChecked( 24 , true); 1290 if ( p->mShowIconAllday ) configureToolBarMenu->setItemChecked( 24 , true);
1291 if ( p->mShowIconFilterview ) configureToolBarMenu->setItemChecked( 26 , true); 1291 if ( p->mShowIconFilterview ) configureToolBarMenu->setItemChecked( 26 , true);
1292 if ( p->mShowIconToggleFull ) configureToolBarMenu->setItemChecked( 28 , true); 1292 if ( p->mShowIconToggleFull ) configureToolBarMenu->setItemChecked( 28 , true);
1293 1293
1294 if (p-> mShowIconNewEvent) 1294 if (p-> mShowIconNewEvent)
1295 configureToolBarMenu->setItemChecked( 10, true ); 1295 configureToolBarMenu->setItemChecked( 10, true );
1296 if (p->mShowIconNewTodo ) 1296 if (p->mShowIconNewTodo )
1297 configureToolBarMenu->setItemChecked( 20, true ); 1297 configureToolBarMenu->setItemChecked( 20, true );
1298 if (p-> mShowIconSearch) 1298 if (p-> mShowIconSearch)
1299 configureToolBarMenu->setItemChecked( 120, true ); 1299 configureToolBarMenu->setItemChecked( 120, true );
1300 if (p-> mShowIconList) 1300 if (p-> mShowIconList)
1301 configureToolBarMenu->setItemChecked( 30, true ); 1301 configureToolBarMenu->setItemChecked( 30, true );
1302 if (p-> mShowIconDay1) 1302 if (p-> mShowIconDay1)
1303 configureToolBarMenu->setItemChecked( 40, true ); 1303 configureToolBarMenu->setItemChecked( 40, true );
1304 if (p-> mShowIconDay5) 1304 if (p-> mShowIconDay5)
1305 configureToolBarMenu->setItemChecked( 50, true ); 1305 configureToolBarMenu->setItemChecked( 50, true );
1306 if (p-> mShowIconDay6) 1306 if (p-> mShowIconDay6)
1307 configureToolBarMenu->setItemChecked( 75, true ); 1307 configureToolBarMenu->setItemChecked( 75, true );
1308 if (p-> mShowIconDay7) 1308 if (p-> mShowIconDay7)
1309 configureToolBarMenu->setItemChecked( 60, true ); 1309 configureToolBarMenu->setItemChecked( 60, true );
1310 if (p-> mShowIconMonth) 1310 if (p-> mShowIconMonth)
1311 configureToolBarMenu->setItemChecked( 70, true ); 1311 configureToolBarMenu->setItemChecked( 70, true );
1312 if (p-> mShowIconTodoview) 1312 if (p-> mShowIconTodoview)
1313 configureToolBarMenu->setItemChecked( 80, true ); 1313 configureToolBarMenu->setItemChecked( 80, true );
1314 if (p-> mShowIconBackFast) 1314 if (p-> mShowIconBackFast)
1315 configureToolBarMenu->setItemChecked( 200, true ); 1315 configureToolBarMenu->setItemChecked( 200, true );
1316 if (p-> mShowIconBack) 1316 if (p-> mShowIconBack)
1317 configureToolBarMenu->setItemChecked( 210, true ); 1317 configureToolBarMenu->setItemChecked( 210, true );
1318 if (p-> mShowIconToday) 1318 if (p-> mShowIconToday)
1319 configureToolBarMenu->setItemChecked( 130, true ); 1319 configureToolBarMenu->setItemChecked( 130, true );
1320 if (p-> mShowIconForward) 1320 if (p-> mShowIconForward)
1321 configureToolBarMenu->setItemChecked( 220, true ); 1321 configureToolBarMenu->setItemChecked( 220, true );
1322 if (p-> mShowIconForwardFast) 1322 if (p-> mShowIconForwardFast)
1323 configureToolBarMenu->setItemChecked( 230, true ); 1323 configureToolBarMenu->setItemChecked( 230, true );
1324 if (p-> mShowIconNextDays) 1324 if (p-> mShowIconNextDays)
1325 configureToolBarMenu->setItemChecked( 100, true ); 1325 configureToolBarMenu->setItemChecked( 100, true );
1326 if (p-> mShowIconNext) 1326 if (p-> mShowIconNext)
1327 configureToolBarMenu->setItemChecked( 110, true ); 1327 configureToolBarMenu->setItemChecked( 110, true );
1328 if (p-> mShowIconJournal) 1328 if (p-> mShowIconJournal)
1329 configureToolBarMenu->setItemChecked( 90, true ); 1329 configureToolBarMenu->setItemChecked( 90, true );
1330 if (p-> mShowIconWhatsThis) 1330 if (p-> mShowIconWhatsThis)
1331 configureToolBarMenu->setItemChecked( 300, true ); 1331 configureToolBarMenu->setItemChecked( 300, true );
1332 if (p-> mShowIconWeekNum) 1332 if (p-> mShowIconWeekNum)
1333 configureToolBarMenu->setItemChecked( 400, true ); 1333 configureToolBarMenu->setItemChecked( 400, true );
1334 if (!p-> mShowIconStretch) { 1334 if (!p-> mShowIconStretch) {
1335 QLabel* dummy = new QLabel( iconToolBar ); 1335 QLabel* dummy = new QLabel( iconToolBar );
1336 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1336 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1337 dummy->setMinimumWidth( 0 ); 1337 dummy->setMinimumWidth( 0 );
1338 iconToolBar->setStretchableWidget ( dummy ) ; 1338 iconToolBar->setStretchableWidget ( dummy ) ;
1339 } 1339 }
1340 else { 1340 else {
1341 iconToolBar->setHorizontalStretchable (true ); 1341 iconToolBar->setHorizontalStretchable (true );
1342 viewToolBar->setHorizontalStretchable (true ); 1342 viewToolBar->setHorizontalStretchable (true );
1343 navigatorToolBar->setHorizontalStretchable (true ); 1343 navigatorToolBar->setHorizontalStretchable (true );
1344 iconToolBar->setVerticalStretchable (true ); 1344 iconToolBar->setVerticalStretchable (true );
1345 viewToolBar->setVerticalStretchable (true ); 1345 viewToolBar->setVerticalStretchable (true );
1346 navigatorToolBar->setVerticalStretchable (true ); 1346 navigatorToolBar->setVerticalStretchable (true );
1347 configureToolBarMenu->setItemChecked( 5, true ); 1347 configureToolBarMenu->setItemChecked( 5, true );
1348 } 1348 }
1349 if (p-> mShowIconFilter) 1349 if (p-> mShowIconFilter)
1350 configureToolBarMenu->setItemChecked( 7, true ); 1350 configureToolBarMenu->setItemChecked( 7, true );
1351 if (p-> mShowIconOnetoolbar) 1351 if (p-> mShowIconOnetoolbar)
1352 configureToolBarMenu->setItemChecked( 6, true ); 1352 configureToolBarMenu->setItemChecked( 6, true );
1353 1353
1354 1354
1355 if ( filterMenubar ) { 1355 if ( filterMenubar ) {
1356 filterMenubar->reparent(filterToolBar,0,QPoint(0,0) ); 1356 filterMenubar->reparent(filterToolBar,0,QPoint(0,0) );
1357 connect( mView, SIGNAL( filtersUpdated() ), SLOT( updateFilterToolbar() ) ); 1357 connect( mView, SIGNAL( filtersUpdated() ), SLOT( updateFilterToolbar() ) );
1358 } 1358 }
1359 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1359 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1360 configureAgenda( p->mHourSize ); 1360 configureAgenda( p->mHourSize );
1361 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1361 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1362} 1362}
1363 1363
1364void MainWindow::exportToPhone( int mode ) 1364void MainWindow::exportToPhone( int mode )
1365{ 1365{
1366 1366
1367 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1367 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1368 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1368 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1369 KOex2phonePrefs ex2phone; 1369 KOex2phonePrefs ex2phone;
1370 1370
1371 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1371 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1372 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1372 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1373 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1373 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1374 if ( mode == 1 ) 1374 if ( mode == 1 )
1375 ex2phone.setCaption(i18n("Export complete calendar")); 1375 ex2phone.setCaption(i18n("Export complete calendar"));
1376 if ( mode == 2 ) 1376 if ( mode == 2 )
1377 ex2phone.setCaption(i18n("Export filtered calendar")); 1377 ex2phone.setCaption(i18n("Export filtered calendar"));
1378 1378
1379 if ( !ex2phone.exec() ) { 1379 if ( !ex2phone.exec() ) {
1380 return; 1380 return;
1381 } 1381 }
1382 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1382 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1383 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1383 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1384 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1384 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1385 1385
1386 int inFuture = 0; 1386 int inFuture = 0;
1387 if ( ex2phone.mWriteBackFuture->isChecked() ) 1387 if ( ex2phone.mWriteBackFuture->isChecked() )
1388 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1388 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1389 QPtrList<Incidence> delSel; 1389 QPtrList<Incidence> delSel;
1390 if ( mode == 1 ) 1390 if ( mode == 1 )
1391 delSel = mCalendar->rawIncidences(); 1391 delSel = mCalendar->rawIncidences();
1392 if ( mode == 2 ) 1392 if ( mode == 2 )
1393 delSel = mCalendar->incidences(); 1393 delSel = mCalendar->incidences();
1394 CalendarLocal* cal = new CalendarLocal(); 1394 CalendarLocal* cal = new CalendarLocal();
1395 cal->setLocalTime(); 1395 cal->setLocalTime();
1396 Incidence *incidence = delSel.first(); 1396 Incidence *incidence = delSel.first();
1397 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1397 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1398 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1398 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1399 while ( incidence ) { 1399 while ( incidence ) {
1400 if ( incidence->typeID() != journalID ) { 1400 if ( incidence->typeID() != journalID ) {
1401 bool add = true; 1401 bool add = true;
1402 if ( inFuture ) { 1402 if ( inFuture ) {
1403 QDateTime dt; 1403 QDateTime dt;
1404 if ( incidence->typeID() == todoID ) { 1404 if ( incidence->typeID() == todoID ) {
1405 Todo * t = (Todo*)incidence; 1405 Todo * t = (Todo*)incidence;
1406 if ( t->hasDueDate() ) 1406 if ( t->hasDueDate() )
1407 dt = t->dtDue(); 1407 dt = t->dtDue();
1408 else 1408 else
1409 dt = cur.addSecs( 62 ); 1409 dt = cur.addSecs( 62 );
1410 } 1410 }
1411 else { 1411 else {
1412 bool ok; 1412 bool ok;
1413 dt = incidence->getNextOccurence( cur, &ok ); 1413 dt = incidence->getNextOccurence( cur, &ok );
1414 if ( !ok ) 1414 if ( !ok )
1415 dt = cur.addSecs( -62 ); 1415 dt = cur.addSecs( -62 );
1416 } 1416 }
1417 if ( dt < cur || dt > end ) { 1417 if ( dt < cur || dt > end ) {
1418 add = false; 1418 add = false;
1419 } 1419 }
1420 } 1420 }
1421 if ( add ) { 1421 if ( add ) {
1422 Incidence *in = incidence->clone(); 1422 Incidence *in = incidence->clone();
1423 cal->addIncidence( in ); 1423 cal->addIncidence( in );
1424 } 1424 }
1425 } 1425 }
1426 incidence = delSel.next(); 1426 incidence = delSel.next();
1427 } 1427 }
1428 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1428 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1429 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1429 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1430 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1430 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1431 1431
1432 setCaption( i18n("Writing to phone...")); 1432 setCaption( i18n("Writing to phone..."));
1433 if ( PhoneFormat::writeToPhone( cal ) ) 1433 if ( PhoneFormat::writeToPhone( cal ) )
1434 setCaption( i18n("Export to phone successful!")); 1434 setCaption( i18n("Export to phone successful!"));
1435 else 1435 else
1436 setCaption( i18n("Error exporting to phone!")); 1436 setCaption( i18n("Error exporting to phone!"));
1437 delete cal; 1437 delete cal;
1438} 1438}
1439 1439
1440 1440
1441void MainWindow::setDefaultPreferences() 1441void MainWindow::setDefaultPreferences()
1442{ 1442{
1443 KOPrefs *p = KOPrefs::instance(); 1443 KOPrefs *p = KOPrefs::instance();
1444 1444
1445 p->mCompactDialogs = true; 1445 p->mCompactDialogs = true;
1446 p->mConfirm = true; 1446 p->mConfirm = true;
1447 // p->mEnableQuickTodo = false; 1447 // p->mEnableQuickTodo = false;
1448 1448
1449} 1449}
1450 1450
1451QString MainWindow::resourcePath() 1451QString MainWindow::resourcePath()
1452{ 1452{
1453 return KGlobal::iconLoader()->iconPath(); 1453 return KGlobal::iconLoader()->iconPath();
1454} 1454}
1455 1455
1456void MainWindow::displayText( QString text ,QString cap ) 1456void MainWindow::displayText( QString text ,QString cap )
1457{ 1457{
1458 QDialog dia( this, "name", true ); ; 1458 QDialog dia( this, "name", true ); ;
1459 dia.setCaption( cap ); 1459 dia.setCaption( cap );
1460 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1460 QVBoxLayout* lay = new QVBoxLayout( &dia );
1461 lay->setSpacing( 3 ); 1461 lay->setSpacing( 3 );
1462 lay->setMargin( 3 ); 1462 lay->setMargin( 3 );
1463 QTextBrowser tb ( &dia ); 1463 QTextBrowser tb ( &dia );
1464 lay->addWidget( &tb ); 1464 lay->addWidget( &tb );
1465 tb.setText( text ); 1465 tb.setText( text );
1466#ifdef DESKTOP_VERSION 1466#ifdef DESKTOP_VERSION
1467 dia.resize( 640, 480); 1467 dia.resize( 640, 480);
1468#else 1468#else
1469 dia.showMaximized(); 1469 dia.showMaximized();
1470#endif 1470#endif
1471 dia.exec(); 1471 dia.exec();
1472} 1472}
1473 1473
1474void MainWindow::features() 1474void MainWindow::features()
1475{ 1475{
1476 1476
1477 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1477 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1478} 1478}
1479 1479
1480void MainWindow::usertrans() 1480void MainWindow::usertrans()
1481{ 1481{
1482 1482
1483 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1483 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1484} 1484}
1485 1485
1486void MainWindow::storagehowto() 1486void MainWindow::storagehowto()
1487{ 1487{
1488 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); 1488 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" );
1489} 1489}
1490void MainWindow::timetrackinghowto() 1490void MainWindow::timetrackinghowto()
1491{ 1491{
1492 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" ); 1492 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" );
1493} 1493}
1494void MainWindow::kdesynchowto() 1494void MainWindow::kdesynchowto()
1495{ 1495{
1496 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1496 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1497} 1497}
1498void MainWindow::multisynchowto() 1498void MainWindow::multisynchowto()
1499{ 1499{
1500 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1500 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1501} 1501}
1502void MainWindow::synchowto() 1502void MainWindow::synchowto()
1503{ 1503{
1504 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1504 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1505} 1505}
1506void MainWindow::faq() 1506void MainWindow::faq()
1507{ 1507{
1508 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1508 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1509 1509
1510} 1510}
1511void MainWindow::whatsNew() 1511void MainWindow::whatsNew()
1512{ 1512{
1513 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1513 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1514 1514
1515} 1515}
1516void MainWindow::licence() 1516void MainWindow::licence()
1517{ 1517{
1518 KApplication::showLicence(); 1518 KApplication::showLicence();
1519 1519
1520} 1520}
1521void MainWindow::about() 1521void MainWindow::about()
1522{ 1522{
1523 QString version; 1523 QString version;
1524#include <../version> 1524#include <../version>
1525 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1525 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1526 i18n("KOrganizer/Platform-independent\n") + 1526 i18n("KOrganizer/Platform-independent\n") +
1527 "(KO/Pi) " + version + " - " + 1527 "(KO/Pi) " + version + " - " +
1528 1528
1529#ifdef DESKTOP_VERSION 1529#ifdef DESKTOP_VERSION
1530 i18n("Desktop Edition\n") + 1530 i18n("Desktop Edition\n") +
1531#else 1531#else
1532 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1532 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1533#endif 1533#endif
1534 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1534 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1535} 1535}
1536void MainWindow::keyBindings() 1536void MainWindow::keyBindings()
1537{ 1537{
1538 QString cap = i18n("KO/Pi Keys + Colors"); 1538 QString cap = i18n("KO/Pi Keys + Colors");
1539 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1539 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1540 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1540 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1541 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") + 1541 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") +
1542 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") + 1542 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") +
1543 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1543 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1544 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1544 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1545 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+ 1545 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+
1546 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1546 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1547 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1547 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1548 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+ 1548 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+
1549 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1549 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1550 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1550 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1551 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1551 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1552 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1552 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1553 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1553 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1554 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1554 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1555 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+ 1555 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+
1556 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1556 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1557 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1557 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1558 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1558 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1559 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1559 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1560 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1560 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1561 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1561 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1562 i18n("<p><h3>In agenda view:</h3></p>\n") + 1562 i18n("<p><h3>In agenda view:</h3></p>\n") +
1563 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1563 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1564 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1564 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1565 i18n("<p><h3>In todo view:</h3></p>\n") + 1565 i18n("<p><h3>In todo view:</h3></p>\n") +
1566 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1566 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1567 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1567 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1568 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1568 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1569 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1569 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1570 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1570 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1571 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1571 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1572 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1572 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1573 i18n("<p><h3>In list view:</h3></p>\n") + 1573 i18n("<p><h3>In list view:</h3></p>\n") +
1574 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1574 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1575 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1575 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1576 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1576 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1577 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1577 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1578 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1578 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1579 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1579 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1580 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1580 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1581 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1581 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1582 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1582 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1583 i18n("<p><b>E</b>: Edit item</p>\n") + 1583 i18n("<p><b>E</b>: Edit item</p>\n") +
1584 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1584 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1585 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1585 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1586 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1586 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1587 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1587 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1588 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1588 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1589 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1589 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1590 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1590 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1591 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1591 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1592 i18n("<p><b>White</b>: Item readonly</p>\n"); 1592 i18n("<p><b>White</b>: Item readonly</p>\n");
1593 displayText( text, cap); 1593 displayText( text, cap);
1594} 1594}
1595void MainWindow::aboutAutoSaving() 1595void MainWindow::aboutAutoSaving()
1596{ 1596{
1597 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1597 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1598 1598
1599 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1599 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1600 1600
1601} 1601}
1602void MainWindow::aboutKnownBugs() 1602void MainWindow::aboutKnownBugs()
1603{ 1603{
1604 QMessageBox* msg; 1604 QMessageBox* msg;
1605 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1605 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1606 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1606 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1607 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1607 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1608 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1608 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1609 i18n("\nor report them in the bugtracker on\n") + 1609 i18n("\nor report them in the bugtracker on\n") +
1610 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1610 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1611 QMessageBox::NoIcon, 1611 QMessageBox::NoIcon,
1612 QMessageBox::Ok, 1612 QMessageBox::Ok,
1613 QMessageBox::NoButton, 1613 QMessageBox::NoButton,
1614 QMessageBox::NoButton); 1614 QMessageBox::NoButton);
1615 msg->exec(); 1615 msg->exec();
1616 delete msg; 1616 delete msg;
1617 1617
1618} 1618}
1619 1619
1620QString MainWindow::defaultFileName() 1620QString MainWindow::defaultFileName()
1621{ 1621{
1622 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1622 return locateLocal( "data", "korganizer/mycalendar.ics" );
1623} 1623}
1624QString MainWindow::syncFileName() 1624QString MainWindow::syncFileName()
1625{ 1625{
1626#ifdef DESKTOP_VERSION 1626#ifdef DESKTOP_VERSION
1627 return locateLocal( "tmp", "synccalendar.ics" ); 1627 return locateLocal( "tmp", "synccalendar.ics" );
1628#else 1628#else
1629 return QString( "/tmp/synccalendar.ics" ); 1629 return QString( "/tmp/synccalendar.ics" );
1630#endif 1630#endif
1631} 1631}
1632#include "koglobals.h" 1632#include "koglobals.h"
1633#include <kcalendarsystem.h> 1633#include <kcalendarsystem.h>
1634void MainWindow::updateWeek(QDate seda) 1634void MainWindow::updateWeek(QDate seda)
1635{ 1635{
1636 int weekNum = KGlobal::locale()->weekNum ( seda ); 1636 int weekNum = KGlobal::locale()->weekNum ( seda );
1637 mWeekPixmap.fill( mWeekBgColor ); 1637 mWeekPixmap.fill( mWeekBgColor );
1638 QPainter p ( &mWeekPixmap ); 1638 QPainter p ( &mWeekPixmap );
1639 p.setFont( mWeekFont ); 1639 p.setFont( mWeekFont );
1640 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1640 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1641 p.end(); 1641 p.end();
1642 QIconSet icon3 ( mWeekPixmap ); 1642 QIconSet icon3 ( mWeekPixmap );
1643 mWeekAction->setIconSet ( icon3 ); 1643 mWeekAction->setIconSet ( icon3 );
1644 1644
1645} 1645}
1646void MainWindow::updateWeekNum(const DateList &selectedDates) 1646void MainWindow::updateWeekNum(const DateList &selectedDates)
1647{ 1647{
1648 updateWeek( selectedDates.first() ); 1648 updateWeek( selectedDates.first() );
1649} 1649}
1650void MainWindow::processIncidenceSelection( Incidence *incidence ) 1650void MainWindow::processIncidenceSelection( Incidence *incidence )
1651{ 1651{
1652 if ( !incidence ) { 1652 if ( !incidence ) {
1653 mShowAction->setMenuText( i18n("Show") ); 1653 mShowAction->setMenuText( i18n("Show") );
1654 enableIncidenceActions( false ); 1654 enableIncidenceActions( false );
1655 mNewSubTodoAction->setEnabled( false ); 1655 mNewSubTodoAction->setEnabled( false );
1656 setCaptionToDates(); 1656 setCaptionToDates();
1657 return; 1657 return;
1658 } 1658 }
1659 QString startString = ""; 1659 QString startString = "";
1660 if ( incidence->typeID() != todoID ) { 1660 if ( incidence->typeID() != todoID ) {
1661 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1661 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1662 if ( incidence->doesFloat() ) { 1662 if ( incidence->doesFloat() ) {
1663 startString += ": "+incidence->dtStartDateStr( true ); 1663 startString += ": "+incidence->dtStartDateStr( true );
1664 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1664 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1665 } else { 1665 } else {
1666 startString = ": "+incidence->dtStartStr(true); 1666 startString = ": "+incidence->dtStartStr(true);
1667 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1667 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1668 } 1668 }
1669 } else { 1669 } else {
1670 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1670 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1671 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1671 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1672 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1672 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1673 if ( incidence->isBirthday() || incidence->isAnniversary() ) { 1673 if ( incidence->isBirthday() || incidence->isAnniversary() ) {
1674 bool ok; 1674 bool ok;
1675 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1675 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1676 if ( ok ) { 1676 if ( ok ) {
1677 int years = noc.date().year() - incidence->dtStart().date().year(); 1677 int years = noc.date().year() - incidence->dtStart().date().year();
1678 startString += i18n(" (%1 y.)"). arg( years ); 1678 startString += i18n(" (%1 y.)"). arg( years );
1679 } 1679 }
1680 } 1680 }
1681 else 1681 else
1682 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1682 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1683 } 1683 }
1684 } 1684 }
1685 else 1685 else {
1686 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1686 if ( (( KCal::Todo*)incidence)->percentComplete() == 100 )
1687 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+i18n("completed on %1").arg( (( KCal::Todo*)incidence)->completedStr(true) );
1688 else
1689 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1690 }
1687 if ( !incidence->location().isEmpty() ) 1691 if ( !incidence->location().isEmpty() )
1688 startString += " (" +incidence->location()+")"; 1692 startString += " (" +incidence->location()+")";
1689 setCaption( incidence->summary()+startString); 1693 setCaption( incidence->summary()+startString);
1690 enableIncidenceActions( true ); 1694 enableIncidenceActions( true );
1691 if ( incidence->typeID() == eventID ) { 1695 if ( incidence->typeID() == eventID ) {
1692 mShowAction->setMenuText( i18n("Show Event") ); 1696 mShowAction->setMenuText( i18n("Show Event") );
1693 mNewSubTodoAction->setEnabled( false ); 1697 mNewSubTodoAction->setEnabled( false );
1694 } else if ( incidence->typeID() == todoID ) { 1698 } else if ( incidence->typeID() == todoID ) {
1695 mShowAction->setMenuText( i18n("Show Todo") ); 1699 mShowAction->setMenuText( i18n("Show Todo") );
1696 mNewSubTodoAction->setEnabled( true ); 1700 mNewSubTodoAction->setEnabled( true );
1697 } else { 1701 } else {
1698 mShowAction->setMenuText( i18n("Show") ); 1702 mShowAction->setMenuText( i18n("Show") );
1699 mNewSubTodoAction->setEnabled( false ); 1703 mNewSubTodoAction->setEnabled( false );
1700 } 1704 }
1701} 1705}
1702 1706
1703void MainWindow::enableIncidenceActions( bool enabled ) 1707void MainWindow::enableIncidenceActions( bool enabled )
1704{ 1708{
1705 mShowAction->setEnabled( enabled ); 1709 mShowAction->setEnabled( enabled );
1706 mEditAction->setEnabled( enabled ); 1710 mEditAction->setEnabled( enabled );
1707 mDeleteAction->setEnabled( enabled ); 1711 mDeleteAction->setEnabled( enabled );
1708 1712
1709 mCloneAction->setEnabled( enabled ); 1713 mCloneAction->setEnabled( enabled );
1710 mMoveAction->setEnabled( enabled ); 1714 mMoveAction->setEnabled( enabled );
1711#ifndef DESKTOP_VERSION 1715#ifndef DESKTOP_VERSION
1712 mBeamAction->setEnabled( enabled ); 1716 mBeamAction->setEnabled( enabled );
1713#endif 1717#endif
1714 mCancelAction->setEnabled( enabled ); 1718 mCancelAction->setEnabled( enabled );
1715} 1719}
1716 1720
1717void MainWindow::importOL() 1721void MainWindow::importOL()
1718{ 1722{
1719#ifdef _OL_IMPORT_ 1723#ifdef _OL_IMPORT_
1720 mView->clearAllViews(); 1724 mView->clearAllViews();
1721 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1725 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1722 id->exec(); 1726 id->exec();
1723 delete id; 1727 delete id;
1724 mView->calendar()->checkAlarmForIncidence( 0, true ); 1728 mView->calendar()->checkAlarmForIncidence( 0, true );
1725 mView->updateView(); 1729 mView->updateView();
1726#endif 1730#endif
1727} 1731}
1728void MainWindow::importBday() 1732void MainWindow::importBday()
1729{ 1733{
1730 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"), 1734 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"),
1731 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1735 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1732 i18n("Import!"), i18n("Cancel"), 0, 1736 i18n("Import!"), i18n("Cancel"), 0,
1733 0, 1 ); 1737 0, 1 );
1734 if ( result == 0 ) { 1738 if ( result == 0 ) {
1735 mView->importBday(); 1739 mView->importBday();
1736 1740
1737 } 1741 }
1738 1742
1739 1743
1740} 1744}
1741void MainWindow::importQtopia() 1745void MainWindow::importQtopia()
1742{ 1746{
1743 //#ifndef DESKTOP_VERSION 1747 //#ifndef DESKTOP_VERSION
1744 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); 1748 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing");
1745#ifdef DESKTOP_VERSION 1749#ifdef DESKTOP_VERSION
1746 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); 1750 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml");
1747#endif 1751#endif
1748 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1752 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1749 i18n("Import!"), i18n("Cancel"), 0, 1753 i18n("Import!"), i18n("Cancel"), 0,
1750 0, 1 ); 1754 0, 1 );
1751 if ( result == 0 ) { 1755 if ( result == 0 ) {
1752#ifndef DESKTOP_VERSION 1756#ifndef DESKTOP_VERSION
1753 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1757 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1754 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1758 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1755 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1759 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1756#else 1760#else
1757 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1761 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1758 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1762 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1759 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1763 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1760#endif 1764#endif
1761 mView->importQtopia( categories, datebook, todolist ); 1765 mView->importQtopia( categories, datebook, todolist );
1762 } 1766 }
1763 mView->calendar()->reInitAlarmSettings(); 1767 mView->calendar()->reInitAlarmSettings();
1764#if 0 1768#if 0
1765 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1769 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1766 i18n("Not supported \non desktop!\n"), 1770 i18n("Not supported \non desktop!\n"),
1767 i18n("Ok"), i18n("Cancel"), 0, 1771 i18n("Ok"), i18n("Cancel"), 0,
1768 0, 1 ); 1772 0, 1 );
1769 1773
1770#endif 1774#endif
1771} 1775}
1772 1776
1773void MainWindow::saveOnClose() 1777void MainWindow::saveOnClose()
1774{ 1778{
1775 KOPrefs *p = KOPrefs::instance(); 1779 KOPrefs *p = KOPrefs::instance();
1776 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1780 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1777 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1781 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1778 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1782 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1779 if ( filterToolBar ) { 1783 if ( filterToolBar ) {
1780 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1784 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1781 } 1785 }
1782#ifdef DESKTOP_VERSION 1786#ifdef DESKTOP_VERSION
1783 1787
1784 QPoint myP; 1788 QPoint myP;
1785 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1789 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1786 if ( p->mToolBarHor ) 1790 if ( p->mToolBarHor )
1787 p->mToolBarUp = myP.y() > height()/2; 1791 p->mToolBarUp = myP.y() > height()/2;
1788 else 1792 else
1789 p->mToolBarUp = myP.x() > width()/2; 1793 p->mToolBarUp = myP.x() > width()/2;
1790 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1794 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1791 if ( p->mToolBarHorV ) 1795 if ( p->mToolBarHorV )
1792 p->mToolBarUpV = myP.y() > height()/2; 1796 p->mToolBarUpV = myP.y() > height()/2;
1793 else 1797 else
1794 p->mToolBarUpV = myP.x() > width()/2 ; 1798 p->mToolBarUpV = myP.x() > width()/2 ;
1795 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1799 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1796 if ( p->mToolBarHorN ) 1800 if ( p->mToolBarHorN )
1797 p->mToolBarUpN = myP.y() > height()/2; 1801 p->mToolBarUpN = myP.y() > height()/2;
1798 else 1802 else
1799 p->mToolBarUpN = myP.x() > width()/2 ; 1803 p->mToolBarUpN = myP.x() > width()/2 ;
1800 if ( filterToolBar ) { 1804 if ( filterToolBar ) {
1801 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1805 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1802 if ( p->mToolBarHorF ) 1806 if ( p->mToolBarHorF )
1803 p->mToolBarUpF = myP.y() > height()/2; 1807 p->mToolBarUpF = myP.y() > height()/2;
1804 else 1808 else
1805 p->mToolBarUpF = myP.x() > width()/2 ; 1809 p->mToolBarUpF = myP.x() > width()/2 ;
1806 } 1810 }
1807#else 1811#else
1808 if ( p->mToolBarHor ) 1812 if ( p->mToolBarHor )
1809 p->mToolBarUp = iconToolBar->y() > height()/2; 1813 p->mToolBarUp = iconToolBar->y() > height()/2;
1810 else 1814 else
1811 p->mToolBarUp = iconToolBar->x() > width()/2; 1815 p->mToolBarUp = iconToolBar->x() > width()/2;
1812 if ( p->mToolBarHorV ) 1816 if ( p->mToolBarHorV )
1813 p->mToolBarUpV = viewToolBar->y() > height()/2; 1817 p->mToolBarUpV = viewToolBar->y() > height()/2;
1814 else 1818 else
1815 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1819 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1816 1820
1817 if ( p->mToolBarHorN ) 1821 if ( p->mToolBarHorN )
1818 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1822 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1819 else 1823 else
1820 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1824 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1821 if ( filterToolBar ) { 1825 if ( filterToolBar ) {
1822 if ( p->mToolBarHorF ) 1826 if ( p->mToolBarHorF )
1823 p->mToolBarUpF = filterToolBar->y() > height()/2; 1827 p->mToolBarUpF = filterToolBar->y() > height()/2;
1824 else 1828 else
1825 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1829 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1826 } 1830 }
1827#endif 1831#endif
1828 save(); 1832 save();
1829 mView->writeSettings(); 1833 mView->writeSettings();
1830 mView->checkSuspendAlarm(); 1834 mView->checkSuspendAlarm();
1831} 1835}
1832void MainWindow::slotModifiedChanged( bool ) 1836void MainWindow::slotModifiedChanged( bool )
1833{ 1837{
1834 if ( mBlockAtStartup ) 1838 if ( mBlockAtStartup )
1835 return; 1839 return;
1836 1840
1837 int msec; 1841 int msec;
1838 // we store the changes after 1 minute, 1842 // we store the changes after 1 minute,
1839 // and for safety reasons after 10 minutes again 1843 // and for safety reasons after 10 minutes again
1840 if ( !mSyncManager->blockSave() ) 1844 if ( !mSyncManager->blockSave() )
1841 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1845 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1842 else 1846 else
1843 msec = 1000 * 600; 1847 msec = 1000 * 600;
1844 mSaveTimer.start( msec, true ); // 1 minute 1848 mSaveTimer.start( msec, true ); // 1 minute
1845 qDebug("KO: Saving File in %d secs!", msec/1000); 1849 qDebug("KO: Saving File in %d secs!", msec/1000);
1846 mCalendarModifiedFlag = true; 1850 mCalendarModifiedFlag = true;
1847} 1851}
1848void MainWindow::saveStopTimer() 1852void MainWindow::saveStopTimer()
1849{ 1853{
1850 mSaveTimer.stop(); 1854 mSaveTimer.stop();
1851} 1855}
1852void MainWindow::backupAllFiles() 1856void MainWindow::backupAllFiles()
1853{ 1857{
1854 QDate reference ( 2000,1,1); 1858 QDate reference ( 2000,1,1);
1855 int daysTo = reference.daysTo ( QDate::currentDate() ); 1859 int daysTo = reference.daysTo ( QDate::currentDate() );
1856 setCaption(i18n("Creating backup ... please wait ..." )); 1860 setCaption(i18n("Creating backup ... please wait ..." ));
1857 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate); 1861 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
1858 // we need the file path, the backup dir and the number of bups as param 1862 // we need the file path, the backup dir and the number of bups as param
1859 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 1863 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
1860 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 1864 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
1861 bupDir = KGlobalSettings::backupDataDir(); 1865 bupDir = KGlobalSettings::backupDataDir();
1862 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 1866 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1863 if ( retval == 0 ) { 1867 if ( retval == 0 ) {
1864 setCaption(i18n("Backup cancelled" )); 1868 setCaption(i18n("Backup cancelled" ));
1865 qDebug("KO: Backup cancelled. Will try again tomorrow "); 1869 qDebug("KO: Backup cancelled. Will try again tomorrow ");
1866 // retval == 0 : backup skipped for today, try again tomorrow 1870 // retval == 0 : backup skipped for today, try again tomorrow
1867 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1; 1871 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
1868 } else if ( retval == 1 ){ 1872 } else if ( retval == 1 ){
1869 qDebug("KO: Backup created."); 1873 qDebug("KO: Backup created.");
1870 // backup ok 1874 // backup ok
1871 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1875 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1872 KopiCalendarFile * cal = calendars.first(); 1876 KopiCalendarFile * cal = calendars.first();
1873 cal = calendars.next(); 1877 cal = calendars.next();
1874 while ( cal ) { 1878 while ( cal ) {
1875 if ( !cal->mErrorOnLoad ) { 1879 if ( !cal->mErrorOnLoad ) {
1876 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 1880 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1877 } 1881 }
1878 cal = calendars.next(); 1882 cal = calendars.next();
1879 } 1883 }
1880 KOPrefs::instance()->mLastBackupDate = daysTo; 1884 KOPrefs::instance()->mLastBackupDate = daysTo;
1881 setCaption(i18n("Backup succesfully finished" )); 1885 setCaption(i18n("Backup succesfully finished" ));
1882 } else if ( retval == 2 ){ 1886 } else if ( retval == 2 ){
1883 setCaption(i18n("Backup globally disabled" )); 1887 setCaption(i18n("Backup globally disabled" ));
1884 qDebug("KO: Backup globally cancelled."); 1888 qDebug("KO: Backup globally cancelled.");
1885 // backup globally cancelled 1889 // backup globally cancelled
1886 KPimGlobalPrefs::instance()->mBackupEnabled = false; 1890 KPimGlobalPrefs::instance()->mBackupEnabled = false;
1887 } 1891 }
1888 // retval == 3: do nothing, try again later 1892 // retval == 3: do nothing, try again later
1889} 1893}
1890void MainWindow::save() 1894void MainWindow::save()
1891{ 1895{
1892 1896
1893 if ( mView->viewManager()->journalView() ) 1897 if ( mView->viewManager()->journalView() )
1894 mView->viewManager()->journalView()->checkModified(); 1898 mView->viewManager()->journalView()->checkModified();
1895 if ( !mCalendarModifiedFlag ) { 1899 if ( !mCalendarModifiedFlag ) {
1896 qDebug("KO: Calendar not modified. Nothing saved."); 1900 qDebug("KO: Calendar not modified. Nothing saved.");
1897 return; 1901 return;
1898 } 1902 }
1899 if ( mSyncManager->blockSave() ) 1903 if ( mSyncManager->blockSave() )
1900 return; 1904 return;
1901 mSyncManager->setBlockSave(true); 1905 mSyncManager->setBlockSave(true);
1902 if ( mView->checkAllFileVersions() ) { 1906 if ( mView->checkAllFileVersions() ) {
1903 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 1907 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
1904 QDate reference ( 2000,1,1); 1908 QDate reference ( 2000,1,1);
1905 int daysTo = reference.daysTo ( QDate::currentDate() ); 1909 int daysTo = reference.daysTo ( QDate::currentDate() );
1906 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 1910 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
1907 backupAllFiles(); 1911 backupAllFiles();
1908 } 1912 }
1909 ; // KPimGlobalPrefs::instance()->mLastBackupDate 1913 ; // KPimGlobalPrefs::instance()->mLastBackupDate
1910 } 1914 }
1911 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1915 QTime neededSaveTime = QDateTime::currentDateTime().time();
1912 if ( !isMinimized () ) 1916 if ( !isMinimized () )
1913 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1917 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1914 qDebug("KO: Start saving data to file!"); 1918 qDebug("KO: Start saving data to file!");
1915 mView->saveCalendars(); 1919 mView->saveCalendars();
1916 mCalendarModifiedFlag = false; 1920 mCalendarModifiedFlag = false;
1917 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1921 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1918 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1922 qDebug("KO: Needed %d ms for saving.",msNeeded );
1919 QString savemes; 1923 QString savemes;
1920 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1924 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1921 if ( !isMinimized () ) 1925 if ( !isMinimized () )
1922 setCaption(savemes); 1926 setCaption(savemes);
1923 else 1927 else
1924 qDebug(savemes); 1928 qDebug(savemes);
1925 } else 1929 } else
1926 setCaption(i18n("Saving cancelled!")); 1930 setCaption(i18n("Saving cancelled!"));
1927 mSyncManager->setBlockSave( false ); 1931 mSyncManager->setBlockSave( false );
1928} 1932}
1929 1933
1930void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1934void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1931{ 1935{
1932 if ( !e->isAutoRepeat() ) { 1936 if ( !e->isAutoRepeat() ) {
1933 mFlagKeyPressed = false; 1937 mFlagKeyPressed = false;
1934 } 1938 }
1935} 1939}
1936void MainWindow::keyPressEvent ( QKeyEvent * e ) 1940void MainWindow::keyPressEvent ( QKeyEvent * e )
1937{ 1941{
1938 qApp->processEvents(); 1942 qApp->processEvents();
1939 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1943 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1940 e->ignore(); 1944 e->ignore();
1941 // qDebug(" ignore %d",e->isAutoRepeat() ); 1945 // qDebug(" ignore %d",e->isAutoRepeat() );
1942 return; 1946 return;
1943 } 1947 }
1944 if (! e->isAutoRepeat() ) 1948 if (! e->isAutoRepeat() )
1945 mFlagKeyPressed = true; 1949 mFlagKeyPressed = true;
1946 KOPrefs *p = KOPrefs::instance(); 1950 KOPrefs *p = KOPrefs::instance();
1947 bool showSelectedDates = false; 1951 bool showSelectedDates = false;
1948 int size; 1952 int size;
1949 int pro = 0; 1953 int pro = 0;
1950 //qDebug("MainWindow::keyPressEvent "); 1954 //qDebug("MainWindow::keyPressEvent ");
1951 switch ( e->key() ) { 1955 switch ( e->key() ) {
1952 case Qt::Key_Right: 1956 case Qt::Key_Right:
1953 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1957 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1954 mView->goNextMonth(); 1958 mView->goNextMonth();
1955 else 1959 else
1956 mView->goNext(); 1960 mView->goNext();
1957 showSelectedDates = true; 1961 showSelectedDates = true;
1958 break; 1962 break;
1959 case Qt::Key_Left: 1963 case Qt::Key_Left:
1960 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1964 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1961 mView->goPreviousMonth(); 1965 mView->goPreviousMonth();
1962 else 1966 else
1963 mView->goPrevious(); 1967 mView->goPrevious();
1964 showSelectedDates = true; 1968 showSelectedDates = true;
1965 break; 1969 break;
1966 case Qt::Key_Down: 1970 case Qt::Key_Down:
1967 mView->viewManager()->agendaView()->scrollOneHourDown(); 1971 mView->viewManager()->agendaView()->scrollOneHourDown();
1968 break; 1972 break;
1969 case Qt::Key_Up: 1973 case Qt::Key_Up:
1970 mView->viewManager()->agendaView()->scrollOneHourUp(); 1974 mView->viewManager()->agendaView()->scrollOneHourUp();
1971 break; 1975 break;
1972 case Qt::Key_K: 1976 case Qt::Key_K:
1973 mView->viewManager()->showMonthViewWeek(); 1977 mView->viewManager()->showMonthViewWeek();
1974 break; 1978 break;
1975 case Qt::Key_I: 1979 case Qt::Key_I:
1976 mView->showIncidence(); 1980 mView->showIncidence();
1977 break; 1981 break;
1978 case Qt::Key_Delete: 1982 case Qt::Key_Delete:
1979 case Qt::Key_Backspace: 1983 case Qt::Key_Backspace:
1980 mView->deleteIncidence(); 1984 mView->deleteIncidence();
1981 break; 1985 break;
1982 case Qt::Key_D: 1986 case Qt::Key_D:
1983 mView->viewManager()->showDayView(); 1987 mView->viewManager()->showDayView();
1984 showSelectedDates = true; 1988 showSelectedDates = true;
1985 break; 1989 break;
1986 case Qt::Key_O: 1990 case Qt::Key_O:
1987 mView->toggleFilerEnabled( ); 1991 mView->toggleFilerEnabled( );
1988 break; 1992 break;
1989 case Qt::Key_0: 1993 case Qt::Key_0:
1990 case Qt::Key_1: 1994 case Qt::Key_1:
1991 case Qt::Key_2: 1995 case Qt::Key_2:
1992 case Qt::Key_3: 1996 case Qt::Key_3:
1993 case Qt::Key_4: 1997 case Qt::Key_4:
1994 case Qt::Key_5: 1998 case Qt::Key_5:
1995 case Qt::Key_6: 1999 case Qt::Key_6:
1996 case Qt::Key_7: 2000 case Qt::Key_7:
1997 case Qt::Key_8: 2001 case Qt::Key_8:
1998 case Qt::Key_9: 2002 case Qt::Key_9:
1999 pro = e->key()-48; 2003 pro = e->key()-48;
2000 if ( pro == 0 ) 2004 if ( pro == 0 )
2001 pro = 10; 2005 pro = 10;
2002 if ( e->state() == Qt::ControlButton) 2006 if ( e->state() == Qt::ControlButton)
2003 pro += 10; 2007 pro += 10;
2004 break; 2008 break;
2005 case Qt::Key_M: 2009 case Qt::Key_M:
2006 mView->viewManager()->showMonthView(); 2010 mView->viewManager()->showMonthView();
2007 showSelectedDates = true; 2011 showSelectedDates = true;
2008 break; 2012 break;
2009 case Qt::Key_Insert: 2013 case Qt::Key_Insert:
2010 mView->newEvent(); 2014 mView->newEvent();
2011 break; 2015 break;
2012 case Qt::Key_S : 2016 case Qt::Key_S :
2013 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2017 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2014 mView->newSubTodo(); 2018 mView->newSubTodo();
2015 else 2019 else
2016 mView->dialogManager()->showSearchDialog(); 2020 mView->dialogManager()->showSearchDialog();
2017 break; 2021 break;
2018 case Qt::Key_Y : 2022 case Qt::Key_Y :
2019 case Qt::Key_Z : 2023 case Qt::Key_Z :
2020 mView->viewManager()->showWorkWeekView(); 2024 mView->viewManager()->showWorkWeekView();
2021 showSelectedDates = true; 2025 showSelectedDates = true;
2022 break; 2026 break;
2023 case Qt::Key_U : 2027 case Qt::Key_U :
2024 mView->viewManager()->showWeekView(); 2028 mView->viewManager()->showWeekView();
2025 showSelectedDates = true; 2029 showSelectedDates = true;
2026 break; 2030 break;
2027 case Qt::Key_H : 2031 case Qt::Key_H :
2028 keyBindings(); 2032 keyBindings();
2029 break; 2033 break;
2030 case Qt::Key_W: 2034 case Qt::Key_W:
2031 mView->viewManager()->showWhatsNextView(); 2035 mView->viewManager()->showWhatsNextView();
2032 break; 2036 break;
2033 case Qt::Key_L: 2037 case Qt::Key_L:
2034 mView->viewManager()->showListView(); 2038 mView->viewManager()->showListView();
2035 break; 2039 break;
2036 case Qt::Key_N: 2040 case Qt::Key_N:
2037 mView->viewManager()->showNextView(); 2041 mView->viewManager()->showNextView();
2038 break; 2042 break;
2039 case Qt::Key_V: 2043 case Qt::Key_V:
2040 mView->viewManager()->showTodoView(); 2044 mView->viewManager()->showTodoView();
2041 break; 2045 break;
2042 case Qt::Key_C: 2046 case Qt::Key_C:
2043 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 2047 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
2044 break; 2048 break;
2045 case Qt::Key_P: 2049 case Qt::Key_P:
2046 mView->showDatePicker( ); 2050 mView->showDatePicker( );
2047 break; 2051 break;
2048 case Qt::Key_F: 2052 case Qt::Key_F:
2049 mView->editFilters(); 2053 mView->editFilters();
2050 break; 2054 break;
2051 case Qt::Key_R: 2055 case Qt::Key_R:
2052 mView->toggleFilter(); 2056 mView->toggleFilter();
2053 break; 2057 break;
2054 case Qt::Key_X: 2058 case Qt::Key_X:
2055 if ( e->state() == Qt::ControlButton ) 2059 if ( e->state() == Qt::ControlButton )
2056 mView->toggleDateNavigatorWidget(); 2060 mView->toggleDateNavigatorWidget();
2057 else { 2061 else {
2058 mView->viewManager()->showNextXView(); 2062 mView->viewManager()->showNextXView();
2059 showSelectedDates = true; 2063 showSelectedDates = true;
2060 } 2064 }
2061 break; 2065 break;
2062 case Qt::Key_Space: 2066 case Qt::Key_Space:
2063 mView->toggleExpand(); 2067 mView->toggleExpand();
2064 break; 2068 break;
2065 case Qt::Key_A: 2069 case Qt::Key_A:
2066 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 2070 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
2067 mView->showNextAlarms(); 2071 mView->showNextAlarms();
2068 else 2072 else
2069 mView->toggleAllDaySize(); 2073 mView->toggleAllDaySize();
2070 break; 2074 break;
2071 case Qt::Key_T: 2075 case Qt::Key_T:
2072 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2076 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2073 mView->newTodo(); 2077 mView->newTodo();
2074 else { 2078 else {
2075 mView->goToday(); 2079 mView->goToday();
2076 showSelectedDates = true; 2080 showSelectedDates = true;
2077 } 2081 }
2078 break; 2082 break;
2079 case Qt::Key_J: 2083 case Qt::Key_J:
2080 mView->viewManager()->showJournalView(); 2084 mView->viewManager()->showJournalView();
2081 break; 2085 break;
2082 case Qt::Key_B: 2086 case Qt::Key_B:
2083 mView->editIncidenceDescription();; 2087 mView->editIncidenceDescription();;
2084 break; 2088 break;
2085 // case Qt::Key_Return: 2089 // case Qt::Key_Return:
2086 case Qt::Key_E: 2090 case Qt::Key_E:
2087 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2091 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2088 mView->newEvent(); 2092 mView->newEvent();
2089 else 2093 else
2090 mView->editIncidence(); 2094 mView->editIncidence();
2091 break; 2095 break;
2092 case Qt::Key_Plus: 2096 case Qt::Key_Plus:
2093 size = p->mHourSize +2; 2097 size = p->mHourSize +2;
2094 if ( size <= 22 ) 2098 if ( size <= 22 )
2095 configureAgenda( size ); 2099 configureAgenda( size );
2096 break; 2100 break;
2097 case Qt::Key_Minus: 2101 case Qt::Key_Minus:
2098 size = p->mHourSize - 2; 2102 size = p->mHourSize - 2;
2099 if ( size >= 4 ) 2103 if ( size >= 4 )
2100 configureAgenda( size ); 2104 configureAgenda( size );
2101 break; 2105 break;
2102 2106
2103 2107
2104 default: 2108 default:
2105 e->ignore(); 2109 e->ignore();
2106 } 2110 }
2107 if ( pro > 0 ) { 2111 if ( pro > 0 ) {
2108 selectFilter( pro+1 ); 2112 selectFilter( pro+1 );
2109 } 2113 }
2110 if ( showSelectedDates ) { 2114 if ( showSelectedDates ) {
2111 ;// setCaptionToDates(); 2115 ;// setCaptionToDates();
2112 } 2116 }
2113 2117
2114} 2118}
2115void MainWindow::fillFilterMenuTB() 2119void MainWindow::fillFilterMenuTB()
2116{ 2120{
2117 selectFilterMenuTB->clear(); 2121 selectFilterMenuTB->clear();
2118 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 ); 2122 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 );
2119 selectFilterMenuTB->insertSeparator(); 2123 selectFilterMenuTB->insertSeparator();
2120 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 ); 2124 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 );
2121 2125
2122 selectFilterMenuTB->insertSeparator(); 2126 selectFilterMenuTB->insertSeparator();
2123 QPtrList<CalFilter> fili = mView->filters(); 2127 QPtrList<CalFilter> fili = mView->filters();
2124 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2128 CalFilter *curfilter = mView->filterView()->selectedFilter();
2125 CalFilter *filter = fili.first(); 2129 CalFilter *filter = fili.first();
2126 int iii = 2; 2130 int iii = 2;
2127 bool checkitem = mView->filterView()->filtersEnabled(); 2131 bool checkitem = mView->filterView()->filtersEnabled();
2128 while(filter) { 2132 while(filter) {
2129 selectFilterMenuTB->insertItem( filter->name(), iii ); 2133 selectFilterMenuTB->insertItem( filter->name(), iii );
2130 if ( filter == curfilter) 2134 if ( filter == curfilter)
2131 selectFilterMenuTB->setItemChecked( iii, checkitem ); 2135 selectFilterMenuTB->setItemChecked( iii, checkitem );
2132 filter = fili.next(); 2136 filter = fili.next();
2133 ++iii; 2137 ++iii;
2134 } 2138 }
2135 if ( !checkitem ) 2139 if ( !checkitem )
2136 selectFilterMenuTB->setItemChecked( 1, true ); 2140 selectFilterMenuTB->setItemChecked( 1, true );
2137 2141
2138 int x = 0; 2142 int x = 0;
2139 int y = iconToolBar->height(); 2143 int y = iconToolBar->height();
2140 int dX = 0; 2144 int dX = 0;
2141 int dY = 0; 2145 int dY = 0;
2142 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2146 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2143 if ( iconToolBar->y() > height()/2 ) { 2147 if ( iconToolBar->y() > height()/2 ) {
2144 dY = selectFilterMenuTB->sizeHint().height()+8; 2148 dY = selectFilterMenuTB->sizeHint().height()+8;
2145 y = 0; 2149 y = 0;
2146 } 2150 }
2147 } else { 2151 } else {
2148 if ( iconToolBar->x() > width()/2 ) { // right side 2152 if ( iconToolBar->x() > width()/2 ) { // right side
2149 x=0; 2153 x=0;
2150 dX= selectFilterMenuTB->sizeHint().width()+8; 2154 dX= selectFilterMenuTB->sizeHint().width()+8;
2151 y = 0; 2155 y = 0;
2152 } else { 2156 } else {
2153 x= iconToolBar->width(); 2157 x= iconToolBar->width();
2154 y = 0; 2158 y = 0;
2155 } 2159 }
2156 } 2160 }
2157 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2161 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2158 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))); 2162 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)));
2159} 2163}
2160void MainWindow::fillFilterMenu() 2164void MainWindow::fillFilterMenu()
2161{ 2165{
2162 selectFilterMenu->clear(); 2166 selectFilterMenu->clear();
2163 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 2167 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
2164 selectFilterMenu->insertSeparator(); 2168 selectFilterMenu->insertSeparator();
2165 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 ); 2169 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 );
2166 2170
2167 selectFilterMenu->insertSeparator(); 2171 selectFilterMenu->insertSeparator();
2168 QPtrList<CalFilter> fili = mView->filters(); 2172 QPtrList<CalFilter> fili = mView->filters();
2169 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2173 CalFilter *curfilter = mView->filterView()->selectedFilter();
2170 CalFilter *filter = fili.first(); 2174 CalFilter *filter = fili.first();
2171 int iii = 2; 2175 int iii = 2;
2172 bool checkitem = mView->filterView()->filtersEnabled(); 2176 bool checkitem = mView->filterView()->filtersEnabled();
2173 while(filter) { 2177 while(filter) {
2174 selectFilterMenu->insertItem( filter->name(), iii ); 2178 selectFilterMenu->insertItem( filter->name(), iii );
2175 if ( filter == curfilter) 2179 if ( filter == curfilter)
2176 selectFilterMenu->setItemChecked( iii, checkitem ); 2180 selectFilterMenu->setItemChecked( iii, checkitem );
2177 filter = fili.next(); 2181 filter = fili.next();
2178 ++iii; 2182 ++iii;
2179 } 2183 }
2180 if ( !checkitem ) 2184 if ( !checkitem )
2181 selectFilterMenu->setItemChecked( 1, true ); 2185 selectFilterMenu->setItemChecked( 1, true );
2182} 2186}
2183void MainWindow::fillFilterMenuPopup() 2187void MainWindow::fillFilterMenuPopup()
2184{ 2188{
2185 filterPopupMenu->clear(); 2189 filterPopupMenu->clear();
2186 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 ); 2190 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 );
2187 2191
2188 filterPopupMenu->insertSeparator(); 2192 filterPopupMenu->insertSeparator();
2189 QPtrList<CalFilter> fili = mView->filters(); 2193 QPtrList<CalFilter> fili = mView->filters();
2190 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2194 CalFilter *curfilter = mView->filterView()->selectedFilter();
2191 CalFilter *filter = fili.first(); 2195 CalFilter *filter = fili.first();
2192 int iii = 1; 2196 int iii = 1;
2193 bool checkitem = mView->filterView()->filtersEnabled(); 2197 bool checkitem = mView->filterView()->filtersEnabled();
2194 while(filter) { 2198 while(filter) {
2195 filterPopupMenu->insertItem( filter->name(), iii ); 2199 filterPopupMenu->insertItem( filter->name(), iii );
2196 if ( filter == curfilter) 2200 if ( filter == curfilter)
2197 filterPopupMenu->setItemChecked( iii, checkitem ); 2201 filterPopupMenu->setItemChecked( iii, checkitem );
2198 filter = fili.next(); 2202 filter = fili.next();
diff --git a/microkde/ofileselector_p.cpp b/microkde/ofileselector_p.cpp
index 488dee2..f4f112e 100644
--- a/microkde/ofileselector_p.cpp
+++ b/microkde/ofileselector_p.cpp
@@ -1,883 +1,883 @@
1#include <qcombobox.h> 1#include <qcombobox.h>
2#include <qdir.h> 2#include <qdir.h>
3#include <qhbox.h> 3#include <qhbox.h>
4#include <qheader.h> 4#include <qheader.h>
5#include <qlabel.h> 5#include <qlabel.h>
6#include <qlayout.h> 6#include <qlayout.h>
7#include <qlineedit.h> 7#include <qlineedit.h>
8#include <qlistview.h> 8#include <qlistview.h>
9#include <qpopupmenu.h> 9#include <qpopupmenu.h>
10#include <qwidgetstack.h> 10#include <qwidgetstack.h>
11#include <qregexp.h> 11#include <qregexp.h>
12#include <qobjectlist.h> 12#include <qobjectlist.h>
13 13
14/* hacky but we need to get FileSelector::filter */ 14/* hacky but we need to get FileSelector::filter */
15#define private public 15#define private public
16#include <qpe/fileselector.h> 16#include <qpe/fileselector.h>
17#undef private 17#undef private
18 18
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20#include <qpe/mimetype.h> 20#include <qpe/mimetype.h>
21#include <qpe/resource.h> 21#include <qpe/resource.h>
22#include <qpe/storage.h> 22#include <qpe/storage.h>
23#include <kglobal.h> 23#include <kglobal.h>
24#include <klocale.h> 24#include <klocale.h>
25 25
26#include "ofileselector_p.h" 26#include "ofileselector_p.h"
27//US#include "ofileselector.h" 27//US#include "ofileselector.h"
28 28
29#include "klocale.h" 29#include "klocale.h"
30 30
31OFileViewInterface::OFileViewInterface( OFileSelector* selector ) 31OFileViewInterface::OFileViewInterface( OFileSelector* selector )
32 : m_selector( selector ) { 32 : m_selector( selector ) {
33} 33}
34OFileViewInterface::~OFileViewInterface() { 34OFileViewInterface::~OFileViewInterface() {
35} 35}
36QString OFileViewInterface::name()const{ 36QString OFileViewInterface::name()const{
37 return m_name; 37 return m_name;
38} 38}
39void OFileViewInterface::setName( const QString& name ) { 39void OFileViewInterface::setName( const QString& name ) {
40 m_name = name; 40 m_name = name;
41} 41}
42OFileSelector* OFileViewInterface::selector()const { 42OFileSelector* OFileViewInterface::selector()const {
43 return m_selector; 43 return m_selector;
44} 44}
45 45
46DocLnk OFileViewInterface::selectedDocument()const { 46DocLnk OFileViewInterface::selectedDocument()const {
47 return DocLnk( selectedName() ); 47 return DocLnk( selectedName() );
48} 48}
49 49
50bool OFileViewInterface::showNew()const { 50bool OFileViewInterface::showNew()const {
51 return selector()->showNew(); 51 return selector()->showNew();
52} 52}
53bool OFileViewInterface::showClose()const { 53bool OFileViewInterface::showClose()const {
54 return selector()->showClose(); 54 return selector()->showClose();
55} 55}
56MimeTypes OFileViewInterface::mimeTypes()const { 56MimeTypes OFileViewInterface::mimeTypes()const {
57 return selector()->mimeTypes(); 57 return selector()->mimeTypes();
58} 58}
59QStringList OFileViewInterface::currentMimeType()const { 59QStringList OFileViewInterface::currentMimeType()const {
60 return selector()->currentMimeType(); 60 return selector()->currentMimeType();
61} 61}
62void OFileViewInterface::activate( const QString& ) { 62void OFileViewInterface::activate( const QString& ) {
63 // not implemented here 63 // not implemented here
64} 64}
65void OFileViewInterface::ok() { 65void OFileViewInterface::ok() {
66 emit selector()->ok(); 66 emit selector()->ok();
67} 67}
68void OFileViewInterface::cancel() { 68void OFileViewInterface::cancel() {
69 emit selector()->cancel(); 69 emit selector()->cancel();
70} 70}
71void OFileViewInterface::closeMe() { 71void OFileViewInterface::closeMe() {
72 emit selector()->closeMe(); 72 emit selector()->closeMe();
73} 73}
74void OFileViewInterface::fileSelected( const QString& str) { 74void OFileViewInterface::fileSelected( const QString& str) {
75 emit selector()->fileSelected( str); 75 emit selector()->fileSelected( str);
76} 76}
77void OFileViewInterface::fileSelected( const DocLnk& lnk) { 77void OFileViewInterface::fileSelected( const DocLnk& lnk) {
78 emit selector()->fileSelected( lnk ); 78 emit selector()->fileSelected( lnk );
79} 79}
80void OFileViewInterface::setCurrentFileName( const QString& str ) { 80void OFileViewInterface::setCurrentFileName( const QString& str ) {
81 selector()->m_lneEdit->setText( str ); 81 selector()->m_lneEdit->setText( str );
82} 82}
83QString OFileViewInterface::currentFileName()const{ 83QString OFileViewInterface::currentFileName()const{
84 return selector()->m_lneEdit->text(); 84 return selector()->m_lneEdit->text();
85} 85}
86QString OFileViewInterface::startDirectory()const{ 86QString OFileViewInterface::startDirectory()const{
87 return selector()->m_startDir; 87 return selector()->m_startDir;
88} 88}
89 89
90 90
91ODocumentFileView::ODocumentFileView( OFileSelector* selector ) 91ODocumentFileView::ODocumentFileView( OFileSelector* selector )
92 : OFileViewInterface( selector ) { 92 : OFileViewInterface( selector ) {
93 m_selector = 0; 93 m_selector = 0;
94 setName( i18n("Documents") ); 94 setName( i18n("Documents") );
95} 95}
96ODocumentFileView::~ODocumentFileView() { 96ODocumentFileView::~ODocumentFileView() {
97 97
98} 98}
99QString ODocumentFileView::selectedName()const { 99QString ODocumentFileView::selectedName()const {
100 if (!m_selector) 100 if (!m_selector)
101 return QString::null; 101 return QString::null;
102 102
103 return m_selector->selected()->file(); 103 return m_selector->selected()->file();
104} 104}
105QString ODocumentFileView::selectedPath()const { 105QString ODocumentFileView::selectedPath()const {
106 return QPEApplication::documentDir(); 106 return QPEApplication::documentDir();
107} 107}
108QString ODocumentFileView::directory()const { 108QString ODocumentFileView::directory()const {
109 return selectedPath(); 109 return selectedPath();
110} 110}
111void ODocumentFileView::reread() { 111void ODocumentFileView::reread() {
112 if (!m_selector) 112 if (!m_selector)
113 return; 113 return;
114 114
115 m_selector->setNewVisible( showNew() ); 115 m_selector->setNewVisible( showNew() );
116 m_selector->setCloseVisible( showClose() ); 116 m_selector->setCloseVisible( showClose() );
117 m_selector->filter = currentMimeType().join(";"); 117 m_selector->filter = currentMimeType().join(";");
118 m_selector->reread(); 118 m_selector->reread();
119} 119}
120int ODocumentFileView::fileCount()const { 120int ODocumentFileView::fileCount()const {
121 if (!m_selector) 121 if (!m_selector)
122 return -1; 122 return -1;
123 123
124 return m_selector->fileCount(); 124 return m_selector->fileCount();
125} 125}
126 126
127DocLnk ODocumentFileView::selectedDocument()const { 127DocLnk ODocumentFileView::selectedDocument()const {
128 if (!m_selector) 128 if (!m_selector)
129 return DocLnk(); 129 return DocLnk();
130 DocLnk lnk = *m_selector->selected(); 130 DocLnk lnk = *m_selector->selected();
131 return lnk; 131 return lnk;
132} 132}
133 133
134QWidget* ODocumentFileView::widget( QWidget* parent ) { 134QWidget* ODocumentFileView::widget( QWidget* parent ) {
135 if (!m_selector ) { 135 if (!m_selector ) {
136 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); 136 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() );
137 QObject::connect(m_selector, SIGNAL(fileSelected( const DocLnk& ) ), 137 QObject::connect(m_selector, SIGNAL(fileSelected( const DocLnk& ) ),
138 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); 138 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) );
139 QObject::connect(m_selector, SIGNAL(closeMe() ), 139 QObject::connect(m_selector, SIGNAL(closeMe() ),
140 selector(), SIGNAL(closeMe() ) ); 140 selector(), SIGNAL(closeMe() ) );
141 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk& ) ), 141 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk& ) ),
142 selector(), SIGNAL(newSelected(const DocLnk& ) ) ); 142 selector(), SIGNAL(newSelected(const DocLnk& ) ) );
143 } 143 }
144 144
145 return m_selector; 145 return m_selector;
146} 146}
147 147
148/* 148/*
149 * This is the file system view used 149 * This is the file system view used
150 * we use a QListView + QListViewItems for it 150 * we use a QListView + QListViewItems for it
151 */ 151 */
152 152
153OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, 153OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap,
154 const QString& path, const QString& date, 154 const QString& path, const QString& date,
155 const QString& size, const QString& dir, 155 const QString& size, const QString& dir,
156 bool isLocked, bool isDir ) 156 bool isLocked, bool isDir )
157 : QListViewItem( view ) 157 : QListViewItem( view )
158{ 158{
159 159
160 QString kind = "dir";; 160 QString kind = "dir";;
161 QString _path = path; 161 QString _path = path;
162 if ( !isDir ){ 162 if ( !isDir ){
163 int arrow = path.findRev( "." ,-1); 163 int arrow = path.findRev( "." ,-1);
164 if (arrow > 0 ) { 164 if (arrow > 0 ) {
165 kind = path.mid(arrow+1); 165 kind = path.mid(arrow+1);
166 } 166 }
167 } 167 }
168 setPixmap(0, pixmap ); 168 setPixmap(0, pixmap );
169 int arrow = path.find( "->" ); 169 int arrow = path.find( "->" );
170 if (arrow > 0 ) { 170 if (arrow > 0 ) {
171 _path = path.left(arrow); 171 _path = path.left(arrow);
172 } 172 }
173 setText(1, _path ); 173 setText(1, _path );
174 setText(2, size ); 174 setText(2, size );
175 setText(3, date ); 175 setText(3, date );
176 setText(4, kind ); 176 setText(4, kind );
177 m_isDir = isDir; 177 m_isDir = isDir;
178 m_dir = dir; 178 m_dir = dir;
179 m_locked = isLocked; 179 m_locked = isLocked;
180} 180}
181OFileSelectorItem::~OFileSelectorItem() { 181OFileSelectorItem::~OFileSelectorItem() {
182 182
183} 183}
184bool OFileSelectorItem::isLocked()const { 184bool OFileSelectorItem::isLocked()const {
185 return m_locked; 185 return m_locked;
186} 186}
187QString OFileSelectorItem::directory()const { 187QString OFileSelectorItem::directory()const {
188 return m_dir; 188 return m_dir;
189} 189}
190bool OFileSelectorItem::isDir()const { 190bool OFileSelectorItem::isDir()const {
191 return m_isDir; 191 return m_isDir;
192} 192}
193QString OFileSelectorItem::path()const { 193QString OFileSelectorItem::path()const {
194 return text( 1 ); 194 return text( 1 );
195} 195}
196QString OFileSelectorItem::key( int id, bool )const { 196QString OFileSelectorItem::key( int id, bool )const {
197 QString ke; 197 QString ke;
198 if( id == 0 || id == 1 ){ // name 198 if( id == 0 || id == 1 ){ // name
199 if( m_isDir ){ 199 if( m_isDir ){
200 ke.append("0" ); 200 ke.append("0" );
201 ke.append( text(1) ); 201 ke.append( text(1) );
202 }else{ 202 }else{
203 ke.append("1" ); 203 ke.append("1" );
204 ke.append( text(1) ); 204 ke.append( text(1) );
205 } 205 }
206 return ke; 206 return ke;
207 } else if ( id == 2 ) { 207 } else if ( id == 2 ) {
208 QString sort = "00000000"; 208 QString sort = "00000000";
209 sort = sort.left( 9-text( 2 ).length()) + text( 2 ); 209 sort = sort.left( 9-text( 2 ).length()) + text( 2 );
210 return sort; 210 return sort;
211 211
212 } else 212 } else
213 return text( id ); 213 return text( id );
214 214
215} 215}
216 216
217OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, 217OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir,
218 OFileSelector* sel) 218 OFileSelector* sel)
219 : QWidget( parent ), m_sel( sel ) { 219 : QWidget( parent ), m_sel( sel ) {
220 m_all = false; 220 m_all = false;
221 QVBoxLayout* lay = new QVBoxLayout( this ); 221 QVBoxLayout* lay = new QVBoxLayout( this );
222 m_currentDir = startDir; 222 m_currentDir = startDir;
223 223
224 /* 224 /*
225 * now we add a special bar 225 * now we add a special bar
226 * One Button For Up 226 * One Button For Up
227 * Home 227 * Home
228 * Doc 228 * Doc
229 * And a dropdown menu with FileSystems 229 * And a dropdown menu with FileSystems
230 * FUTURE: one to change dir with lineedit 230 * FUTURE: one to change dir with lineedit
231 * Bookmarks 231 * Bookmarks
232 * Create Dir 232 * Create Dir
233 */ 233 */
234 QHBox* box = new QHBox(this ); 234 QHBox* box = new QHBox(this );
235 box->setBackgroundMode( PaletteButton ); 235 box->setBackgroundMode( PaletteButton );
236 box->setSpacing( 0 ); 236 box->setSpacing( 0 );
237 237
238 QToolButton *btn = new QToolButton( box ); 238 QToolButton *btn = new QToolButton( box );
239 btn->setIconSet( Resource::loadPixmap("up") ); 239 btn->setIconSet( Resource::loadPixmap("up") );
240 connect(btn, SIGNAL(clicked() ), 240 connect(btn, SIGNAL(clicked() ),
241 this, SLOT( cdUP() ) ); 241 this, SLOT( cdUP() ) );
242 242
243 btn = new QToolButton( box ); 243 btn = new QToolButton( box );
244 btn->setIconSet( Resource::loadPixmap("home") ); 244 btn->setIconSet( Resource::loadPixmap("home") );
245 connect(btn, SIGNAL(clicked() ), 245 connect(btn, SIGNAL(clicked() ),
246 this, SLOT( cdHome() ) ); 246 this, SLOT( cdHome() ) );
247 247
248 btn = new QToolButton( box ); 248 btn = new QToolButton( box );
249 btn->setIconSet( Resource::loadPixmap("DocsIcon") ); 249 btn->setIconSet( Resource::loadPixmap("DocsIcon") );
250 connect(btn, SIGNAL(clicked() ), 250 connect(btn, SIGNAL(clicked() ),
251 this, SLOT(cdDoc() ) ); 251 this, SLOT(cdDoc() ) );
252 252
253 m_btnNew = new QToolButton( box ); 253 m_btnNew = new QToolButton( box );
254 m_btnNew->setIconSet( Resource::loadPixmap("new") ); 254 m_btnNew->setIconSet( Resource::loadPixmap("new") );
255 connect(m_btnNew, SIGNAL(clicked() ), 255 connect(m_btnNew, SIGNAL(clicked() ),
256 this, SLOT(slotNew() ) ); 256 this, SLOT(slotNew() ) );
257 257
258 258
259 m_btnClose = new QToolButton( box ); 259 m_btnClose = new QToolButton( box );
260 m_btnClose->setIconSet( Resource::loadPixmap("close") ); 260 m_btnClose->setIconSet( Resource::loadPixmap("close") );
261 connect(m_btnClose, SIGNAL(clicked() ), 261 connect(m_btnClose, SIGNAL(clicked() ),
262 selector(), SIGNAL(closeMe() ) ); 262 selector(), SIGNAL(closeMe() ) );
263 263
264 btn = new QToolButton( box ); 264 btn = new QToolButton( box );
265 btn->setIconSet( Resource::loadPixmap("cardmon/pcmcia") ); 265 btn->setIconSet( Resource::loadPixmap("cardmon/pcmcia") );
266 266
267 /* let's fill device parts */ 267 /* let's fill device parts */
268 QPopupMenu* pop = new QPopupMenu(this); 268 QPopupMenu* pop = new QPopupMenu(this);
269 connect(pop, SIGNAL( activated(int) ), 269 connect(pop, SIGNAL( activated(int) ),
270 this, SLOT(slotFSActivated(int) ) ); 270 this, SLOT(slotFSActivated(int) ) );
271 271
272 StorageInfo storage; 272 StorageInfo storage;
273 const QList<FileSystem> &fs = storage.fileSystems(); 273 const QList<FileSystem> &fs = storage.fileSystems();
274 QListIterator<FileSystem> it(fs); 274 QListIterator<FileSystem> it(fs);
275 for ( ; it.current(); ++it ) { 275 for ( ; it.current(); ++it ) {
276 const QString disk = (*it)->name(); 276 const QString disk = (*it)->name();
277 const QString path = (*it)->path(); 277 const QString path = (*it)->path();
278 m_dev.insert( disk, path ); 278 m_dev.insert( disk, path );
279 pop->insertItem( disk ); 279 pop->insertItem( disk );
280 } 280 }
281 m_fsPop = pop; 281 m_fsPop = pop;
282 282
283 283
284 btn->setPopup( pop ); 284 btn->setPopup( pop );
285 btn->setPopupDelay ( 0 ); 285 btn->setPopupDelay ( 0 );
286 lay->addWidget( box ); 286 lay->addWidget( box );
287 287
288 m_view = new QListView( this ); 288 m_view = new QListView( this );
289 289
290 m_view->installEventFilter(this); 290 m_view->installEventFilter(this);
291 291
292 QPEApplication::setStylusOperation( m_view->viewport(), 292 QPEApplication::setStylusOperation( m_view->viewport(),
293 QPEApplication::RightOnHold); 293 QPEApplication::RightOnHold);
294 m_view->addColumn(" " ); 294 m_view->addColumn(" " );
295 m_view->addColumn(i18n("Name"), 150 ); 295 m_view->addColumn(i18n("Name"), 150 );
296 m_view->addColumn(i18n("Size"), -1 ); 296 m_view->addColumn(i18n("Size"), -1 );
297 m_view->addColumn(i18n("Date"), -1 ); 297 m_view->addColumn(i18n("Date"), -1 );
298 m_view->addColumn(i18n("Mime Type"), -1 ); 298 m_view->addColumn(i18n("Mime Type"), -1 );
299 299
300 300
301 m_view->setSorting( 1 ); 301 m_view->setSorting( 1 );
302 m_view->setAllColumnsShowFocus( TRUE ); 302 m_view->setAllColumnsShowFocus( TRUE );
303 303
304 lay->addWidget( m_view, 1000 ); 304 lay->addWidget( m_view, 1000 );
305 connectSlots(); 305 connectSlots();
306} 306}
307OFileViewFileListView::~OFileViewFileListView() { 307OFileViewFileListView::~OFileViewFileListView() {
308} 308}
309void OFileViewFileListView::slotNew() { 309void OFileViewFileListView::slotNew() {
310 DocLnk lnk; 310 DocLnk lnk;
311 emit selector()->newSelected( lnk ); 311 emit selector()->newSelected( lnk );
312} 312}
313OFileSelectorItem* OFileViewFileListView::currentItem()const{ 313OFileSelectorItem* OFileViewFileListView::currentItem()const{
314 QListViewItem* item = m_view->currentItem(); 314 QListViewItem* item = m_view->currentItem();
315 if (!item ) 315 if (!item )
316 return 0l; 316 return 0l;
317 317
318 return static_cast<OFileSelectorItem*>(item); 318 return static_cast<OFileSelectorItem*>(item);
319} 319}
320void OFileViewFileListView::reread( bool all ) { 320void OFileViewFileListView::reread( bool all ) {
321 m_view->clear(); 321 m_view->clear();
322 322
323 if (selector()->showClose() ) 323 if (selector()->showClose() )
324 m_btnClose->show(); 324 m_btnClose->show();
325 else 325 else
326 m_btnClose->hide(); 326 m_btnClose->hide();
327 327
328 if (selector()->showNew() ) 328 if (selector()->showNew() )
329 m_btnNew->show(); 329 m_btnNew->show();
330 else 330 else
331 m_btnNew->hide(); 331 m_btnNew->hide();
332 332
333 m_mimes = selector()->currentMimeType(); 333 m_mimes = selector()->currentMimeType();
334 m_all = all; 334 m_all = all;
335 335
336 QDir dir( m_currentDir ); 336 QDir dir( m_currentDir );
337 if (!dir.exists() ) 337 if (!dir.exists() )
338 return; 338 return;
339 topLevelWidget()->setCaption( dir.path() ); 339 topLevelWidget()->setCaption( dir.path() );
340 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); 340 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed );
341 int filter; 341 int filter;
342 if (m_all ) 342 if (m_all )
343 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; 343 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
344 else 344 else
345 filter = QDir::Files | QDir::Dirs | QDir::All; 345 filter = QDir::Files | QDir::Dirs | QDir::All;
346 dir.setFilter( filter ); 346 dir.setFilter( filter );
347 347
348 // now go through all files 348 // now go through all files
349 const QFileInfoList *list = dir.entryInfoList(); 349 const QFileInfoList *list = dir.entryInfoList();
350 if (!list) { 350 if (!list) {
351 cdUP(); 351 cdUP();
352 return; 352 return;
353 } 353 }
354 QFileInfoListIterator it( *list ); 354 QFileInfoListIterator it( *list );
355 QFileInfo *fi; 355 QFileInfo *fi;
356 while( (fi=it.current() ) ){ 356 while( (fi=it.current() ) ){
357 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ 357 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){
358 ++it; 358 ++it;
359 continue; 359 continue;
360 } 360 }
361 361
362 /* 362 /*
363 * It is a symlink we try to resolve it now but don't let us attack by DOS 363 * It is a symlink we try to resolve it now but don't let us attack by DOS
364 * 364 *
365 */ 365 */
366 if( fi->isSymLink() ){ 366 if( fi->isSymLink() ){
367 qDebug("SYMLINK "); 367 //qDebug("SYMLINK ");
368 QString file = fi->readLink(); 368 QString file = fi->readLink();
369 for( int i = 0; i<=5; i++) { // 5 tries to prevent dos 369 for( int i = 0; i<=5; i++) { // 5 tries to prevent dos
370 QFileInfo info( file ); 370 QFileInfo info( file );
371 qDebug("FILE %s ", file.latin1()); 371 //qDebug("FILE %s ", file.latin1());
372 if( !info.exists() ){ 372 if( !info.exists() ){
373 addSymlink( fi, TRUE ); 373 addSymlink( fi, TRUE );
374 break; 374 break;
375 }else if( info.isDir() ){ 375 }else if( info.isDir() ){
376 addDir( fi, TRUE ); 376 addDir( fi, TRUE );
377 break; 377 break;
378 }else if( info.isFile() ){ 378 }else if( info.isFile() ){
379 addFile( fi, TRUE ); 379 addFile( fi, TRUE );
380 break; 380 break;
381 }else if( info.isSymLink() ){ 381 }else if( info.isSymLink() ){
382 file = info.readLink() ; 382 file = info.readLink() ;
383 break; 383 break;
384 }else if( i == 4){ // couldn't resolve symlink add it as symlink 384 }else if( i == 4){ // couldn't resolve symlink add it as symlink
385 addSymlink( fi ); 385 addSymlink( fi );
386 } 386 }
387 } // off for loop for symlink resolving 387 } // off for loop for symlink resolving
388 }else if( fi->isDir() ) 388 }else if( fi->isDir() )
389 addDir( fi ); 389 addDir( fi );
390 else if( fi->isFile() ) 390 else if( fi->isFile() )
391 addFile( fi ); 391 addFile( fi );
392 392
393 ++it; 393 ++it;
394 } // of while loop 394 } // of while loop
395 m_view->sort(); 395 m_view->sort();
396 396
397} 397}
398int OFileViewFileListView::fileCount()const{ 398int OFileViewFileListView::fileCount()const{
399 return m_view->childCount(); 399 return m_view->childCount();
400} 400}
401QString OFileViewFileListView::currentDir()const{ 401QString OFileViewFileListView::currentDir()const{
402 return m_currentDir; 402 return m_currentDir;
403} 403}
404OFileSelector* OFileViewFileListView::selector() { 404OFileSelector* OFileViewFileListView::selector() {
405 return m_sel; 405 return m_sel;
406} 406}
407 407
408bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) { 408bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) {
409#if 0 409#if 0
410 if ( e->type() == QEvent::KeyPress ) { 410 if ( e->type() == QEvent::KeyPress ) {
411 QKeyEvent *k = (QKeyEvent *)e; 411 QKeyEvent *k = (QKeyEvent *)e;
412 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { 412 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) {
413 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); 413 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0);
414 return true; 414 return true;
415 } 415 }
416 } 416 }
417#endif 417#endif
418 return false; 418 return false;
419} 419}
420 420
421 421
422void OFileViewFileListView::connectSlots() { 422void OFileViewFileListView::connectSlots() {
423 connect(m_view, SIGNAL(clicked(QListViewItem*) ), 423 connect(m_view, SIGNAL(clicked(QListViewItem*) ),
424 this, SLOT(slotCurrentChanged(QListViewItem*) ) ); 424 this, SLOT(slotCurrentChanged(QListViewItem*) ) );
425 connect(m_view, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint&, int ) ), 425 connect(m_view, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint&, int ) ),
426 this, SLOT(slotClicked(int, QListViewItem*, const QPoint&, int ) ) ); 426 this, SLOT(slotClicked(int, QListViewItem*, const QPoint&, int ) ) );
427 connect(m_view, SIGNAL(doubleClicked( QListViewItem* )), 427 connect(m_view, SIGNAL(doubleClicked( QListViewItem* )),
428 this, SLOT(slotDoubleClicked(QListViewItem* ) ) ); 428 this, SLOT(slotDoubleClicked(QListViewItem* ) ) );
429 connect(m_view, SIGNAL(returnPressed( QListViewItem* )), 429 connect(m_view, SIGNAL(returnPressed( QListViewItem* )),
430 this, SLOT(slotDoubleClicked(QListViewItem* ) ) ); 430 this, SLOT(slotDoubleClicked(QListViewItem* ) ) );
431} 431}
432void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) { 432void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) {
433 if (!item) 433 if (!item)
434 return; 434 return;
435#if 0 435#if 0
436 436
437 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 437 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
438 438
439 if (!sel->isDir() ) { 439 if (!sel->isDir() ) {
440 selector()->m_lneEdit->setText( sel->text(1) ); 440 selector()->m_lneEdit->setText( sel->text(1) );
441 // if in fileselector mode we will emit selected 441 // if in fileselector mode we will emit selected
442 if ( selector()->mode() == OFileSelector::FileSelector ) { 442 if ( selector()->mode() == OFileSelector::FileSelector ) {
443 qWarning("slot Current Changed"); 443 qWarning("slot Current Changed");
444 QStringList str = QStringList::split("->", sel->text(1) ); 444 QStringList str = QStringList::split("->", sel->text(1) );
445 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 445 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
446 emit selector()->fileSelected( path ); 446 emit selector()->fileSelected( path );
447 DocLnk lnk( path ); 447 DocLnk lnk( path );
448 emit selector()->fileSelected( lnk ); 448 emit selector()->fileSelected( lnk );
449 } 449 }
450 } 450 }
451#endif 451#endif
452} 452}
453void OFileViewFileListView::slotDoubleClicked(QListViewItem* item ) { 453void OFileViewFileListView::slotDoubleClicked(QListViewItem* item ) {
454 if (!item ) return; 454 if (!item ) return;
455 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 455 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
456 if (!sel->isLocked() ) { 456 if (!sel->isLocked() ) {
457 QStringList str = QStringList::split("->", sel->text(1) ); 457 QStringList str = QStringList::split("->", sel->text(1) );
458 if (sel->isDir() ) { 458 if (sel->isDir() ) {
459 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); 459 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace();
460 emit selector()->dirSelected( m_currentDir ); 460 emit selector()->dirSelected( m_currentDir );
461 reread( m_all ); 461 reread( m_all );
462 }else { // file 462 }else { // file
463 //qWarning("slot Clicked"); 463 //qWarning("slot Clicked");
464 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); 464 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() );
465 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 465 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
466 emit selector()->fileSelected( path ); 466 emit selector()->fileSelected( path );
467 DocLnk lnk( path ); 467 DocLnk lnk( path );
468 emit selector()->fileSelected( lnk ); 468 emit selector()->fileSelected( lnk );
469 emit selector()->ok(); 469 emit selector()->ok();
470 } 470 }
471 } // not locked 471 } // not locked
472} 472}
473void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) { 473void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) {
474 if (!item || ( button != Qt::LeftButton) ) 474 if (!item || ( button != Qt::LeftButton) )
475 return; 475 return;
476 476
477 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 477 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
478 if (!sel->isLocked() ) { 478 if (!sel->isLocked() ) {
479 QStringList str = QStringList::split("->", sel->text(1) ); 479 QStringList str = QStringList::split("->", sel->text(1) );
480 if (sel->isDir() ) { 480 if (sel->isDir() ) {
481 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); 481 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace();
482 emit selector()->dirSelected( m_currentDir ); 482 emit selector()->dirSelected( m_currentDir );
483 reread( m_all ); 483 reread( m_all );
484 }else { // file 484 }else { // file
485 //qWarning("slot Clicked"); 485 //qWarning("slot Clicked");
486 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); 486 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() );
487 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 487 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
488 emit selector()->fileSelected( path ); 488 emit selector()->fileSelected( path );
489 DocLnk lnk( path ); 489 DocLnk lnk( path );
490 emit selector()->fileSelected( lnk ); 490 emit selector()->fileSelected( lnk );
491 } 491 }
492 } // not locked 492 } // not locked
493} 493}
494void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) { 494void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) {
495 MimeType type( info->absFilePath() ); 495 MimeType type( info->absFilePath() );
496 if (!compliesMime( type.id() ) ) 496 if (!compliesMime( type.id() ) )
497 return; 497 return;
498 498
499 QPixmap pix = type.pixmap(); 499 QPixmap pix = type.pixmap();
500 QString dir, name; bool locked; 500 QString dir, name; bool locked;
501 if ( pix.isNull() ) { 501 if ( pix.isNull() ) {
502 QWMatrix matrix; 502 QWMatrix matrix;
503 QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); 503 QPixmap pixer(Resource::loadPixmap("UnknownDocument") );
504 matrix.scale( .4, .4 ); 504 matrix.scale( .4, .4 );
505 pix = pixer.xForm( matrix ); 505 pix = pixer.xForm( matrix );
506 } 506 }
507 dir = info->dirPath( true ); 507 dir = info->dirPath( true );
508 locked = false; 508 locked = false;
509 if ( symlink ) 509 if ( symlink )
510 name = info->fileName() + " -> " + info->readLink(); 510 name = info->fileName() + " -> " + info->readLink();
511 else{ 511 else{
512 name = info->fileName(); 512 name = info->fileName();
513 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || 513 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) ||
514 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) { 514 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) {
515 locked = true; pix = Resource::loadPixmap("locked"); 515 locked = true; pix = Resource::loadPixmap("locked");
516 } 516 }
517 } 517 }
518 (void)new OFileSelectorItem( m_view, pix, name, 518 (void)new OFileSelectorItem( m_view, pix, name,
519 KGlobal::locale()->formatDateTime(info->lastModified(),true, true, KLocale::ISODate), 519 KGlobal::locale()->formatDateTime(info->lastModified(),true, true, KLocale::ISODate),
520 QString::number( info->size() ), 520 QString::number( info->size() ),
521 dir, locked ); 521 dir, locked );
522} 522}
523void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) { 523void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) {
524 bool locked = false; QString name; QPixmap pix; 524 bool locked = false; QString name; QPixmap pix;
525 525
526 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || 526 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) ||
527 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) { 527 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) {
528 locked = true; 528 locked = true;
529 if ( symlink ) 529 if ( symlink )
530 pix = Resource::loadPixmap( "symlink" ); 530 pix = Resource::loadPixmap( "symlink" );
531 else 531 else
532 pix = Resource::loadPixmap( "lockedfolder" ); 532 pix = Resource::loadPixmap( "lockedfolder" );
533 }else 533 }else
534 pix = symlink ? Resource::loadPixmap( "symlink") : Resource::loadPixmap("folder"); 534 pix = symlink ? Resource::loadPixmap( "symlink") : Resource::loadPixmap("folder");
535 535
536 name = symlink ? info->fileName() + " -> " + info->readLink() : 536 name = symlink ? info->fileName() + " -> " + info->readLink() :
537 info->fileName(); 537 info->fileName();
538 538
539 (void)new OFileSelectorItem( m_view, pix, name, 539 (void)new OFileSelectorItem( m_view, pix, name,
540 KGlobal::locale()->formatDateTime(info->lastModified(),true, true, KLocale::ISODate), 540 KGlobal::locale()->formatDateTime(info->lastModified(),true, true, KLocale::ISODate),
541 QString::number( info->size() ), 541 QString::number( info->size() ),
542 info->dirPath( true ), locked, true ); 542 info->dirPath( true ), locked, true );
543 543
544 544
545} 545}
546void OFileViewFileListView::addSymlink( QFileInfo* , bool ) { 546void OFileViewFileListView::addSymlink( QFileInfo* , bool ) {
547 547
548} 548}
549void OFileViewFileListView::cdUP() { 549void OFileViewFileListView::cdUP() {
550 QDir dir( m_currentDir ); 550 QDir dir( m_currentDir );
551 dir.cdUp(); 551 dir.cdUp();
552 552
553 if (!dir.exists() ) 553 if (!dir.exists() )
554 m_currentDir = "/"; 554 m_currentDir = "/";
555 else 555 else
556 m_currentDir = dir.absPath(); 556 m_currentDir = dir.absPath();
557 557
558 emit selector()->dirSelected( m_currentDir ); 558 emit selector()->dirSelected( m_currentDir );
559 reread( m_all ); 559 reread( m_all );
560} 560}
561void OFileViewFileListView::cdHome() { 561void OFileViewFileListView::cdHome() {
562 m_currentDir = QDir::homeDirPath(); 562 m_currentDir = QDir::homeDirPath();
563 emit selector()->dirSelected( m_currentDir ); 563 emit selector()->dirSelected( m_currentDir );
564 reread( m_all ); 564 reread( m_all );
565} 565}
566void OFileViewFileListView::cdDoc() { 566void OFileViewFileListView::cdDoc() {
567 m_currentDir = QPEApplication::documentDir(); 567 m_currentDir = QPEApplication::documentDir();
568 emit selector()->dirSelected( m_currentDir ); 568 emit selector()->dirSelected( m_currentDir );
569 reread( m_all ); 569 reread( m_all );
570} 570}
571void OFileViewFileListView::changeDir( const QString& dir ) { 571void OFileViewFileListView::changeDir( const QString& dir ) {
572 m_currentDir = dir; 572 m_currentDir = dir;
573 emit selector()->dirSelected( m_currentDir ); 573 emit selector()->dirSelected( m_currentDir );
574 reread( m_all ); 574 reread( m_all );
575} 575}
576void OFileViewFileListView::slotFSActivated( int id ) { 576void OFileViewFileListView::slotFSActivated( int id ) {
577 changeDir ( m_dev[m_fsPop->text(id)] ); 577 changeDir ( m_dev[m_fsPop->text(id)] );
578} 578}
579 579
580/* check if the mimetype in mime 580/* check if the mimetype in mime
581 * complies with the one which is current 581 * complies with the one which is current
582 */ 582 */
583/* 583/*
584 * We've the mimetype of the file 584 * We've the mimetype of the file
585 * We need to get the stringlist of the current mimetype 585 * We need to get the stringlist of the current mimetype
586 * 586 *
587 * mime = image@slashjpeg 587 * mime = image@slashjpeg
588 * QStringList = 'image@slash*' 588 * QStringList = 'image@slash*'
589 * or QStringList = image/jpeg;image/png;application/x-ogg 589 * or QStringList = image/jpeg;image/png;application/x-ogg
590 * or QStringList = application/x-ogg;image@slash*; 590 * or QStringList = application/x-ogg;image@slash*;
591 * with all these mime filters it should get acceptes 591 * with all these mime filters it should get acceptes
592 * to do so we need to look if mime is contained inside 592 * to do so we need to look if mime is contained inside
593 * the stringlist 593 * the stringlist
594 * if it's contained return true 594 * if it's contained return true
595 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*' 595 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*'
596 * is contained in the mimefilter and then we will 596 * is contained in the mimefilter and then we will
597 * look if both are equal until the '/' 597 * look if both are equal until the '/'
598 */ 598 */
599bool OFileViewFileListView::compliesMime( const QString& str) { 599bool OFileViewFileListView::compliesMime( const QString& str) {
600 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() ) 600 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() )
601 return true; 601 return true;
602 602
603 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it ) { 603 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it ) {
604 QRegExp reg( (*it) ); 604 QRegExp reg( (*it) );
605 reg.setWildcard( true ); 605 reg.setWildcard( true );
606 if ( str.find( reg ) != -1 ) 606 if ( str.find( reg ) != -1 )
607 return true; 607 return true;
608 608
609 } 609 }
610 return false; 610 return false;
611} 611}
612/* 612/*
613 * The listView giving access to the file system! 613 * The listView giving access to the file system!
614 */ 614 */
615class OFileViewFileSystem : public OFileViewInterface { 615class OFileViewFileSystem : public OFileViewInterface {
616public: 616public:
617 OFileViewFileSystem( OFileSelector* ); 617 OFileViewFileSystem( OFileSelector* );
618 ~OFileViewFileSystem(); 618 ~OFileViewFileSystem();
619 619
620 QString selectedName() const; 620 QString selectedName() const;
621 QString selectedPath() const; 621 QString selectedPath() const;
622 622
623 QString directory()const; 623 QString directory()const;
624 void reread(); 624 void reread();
625 int fileCount()const; 625 int fileCount()const;
626 626
627 QWidget* widget( QWidget* parent ); 627 QWidget* widget( QWidget* parent );
628 void activate( const QString& ); 628 void activate( const QString& );
629private: 629private:
630 OFileViewFileListView* m_view; 630 OFileViewFileListView* m_view;
631 bool m_all : 1; 631 bool m_all : 1;
632}; 632};
633OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel) 633OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel)
634 : OFileViewInterface( sel ) { 634 : OFileViewInterface( sel ) {
635 m_view = 0; 635 m_view = 0;
636 m_all = false; 636 m_all = false;
637} 637}
638OFileViewFileSystem::~OFileViewFileSystem() { 638OFileViewFileSystem::~OFileViewFileSystem() {
639} 639}
640QString OFileViewFileSystem::selectedName()const{ 640QString OFileViewFileSystem::selectedName()const{
641 if (!m_view ) 641 if (!m_view )
642 return QString::null; 642 return QString::null;
643 643
644 QString cFN=currentFileName(); 644 QString cFN=currentFileName();
645 if (cFN.startsWith("/")) return cFN; 645 if (cFN.startsWith("/")) return cFN;
646 return m_view->currentDir() + "/" + cFN; 646 return m_view->currentDir() + "/" + cFN;
647} 647}
648QString OFileViewFileSystem::selectedPath()const{ 648QString OFileViewFileSystem::selectedPath()const{
649 return QString::null; 649 return QString::null;
650} 650}
651QString OFileViewFileSystem::directory()const{ 651QString OFileViewFileSystem::directory()const{
652 if (!m_view) 652 if (!m_view)
653 return QString::null; 653 return QString::null;
654 654
655 OFileSelectorItem* item = m_view->currentItem(); 655 OFileSelectorItem* item = m_view->currentItem();
656 if (!item ) 656 if (!item )
657 return QString::null; 657 return QString::null;
658 658
659 return QDir(item->directory() ).absPath(); 659 return QDir(item->directory() ).absPath();
660} 660}
661void OFileViewFileSystem::reread() { 661void OFileViewFileSystem::reread() {
662 if (!m_view) 662 if (!m_view)
663 return; 663 return;
664 664
665 m_view->reread( m_all ); 665 m_view->reread( m_all );
666} 666}
667int OFileViewFileSystem::fileCount()const{ 667int OFileViewFileSystem::fileCount()const{
668 if (!m_view ) 668 if (!m_view )
669 return -1; 669 return -1;
670 return m_view->fileCount(); 670 return m_view->fileCount();
671} 671}
672QWidget* OFileViewFileSystem::widget( QWidget* parent ) { 672QWidget* OFileViewFileSystem::widget( QWidget* parent ) {
673 if (!m_view ) { 673 if (!m_view ) {
674 m_view = new OFileViewFileListView( parent, startDirectory(), selector() ); 674 m_view = new OFileViewFileListView( parent, startDirectory(), selector() );
675 } 675 }
676 return m_view; 676 return m_view;
677} 677}
678void OFileViewFileSystem::activate( const QString& str) { 678void OFileViewFileSystem::activate( const QString& str) {
679 m_all = (str !=i18n("Files") ); 679 m_all = (str !=i18n("Files") );
680 680
681 681
682} 682}
683 683
684/* Selector */ 684/* Selector */
685OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, 685OFileSelector::OFileSelector( QWidget* parent, int mode, int sel,
686 const QString& dirName, const QString& fileName, 686 const QString& dirName, const QString& fileName,
687 const MimeTypes& mimetypes, 687 const MimeTypes& mimetypes,
688 bool showNew, bool showClose) 688 bool showNew, bool showClose)
689 : QWidget( parent, "OFileSelector" ) 689 : QWidget( parent, "OFileSelector" )
690{ 690{
691 m_current = 0; 691 m_current = 0;
692 m_shNew = showNew; 692 m_shNew = showNew;
693 m_shClose = showClose; 693 m_shClose = showClose;
694 m_mimeType = mimetypes; 694 m_mimeType = mimetypes;
695 m_startDir = dirName; 695 m_startDir = dirName;
696 m_mode = mode; 696 m_mode = mode;
697 m_selector = sel; 697 m_selector = sel;
698 698
699 initUI(); 699 initUI();
700 m_lneEdit->setText( fileName ); 700 m_lneEdit->setText( fileName );
701 initMime(); 701 initMime();
702 initViews(); 702 initViews();
703 703
704 QString str; 704 QString str;
705 switch ( m_selector ) { 705 switch ( m_selector ) {
706 default: 706 default:
707 case Normal: 707 case Normal:
708 str = i18n("Documents"); 708 str = i18n("Documents");
709 m_cmbView->setCurrentItem( 0 ); 709 m_cmbView->setCurrentItem( 0 );
710 break; 710 break;
711 case Extended: 711 case Extended:
712 str = i18n("Files"); 712 str = i18n("Files");
713 m_cmbView->setCurrentItem( 1 ); 713 m_cmbView->setCurrentItem( 1 );
714 break; 714 break;
715 case ExtendedAll: 715 case ExtendedAll:
716 str = i18n("All Files"); 716 str = i18n("All Files");
717 m_cmbView->setCurrentItem( 2 ); 717 m_cmbView->setCurrentItem( 2 );
718 break; 718 break;
719 } 719 }
720 slotViewChange( str ); 720 slotViewChange( str );
721 721
722} 722}
723OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, 723OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name,
724 bool showNew, bool showClose ) 724 bool showNew, bool showClose )
725 : QWidget( parent, name ) 725 : QWidget( parent, name )
726{ 726{
727 m_current = 0; 727 m_current = 0;
728 m_shNew = showNew; 728 m_shNew = showNew;
729 m_shClose = showClose; 729 m_shClose = showClose;
730 m_startDir = QPEApplication::documentDir(); 730 m_startDir = QPEApplication::documentDir();
731 731
732 if (!mimeFilter.isEmpty() ) 732 if (!mimeFilter.isEmpty() )
733 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); 733 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) );
734 734
735 m_mode = OFileSelector::FileSelector; 735 m_mode = OFileSelector::FileSelector;
736 m_selector = OFileSelector::Normal; 736 m_selector = OFileSelector::Normal;
737 737
738 initUI(); 738 initUI();
739 initMime(); 739 initMime();
740 initViews(); 740 initViews();
741 m_cmbView->setCurrentItem( 0 ); 741 m_cmbView->setCurrentItem( 0 );
742 slotViewChange( i18n("Documents") ); 742 slotViewChange( i18n("Documents") );
743} 743}
744/* 744/*
745 * INIT UI will set up the basic GUI 745 * INIT UI will set up the basic GUI
746 * Layout: Simple VBoxLayout 746 * Layout: Simple VBoxLayout
747 * On top a WidgetStack containing the Views... 747 * On top a WidgetStack containing the Views...
748 * - List View 748 * - List View
749 * - Document View 749 * - Document View
750 * Below we will have a Label + LineEdit 750 * Below we will have a Label + LineEdit
751 * Below we will have two ComoBoxes one for choosing the view one for 751 * Below we will have two ComoBoxes one for choosing the view one for
752 * choosing the mimetype 752 * choosing the mimetype
753 */ 753 */
754void OFileSelector::initUI() { 754void OFileSelector::initUI() {
755 QVBoxLayout* lay = new QVBoxLayout( this ); 755 QVBoxLayout* lay = new QVBoxLayout( this );
756 756
757 m_stack = new QWidgetStack( this ); 757 m_stack = new QWidgetStack( this );
758 lay->addWidget( m_stack, 1000 ); 758 lay->addWidget( m_stack, 1000 );
759 759
760 m_nameBox = new QHBox( this ); 760 m_nameBox = new QHBox( this );
761 (void)new QLabel( i18n("Name:"), m_nameBox ); 761 (void)new QLabel( i18n("Name:"), m_nameBox );
762 m_lneEdit = new QLineEdit( m_nameBox ); 762 m_lneEdit = new QLineEdit( m_nameBox );
763 m_lneEdit ->installEventFilter(this); 763 m_lneEdit ->installEventFilter(this);
764 lay->addWidget( m_nameBox ); 764 lay->addWidget( m_nameBox );
765 765
766 m_cmbBox = new QHBox( this ); 766 m_cmbBox = new QHBox( this );
767 m_cmbView = new QComboBox( m_cmbBox ); 767 m_cmbView = new QComboBox( m_cmbBox );
768 m_cmbMime = new QComboBox( m_cmbBox ); 768 m_cmbMime = new QComboBox( m_cmbBox );
769 lay->addWidget( m_cmbBox ); 769 lay->addWidget( m_cmbBox );
770} 770}
771 771
772/* 772/*
773 * This will make sure that the return key in the name edit causes dialogs to close 773 * This will make sure that the return key in the name edit causes dialogs to close
774 */ 774 */
775 775
776bool OFileSelector::eventFilter (QObject *o, QEvent *e) { 776bool OFileSelector::eventFilter (QObject *o, QEvent *e) {
777 if ( e->type() == QEvent::KeyPress ) { 777 if ( e->type() == QEvent::KeyPress ) {
778 QKeyEvent *k = (QKeyEvent *)e; 778 QKeyEvent *k = (QKeyEvent *)e;
779 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { 779 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) {
780 emit ok(); 780 emit ok();
781 return true; 781 return true;
782 } 782 }
783 } 783 }
784 return false; 784 return false;
785} 785}
786 786
787/* 787/*
788 * This will insert the MimeTypes into the Combo Box 788 * This will insert the MimeTypes into the Combo Box
789 * And also connect the changed signal 789 * And also connect the changed signal
790 * 790 *
791 * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes 791 * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes
792 */ 792 */
793void OFileSelector::initMime() { 793void OFileSelector::initMime() {
794 MimeTypes::Iterator it; 794 MimeTypes::Iterator it;
795 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) { 795 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) {
796 m_cmbMime->insertItem( it.key() ); 796 m_cmbMime->insertItem( it.key() );
797 } 797 }
798 m_cmbMime->setCurrentItem( 0 ); 798 m_cmbMime->setCurrentItem( 0 );
799 799
800 connect( m_cmbMime, SIGNAL(activated(int) ), 800 connect( m_cmbMime, SIGNAL(activated(int) ),
801 this, SLOT(slotMimeTypeChanged() ) ); 801 this, SLOT(slotMimeTypeChanged() ) );
802 802
803} 803}
804void OFileSelector::initViews() { 804void OFileSelector::initViews() {
805 m_cmbView->insertItem( i18n("Documents") ); 805 m_cmbView->insertItem( i18n("Documents") );
806 m_cmbView->insertItem( i18n("Files") ); 806 m_cmbView->insertItem( i18n("Files") );
807 m_cmbView->insertItem( i18n("All Files") ); 807 m_cmbView->insertItem( i18n("All Files") );
808 connect(m_cmbView, SIGNAL(activated( const QString& ) ), 808 connect(m_cmbView, SIGNAL(activated( const QString& ) ),
809 this, SLOT(slotViewChange( const QString& ) ) ); 809 this, SLOT(slotViewChange( const QString& ) ) );
810 810
811 811
812 m_views.insert( i18n("Documents"), new ODocumentFileView(this) ); 812 m_views.insert( i18n("Documents"), new ODocumentFileView(this) );
813 813
814 /* see above why add both */ 814 /* see above why add both */
815 OFileViewInterface* in = new OFileViewFileSystem( this ); 815 OFileViewInterface* in = new OFileViewFileSystem( this );
816 m_views.insert( i18n("Files"), in ); 816 m_views.insert( i18n("Files"), in );
817 m_views.insert( i18n("All Files"), in ); 817 m_views.insert( i18n("All Files"), in );
818} 818}
819OFileSelector::~OFileSelector() { 819OFileSelector::~OFileSelector() {
820 820
821} 821}
822 822
823const DocLnk* OFileSelector::selected() { 823const DocLnk* OFileSelector::selected() {
824 DocLnk* lnk = &currentView()->selectedDocument() ; 824 DocLnk* lnk = &currentView()->selectedDocument() ;
825 return lnk; 825 return lnk;
826} 826}
827 827
828QString OFileSelector::selectedName()const{ 828QString OFileSelector::selectedName()const{
829 return currentView()->selectedName(); 829 return currentView()->selectedName();
830} 830}
831QString OFileSelector::selectedPath()const { 831QString OFileSelector::selectedPath()const {
832 return currentView()->selectedPath(); 832 return currentView()->selectedPath();
833} 833}
834QString OFileSelector::directory()const { 834QString OFileSelector::directory()const {
835 return currentView()->directory(); 835 return currentView()->directory();
836} 836}
837 837
838DocLnk OFileSelector::selectedDocument()const { 838DocLnk OFileSelector::selectedDocument()const {
839 return currentView()->selectedDocument(); 839 return currentView()->selectedDocument();
840} 840}
841 841
842int OFileSelector::fileCount()const { 842int OFileSelector::fileCount()const {
843 return currentView()->fileCount(); 843 return currentView()->fileCount();
844} 844}
845void OFileSelector::reread() { 845void OFileSelector::reread() {
846 return currentView()->reread(); 846 return currentView()->reread();
847} 847}
848OFileViewInterface* OFileSelector::currentView()const{ 848OFileViewInterface* OFileSelector::currentView()const{
849 return m_current; 849 return m_current;
850} 850}
851bool OFileSelector::showNew()const { 851bool OFileSelector::showNew()const {
852 return m_shNew; 852 return m_shNew;
853} 853}
854bool OFileSelector::showClose()const { 854bool OFileSelector::showClose()const {
855 return m_shClose; 855 return m_shClose;
856} 856}
857MimeTypes OFileSelector::mimeTypes()const { 857MimeTypes OFileSelector::mimeTypes()const {
858 return m_mimeType; 858 return m_mimeType;
859} 859}
860int OFileSelector::mode()const{ 860int OFileSelector::mode()const{
861 return m_mode; 861 return m_mode;
862} 862}
863int OFileSelector::selector()const{ 863int OFileSelector::selector()const{
864 return m_selector; 864 return m_selector;
865} 865}
866QStringList OFileSelector::currentMimeType()const { 866QStringList OFileSelector::currentMimeType()const {
867 return m_mimeType[m_cmbMime->currentText()]; 867 return m_mimeType[m_cmbMime->currentText()];
868} 868}
869void OFileSelector::slotMimeTypeChanged() { 869void OFileSelector::slotMimeTypeChanged() {
870 reread(); 870 reread();
871} 871}
872void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) { 872void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) {
873 m_lneEdit->setText( lnk.name() ); 873 m_lneEdit->setText( lnk.name() );
874 emit fileSelected( lnk ); 874 emit fileSelected( lnk );
875 emit fileSelected( lnk.name() ); 875 emit fileSelected( lnk.name() );
876} 876}
877void OFileSelector::slotFileBridge( const QString& str) { 877void OFileSelector::slotFileBridge( const QString& str) {
878 DocLnk lnk( str ); 878 DocLnk lnk( str );
879 emit fileSelected( lnk ); 879 emit fileSelected( lnk );
880} 880}
881void OFileSelector::slotViewChange( const QString& view ) { 881void OFileSelector::slotViewChange( const QString& view ) {
882 OFileViewInterface* interface = m_views[view]; 882 OFileViewInterface* interface = m_views[view];
883 if (!interface) 883 if (!interface)