summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp80
-rw-r--r--korganizer/calendarview.h4
-rw-r--r--korganizer/mainwindow.cpp71
3 files changed, 126 insertions, 29 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index bc1c0c7..9a114d0 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -465,384 +465,450 @@ void CalendarView::init()
465 //leftFrameLayout->addWidget( mDateNavigator ); 465 //leftFrameLayout->addWidget( mDateNavigator );
466 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 466 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
467 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 467 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
468 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 468 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
469 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 469 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
470 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 470 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
471 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) ); 471 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) );
472 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 472 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
474 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 474 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
475 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 475 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
476 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 476 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
477 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() )); 477 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
478 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 478 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
479 479
480 mTodoList->setNavigator( mNavigator ); 480 mTodoList->setNavigator( mNavigator );
481#if 0 481#if 0
482 if ( QApplication::desktop()->width() < 480 ) { 482 if ( QApplication::desktop()->width() < 480 ) {
483 leftFrameLayout->addWidget(mFilterView); 483 leftFrameLayout->addWidget(mFilterView);
484 leftFrameLayout->addWidget(mTodoList, 2 ); 484 leftFrameLayout->addWidget(mTodoList, 2 );
485 485
486 } else { 486 } else {
487 leftFrameLayout->addWidget(mTodoList,2 ); 487 leftFrameLayout->addWidget(mTodoList,2 );
488 leftFrameLayout->addWidget(mFilterView ); 488 leftFrameLayout->addWidget(mFilterView );
489 } 489 }
490#endif 490#endif
491 mFilterView->hide(); 491 mFilterView->hide();
492 mCalEditView->hide(); 492 mCalEditView->hide();
493 QWidget *rightBox = new QWidget( mMainFrame ); 493 QWidget *rightBox = new QWidget( mMainFrame );
494 //mainBoxLayout->addWidget ( rightBox, 10 ); 494 //mainBoxLayout->addWidget ( rightBox, 10 );
495 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 495 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
496 mRightFrame = new QWidgetStack( rightBox ); 496 mRightFrame = new QWidgetStack( rightBox );
497 rightLayout->addWidget( mRightFrame, 10 ); 497 rightLayout->addWidget( mRightFrame, 10 );
498 498
499 //mLeftFrame = (QWidget *)leftFrame; 499 //mLeftFrame = (QWidget *)leftFrame;
500 if ( KOPrefs::instance()->mVerticalScreen ) { 500 if ( KOPrefs::instance()->mVerticalScreen ) {
501 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 501 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
502 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 502 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
503 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 503 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
504 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 504 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
505 } else { 505 } else {
506 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 506 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
507 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 507 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
508 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 508 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
509 } 509 }
510 if ( !KOPrefs::instance()->mShowDateNavigator) 510 if ( !KOPrefs::instance()->mShowDateNavigator)
511 mDateNavigator->hide(); 511 mDateNavigator->hide();
512 //qDebug("Calendarview Size %d %d ", width(), height()); 512 //qDebug("Calendarview Size %d %d ", width(), height());
513#endif 513#endif
514 514
515 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 515 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
516 SLOT( showDates( const KCal::DateList & ) ) ); 516 SLOT( showDates( const KCal::DateList & ) ) );
517 517
518 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 518 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
519 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 519 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
520 520
521 521
522 522
523 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 523 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
524 mViewManager, SLOT( showMonth( const QDate & ) ) ); 524 mViewManager, SLOT( showMonth( const QDate & ) ) );
525 525
526 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 526 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
527 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 527 mNavigator, SLOT( selectWeek( const QDate & ) ) );
528 528
529 connect( mDateNavigator, SIGNAL( goPrevYear() ), 529 connect( mDateNavigator, SIGNAL( goPrevYear() ),
530 mNavigator, SLOT( selectPreviousYear() ) ); 530 mNavigator, SLOT( selectPreviousYear() ) );
531 connect( mDateNavigator, SIGNAL( goNextYear() ), 531 connect( mDateNavigator, SIGNAL( goNextYear() ),
532 mNavigator, SLOT( selectNextYear() ) ); 532 mNavigator, SLOT( selectNextYear() ) );
533 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 533 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
534 mNavigator, SLOT( selectPreviousMonth() ) ); 534 mNavigator, SLOT( selectPreviousMonth() ) );
535 connect( mDateNavigator, SIGNAL( goNextMonth() ), 535 connect( mDateNavigator, SIGNAL( goNextMonth() ),
536 mNavigator, SLOT( selectNextMonth() ) ); 536 mNavigator, SLOT( selectNextMonth() ) );
537 537
538 connect( mDateNavigator, SIGNAL( goPrevious() ), 538 connect( mDateNavigator, SIGNAL( goPrevious() ),
539 mNavigator, SLOT( selectPrevious() ) ); 539 mNavigator, SLOT( selectPrevious() ) );
540 connect( mDateNavigator, SIGNAL( goNext() ), 540 connect( mDateNavigator, SIGNAL( goNext() ),
541 mNavigator, SLOT( selectNext() ) ); 541 mNavigator, SLOT( selectNext() ) );
542 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 542 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
543 mNavigator, SLOT( slotMonthSelect( int ) ) ); 543 mNavigator, SLOT( slotMonthSelect( int ) ) );
544 544
545 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 545 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
546 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 546 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
547#if 0 547#if 0
548 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 548 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
549 SLOT( incidenceAdded( Incidence *) ) ); 549 SLOT( incidenceAdded( Incidence *) ) );
550#endif 550#endif
551 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 551 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
552 552
553 connect( this, SIGNAL( configChanged() ), 553 connect( this, SIGNAL( configChanged() ),
554 mDateNavigator, SLOT( updateConfig() ) ); 554 mDateNavigator, SLOT( updateConfig() ) );
555 555
556 connect( mTodoList, SIGNAL( newTodoSignal() ), 556 connect( mTodoList, SIGNAL( newTodoSignal() ),
557 SLOT( newTodo() ) ); 557 SLOT( newTodo() ) );
558 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 558 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
559 SLOT( newSubTodo( Todo * ) ) ); 559 SLOT( newSubTodo( Todo * ) ) );
560 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 560 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
561 SLOT( editTodo( Todo * ) ) ); 561 SLOT( editTodo( Todo * ) ) );
562 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 562 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
563 SLOT( showTodo( Todo *) ) ); 563 SLOT( showTodo( Todo *) ) );
564 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 564 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
565 SLOT( deleteTodo( Todo *) ) ); 565 SLOT( deleteTodo( Todo *) ) );
566 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 566 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
567 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 567 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
568 SLOT( purgeCompleted() ) ); 568 SLOT( purgeCompleted() ) );
569 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 569 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
570 SIGNAL( todoModified( Todo *, int ) ) ); 570 SIGNAL( todoModified( Todo *, int ) ) );
571 571
572 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 572 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
573 this, SLOT ( cloneIncidence( Incidence * ) ) ); 573 this, SLOT ( cloneIncidence( Incidence * ) ) );
574 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 574 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
575 this, SLOT (cancelIncidence( Incidence * ) ) ); 575 this, SLOT (cancelIncidence( Incidence * ) ) );
576 576
577 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 577 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
578 this, SLOT ( moveIncidence( Incidence * ) ) ); 578 this, SLOT ( moveIncidence( Incidence * ) ) );
579 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 579 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
580 this, SLOT ( beamIncidence( Incidence * ) ) ); 580 this, SLOT ( beamIncidence( Incidence * ) ) );
581 581
582 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 582 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
583 this, SLOT ( todo_unsub( Todo * ) ) ); 583 this, SLOT ( todo_unsub( Todo * ) ) );
584 584
585 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 585 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
586 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 586 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
587 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 587 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
588 SLOT( updateTodo( Todo *, int ) ) ); 588 SLOT( updateTodo( Todo *, int ) ) );
589 connect( this, SIGNAL( todoModified( Todo *, int )), this, 589 connect( this, SIGNAL( todoModified( Todo *, int )), this,
590 SLOT( changeTodoDisplay( Todo *, int ) ) ); 590 SLOT( changeTodoDisplay( Todo *, int ) ) );
591 591
592 592
593 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 593 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
594 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 594 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
595 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 595 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
596 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 596 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
597 597
598 598
599 599
600 600
601 601
602 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 602 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
603 SLOT(checkClipboard())); 603 SLOT(checkClipboard()));
604 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 604 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
605 SLOT( processTodoListSelection( Incidence * ) ) ); 605 SLOT( processTodoListSelection( Incidence * ) ) );
606 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 606 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
607 607
608 // kdDebug() << "CalendarView::CalendarView() done" << endl; 608 // kdDebug() << "CalendarView::CalendarView() done" << endl;
609 609
610 mDateFrame = new QVBox(0,0,WType_Popup); 610 mDateFrame = new QVBox(0,0,WType_Popup);
611 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 611 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
612 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 612 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
613 mDateFrame->setLineWidth(3); 613 mDateFrame->setLineWidth(3);
614 mDateFrame->hide(); 614 mDateFrame->hide();
615 mDateFrame->setCaption( i18n( "Pick a date to display")); 615 mDateFrame->setCaption( i18n( "Pick a date to display"));
616 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 616 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
617 617
618 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 618 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
619 619
620 mEventEditor = mDialogManager->getEventEditor(); 620 mEventEditor = mDialogManager->getEventEditor();
621 mTodoEditor = mDialogManager->getTodoEditor(); 621 mTodoEditor = mDialogManager->getTodoEditor();
622 622
623 mFlagEditDescription = false; 623 mFlagEditDescription = false;
624 624
625 mSuspendTimer = new QTimer( this ); 625 mSuspendTimer = new QTimer( this );
626 mAlarmTimer = new QTimer( this ); 626 mAlarmTimer = new QTimer( this );
627 mRecheckAlarmTimer = new QTimer( this ); 627 mRecheckAlarmTimer = new QTimer( this );
628 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 628 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
629 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 629 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
630 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 630 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
631 mAlarmDialog = new AlarmDialog( this ); 631 mAlarmDialog = new AlarmDialog( this );
632 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 632 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
633 mAlarmDialog->setServerNotification( false ); 633 mAlarmDialog->setServerNotification( false );
634 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 634 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
635 635
636 636
637#ifndef DESKTOP_VERSION 637#ifndef DESKTOP_VERSION
638//US listen for arriving address resultsets 638//US listen for arriving address resultsets
639 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 639 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
640 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 640 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
641#endif 641#endif
642 mDateNavigator->setCalendar( mCalendar ); 642 mDateNavigator->setCalendar( mCalendar );
643} 643}
644 644
645 645
646CalendarView::~CalendarView() 646CalendarView::~CalendarView()
647{ 647{
648 // kdDebug() << "~CalendarView()" << endl; 648 // kdDebug() << "~CalendarView()" << endl;
649 //qDebug("CalendarView::~CalendarView() "); 649 //qDebug("CalendarView::~CalendarView() ");
650 delete mDialogManager; 650 delete mDialogManager;
651 delete mViewManager; 651 delete mViewManager;
652 delete mStorage; 652 delete mStorage;
653 delete mDateFrame ; 653 delete mDateFrame ;
654 delete mEventViewerDialog; 654 delete mEventViewerDialog;
655 //kdDebug() << "~CalendarView() done" << endl; 655 //kdDebug() << "~CalendarView() done" << endl;
656} 656}
657void CalendarView::nextConflict( bool all, bool allday )
658{
659 QDate start = mNavigator->selectedDates().first().addDays(1);
660 QDate end = start.addDays( 365*2);
661 while ( start < end ) {
662 QPtrList<Event> eventList = calendar()->events( start );
663 Event * ev = eventList.first();
664 QPtrList<Event> test = eventList;
665 while ( ev ) {
666 //qDebug("found %d on %s ", eventList.count(), start.toString().latin1());
667 Event * t_ev = test.first();
668 QDateTime es = ev->dtStart();
669 QDateTime ee = ev->dtEnd();
670 if ( ev->doesFloat() )
671 ee = ee.addDays( 1 );
672 if ( ! all ) {
673 if ( ev->doesFloat() != allday )
674 t_ev = 0;
675 }
676 while ( t_ev ) {
677 bool skip = false;
678 if ( ! all ) {
679 if ( t_ev->doesFloat() != allday )
680 skip = true;
681 }
682 if ( !skip && ev != t_ev ) {
683 QDateTime ets = t_ev->dtStart();
684 QDateTime ete = t_ev->dtEnd();
685 if ( t_ev->doesFloat() )
686 ete = ete.addDays( 1 );
687 //qDebug("test %s -- %s -------- %s -- %s ", es.toString().latin1() , ee.toString().latin1(), ets.toString().latin1() , ete.toString().latin1() );
688 if ( es < ete && ets < ee ) {
689 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
690 mViewManager->showDayView();
691 mNavigator->slotDaySelect( start );
692 int hour = es.time().hour();
693 if ( ets > es )
694 hour = ets.time().hour();
695 mViewManager->agendaView()->setStartHour( hour );
696 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( ev->summary().left( 20 ) ).arg( t_ev->summary().left( 20 ) ) );
697 return;
698 }
699 }
700 t_ev = test.next();
701 }
702 ev = eventList.next();
703 }
704 start = start.addDays( 1 );
705 }
706 topLevelWidget()->setCaption( i18n("No conflict found within the next two years") );
707 qDebug("No conflict found ");
708}
709
710void CalendarView::conflictAll()
711{
712 nextConflict ( true, true );
713}
714void CalendarView::conflictAllday()
715{
716 nextConflict ( false, true );
717}
718void CalendarView::conflictNotAll()
719{
720 nextConflict ( false, false );
721}
722
657void CalendarView::setCalReadOnly( int id, bool readO ) 723void CalendarView::setCalReadOnly( int id, bool readO )
658{ 724{
659 if ( readO ) { 725 if ( readO ) {
660 emit save(); 726 emit save();
661 } 727 }
662 mCalendar->setReadOnly( id, readO ); 728 mCalendar->setReadOnly( id, readO );
663} 729}
664void CalendarView::setScrollBarStep(int val ) 730void CalendarView::setScrollBarStep(int val )
665{ 731{
666#ifdef DESKTOP_VERSION 732#ifdef DESKTOP_VERSION
667 mDateScrollBar->setLineStep ( val ); 733 mDateScrollBar->setLineStep ( val );
668#endif 734#endif
669} 735}
670void CalendarView::scrollBarValue(int val ) 736void CalendarView::scrollBarValue(int val )
671{ 737{
672#ifdef DESKTOP_VERSION 738#ifdef DESKTOP_VERSION
673 if ( QApplication::desktop()->width() < 800 ) return; 739 if ( QApplication::desktop()->width() < 800 ) return;
674 static bool block = false; 740 static bool block = false;
675 if ( block ) return; 741 if ( block ) return;
676 block = true; 742 block = true;
677 int count = mNavigator->selectedDates().count(); 743 int count = mNavigator->selectedDates().count();
678 int day = mNavigator->selectedDates().first().dayOfYear(); 744 int day = mNavigator->selectedDates().first().dayOfYear();
679 int stepdays = val; 745 int stepdays = val;
680 if ( mDateScrollBar->lineStep () <= count ) { 746 if ( mDateScrollBar->lineStep () <= count ) {
681 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 747 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
682 //qDebug("VAL %d ",val ); 748 //qDebug("VAL %d ",val );
683 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 749 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
684 stepdays = day+stepdays; 750 stepdays = day+stepdays;
685 if ( stepdays < 0 ) stepdays = 0; 751 if ( stepdays < 0 ) stepdays = 0;
686 } 752 }
687 if ( stepdays == day ) { 753 if ( stepdays == day ) {
688 block = false; 754 block = false;
689 return; 755 return;
690 } 756 }
691 int year = mNavigator->selectedDates().first().year(); 757 int year = mNavigator->selectedDates().first().year();
692 QDate d ( year,1,1 ); 758 QDate d ( year,1,1 );
693 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 759 mNavigator->selectDates( d.addDays( stepdays-1) , count );
694 block = false; 760 block = false;
695#endif 761#endif
696 762
697} 763}
698void CalendarView::updateView(const QDate &start, const QDate &end) 764void CalendarView::updateView(const QDate &start, const QDate &end)
699{ 765{
700#ifdef DESKTOP_VERSION 766#ifdef DESKTOP_VERSION
701 if ( ! mDateScrollBar->draggingSlider () ) { 767 if ( ! mDateScrollBar->draggingSlider () ) {
702 int dof = start.dayOfYear(); 768 int dof = start.dayOfYear();
703 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 769 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
704 if ( dof != mDateScrollBar->value() ) { 770 if ( dof != mDateScrollBar->value() ) {
705 mDateScrollBar->blockSignals( true ); 771 mDateScrollBar->blockSignals( true );
706 mDateScrollBar->setValue( start.dayOfYear()); 772 mDateScrollBar->setValue( start.dayOfYear());
707 mDateScrollBar->blockSignals( false ); 773 mDateScrollBar->blockSignals( false );
708 } 774 }
709 } 775 }
710#endif 776#endif
711 mTodoList->updateView(); 777 mTodoList->updateView();
712 mViewManager->updateView(start, end); 778 mViewManager->updateView(start, end);
713 //mDateNavigator->updateView(); 779 //mDateNavigator->updateView();
714} 780}
715 781
716 782
717 783
718void CalendarView::checkFiles() 784void CalendarView::checkFiles()
719{ 785{
720 QString message; 786 QString message;
721 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 787 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
722 KopiCalendarFile * cal = calendars.first(); 788 KopiCalendarFile * cal = calendars.first();
723 while ( cal ) { 789 while ( cal ) {
724 if ( cal->mErrorOnLoad ) { 790 if ( cal->mErrorOnLoad ) {
725 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 791 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
726 } 792 }
727 cal = calendars.next(); 793 cal = calendars.next();
728 } 794 }
729 if ( !message.isEmpty() ) { 795 if ( !message.isEmpty() ) {
730 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 796 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
731 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); 797 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed"));
732 } 798 }
733 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 799 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
734} 800}
735void CalendarView::checkAlarms() 801void CalendarView::checkAlarms()
736{ 802{
737 803
738 804
739 KConfig *config = KOGlobals::config(); 805 KConfig *config = KOGlobals::config();
740 config->setGroup( "AppRun" ); 806 config->setGroup( "AppRun" );
741 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 807 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
742 int daysto = dt.daysTo( QDate::currentDate() ); 808 int daysto = dt.daysTo( QDate::currentDate() );
743 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 809 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
744 dt = dt.addDays( days ); 810 dt = dt.addDays( days );
745 int secto = dt.secsTo( QDateTime::currentDateTime() ); 811 int secto = dt.secsTo( QDateTime::currentDateTime() );
746 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 812 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
747 //qDebug("KO: Reading program stop %d ", secs); 813 //qDebug("KO: Reading program stop %d ", secs);
748 //secs -= ( 3600 * 24*3 ); // debug only 814 //secs -= ( 3600 * 24*3 ); // debug only
749 QDateTime latest = dt.addSecs ( secs ); 815 QDateTime latest = dt.addSecs ( secs );
750 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 816 qDebug("KO: Last termination on %s ", latest.toString().latin1());
751 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 817 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
752 QPtrList<Incidence> el = mCalendar->rawIncidences(); 818 QPtrList<Incidence> el = mCalendar->rawIncidences();
753 QPtrList<Incidence> al; 819 QPtrList<Incidence> al;
754 Incidence* inL = el.first(); 820 Incidence* inL = el.first();
755 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 821 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
756 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 822 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
757 while ( inL ) { 823 while ( inL ) {
758 bool ok = false; 824 bool ok = false;
759 int offset = 0; 825 int offset = 0;
760 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 826 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
761 if ( ok ) { 827 if ( ok ) {
762 //qDebug("OK %s",next.toString().latin1()); 828 //qDebug("OK %s",next.toString().latin1());
763 if ( next < cur ) { 829 if ( next < cur ) {
764 al.append( inL ); 830 al.append( inL );
765 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 831 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
766 } 832 }
767 } 833 }
768 inL = el.next(); 834 inL = el.next();
769 } 835 }
770 if ( al.count() ) { 836 if ( al.count() ) {
771 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 837 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
772 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 838 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
773 QVBoxLayout* lay = new QVBoxLayout( dia ); 839 QVBoxLayout* lay = new QVBoxLayout( dia );
774 lay->setSpacing( 0 ); 840 lay->setSpacing( 0 );
775 lay->setMargin( 0 ); 841 lay->setMargin( 0 );
776 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 842 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
777 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 843 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
778 lay->addWidget( matb ); 844 lay->addWidget( matb );
779 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 845 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
780 int wid = 210; 846 int wid = 210;
781 int x = QApplication::desktop()->width() - wid - 7; 847 int x = QApplication::desktop()->width() - wid - 7;
782 int y = QApplication::desktop()->height() - wid - 70; 848 int y = QApplication::desktop()->height() - wid - 70;
783 dia->setGeometry ( x,y,wid,wid); 849 dia->setGeometry ( x,y,wid,wid);
784 } else { 850 } else {
785 int si = 220; 851 int si = 220;
786 if ( QApplication::desktop()->width() > 470 ) 852 if ( QApplication::desktop()->width() > 470 )
787 si = 400; 853 si = 400;
788 dia->resize(si,si/2); 854 dia->resize(si,si/2);
789 } 855 }
790 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 856 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
791 dia->show(); 857 dia->show();
792 858
793 } 859 }
794} 860}
795void CalendarView::showDay( QDate d ) 861void CalendarView::showDay( QDate d )
796{ 862{
797 dateNavigator()->blockSignals( true ); 863 dateNavigator()->blockSignals( true );
798 dateNavigator()->selectDate( d ); 864 dateNavigator()->selectDate( d );
799 dateNavigator()->blockSignals( false ); 865 dateNavigator()->blockSignals( false );
800 mViewManager->showDayView(); 866 mViewManager->showDayView();
801 //dateNavigator()->selectDate( d ); 867 //dateNavigator()->selectDate( d );
802} 868}
803void CalendarView::timerAlarm() 869void CalendarView::timerAlarm()
804{ 870{
805 //qDebug("CalendarView::timerAlarm() "); 871 //qDebug("CalendarView::timerAlarm() ");
806 computeAlarm(mAlarmNotification ); 872 computeAlarm(mAlarmNotification );
807} 873}
808 874
809void CalendarView::suspendAlarm() 875void CalendarView::suspendAlarm()
810{ 876{
811 //qDebug(" CalendarView::suspendAlarm() "); 877 //qDebug(" CalendarView::suspendAlarm() ");
812 computeAlarm(mSuspendAlarmNotification ); 878 computeAlarm(mSuspendAlarmNotification );
813 879
814} 880}
815 881
816void CalendarView::startAlarm( QString mess , QString filename) 882void CalendarView::startAlarm( QString mess , QString filename)
817{ 883{
818 884
819 topLevelWidget()->showNormal(); 885 topLevelWidget()->showNormal();
820 topLevelWidget()->setActiveWindow(); 886 topLevelWidget()->setActiveWindow();
821 topLevelWidget()->raise(); 887 topLevelWidget()->raise();
822 888
823 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 889 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
824 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 890 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
825 891
826} 892}
827 893
828void CalendarView::checkNextTimerAlarm() 894void CalendarView::checkNextTimerAlarm()
829{ 895{
830 mCalendar->checkAlarmForIncidence( 0, true ); 896 mCalendar->checkAlarmForIncidence( 0, true );
831} 897}
832 898
833void CalendarView::computeAlarm( QString msg ) 899void CalendarView::computeAlarm( QString msg )
834{ 900{
835 901
836 QString mess = msg; 902 QString mess = msg;
837 QString mAlarmMessage = mess.mid( 9 ); 903 QString mAlarmMessage = mess.mid( 9 );
838 QString filename = MainWindow::resourcePath(); 904 QString filename = MainWindow::resourcePath();
839 filename += "koalarm.wav"; 905 filename += "koalarm.wav";
840 QString tempfilename; 906 QString tempfilename;
841 if ( mess.left( 13 ) == "suspend_alarm") { 907 if ( mess.left( 13 ) == "suspend_alarm") {
842 bool error = false; 908 bool error = false;
843 int len = mess.mid( 13 ).find("+++"); 909 int len = mess.mid( 13 ).find("+++");
844 if ( len < 2 ) 910 if ( len < 2 )
845 error = true; 911 error = true;
846 else { 912 else {
847 tempfilename = mess.mid( 13, len ); 913 tempfilename = mess.mid( 13, len );
848 if ( !QFile::exists( tempfilename ) ) 914 if ( !QFile::exists( tempfilename ) )
@@ -2973,844 +3039,844 @@ void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2973 else { 3039 else {
2974 description.sprintf(i18n(" %d items?"),delSel.count() ); 3040 description.sprintf(i18n(" %d items?"),delSel.count() );
2975 } 3041 }
2976 while ( incidence ) { 3042 while ( incidence ) {
2977 Incidence *in = incidence->clone(); 3043 Incidence *in = incidence->clone();
2978 if ( ! in->summary().isEmpty() ) { 3044 if ( ! in->summary().isEmpty() ) {
2979 in->setDescription(""); 3045 in->setDescription("");
2980 } else { 3046 } else {
2981 in->setSummary( in->description().left(20)); 3047 in->setSummary( in->description().left(20));
2982 in->setDescription(""); 3048 in->setDescription("");
2983 } 3049 }
2984 if ( addText ) 3050 if ( addText )
2985 description += in->summary() + "\n"; 3051 description += in->summary() + "\n";
2986 cal->addIncidence( in ); 3052 cal->addIncidence( in );
2987 incidence = delSel.next(); 3053 incidence = delSel.next();
2988 } 3054 }
2989 if ( beamDialog.beamVcal() ) { 3055 if ( beamDialog.beamVcal() ) {
2990 fn += ".vcs"; 3056 fn += ".vcs";
2991 FileStorage storage( cal, fn, new VCalFormat ); 3057 FileStorage storage( cal, fn, new VCalFormat );
2992 storage.save(); 3058 storage.save();
2993 } else { 3059 } else {
2994 fn += ".ics"; 3060 fn += ".ics";
2995 FileStorage storage( cal, fn, new ICalFormat( ) ); 3061 FileStorage storage( cal, fn, new ICalFormat( ) );
2996 storage.save(); 3062 storage.save();
2997 } 3063 }
2998 delete cal; 3064 delete cal;
2999 mes = i18n("KO/Pi: Ready for beaming"); 3065 mes = i18n("KO/Pi: Ready for beaming");
3000 topLevelWidget()->setCaption(mes); 3066 topLevelWidget()->setCaption(mes);
3001 KApplication::convert2latin1( fn ); 3067 KApplication::convert2latin1( fn );
3002#ifndef DESKTOP_VERSION 3068#ifndef DESKTOP_VERSION
3003 Ir *ir = new Ir( this ); 3069 Ir *ir = new Ir( this );
3004 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 3070 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
3005 ir->send( fn, description, "text/x-vCalendar" ); 3071 ir->send( fn, description, "text/x-vCalendar" );
3006#endif 3072#endif
3007 } 3073 }
3008} 3074}
3009 3075
3010#ifndef DESKTOP_VERSION 3076#ifndef DESKTOP_VERSION
3011void CalendarView::beamDone( Ir *ir ) 3077void CalendarView::beamDone( Ir *ir )
3012{ 3078{
3013 delete ir; 3079 delete ir;
3014 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 3080 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
3015 topLevelWidget()->raise(); 3081 topLevelWidget()->raise();
3016} 3082}
3017#else 3083#else
3018void CalendarView::beamDone( Ir *){;} 3084void CalendarView::beamDone( Ir *){;}
3019#endif 3085#endif
3020void CalendarView::moveIncidence(Incidence * inc ) 3086void CalendarView::moveIncidence(Incidence * inc )
3021{ 3087{
3022 if ( !inc ) return; 3088 if ( !inc ) return;
3023 showDatePickerPopup(); 3089 showDatePickerPopup();
3024 mDatePickerMode = 2; 3090 mDatePickerMode = 2;
3025 mMoveIncidence = inc ; 3091 mMoveIncidence = inc ;
3026 QDate da; 3092 QDate da;
3027 if ( mMoveIncidence->typeID() == todoID ) { 3093 if ( mMoveIncidence->typeID() == todoID ) {
3028 Todo * to = (Todo *) mMoveIncidence; 3094 Todo * to = (Todo *) mMoveIncidence;
3029 if ( to->hasDueDate() ) 3095 if ( to->hasDueDate() )
3030 da = to->dtDue().date(); 3096 da = to->dtDue().date();
3031 else 3097 else
3032 da = QDate::currentDate(); 3098 da = QDate::currentDate();
3033 } else { 3099 } else {
3034 da = mMoveIncidence->dtStart().date(); 3100 da = mMoveIncidence->dtStart().date();
3035 } 3101 }
3036 //PENDING set date for recurring incidence to date of recurrence 3102 //PENDING set date for recurring incidence to date of recurrence
3037 //mMoveIncidenceOldDate; 3103 //mMoveIncidenceOldDate;
3038 mDatePicker->setDate( da ); 3104 mDatePicker->setDate( da );
3039} 3105}
3040void CalendarView::showDatePickerPopup() 3106void CalendarView::showDatePickerPopup()
3041{ 3107{
3042 if ( mDateFrame->isVisible() ) 3108 if ( mDateFrame->isVisible() )
3043 mDateFrame->hide(); 3109 mDateFrame->hide();
3044 else { 3110 else {
3045 int offX = 0, offY = 0; 3111 int offX = 0, offY = 0;
3046#ifdef DESKTOP_VERSION 3112#ifdef DESKTOP_VERSION
3047 int w =mDatePicker->sizeHint().width() ; 3113 int w =mDatePicker->sizeHint().width() ;
3048 int h = mDatePicker->sizeHint().height() ; 3114 int h = mDatePicker->sizeHint().height() ;
3049 int dw = topLevelWidget()->width(); 3115 int dw = topLevelWidget()->width();
3050 int dh = topLevelWidget()->height(); 3116 int dh = topLevelWidget()->height();
3051 offX = topLevelWidget()->x(); 3117 offX = topLevelWidget()->x();
3052 offY = topLevelWidget()->y(); 3118 offY = topLevelWidget()->y();
3053#else 3119#else
3054 int w =mDatePicker->sizeHint().width() ; 3120 int w =mDatePicker->sizeHint().width() ;
3055 int h = mDatePicker->sizeHint().height() ; 3121 int h = mDatePicker->sizeHint().height() ;
3056 int dw = QApplication::desktop()->width(); 3122 int dw = QApplication::desktop()->width();
3057 int dh = QApplication::desktop()->height(); 3123 int dh = QApplication::desktop()->height();
3058#endif 3124#endif
3059 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 3125 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
3060 mDateFrame->show(); 3126 mDateFrame->show();
3061 } 3127 }
3062} 3128}
3063void CalendarView::showDatePicker( ) 3129void CalendarView::showDatePicker( )
3064{ 3130{
3065 showDatePickerPopup(); 3131 showDatePickerPopup();
3066 mDatePickerMode = 1; 3132 mDatePickerMode = 1;
3067 mDatePicker->setDate( mNavigator->selectedDates().first() ); 3133 mDatePicker->setDate( mNavigator->selectedDates().first() );
3068} 3134}
3069 3135
3070void CalendarView::showEventEditor() 3136void CalendarView::showEventEditor()
3071{ 3137{
3072#ifdef DESKTOP_VERSION 3138#ifdef DESKTOP_VERSION
3073 int x,y,w,h; 3139 int x,y,w,h;
3074 x = mEventEditor->geometry().x(); 3140 x = mEventEditor->geometry().x();
3075 y = mEventEditor->geometry().y(); 3141 y = mEventEditor->geometry().y();
3076 w = mEventEditor->width(); 3142 w = mEventEditor->width();
3077 h = mEventEditor->height(); 3143 h = mEventEditor->height();
3078 mEventEditor->show(); 3144 mEventEditor->show();
3079 mEventEditor->setGeometry(x,y,w,h); 3145 mEventEditor->setGeometry(x,y,w,h);
3080#else 3146#else
3081 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 3147 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
3082 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3148 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3083 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 3149 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
3084 qApp->processEvents(); 3150 qApp->processEvents();
3085 delete mEventEditor; 3151 delete mEventEditor;
3086 mEventEditor = mDialogManager->getEventEditor(); 3152 mEventEditor = mDialogManager->getEventEditor();
3087 topLevelWidget()->setCaption( i18n("") ); 3153 topLevelWidget()->setCaption( i18n("") );
3088 } 3154 }
3089 mEventEditor->showMaximized(); 3155 mEventEditor->showMaximized();
3090#endif 3156#endif
3091} 3157}
3092void CalendarView::showTodoEditor() 3158void CalendarView::showTodoEditor()
3093{ 3159{
3094#ifdef DESKTOP_VERSION 3160#ifdef DESKTOP_VERSION
3095 int x,y,w,h; 3161 int x,y,w,h;
3096 x = mTodoEditor->geometry().x(); 3162 x = mTodoEditor->geometry().x();
3097 y = mTodoEditor->geometry().y(); 3163 y = mTodoEditor->geometry().y();
3098 w = mTodoEditor->width(); 3164 w = mTodoEditor->width();
3099 h = mTodoEditor->height(); 3165 h = mTodoEditor->height();
3100 mTodoEditor->show(); 3166 mTodoEditor->show();
3101 mTodoEditor->setGeometry(x,y,w,h); 3167 mTodoEditor->setGeometry(x,y,w,h);
3102#else 3168#else
3103 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 3169 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
3104 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3170 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3105 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 3171 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
3106 qApp->processEvents(); 3172 qApp->processEvents();
3107 delete mTodoEditor; 3173 delete mTodoEditor;
3108 mTodoEditor = mDialogManager->getTodoEditor(); 3174 mTodoEditor = mDialogManager->getTodoEditor();
3109 topLevelWidget()->setCaption( i18n("") ); 3175 topLevelWidget()->setCaption( i18n("") );
3110 } 3176 }
3111 mTodoEditor->showMaximized(); 3177 mTodoEditor->showMaximized();
3112#endif 3178#endif
3113} 3179}
3114 3180
3115void CalendarView::cloneIncidence() 3181void CalendarView::cloneIncidence()
3116{ 3182{
3117 Incidence *incidence = currentSelection(); 3183 Incidence *incidence = currentSelection();
3118 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3184 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3119 if ( incidence ) { 3185 if ( incidence ) {
3120 cloneIncidence(incidence); 3186 cloneIncidence(incidence);
3121 } 3187 }
3122} 3188}
3123void CalendarView::moveIncidence() 3189void CalendarView::moveIncidence()
3124{ 3190{
3125 Incidence *incidence = currentSelection(); 3191 Incidence *incidence = currentSelection();
3126 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3192 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3127 if ( incidence ) { 3193 if ( incidence ) {
3128 moveIncidence(incidence); 3194 moveIncidence(incidence);
3129 } 3195 }
3130} 3196}
3131void CalendarView::beamIncidence() 3197void CalendarView::beamIncidence()
3132{ 3198{
3133 Incidence *incidence = currentSelection(); 3199 Incidence *incidence = currentSelection();
3134 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3200 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3135 if ( incidence ) { 3201 if ( incidence ) {
3136 beamIncidence(incidence); 3202 beamIncidence(incidence);
3137 } 3203 }
3138} 3204}
3139void CalendarView::toggleCancelIncidence() 3205void CalendarView::toggleCancelIncidence()
3140{ 3206{
3141 Incidence *incidence = currentSelection(); 3207 Incidence *incidence = currentSelection();
3142 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3208 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3143 if ( incidence ) { 3209 if ( incidence ) {
3144 cancelIncidence(incidence); 3210 cancelIncidence(incidence);
3145 } 3211 }
3146} 3212}
3147 3213
3148 3214
3149void CalendarView::cancelIncidence(Incidence * inc ) 3215void CalendarView::cancelIncidence(Incidence * inc )
3150{ 3216{
3151 inc->setCancelled( ! inc->cancelled() ); 3217 inc->setCancelled( ! inc->cancelled() );
3152 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 3218 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
3153 updateView(); 3219 updateView();
3154} 3220}
3155void CalendarView::cloneIncidence(Incidence * orgInc ) 3221void CalendarView::cloneIncidence(Incidence * orgInc )
3156{ 3222{
3157 Incidence * newInc = orgInc->clone(); 3223 Incidence * newInc = orgInc->clone();
3158 newInc->recreate(); 3224 newInc->recreate();
3159 3225
3160 if ( newInc->typeID() == todoID ) { 3226 if ( newInc->typeID() == todoID ) {
3161 Todo* t = (Todo*) newInc; 3227 Todo* t = (Todo*) newInc;
3162 bool cloneSub = false; 3228 bool cloneSub = false;
3163 if ( orgInc->relations().count() ) { 3229 if ( orgInc->relations().count() ) {
3164 int result = KMessageBox::warningYesNoCancel(this, 3230 int result = KMessageBox::warningYesNoCancel(this,
3165 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), 3231 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ),
3166 i18n("Todo has subtodos"), 3232 i18n("Todo has subtodos"),
3167 i18n("Yes"), 3233 i18n("Yes"),
3168 i18n("No")); 3234 i18n("No"));
3169 3235
3170 if ( result == KMessageBox::Cancel ) { 3236 if ( result == KMessageBox::Cancel ) {
3171 delete t; 3237 delete t;
3172 return; 3238 return;
3173 } 3239 }
3174 if (result == KMessageBox::Yes) cloneSub = true; 3240 if (result == KMessageBox::Yes) cloneSub = true;
3175 } 3241 }
3176 showTodoEditor(); 3242 showTodoEditor();
3177 mTodoEditor->editTodo( t ); 3243 mTodoEditor->editTodo( t );
3178 if ( mTodoEditor->exec() ) { 3244 if ( mTodoEditor->exec() ) {
3179 if ( cloneSub ) { 3245 if ( cloneSub ) {
3180 orgInc->cloneRelations( t ); 3246 orgInc->cloneRelations( t );
3181 mCalendar->addIncidenceBranch( t ); 3247 mCalendar->addIncidenceBranch( t );
3182 updateView(); 3248 updateView();
3183 3249
3184 } else { 3250 } else {
3185 mCalendar->addTodo( t ); 3251 mCalendar->addTodo( t );
3186 updateView(); 3252 updateView();
3187 } 3253 }
3188 } else { 3254 } else {
3189 delete t; 3255 delete t;
3190 } 3256 }
3191 } 3257 }
3192 else if ( newInc->typeID() == eventID ) { 3258 else if ( newInc->typeID() == eventID ) {
3193 Event* e = (Event*) newInc; 3259 Event* e = (Event*) newInc;
3194 showEventEditor(); 3260 showEventEditor();
3195 mEventEditor->editEvent( e ); 3261 mEventEditor->editEvent( e );
3196 if ( mEventEditor->exec() ) { 3262 if ( mEventEditor->exec() ) {
3197 mCalendar->addEvent( e ); 3263 mCalendar->addEvent( e );
3198 updateView(); 3264 updateView();
3199 } else { 3265 } else {
3200 delete e; 3266 delete e;
3201 } 3267 }
3202 } if ( newInc->typeID() == journalID ) { 3268 } if ( newInc->typeID() == journalID ) {
3203 mCalendar->addJournal( (Journal*) newInc ); 3269 mCalendar->addJournal( (Journal*) newInc );
3204 editJournal( (Journal*) newInc ); 3270 editJournal( (Journal*) newInc );
3205 } 3271 }
3206 setActiveWindow(); 3272 setActiveWindow();
3207} 3273}
3208 3274
3209void CalendarView::newEvent() 3275void CalendarView::newEvent()
3210{ 3276{
3211 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3277 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3212 KOAgendaView *aView = mViewManager->agendaView(); 3278 KOAgendaView *aView = mViewManager->agendaView();
3213 if (aView) { 3279 if (aView) {
3214 if (aView->selectionStart().isValid()) { 3280 if (aView->selectionStart().isValid()) {
3215 if (aView->selectedIsAllDay()) { 3281 if (aView->selectedIsAllDay()) {
3216 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3282 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3217 } else { 3283 } else {
3218 newEvent(aView->selectionStart(),aView->selectionEnd()); 3284 newEvent(aView->selectionStart(),aView->selectionEnd());
3219 } 3285 }
3220 return; 3286 return;
3221 } 3287 }
3222 } 3288 }
3223 3289
3224 QDate date = mNavigator->selectedDates().first(); 3290 QDate date = mNavigator->selectedDates().first();
3225 QDateTime current = QDateTime::currentDateTime(); 3291 QDateTime current = QDateTime::currentDateTime();
3226 if ( date <= current.date() ) { 3292 if ( date <= current.date() ) {
3227 int hour = current.time().hour() +1; 3293 int hour = current.time().hour() +1;
3228 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3294 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3229 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3295 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3230 } else 3296 } else
3231 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3297 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3232 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3298 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3233 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3299 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3234} 3300}
3235 3301
3236void CalendarView::newEvent(QDateTime fh) 3302void CalendarView::newEvent(QDateTime fh)
3237{ 3303{
3238 newEvent(fh, 3304 newEvent(fh,
3239 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3305 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3240} 3306}
3241 3307
3242void CalendarView::newEvent(QDate dt) 3308void CalendarView::newEvent(QDate dt)
3243{ 3309{
3244 newEvent(QDateTime(dt, QTime(0,0,0)), 3310 newEvent(QDateTime(dt, QTime(0,0,0)),
3245 QDateTime(dt, QTime(0,0,0)), true); 3311 QDateTime(dt, QTime(0,0,0)), true);
3246} 3312}
3247void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3313void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3248{ 3314{
3249 newEvent(fromHint, toHint, false); 3315 newEvent(fromHint, toHint, false);
3250} 3316}
3251void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3317void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3252{ 3318{
3253 3319
3254 showEventEditor(); 3320 showEventEditor();
3255 mEventEditor->newEvent(fromHint,toHint,allDay); 3321 mEventEditor->newEvent(fromHint,toHint,allDay);
3256 if ( mFilterView->filtersEnabled() ) { 3322 if ( mFilterView->filtersEnabled() ) {
3257 CalFilter *filter = mFilterView->selectedFilter(); 3323 CalFilter *filter = mFilterView->selectedFilter();
3258 if (filter && filter->showCategories()) { 3324 if (filter && filter->showCategories()) {
3259 mEventEditor->setCategories(filter->categoryList().join(",") ); 3325 mEventEditor->setCategories(filter->categoryList().join(",") );
3260 } 3326 }
3261 if ( filter ) 3327 if ( filter )
3262 mEventEditor->setSecrecy( filter->getSecrecy() ); 3328 mEventEditor->setSecrecy( filter->getSecrecy() );
3263 } 3329 }
3264 mEventEditor->exec(); 3330 mEventEditor->exec();
3265 setActiveWindow(); 3331 setActiveWindow();
3266} 3332}
3267void CalendarView::todoAdded(Todo * t) 3333void CalendarView::todoAdded(Todo * t)
3268{ 3334{
3269 3335
3270 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3336 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3271 updateTodoViews(); 3337 updateTodoViews();
3272} 3338}
3273void CalendarView::todoChanged(Todo * t) 3339void CalendarView::todoChanged(Todo * t)
3274{ 3340{
3275 emit todoModified( t, 4 ); 3341 emit todoModified( t, 4 );
3276 // updateTodoViews(); 3342 // updateTodoViews();
3277} 3343}
3278void CalendarView::todoToBeDeleted(Todo *) 3344void CalendarView::todoToBeDeleted(Todo *)
3279{ 3345{
3280 //qDebug("todoToBeDeleted(Todo *) "); 3346 //qDebug("todoToBeDeleted(Todo *) ");
3281 updateTodoViews(); 3347 updateTodoViews();
3282} 3348}
3283void CalendarView::todoDeleted() 3349void CalendarView::todoDeleted()
3284{ 3350{
3285 //qDebug(" todoDeleted()"); 3351 //qDebug(" todoDeleted()");
3286 updateTodoViews(); 3352 updateTodoViews();
3287} 3353}
3288 3354
3289 3355
3290void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3356void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3291{ 3357{
3292 showTodoEditor(); 3358 showTodoEditor();
3293 mTodoEditor->newTodo(dt,0,allday); 3359 mTodoEditor->newTodo(dt,0,allday);
3294 if ( mFilterView->filtersEnabled() ) { 3360 if ( mFilterView->filtersEnabled() ) {
3295 CalFilter *filter = mFilterView->selectedFilter(); 3361 CalFilter *filter = mFilterView->selectedFilter();
3296 if (filter && filter->showCategories()) { 3362 if (filter && filter->showCategories()) {
3297 mTodoEditor->setCategories(filter->categoryList().join(",") ); 3363 mTodoEditor->setCategories(filter->categoryList().join(",") );
3298 } 3364 }
3299 if ( filter ) 3365 if ( filter )
3300 mTodoEditor->setSecrecy( filter->getSecrecy() ); 3366 mTodoEditor->setSecrecy( filter->getSecrecy() );
3301 } 3367 }
3302 mTodoEditor->exec(); 3368 mTodoEditor->exec();
3303 setActiveWindow(); 3369 setActiveWindow();
3304} 3370}
3305 3371
3306void CalendarView::newTodo() 3372void CalendarView::newTodo()
3307{ 3373{
3308 newTodoDateTime( QDateTime(),true ); 3374 newTodoDateTime( QDateTime(),true );
3309} 3375}
3310 3376
3311void CalendarView::newSubTodo() 3377void CalendarView::newSubTodo()
3312{ 3378{
3313 Todo *todo = selectedTodo(); 3379 Todo *todo = selectedTodo();
3314 if ( todo ) newSubTodo( todo ); 3380 if ( todo ) newSubTodo( todo );
3315} 3381}
3316 3382
3317void CalendarView::newSubTodo(Todo *parentEvent) 3383void CalendarView::newSubTodo(Todo *parentEvent)
3318{ 3384{
3319 3385
3320 showTodoEditor(); 3386 showTodoEditor();
3321 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 3387 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
3322 mTodoEditor->exec(); 3388 mTodoEditor->exec();
3323 setActiveWindow(); 3389 setActiveWindow();
3324} 3390}
3325 3391
3326void CalendarView::newFloatingEvent() 3392void CalendarView::newFloatingEvent()
3327{ 3393{
3328 DateList tmpList = mNavigator->selectedDates(); 3394 DateList tmpList = mNavigator->selectedDates();
3329 QDate date = tmpList.first(); 3395 QDate date = tmpList.first();
3330 3396
3331 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 3397 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
3332 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 3398 QDateTime( date, QTime( 12, 0, 0 ) ), true );
3333} 3399}
3334 3400
3335 3401
3336void CalendarView::editEvent( Event *event ) 3402void CalendarView::editEvent( Event *event )
3337{ 3403{
3338 3404
3339 if ( !event ) return; 3405 if ( !event ) return;
3340 if ( event->isReadOnly() ) { 3406 if ( event->isReadOnly() ) {
3341 showEvent( event ); 3407 showEvent( event );
3342 return; 3408 return;
3343 } 3409 }
3344 showEventEditor(); 3410 showEventEditor();
3345 mEventEditor->editEvent( event , mFlagEditDescription); 3411 mEventEditor->editEvent( event , mFlagEditDescription);
3346 mEventEditor->exec(); 3412 mEventEditor->exec();
3347 setActiveWindow(); 3413 setActiveWindow();
3348 3414
3349} 3415}
3350void CalendarView::editJournal( Journal *jour ) 3416void CalendarView::editJournal( Journal *jour )
3351{ 3417{
3352 if ( !jour ) return; 3418 if ( !jour ) return;
3353 mDialogManager->hideSearchDialog(); 3419 mDialogManager->hideSearchDialog();
3354 mViewManager->showJournalView(); 3420 mViewManager->showJournalView();
3355 mNavigator->slotDaySelect( jour->dtStart().date() ); 3421 mNavigator->slotDaySelect( jour->dtStart().date() );
3356} 3422}
3357void CalendarView::editTodo( Todo *todo ) 3423void CalendarView::editTodo( Todo *todo )
3358{ 3424{
3359 if ( !todo ) return; 3425 if ( !todo ) return;
3360 3426
3361 if ( todo->isReadOnly() ) { 3427 if ( todo->isReadOnly() ) {
3362 showTodo( todo ); 3428 showTodo( todo );
3363 return; 3429 return;
3364 } 3430 }
3365 showTodoEditor(); 3431 showTodoEditor();
3366 mTodoEditor->editTodo( todo ,mFlagEditDescription); 3432 mTodoEditor->editTodo( todo ,mFlagEditDescription);
3367 mTodoEditor->exec(); 3433 mTodoEditor->exec();
3368 setActiveWindow(); 3434 setActiveWindow();
3369 3435
3370} 3436}
3371 3437
3372KOEventViewerDialog* CalendarView::getEventViewerDialog() 3438KOEventViewerDialog* CalendarView::getEventViewerDialog()
3373{ 3439{
3374 if ( !mEventViewerDialog ) { 3440 if ( !mEventViewerDialog ) {
3375 mEventViewerDialog = new KOEventViewerDialog(0); 3441 mEventViewerDialog = new KOEventViewerDialog(0);
3376 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3442 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3377 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3443 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3378 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3444 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3379 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3445 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3380 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3446 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3381 viewManager(), SLOT( showAgendaView( bool ) ) ); 3447 viewManager(), SLOT( showAgendaView( bool ) ) );
3382 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3448 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3383 this, SLOT( slotViewerClosed() ) ); 3449 this, SLOT( slotViewerClosed() ) );
3384 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3450 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3385 this, SLOT( todoChanged(Todo *) ) ); 3451 this, SLOT( todoChanged(Todo *) ) );
3386 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 3452 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
3387 mEventViewerDialog->resize( 640, 480 ); 3453 mEventViewerDialog->resize( 640, 480 );
3388 3454
3389 } 3455 }
3390 return mEventViewerDialog; 3456 return mEventViewerDialog;
3391} 3457}
3392void CalendarView::showEvent(Event *event) 3458void CalendarView::showEvent(Event *event)
3393{ 3459{
3394 getEventViewerDialog()->setEvent(event); 3460 getEventViewerDialog()->setEvent(event);
3395 getEventViewerDialog()->showMe(); 3461 getEventViewerDialog()->showMe();
3396} 3462}
3397 3463
3398void CalendarView::showTodo(Todo *event) 3464void CalendarView::showTodo(Todo *event)
3399{ 3465{
3400 getEventViewerDialog()->setTodo(event); 3466 getEventViewerDialog()->setTodo(event);
3401 getEventViewerDialog()->showMe(); 3467 getEventViewerDialog()->showMe();
3402} 3468}
3403void CalendarView::showJournal( Journal *jour ) 3469void CalendarView::showJournal( Journal *jour )
3404{ 3470{
3405 getEventViewerDialog()->setJournal(jour); 3471 getEventViewerDialog()->setJournal(jour);
3406 getEventViewerDialog()->showMe(); 3472 getEventViewerDialog()->showMe();
3407 3473
3408} 3474}
3409// void CalendarView::todoModified (Todo *event, int changed) 3475// void CalendarView::todoModified (Todo *event, int changed)
3410// { 3476// {
3411// // if (mDialogList.find (event) != mDialogList.end ()) { 3477// // if (mDialogList.find (event) != mDialogList.end ()) {
3412// // kdDebug() << "Todo modified and open" << endl; 3478// // kdDebug() << "Todo modified and open" << endl;
3413// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3479// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3414// // temp->modified (changed); 3480// // temp->modified (changed);
3415 3481
3416// // } 3482// // }
3417 3483
3418// mViewManager->updateView(); 3484// mViewManager->updateView();
3419// } 3485// }
3420 3486
3421void CalendarView::appointment_show() 3487void CalendarView::appointment_show()
3422{ 3488{
3423 Event *anEvent = 0; 3489 Event *anEvent = 0;
3424 3490
3425 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3491 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3426 3492
3427 if (mViewManager->currentView()->isEventView()) { 3493 if (mViewManager->currentView()->isEventView()) {
3428 if ( incidence && incidence->typeID() == eventID ) { 3494 if ( incidence && incidence->typeID() == eventID ) {
3429 anEvent = static_cast<Event *>(incidence); 3495 anEvent = static_cast<Event *>(incidence);
3430 } 3496 }
3431 } 3497 }
3432 3498
3433 if (!anEvent) { 3499 if (!anEvent) {
3434 KNotifyClient::beep(); 3500 KNotifyClient::beep();
3435 return; 3501 return;
3436 } 3502 }
3437 3503
3438 showEvent(anEvent); 3504 showEvent(anEvent);
3439} 3505}
3440 3506
3441void CalendarView::appointment_edit() 3507void CalendarView::appointment_edit()
3442{ 3508{
3443 Event *anEvent = 0; 3509 Event *anEvent = 0;
3444 3510
3445 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3511 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3446 3512
3447 if (mViewManager->currentView()->isEventView()) { 3513 if (mViewManager->currentView()->isEventView()) {
3448 if ( incidence && incidence->typeID() == eventID ) { 3514 if ( incidence && incidence->typeID() == eventID ) {
3449 anEvent = static_cast<Event *>(incidence); 3515 anEvent = static_cast<Event *>(incidence);
3450 } 3516 }
3451 } 3517 }
3452 3518
3453 if (!anEvent) { 3519 if (!anEvent) {
3454 KNotifyClient::beep(); 3520 KNotifyClient::beep();
3455 return; 3521 return;
3456 } 3522 }
3457 3523
3458 editEvent(anEvent); 3524 editEvent(anEvent);
3459} 3525}
3460 3526
3461void CalendarView::appointment_delete() 3527void CalendarView::appointment_delete()
3462{ 3528{
3463 Event *anEvent = 0; 3529 Event *anEvent = 0;
3464 3530
3465 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3531 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3466 3532
3467 if (mViewManager->currentView()->isEventView()) { 3533 if (mViewManager->currentView()->isEventView()) {
3468 if ( incidence && incidence->typeID() == eventID ) { 3534 if ( incidence && incidence->typeID() == eventID ) {
3469 anEvent = static_cast<Event *>(incidence); 3535 anEvent = static_cast<Event *>(incidence);
3470 } 3536 }
3471 } 3537 }
3472 3538
3473 if (!anEvent) { 3539 if (!anEvent) {
3474 KNotifyClient::beep(); 3540 KNotifyClient::beep();
3475 return; 3541 return;
3476 } 3542 }
3477 3543
3478 deleteEvent(anEvent); 3544 deleteEvent(anEvent);
3479} 3545}
3480 3546
3481void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3547void CalendarView::todo_resub( Todo * parent, Todo * sub )
3482{ 3548{
3483 if (!sub) return; 3549 if (!sub) return;
3484 if ( sub->relatedTo() == parent ) 3550 if ( sub->relatedTo() == parent )
3485 return; 3551 return;
3486 sub->setRelatedTo(parent); 3552 sub->setRelatedTo(parent);
3487 sub->updated(); 3553 sub->updated();
3488 setModified(true); 3554 setModified(true);
3489 updateView(); 3555 updateView();
3490} 3556}
3491void CalendarView::todo_unsub(Todo *anTodo ) 3557void CalendarView::todo_unsub(Todo *anTodo )
3492{ 3558{
3493 todo_resub( 0, anTodo ); 3559 todo_resub( 0, anTodo );
3494} 3560}
3495 3561
3496void CalendarView::deleteTodo(Todo *todo) 3562void CalendarView::deleteTodo(Todo *todo)
3497{ 3563{
3498 if (!todo) { 3564 if (!todo) {
3499 KNotifyClient::beep(); 3565 KNotifyClient::beep();
3500 return; 3566 return;
3501 } 3567 }
3502 if (KOPrefs::instance()->mConfirm) { 3568 if (KOPrefs::instance()->mConfirm) {
3503 QString text = todo->summary().left(20); 3569 QString text = KGlobal::formatMessage ( todo->summary(),0 );
3504 if (!todo->relations().isEmpty()) { 3570 if (!todo->relations().isEmpty()) {
3505 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3571 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3506 3572
3507 } 3573 }
3508 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) { 3574 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) {
3509 case KMessageBox::Continue: // OK 3575 case KMessageBox::Continue: // OK
3510 bool deleteT = false; 3576 bool deleteT = false;
3511 if (!todo->relations().isEmpty()) { 3577 if (!todo->relations().isEmpty()) {
3512 deleteT = removeCompletedSubTodos( todo ); 3578 deleteT = removeCompletedSubTodos( todo );
3513 } 3579 }
3514 // deleteT == true: todo already deleted in removeCompletedSubTodos 3580 // deleteT == true: todo already deleted in removeCompletedSubTodos
3515 if ( !deleteT ) { 3581 if ( !deleteT ) {
3516 checkExternalId( todo ); 3582 checkExternalId( todo );
3517 calendar()->deleteTodo(todo); 3583 calendar()->deleteTodo(todo);
3518 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3584 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3519 updateView(); 3585 updateView();
3520 } 3586 }
3521 break; 3587 break;
3522 } // switch 3588 } // switch
3523 } else { 3589 } else {
3524 checkExternalId( todo ); 3590 checkExternalId( todo );
3525 mCalendar->deleteTodo(todo); 3591 mCalendar->deleteTodo(todo);
3526 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3592 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3527 updateView(); 3593 updateView();
3528 } 3594 }
3529 3595
3530 emit updateSearchDialog(); 3596 emit updateSearchDialog();
3531} 3597}
3532void CalendarView::deleteJournal(Journal *jour) 3598void CalendarView::deleteJournal(Journal *jour)
3533{ 3599{
3534 if (!jour) { 3600 if (!jour) {
3535 KNotifyClient::beep(); 3601 KNotifyClient::beep();
3536 return; 3602 return;
3537 } 3603 }
3538 if (KOPrefs::instance()->mConfirm) { 3604 if (KOPrefs::instance()->mConfirm) {
3539 3605
3540 QString des; 3606 QString des;
3541 if ( !jour->summary().isEmpty() ) { 3607 if ( !jour->summary().isEmpty() ) {
3542 des = jour->summary(); 3608 des = jour->summary();
3543 } else { 3609 } else {
3544 des = jour->description().left(30); 3610 des = jour->description().left(30);
3545 des = des.simplifyWhiteSpace (); 3611 des = des.simplifyWhiteSpace ();
3546 des.replace (QRegExp ("\\n"),"" ); 3612 des.replace (QRegExp ("\\n"),"" );
3547 des.replace (QRegExp ("\\r"),"" ); 3613 des.replace (QRegExp ("\\r"),"" );
3548 } 3614 }
3549 switch (msgItemDelete( i18n("Journal:") +"\n"+des.left(20))) { 3615 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) {
3550 case KMessageBox::Continue: // OK 3616 case KMessageBox::Continue: // OK
3551 calendar()->deleteJournal(jour); 3617 calendar()->deleteJournal(jour);
3552 updateView(); 3618 updateView();
3553 break; 3619 break;
3554 } // switch 3620 } // switch
3555 } else { 3621 } else {
3556 calendar()->deleteJournal(jour);; 3622 calendar()->deleteJournal(jour);;
3557 updateView(); 3623 updateView();
3558 } 3624 }
3559 emit updateSearchDialog(); 3625 emit updateSearchDialog();
3560} 3626}
3561 3627
3562void CalendarView::deleteEvent(Event *anEvent) 3628void CalendarView::deleteEvent(Event *anEvent)
3563{ 3629{
3564 if (!anEvent) { 3630 if (!anEvent) {
3565 KNotifyClient::beep(); 3631 KNotifyClient::beep();
3566 return; 3632 return;
3567 } 3633 }
3568 3634
3569 if (anEvent->recurrence()->doesRecur()) { 3635 if (anEvent->recurrence()->doesRecur()) {
3570 QDate itemDate = mViewManager->currentSelectionDate(); 3636 QDate itemDate = mViewManager->currentSelectionDate();
3571 int km; 3637 int km;
3572 if (!itemDate.isValid()) { 3638 if (!itemDate.isValid()) {
3573 //kdDebug() << "Date Not Valid" << endl; 3639 //kdDebug() << "Date Not Valid" << endl;
3574 if (KOPrefs::instance()->mConfirm) { 3640 if (KOPrefs::instance()->mConfirm) {
3575 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3641 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3576 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3642 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3577 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3643 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3578 if ( km == KMessageBox::Continue ) 3644 if ( km == KMessageBox::Continue )
3579 km = KMessageBox::No; // No = all below 3645 km = KMessageBox::No; // No = all below
3580 } else 3646 } else
3581 km = KMessageBox::No; 3647 km = KMessageBox::No;
3582 } else { 3648 } else {
3583 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3649 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3584 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3650 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3585 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3651 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3586 i18n("KO/Pi Confirmation"),i18n("Current"), 3652 i18n("KO/Pi Confirmation"),i18n("Current"),
3587 i18n("All")); 3653 i18n("All"));
3588 } 3654 }
3589 switch(km) { 3655 switch(km) {
3590 3656
3591 case KMessageBox::No: // Continue // all 3657 case KMessageBox::No: // Continue // all
3592 //qDebug("KMessageBox::No "); 3658 //qDebug("KMessageBox::No ");
3593 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3659 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3594 schedule(Scheduler::Cancel,anEvent); 3660 schedule(Scheduler::Cancel,anEvent);
3595 3661
3596 checkExternalId( anEvent); 3662 checkExternalId( anEvent);
3597 mCalendar->deleteEvent(anEvent); 3663 mCalendar->deleteEvent(anEvent);
3598 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3664 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3599 break; 3665 break;
3600 3666
3601 // Disabled because it does not work 3667 // Disabled because it does not work
3602 //#if 0 3668 //#if 0
3603 case KMessageBox::Yes: // just this one 3669 case KMessageBox::Yes: // just this one
3604 //QDate qd = mNavigator->selectedDates().first(); 3670 //QDate qd = mNavigator->selectedDates().first();
3605 //if (!qd.isValid()) { 3671 //if (!qd.isValid()) {
3606 // kdDebug() << "no date selected, or invalid date" << endl; 3672 // kdDebug() << "no date selected, or invalid date" << endl;
3607 // KNotifyClient::beep(); 3673 // KNotifyClient::beep();
3608 // return; 3674 // return;
3609 //} 3675 //}
3610 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3676 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3611 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3677 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3612 anEvent->addExDate(itemDate); 3678 anEvent->addExDate(itemDate);
3613 int duration = anEvent->recurrence()->duration(); 3679 int duration = anEvent->recurrence()->duration();
3614 if ( duration > 0 ) { 3680 if ( duration > 0 ) {
3615 anEvent->recurrence()->setDuration( duration - 1 ); 3681 anEvent->recurrence()->setDuration( duration - 1 );
3616 } 3682 }
3617 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3683 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3618 } 3684 }
3619 break; 3685 break;
3620 //#endif 3686 //#endif
3621 } // switch 3687 } // switch
3622 } else { 3688 } else {
3623 if (KOPrefs::instance()->mConfirm) { 3689 if (KOPrefs::instance()->mConfirm) {
3624 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3690 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3625 i18n("\nAre you sure you want\nto delete this event?"), 3691 i18n("\nAre you sure you want\nto delete this event?"),
3626 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3692 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3627 case KMessageBox::Continue: // OK 3693 case KMessageBox::Continue: // OK
3628 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3694 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3629 schedule(Scheduler::Cancel,anEvent); 3695 schedule(Scheduler::Cancel,anEvent);
3630 checkExternalId( anEvent); 3696 checkExternalId( anEvent);
3631 mCalendar->deleteEvent(anEvent); 3697 mCalendar->deleteEvent(anEvent);
3632 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3698 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3633 break; 3699 break;
3634 } // switch 3700 } // switch
3635 } else { 3701 } else {
3636 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3702 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3637 schedule(Scheduler::Cancel,anEvent); 3703 schedule(Scheduler::Cancel,anEvent);
3638 checkExternalId( anEvent); 3704 checkExternalId( anEvent);
3639 mCalendar->deleteEvent(anEvent); 3705 mCalendar->deleteEvent(anEvent);
3640 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3706 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3641 } 3707 }
3642 } // if-else 3708 } // if-else
3643 emit updateSearchDialog(); 3709 emit updateSearchDialog();
3644} 3710}
3645 3711
3646bool CalendarView::deleteEvent(const QString &uid) 3712bool CalendarView::deleteEvent(const QString &uid)
3647{ 3713{
3648 Event *ev = mCalendar->event(uid); 3714 Event *ev = mCalendar->event(uid);
3649 if (ev) { 3715 if (ev) {
3650 deleteEvent(ev); 3716 deleteEvent(ev);
3651 return true; 3717 return true;
3652 } else { 3718 } else {
3653 return false; 3719 return false;
3654 } 3720 }
3655} 3721}
3656 3722
3657/*****************************************************************************/ 3723/*****************************************************************************/
3658 3724
3659void CalendarView::action_mail() 3725void CalendarView::action_mail()
3660{ 3726{
3661#ifndef KORG_NOMAIL 3727#ifndef KORG_NOMAIL
3662 KOMailClient mailClient; 3728 KOMailClient mailClient;
3663 3729
3664 Incidence *incidence = currentSelection(); 3730 Incidence *incidence = currentSelection();
3665 3731
3666 if (!incidence) { 3732 if (!incidence) {
3667 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3733 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3668 return; 3734 return;
3669 } 3735 }
3670 if(incidence->attendeeCount() == 0 ) { 3736 if(incidence->attendeeCount() == 0 ) {
3671 KMessageBox::sorry(this, 3737 KMessageBox::sorry(this,
3672 i18n("Can't generate mail:\nNo attendees defined.\n")); 3738 i18n("Can't generate mail:\nNo attendees defined.\n"));
3673 return; 3739 return;
3674 } 3740 }
3675 3741
3676 CalendarLocal cal_tmp; 3742 CalendarLocal cal_tmp;
3677 Event *event = 0; 3743 Event *event = 0;
3678 Event *ev = 0; 3744 Event *ev = 0;
3679 if ( incidence && incidence->typeID() == eventID ) { 3745 if ( incidence && incidence->typeID() == eventID ) {
3680 event = static_cast<Event *>(incidence); 3746 event = static_cast<Event *>(incidence);
3681 ev = new Event(*event); 3747 ev = new Event(*event);
3682 cal_tmp.addEvent(ev); 3748 cal_tmp.addEvent(ev);
3683 } 3749 }
3684 ICalFormat mForm(); 3750 ICalFormat mForm();
3685 QString attachment = mForm.toString( &cal_tmp ); 3751 QString attachment = mForm.toString( &cal_tmp );
3686 if (ev) delete(ev); 3752 if (ev) delete(ev);
3687 3753
3688 mailClient.mailAttendees(currentSelection(), attachment); 3754 mailClient.mailAttendees(currentSelection(), attachment);
3689 3755
3690#endif 3756#endif
3691 3757
3692#if 0 3758#if 0
3693 Event *anEvent = 0; 3759 Event *anEvent = 0;
3694 if (mViewManager->currentView()->isEventView()) { 3760 if (mViewManager->currentView()->isEventView()) {
3695 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3761 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3696 } 3762 }
3697 3763
3698 if (!anEvent) { 3764 if (!anEvent) {
3699 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3765 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3700 return; 3766 return;
3701 } 3767 }
3702 if(anEvent->attendeeCount() == 0 ) { 3768 if(anEvent->attendeeCount() == 0 ) {
3703 KMessageBox::sorry(this, 3769 KMessageBox::sorry(this,
3704 i18n("Can't generate mail:\nNo attendees defined.\n")); 3770 i18n("Can't generate mail:\nNo attendees defined.\n"));
3705 return; 3771 return;
3706 } 3772 }
3707 3773
3708 mailobject.emailEvent(anEvent); 3774 mailobject.emailEvent(anEvent);
3709#endif 3775#endif
3710} 3776}
3711 3777
3712 3778
3713void CalendarView::schedule_publish(Incidence *incidence) 3779void CalendarView::schedule_publish(Incidence *incidence)
3714{ 3780{
3715 Event *event = 0; 3781 Event *event = 0;
3716 Todo *todo = 0; 3782 Todo *todo = 0;
3717 3783
3718 if (incidence == 0) { 3784 if (incidence == 0) {
3719 incidence = mViewManager->currentView()->selectedIncidences().first(); 3785 incidence = mViewManager->currentView()->selectedIncidences().first();
3720 if (incidence == 0) { 3786 if (incidence == 0) {
3721 incidence = mTodoList->selectedIncidences().first(); 3787 incidence = mTodoList->selectedIncidences().first();
3722 } 3788 }
3723 } 3789 }
3724 if ( incidence && incidence->typeID() == eventID ) { 3790 if ( incidence && incidence->typeID() == eventID ) {
3725 event = static_cast<Event *>(incidence); 3791 event = static_cast<Event *>(incidence);
3726 } else { 3792 } else {
3727 if ( incidence && incidence->typeID() == todoID ) { 3793 if ( incidence && incidence->typeID() == todoID ) {
3728 todo = static_cast<Todo *>(incidence); 3794 todo = static_cast<Todo *>(incidence);
3729 } 3795 }
3730 } 3796 }
3731 3797
3732 if (!event && !todo) { 3798 if (!event && !todo) {
3733 KMessageBox::sorry(this,i18n("No event selected.")); 3799 KMessageBox::sorry(this,i18n("No event selected."));
3734 return; 3800 return;
3735 } 3801 }
3736 3802
3737 PublishDialog *publishdlg = new PublishDialog(); 3803 PublishDialog *publishdlg = new PublishDialog();
3738 if (incidence->attendeeCount()>0) { 3804 if (incidence->attendeeCount()>0) {
3739 QPtrList<Attendee> attendees = incidence->attendees(); 3805 QPtrList<Attendee> attendees = incidence->attendees();
3740 attendees.first(); 3806 attendees.first();
3741 while ( attendees.current()!=0 ) { 3807 while ( attendees.current()!=0 ) {
3742 publishdlg->addAttendee(attendees.current()); 3808 publishdlg->addAttendee(attendees.current());
3743 attendees.next(); 3809 attendees.next();
3744 } 3810 }
3745 } 3811 }
3746 bool send = true; 3812 bool send = true;
3747 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3813 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3748 if ( publishdlg->exec() != QDialog::Accepted ) 3814 if ( publishdlg->exec() != QDialog::Accepted )
3749 send = false; 3815 send = false;
3750 } 3816 }
3751 if ( send ) { 3817 if ( send ) {
3752 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3818 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3753 if ( event ) { 3819 if ( event ) {
3754 Event *ev = new Event(*event); 3820 Event *ev = new Event(*event);
3755 ev->registerObserver(0); 3821 ev->registerObserver(0);
3756 ev->clearAttendees(); 3822 ev->clearAttendees();
3757 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3823 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3758 delete(ev); 3824 delete(ev);
3759 } 3825 }
3760 } else { 3826 } else {
3761 if ( todo ) { 3827 if ( todo ) {
3762 Todo *ev = new Todo(*todo); 3828 Todo *ev = new Todo(*todo);
3763 ev->registerObserver(0); 3829 ev->registerObserver(0);
3764 ev->clearAttendees(); 3830 ev->clearAttendees();
3765 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3831 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3766 delete(ev); 3832 delete(ev);
3767 } 3833 }
3768 } 3834 }
3769 } 3835 }
3770 } 3836 }
3771 delete publishdlg; 3837 delete publishdlg;
3772} 3838}
3773 3839
3774void CalendarView::schedule_request(Incidence *incidence) 3840void CalendarView::schedule_request(Incidence *incidence)
3775{ 3841{
3776 schedule(Scheduler::Request,incidence); 3842 schedule(Scheduler::Request,incidence);
3777} 3843}
3778 3844
3779void CalendarView::schedule_refresh(Incidence *incidence) 3845void CalendarView::schedule_refresh(Incidence *incidence)
3780{ 3846{
3781 schedule(Scheduler::Refresh,incidence); 3847 schedule(Scheduler::Refresh,incidence);
3782} 3848}
3783 3849
3784void CalendarView::schedule_cancel(Incidence *incidence) 3850void CalendarView::schedule_cancel(Incidence *incidence)
3785{ 3851{
3786 schedule(Scheduler::Cancel,incidence); 3852 schedule(Scheduler::Cancel,incidence);
3787} 3853}
3788 3854
3789void CalendarView::schedule_add(Incidence *incidence) 3855void CalendarView::schedule_add(Incidence *incidence)
3790{ 3856{
3791 schedule(Scheduler::Add,incidence); 3857 schedule(Scheduler::Add,incidence);
3792} 3858}
3793 3859
3794void CalendarView::schedule_reply(Incidence *incidence) 3860void CalendarView::schedule_reply(Incidence *incidence)
3795{ 3861{
3796 schedule(Scheduler::Reply,incidence); 3862 schedule(Scheduler::Reply,incidence);
3797} 3863}
3798 3864
3799void CalendarView::schedule_counter(Incidence *incidence) 3865void CalendarView::schedule_counter(Incidence *incidence)
3800{ 3866{
3801 schedule(Scheduler::Counter,incidence); 3867 schedule(Scheduler::Counter,incidence);
3802} 3868}
3803 3869
3804void CalendarView::schedule_declinecounter(Incidence *incidence) 3870void CalendarView::schedule_declinecounter(Incidence *incidence)
3805{ 3871{
3806 schedule(Scheduler::Declinecounter,incidence); 3872 schedule(Scheduler::Declinecounter,incidence);
3807} 3873}
3808 3874
3809void CalendarView::schedule_publish_freebusy(int daysToPublish) 3875void CalendarView::schedule_publish_freebusy(int daysToPublish)
3810{ 3876{
3811 QDateTime start = QDateTime::currentDateTime(); 3877 QDateTime start = QDateTime::currentDateTime();
3812 QDateTime end = start.addDays(daysToPublish); 3878 QDateTime end = start.addDays(daysToPublish);
3813 3879
3814 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3880 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3815 freebusy->setOrganizer(KOPrefs::instance()->email()); 3881 freebusy->setOrganizer(KOPrefs::instance()->email());
3816 3882
@@ -4391,271 +4457,271 @@ void CalendarView::showIncidence()
4391 ShowIncidenceVisitor v; 4457 ShowIncidenceVisitor v;
4392 v.act( incidence, this ); 4458 v.act( incidence, this );
4393 } 4459 }
4394} 4460}
4395void CalendarView::editIncidenceDescription() 4461void CalendarView::editIncidenceDescription()
4396{ 4462{
4397 mFlagEditDescription = true; 4463 mFlagEditDescription = true;
4398 editIncidence(); 4464 editIncidence();
4399 mFlagEditDescription = false; 4465 mFlagEditDescription = false;
4400} 4466}
4401void CalendarView::editIncidence() 4467void CalendarView::editIncidence()
4402{ 4468{
4403 // qDebug("editIncidence() "); 4469 // qDebug("editIncidence() ");
4404 Incidence *incidence = currentSelection(); 4470 Incidence *incidence = currentSelection();
4405 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4471 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4406 if ( incidence ) { 4472 if ( incidence ) {
4407 EditIncidenceVisitor v; 4473 EditIncidenceVisitor v;
4408 v.act( incidence, this ); 4474 v.act( incidence, this );
4409 } 4475 }
4410} 4476}
4411 4477
4412void CalendarView::deleteIncidence() 4478void CalendarView::deleteIncidence()
4413{ 4479{
4414 Incidence *incidence = currentSelection(); 4480 Incidence *incidence = currentSelection();
4415 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4481 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4416 if ( incidence ) { 4482 if ( incidence ) {
4417 deleteIncidence(incidence); 4483 deleteIncidence(incidence);
4418 } 4484 }
4419} 4485}
4420void CalendarView::showIncidence(QString uid) 4486void CalendarView::showIncidence(QString uid)
4421{ 4487{
4422 Incidence *inc = mCalendar->incidence( uid ); 4488 Incidence *inc = mCalendar->incidence( uid );
4423 if ( inc ) 4489 if ( inc )
4424 showIncidence( inc ); 4490 showIncidence( inc );
4425} 4491}
4426void CalendarView::showIncidence(Incidence *incidence) 4492void CalendarView::showIncidence(Incidence *incidence)
4427{ 4493{
4428 mViewerCallerIsSearchDialog = false; 4494 mViewerCallerIsSearchDialog = false;
4429 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4495 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4430 if ( sender() && mDialogManager->getSearchDialog() ) { 4496 if ( sender() && mDialogManager->getSearchDialog() ) {
4431 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4497 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4432 mViewerCallerIsSearchDialog = true; 4498 mViewerCallerIsSearchDialog = true;
4433 } 4499 }
4434 } 4500 }
4435 if ( incidence ) { 4501 if ( incidence ) {
4436 ShowIncidenceVisitor v; 4502 ShowIncidenceVisitor v;
4437 v.act( incidence, this ); 4503 v.act( incidence, this );
4438 } 4504 }
4439} 4505}
4440 4506
4441void CalendarView::editIncidence(Incidence *incidence) 4507void CalendarView::editIncidence(Incidence *incidence)
4442{ 4508{
4443 if ( incidence ) { 4509 if ( incidence ) {
4444 4510
4445 EditIncidenceVisitor v; 4511 EditIncidenceVisitor v;
4446 v.act( incidence, this ); 4512 v.act( incidence, this );
4447 4513
4448 } 4514 }
4449} 4515}
4450 4516
4451void CalendarView::deleteIncidence(Incidence *incidence) 4517void CalendarView::deleteIncidence(Incidence *incidence)
4452{ 4518{
4453 //qDebug(" CalendarView::deleteIncidence "); 4519 //qDebug(" CalendarView::deleteIncidence ");
4454 if ( incidence == 0 ) { 4520 if ( incidence == 0 ) {
4455 updateView(); 4521 updateView();
4456 emit updateSearchDialog(); 4522 emit updateSearchDialog();
4457 return; 4523 return;
4458 } 4524 }
4459 if ( incidence ) { 4525 if ( incidence ) {
4460 DeleteIncidenceVisitor v; 4526 DeleteIncidenceVisitor v;
4461 v.act( incidence, this ); 4527 v.act( incidence, this );
4462 } 4528 }
4463} 4529}
4464 4530
4465 4531
4466void CalendarView::lookForOutgoingMessages() 4532void CalendarView::lookForOutgoingMessages()
4467{ 4533{
4468 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4534 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4469 ogd->loadMessages(); 4535 ogd->loadMessages();
4470} 4536}
4471 4537
4472void CalendarView::lookForIncomingMessages() 4538void CalendarView::lookForIncomingMessages()
4473{ 4539{
4474 IncomingDialog *icd = mDialogManager->incomingDialog(); 4540 IncomingDialog *icd = mDialogManager->incomingDialog();
4475 icd->retrieve(); 4541 icd->retrieve();
4476} 4542}
4477 4543
4478bool CalendarView::removeCompletedSubTodos( Todo* t ) 4544bool CalendarView::removeCompletedSubTodos( Todo* t )
4479{ 4545{
4480 bool deleteTodo = true; 4546 bool deleteTodo = true;
4481 QPtrList<Incidence> subTodos; 4547 QPtrList<Incidence> subTodos;
4482 Incidence *aTodo; 4548 Incidence *aTodo;
4483 subTodos = t->relations(); 4549 subTodos = t->relations();
4484 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4550 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4485 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4551 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4486 deleteTodo = false; 4552 deleteTodo = false;
4487 } 4553 }
4488 if ( deleteTodo ) { 4554 if ( deleteTodo ) {
4489 if ( t->isCompleted() && !t->doesRecur()) { 4555 if ( t->isCompleted() && !t->doesRecur()) {
4490 checkExternalId( t ); 4556 checkExternalId( t );
4491 mCalendar->deleteTodo( t ); 4557 mCalendar->deleteTodo( t );
4492 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4558 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4493 } 4559 }
4494 else 4560 else
4495 deleteTodo = false; 4561 deleteTodo = false;
4496 } 4562 }
4497 return deleteTodo; 4563 return deleteTodo;
4498 4564
4499} 4565}
4500void CalendarView::purgeCompleted() 4566void CalendarView::purgeCompleted()
4501{ 4567{
4502 int result = KMessageBox::warningContinueCancel(this, 4568 int result = KMessageBox::warningContinueCancel(this,
4503 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 4569 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
4504 4570
4505 if (result == KMessageBox::Continue) { 4571 if (result == KMessageBox::Continue) {
4506 4572
4507 QPtrList<Todo> todoCal; 4573 QPtrList<Todo> todoCal;
4508 QPtrList<Todo> rootTodos; 4574 QPtrList<Todo> rootTodos;
4509 //QPtrList<Incidence> rel; 4575 //QPtrList<Incidence> rel;
4510 Todo *aTodo; 4576 Todo *aTodo;
4511 todoCal = calendar()->todos(); 4577 todoCal = calendar()->todos();
4512 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4578 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4513 if ( !aTodo->relatedTo() ) 4579 if ( !aTodo->relatedTo() )
4514 rootTodos.append( aTodo ); 4580 rootTodos.append( aTodo );
4515 } 4581 }
4516 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4582 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4517 removeCompletedSubTodos( aTodo ); 4583 removeCompletedSubTodos( aTodo );
4518 } 4584 }
4519 4585
4520 updateView(); 4586 updateView();
4521 } 4587 }
4522} 4588}
4523 4589
4524void CalendarView::slotCalendarChanged() 4590void CalendarView::slotCalendarChanged()
4525{ 4591{
4526 ; 4592 ;
4527} 4593}
4528 4594
4529void CalendarView::keyPressEvent ( QKeyEvent *e) 4595void CalendarView::keyPressEvent ( QKeyEvent *e)
4530{ 4596{
4531 //qDebug(" alendarView::keyPressEvent "); 4597 //qDebug(" alendarView::keyPressEvent ");
4532 e->ignore(); 4598 e->ignore();
4533} 4599}
4534 4600
4535 4601
4536bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4602bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4537{ 4603{
4538 4604
4539 if ( manager != mSyncManager) 4605 if ( manager != mSyncManager)
4540 qDebug("KO: Internal error-1. SyncManager mismatch "); 4606 qDebug("KO: Internal error-1. SyncManager mismatch ");
4541 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4607 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4542 qDebug("KO: SyncKDE request detected!"); 4608 qDebug("KO: SyncKDE request detected!");
4543 } 4609 }
4544 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4610 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4545 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4611 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4546 return syncCalendar( filename, mode ); 4612 return syncCalendar( filename, mode );
4547} 4613}
4548bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4614bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4549{ 4615{
4550 //mSyncManager = manager; 4616 //mSyncManager = manager;
4551 if ( manager != mSyncManager) 4617 if ( manager != mSyncManager)
4552 qDebug("KO: Internal error-2. SyncManager mismatch "); 4618 qDebug("KO: Internal error-2. SyncManager mismatch ");
4553 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4619 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4554 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4620 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4555 if ( resource == "sharp" ) 4621 if ( resource == "sharp" )
4556 syncExternal( 0 ); 4622 syncExternal( 0 );
4557 if ( resource == "phone" ) 4623 if ( resource == "phone" )
4558 syncExternal( 1 ); 4624 syncExternal( 1 );
4559 // pending setmodified 4625 // pending setmodified
4560 return true; 4626 return true;
4561} 4627}
4562void CalendarView::setSyncManager(KSyncManager* manager) 4628void CalendarView::setSyncManager(KSyncManager* manager)
4563{ 4629{
4564 mSyncManager = manager; 4630 mSyncManager = manager;
4565} 4631}
4566 4632
4567void CalendarView::removeSyncInfo( QString syncProfile) 4633void CalendarView::removeSyncInfo( QString syncProfile)
4568{ 4634{
4569 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4635 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4570 mCalendar->removeSyncInfo( syncProfile ); 4636 mCalendar->removeSyncInfo( syncProfile );
4571 4637
4572} 4638}
4573 4639
4574void CalendarView::undo_delete() 4640void CalendarView::undo_delete()
4575{ 4641{
4576 //qDebug("undo_delete() "); 4642 //qDebug("undo_delete() ");
4577 Incidence* undo = mCalendar->undoIncidence(); 4643 Incidence* undo = mCalendar->undoIncidence();
4578 if ( !undo ) { 4644 if ( !undo ) {
4579 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4645 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4580 i18n("KO/Pi")); 4646 i18n("KO/Pi"));
4581 return; 4647 return;
4582 } 4648 }
4583 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4649 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) +
4584 i18n("\nAre you sure you want\nto restore this?"), 4650 i18n("\nAre you sure you want\nto restore this?"),
4585 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4651 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4586 mCalendar->undoDeleteIncidence(); 4652 mCalendar->undoDeleteIncidence();
4587 updateView(); 4653 updateView();
4588 } 4654 }
4589} 4655}
4590 4656
4591void CalendarView::slotViewerClosed() 4657void CalendarView::slotViewerClosed()
4592{ 4658{
4593 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4659 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4594} 4660}
4595 4661
4596void CalendarView::resetFocus() 4662void CalendarView::resetFocus()
4597{ 4663{
4598 if ( mViewerCallerIsSearchDialog ) { 4664 if ( mViewerCallerIsSearchDialog ) {
4599 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4665 if ( mDialogManager->getSearchDialog()->isVisible() ){
4600 mDialogManager->getSearchDialog()->raise(); 4666 mDialogManager->getSearchDialog()->raise();
4601 mDialogManager->getSearchDialog()->setActiveWindow(); 4667 mDialogManager->getSearchDialog()->setActiveWindow();
4602 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4668 mDialogManager->getSearchDialog()->listview()->resetFocus();
4603 } else 4669 } else
4604 mViewerCallerIsSearchDialog = false; 4670 mViewerCallerIsSearchDialog = false;
4605 } 4671 }
4606 if ( !mViewerCallerIsSearchDialog ) { 4672 if ( !mViewerCallerIsSearchDialog ) {
4607 //mViewManager->currentView()->setFocus(); 4673 //mViewManager->currentView()->setFocus();
4608 //qDebug("sssssssssssssssset focus "); 4674 //qDebug("sssssssssssssssset focus ");
4609 topLevelWidget()->raise(); 4675 topLevelWidget()->raise();
4610 setActiveWindow(); 4676 setActiveWindow();
4611 //setFocus(); 4677 //setFocus();
4612 } 4678 }
4613 mViewerCallerIsSearchDialog = false; 4679 mViewerCallerIsSearchDialog = false;
4614} 4680}
4615 4681
4616void CalendarView::showNextAlarms() 4682void CalendarView::showNextAlarms()
4617{ 4683{
4618 QString message; 4684 QString message;
4619 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4685 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4620 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4686 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4621 QString sum = mCalendar->nextSummary(); 4687 QString sum = mCalendar->nextSummary();
4622 QDateTime nextA = mNextAlarmDateTime; 4688 QDateTime nextA = mNextAlarmDateTime;
4623 QDateTime cur = QDateTime::currentDateTime(); 4689 QDateTime cur = QDateTime::currentDateTime();
4624 int secs = cur.secsTo( nextA ); 4690 int secs = cur.secsTo( nextA );
4625 int min = secs /60; 4691 int min = secs /60;
4626 int hours = min /60; 4692 int hours = min /60;
4627 min = min % 60; 4693 min = min % 60;
4628 int days = hours /24; 4694 int days = hours /24;
4629 hours = hours % 24; 4695 hours = hours % 24;
4630 4696
4631 //message = i18n("The next alarm is in:\n"); 4697 //message = i18n("The next alarm is in:\n");
4632 if ( days > 1 ) 4698 if ( days > 1 )
4633 message += i18n("%1 days\n").arg( days ); 4699 message += i18n("%1 days\n").arg( days );
4634 else if ( days == 1 ) 4700 else if ( days == 1 )
4635 message += i18n("1 day\n"); 4701 message += i18n("1 day\n");
4636 if ( hours > 1 ) 4702 if ( hours > 1 )
4637 message += i18n("%1 hours\n").arg( hours ); 4703 message += i18n("%1 hours\n").arg( hours );
4638 else if ( hours == 1 ) 4704 else if ( hours == 1 )
4639 message += i18n("1 hour\n"); 4705 message += i18n("1 hour\n");
4640 if ( min > 1 ) 4706 if ( min > 1 )
4641 message += i18n("%1 minutes\n").arg( min ); 4707 message += i18n("%1 minutes\n").arg( min );
4642 else if ( min == 1 ) 4708 else if ( min == 1 )
4643 message += i18n("1 minute\n"); 4709 message += i18n("1 minute\n");
4644 if ( message.isEmpty() ) 4710 if ( message.isEmpty() )
4645 message = i18n("The next alarm is in\nless than one minute!"); 4711 message = i18n("The next alarm is in\nless than one minute!");
4646 else 4712 else
4647 message = i18n("The next alarm is in:\n") + message; 4713 message = i18n("The next alarm is in:\n") + message;
4648 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4714 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4649 } else { 4715 } else {
4650 message = i18n("There is no next alarm."); 4716 message = i18n("There is no next alarm.");
4651 4717
4652 } 4718 }
4653#ifdef DESKTOP_VERSION 4719#ifdef DESKTOP_VERSION
4654 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 4720 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
4655 message += i18n("\nThe internal alarm notification is disabled!\n"); 4721 message += i18n("\nThe internal alarm notification is disabled!\n");
4656 message += i18n("Enable it in the settings menu, TAB alarm."); 4722 message += i18n("Enable it in the settings menu, TAB alarm.");
4657 } 4723 }
4658 4724
4659#endif 4725#endif
4660 KMessageBox::information( this, message); 4726 KMessageBox::information( this, message);
4661} 4727}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index a5f230a..51eb1d4 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -11,384 +11,388 @@
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#include <qscrollbar.h> 33#include <qscrollbar.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qtopia/ir.h> 35#include <qtopia/ir.h>
36#else 36#else
37#define Ir char 37#define Ir char
38#endif 38#endif
39#include <libkcal/calendar.h> 39#include <libkcal/calendar.h>
40#include <libkcal/scheduler.h> 40#include <libkcal/scheduler.h>
41#include <libkcal/calendarresources.h> 41#include <libkcal/calendarresources.h>
42#include <libkcal/resourcecalendar.h> 42#include <libkcal/resourcecalendar.h>
43#include <KDGanttMinimizeSplitter.h> 43#include <KDGanttMinimizeSplitter.h>
44 44
45#include <korganizer/calendarviewbase.h> 45#include <korganizer/calendarviewbase.h>
46 46
47#include <ksyncmanager.h> 47#include <ksyncmanager.h>
48//#include <koprefs.h> 48//#include <koprefs.h>
49 49
50class QWidgetStack; 50class QWidgetStack;
51class QSplitter; 51class QSplitter;
52class KopiCalendarFile; 52class KopiCalendarFile;
53class CalPrinter; 53class CalPrinter;
54class KOFilterView; 54class KOFilterView;
55class KOCalEditView; 55class KOCalEditView;
56class KOViewManager; 56class KOViewManager;
57class KODialogManager; 57class KODialogManager;
58class KOTodoView; 58class KOTodoView;
59class KDateNavigator; 59class KDateNavigator;
60class DateNavigatorContainer; 60class DateNavigatorContainer;
61class DateNavigator; 61class DateNavigator;
62class KOIncidenceEditor; 62class KOIncidenceEditor;
63class KDatePicker; 63class KDatePicker;
64class ResourceView; 64class ResourceView;
65class KOEventEditor; 65class KOEventEditor;
66class KOTodoEditor ; 66class KOTodoEditor ;
67class KOEventViewerDialog; 67class KOEventViewerDialog;
68class KOBeamPrefs; 68class KOBeamPrefs;
69class KSyncProfile; 69class KSyncProfile;
70class AlarmDialog; 70class AlarmDialog;
71class KCal::Attendee; 71class KCal::Attendee;
72 72
73namespace KCal { class FileStorage; } 73namespace KCal { class FileStorage; }
74 74
75using namespace KCal; 75using namespace KCal;
76 76
77/** 77/**
78 This is the main calendar widget. It provides the different vies on t he 78 This is the main calendar widget. It provides the different vies on t he
79 calendar data as well as the date navigator. It also handles synchronisation 79 calendar data as well as the date navigator. It also handles synchronisation
80 of the different views and controls the different dialogs like preferences, 80 of the different views and controls the different dialogs like preferences,
81 event editor, search dialog etc. 81 event editor, search dialog etc.
82 82
83 @short main calendar view widget 83 @short main calendar view widget
84 @author Cornelius Schumacher 84 @author Cornelius Schumacher
85*/ 85*/
86 86
87#include <qtextbrowser.h> 87#include <qtextbrowser.h>
88#include <qtextcodec.h> 88#include <qtextcodec.h>
89 89
90class MissedAlarmTextBrowser : public QTextBrowser { 90class MissedAlarmTextBrowser : public QTextBrowser {
91 Q_OBJECT 91 Q_OBJECT
92 public: 92 public:
93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start); 93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start);
94 ~MissedAlarmTextBrowser(); 94 ~MissedAlarmTextBrowser();
95 void setSource(const QString & n); 95 void setSource(const QString & n);
96 96
97 private: 97 private:
98 Incidence * getNextInc(QDateTime start ); 98 Incidence * getNextInc(QDateTime start );
99 QPtrList<Incidence> mAlarms; 99 QPtrList<Incidence> mAlarms;
100 signals: 100 signals:
101 void showIncidence( QString uid); 101 void showIncidence( QString uid);
102}; 102};
103 103
104 104
105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
106{ 106{
107 Q_OBJECT 107 Q_OBJECT
108 public: 108 public:
109 /** 109 /**
110 Constructs a new calendar view widget. 110 Constructs a new calendar view widget.
111 111
112 @param calendar calendar document 112 @param calendar calendar document
113 @param parent parent window 113 @param parent parent window
114 @param name Qt internal widget object name 114 @param name Qt internal widget object name
115 */ 115 */
116 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 116 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
117 const char *name = 0 ); 117 const char *name = 0 );
118 CalendarView( Calendar *calendar, QWidget *parent = 0, 118 CalendarView( Calendar *calendar, QWidget *parent = 0,
119 const char *name = 0 ); 119 const char *name = 0 );
120 virtual ~CalendarView(); 120 virtual ~CalendarView();
121 121
122 Calendar *calendar() { return mCalendar; } 122 Calendar *calendar() { return mCalendar; }
123 123
124 KOViewManager *viewManager(); 124 KOViewManager *viewManager();
125 KODialogManager *dialogManager(); 125 KODialogManager *dialogManager();
126 126
127 QDate startDate(); 127 QDate startDate();
128 QDate endDate(); 128 QDate endDate();
129 129
130 QWidgetStack *viewStack(); 130 QWidgetStack *viewStack();
131 QWidget *leftFrame(); 131 QWidget *leftFrame();
132 132
133 DateNavigator *dateNavigator(); 133 DateNavigator *dateNavigator();
134 KDateNavigator *dateNavigatorWidget(); 134 KDateNavigator *dateNavigatorWidget();
135 135
136 void addView(KOrg::BaseView *); 136 void addView(KOrg::BaseView *);
137 void showView(KOrg::BaseView *); 137 void showView(KOrg::BaseView *);
138 KOEventViewerDialog* getEventViewerDialog(); 138 KOEventViewerDialog* getEventViewerDialog();
139 Incidence *currentSelection(); 139 Incidence *currentSelection();
140 void checkSuspendAlarm(); 140 void checkSuspendAlarm();
141 141
142 signals: 142 signals:
143 void save (); 143 void save ();
144 void saveStopTimer (); 144 void saveStopTimer ();
145 void tempDisableBR(bool); 145 void tempDisableBR(bool);
146 /** This todo has been modified */ 146 /** This todo has been modified */
147 void todoModified(Todo *, int); 147 void todoModified(Todo *, int);
148 148
149 /** when change is made to options dialog, the topwidget will catch this 149 /** when change is made to options dialog, the topwidget will catch this
150 * and emit this signal which notifies all widgets which have registered 150 * and emit this signal which notifies all widgets which have registered
151 * for notification to update their settings. */ 151 * for notification to update their settings. */
152 void configChanged(); 152 void configChanged();
153 /** emitted when the topwidget is closing down, so that any attached 153 /** emitted when the topwidget is closing down, so that any attached
154 child windows can also close. */ 154 child windows can also close. */
155 void closingDown(); 155 void closingDown();
156 /** emitted right before we die */ 156 /** emitted right before we die */
157 void closed(QWidget *); 157 void closed(QWidget *);
158 158
159 /** Emitted when state of modified flag changes */ 159 /** Emitted when state of modified flag changes */
160 void modifiedChanged(bool); 160 void modifiedChanged(bool);
161 void signalmodified(); 161 void signalmodified();
162 162
163 /** Emitted when state of read-only flag changes */ 163 /** Emitted when state of read-only flag changes */
164 void readOnlyChanged(bool); 164 void readOnlyChanged(bool);
165 165
166 /** Emitted when the unit of navigation changes */ 166 /** Emitted when the unit of navigation changes */
167 void changeNavStringPrev(const QString &); 167 void changeNavStringPrev(const QString &);
168 void changeNavStringNext(const QString &); 168 void changeNavStringNext(const QString &);
169 169
170 /** Emitted when state of events selection has changed and user is organizer*/ 170 /** Emitted when state of events selection has changed and user is organizer*/
171 void organizerEventsSelected(bool); 171 void organizerEventsSelected(bool);
172 /** Emitted when state of events selection has changed and user is attendee*/ 172 /** Emitted when state of events selection has changed and user is attendee*/
173 void groupEventsSelected(bool); 173 void groupEventsSelected(bool);
174 /** 174 /**
175 Emitted when an incidence gets selected. If the selection is cleared the 175 Emitted when an incidence gets selected. If the selection is cleared the
176 signal is emitted with 0 as argument. 176 signal is emitted with 0 as argument.
177 */ 177 */
178 void incidenceSelected( Incidence * ); 178 void incidenceSelected( Incidence * );
179 /** Emitted, when a todoitem is selected or deselected. */ 179 /** Emitted, when a todoitem is selected or deselected. */
180 void todoSelected( bool ); 180 void todoSelected( bool );
181 181
182 /** 182 /**
183 Emitted, when clipboard content changes. Parameter indicates if paste 183 Emitted, when clipboard content changes. Parameter indicates if paste
184 is possible or not. 184 is possible or not.
185 */ 185 */
186 void pasteEnabled(bool); 186 void pasteEnabled(bool);
187 187
188 /** Emitted, when the number of incoming messages has changed. */ 188 /** Emitted, when the number of incoming messages has changed. */
189 void numIncomingChanged(int); 189 void numIncomingChanged(int);
190 190
191 /** Emitted, when the number of outgoing messages has changed. */ 191 /** Emitted, when the number of outgoing messages has changed. */
192 void numOutgoingChanged(int); 192 void numOutgoingChanged(int);
193 193
194 /** Send status message, which can e.g. be displayed in the status bar. */ 194 /** Send status message, which can e.g. be displayed in the status bar. */
195 void statusMessage(const QString &); 195 void statusMessage(const QString &);
196 196
197 void calendarViewExpanded( bool ); 197 void calendarViewExpanded( bool );
198 void updateSearchDialog(); 198 void updateSearchDialog();
199 void filtersUpdated(); 199 void filtersUpdated();
200 200
201 201
202 public slots: 202 public slots:
203 void nextConflict( bool all, bool allday );
204 void conflictAll();
205 void conflictAllday();
206 void conflictNotAll();
203 void setCalReadOnly( int id, bool readO ); 207 void setCalReadOnly( int id, bool readO );
204 void checkAlarms(); 208 void checkAlarms();
205 void checkFiles(); 209 void checkFiles();
206 void slotprintSelInc(); 210 void slotprintSelInc();
207 void showNextAlarms(); 211 void showNextAlarms();
208 void showOpenError(); 212 void showOpenError();
209 void watchSavedFile(); 213 void watchSavedFile();
210 void recheckTimerAlarm(); 214 void recheckTimerAlarm();
211 void checkNextTimerAlarm(); 215 void checkNextTimerAlarm();
212 void addAlarm(const QDateTime &qdt, const QString &noti ); 216 void addAlarm(const QDateTime &qdt, const QString &noti );
213 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 217 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
214 void removeAlarm(const QDateTime &qdt, const QString &noti ); 218 void removeAlarm(const QDateTime &qdt, const QString &noti );
215 219
216 /** options dialog made a changed to the configuration. we catch this 220 /** options dialog made a changed to the configuration. we catch this
217 * and notify all widgets which need to update their configuration. */ 221 * and notify all widgets which need to update their configuration. */
218 void updateConfig(); 222 void updateConfig();
219 223
220 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 224 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
221 const QStringList& anniversaryList, const QStringList& realNameList, 225 const QStringList& anniversaryList, const QStringList& realNameList,
222 const QStringList& emailList, const QStringList& assembledNameList, 226 const QStringList& emailList, const QStringList& assembledNameList,
223 const QStringList& uidList); 227 const QStringList& uidList);
224 228
225 /** 229 /**
226 Load calendar from file \a filename. If \a merge is true, load 230 Load calendar from file \a filename. If \a merge is true, load
227 calendar into existing one, if it is false, clear calendar, before 231 calendar into existing one, if it is false, clear calendar, before
228 loading. Return true, if calendar could be successfully loaded. 232 loading. Return true, if calendar could be successfully loaded.
229 */ 233 */
230 bool openCalendar(QString filename, bool merge=false); 234 bool openCalendar(QString filename, bool merge=false);
231 bool loadCalendars(); 235 bool loadCalendars();
232 bool saveCalendars(); 236 bool saveCalendars();
233 bool restoreCalendarSettings(); 237 bool restoreCalendarSettings();
234 bool addCalendar( KopiCalendarFile * ); 238 bool addCalendar( KopiCalendarFile * );
235 void addCalendarId( int id ); 239 void addCalendarId( int id );
236 bool syncCalendar(QString filename,int mode = 0 ); 240 bool syncCalendar(QString filename,int mode = 0 );
237 241
238 /** 242 /**
239 Save calendar data to file. Return true if calendar could be 243 Save calendar data to file. Return true if calendar could be
240 successfully saved. 244 successfully saved.
241 */ 245 */
242 bool saveCalendar(QString filename); 246 bool saveCalendar(QString filename);
243 247
244 /** 248 /**
245 Close calendar. Clear calendar data and reset views to display an empty 249 Close calendar. Clear calendar data and reset views to display an empty
246 calendar. 250 calendar.
247 */ 251 */
248 void closeCalendar(); 252 void closeCalendar();
249 253
250 /** Archive old events of calendar */ 254 /** Archive old events of calendar */
251 void archiveCalendar(); 255 void archiveCalendar();
252 256
253 void showIncidence(); 257 void showIncidence();
254 void editIncidence(); 258 void editIncidence();
255 void editIncidenceDescription(); 259 void editIncidenceDescription();
256 void deleteIncidence(); 260 void deleteIncidence();
257 void cloneIncidence(); 261 void cloneIncidence();
258 void moveIncidence(); 262 void moveIncidence();
259 void beamIncidence(); 263 void beamIncidence();
260 void toggleCancelIncidence(); 264 void toggleCancelIncidence();
261 265
262 /** create an editeventwin with supplied date/time, and if bool is true, 266 /** create an editeventwin with supplied date/time, and if bool is true,
263 * make the event take all day. */ 267 * make the event take all day. */
264 void newEvent(QDateTime, QDateTime, bool allDay ); 268 void newEvent(QDateTime, QDateTime, bool allDay );
265 void newEvent(QDateTime, QDateTime); 269 void newEvent(QDateTime, QDateTime);
266 void newEvent(QDateTime fh); 270 void newEvent(QDateTime fh);
267 void newEvent(QDate dt); 271 void newEvent(QDate dt);
268 /** create new event without having a date hint. Takes current date as 272 /** create new event without having a date hint. Takes current date as
269 default hint. */ 273 default hint. */
270 void newEvent(); 274 void newEvent();
271 void newFloatingEvent(); 275 void newFloatingEvent();
272 276
273 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 277 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
274 void showIncidence(Incidence *); 278 void showIncidence(Incidence *);
275 void showIncidence(QString uid); 279 void showIncidence(QString uid);
276 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 280 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
277 void editIncidence(Incidence *); 281 void editIncidence(Incidence *);
278 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 282 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
279 void deleteIncidence(Incidence *); 283 void deleteIncidence(Incidence *);
280 void cloneIncidence(Incidence *); 284 void cloneIncidence(Incidence *);
281 void cancelIncidence(Incidence *); 285 void cancelIncidence(Incidence *);
282 /** Create an editor for the supplied event. */ 286 /** Create an editor for the supplied event. */
283 void editEvent(Event *); 287 void editEvent(Event *);
284 /** Delete the supplied event. */ 288 /** Delete the supplied event. */
285 void deleteEvent(Event *); 289 void deleteEvent(Event *);
286 /** Delete the event with the given unique ID. Returns false, if event wasn't 290 /** Delete the event with the given unique ID. Returns false, if event wasn't
287 found. */ 291 found. */
288 bool deleteEvent(const QString &uid); 292 bool deleteEvent(const QString &uid);
289 /** Create a read-only viewer dialog for the supplied event. */ 293 /** Create a read-only viewer dialog for the supplied event. */
290 void showEvent(Event *); 294 void showEvent(Event *);
291 295
292 void editJournal(Journal *); 296 void editJournal(Journal *);
293 void showJournal(Journal *); 297 void showJournal(Journal *);
294 void deleteJournal(Journal *); 298 void deleteJournal(Journal *);
295 /** Create an editor dialog for a todo */ 299 /** Create an editor dialog for a todo */
296 void editTodo(Todo *); 300 void editTodo(Todo *);
297 /** Create a read-only viewer dialog for the supplied todo */ 301 /** Create a read-only viewer dialog for the supplied todo */
298 void showTodo(Todo *); 302 void showTodo(Todo *);
299 /** create new todo */ 303 /** create new todo */
300 void newTodo(); 304 void newTodo();
301 void newTodoDateTime(QDateTime, bool allday); 305 void newTodoDateTime(QDateTime, bool allday);
302 /** create new todo with a parent todo */ 306 /** create new todo with a parent todo */
303 void newSubTodo(); 307 void newSubTodo();
304 /** create new todo with a parent todo */ 308 /** create new todo with a parent todo */
305 void newSubTodo(Todo *); 309 void newSubTodo(Todo *);
306 /** Delete todo */ 310 /** Delete todo */
307 void deleteTodo(Todo *); 311 void deleteTodo(Todo *);
308 312
309 313
310 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 314 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
311 * emitted as result. */ 315 * emitted as result. */
312 void checkClipboard(); 316 void checkClipboard();
313 317
314 /** using the KConfig associated with the kapp variable, read in the 318 /** using the KConfig associated with the kapp variable, read in the
315 * settings from the config file. 319 * settings from the config file.
316 */ 320 */
317 void readSettings(); 321 void readSettings();
318 322
319 /** write current state to config file. */ 323 /** write current state to config file. */
320 void writeSettings(); 324 void writeSettings();
321 325
322 /** read settings for calendar filters */ 326 /** read settings for calendar filters */
323 void readFilterSettings(KConfig *config); 327 void readFilterSettings(KConfig *config);
324 328
325 /** write settings for calendar filters */ 329 /** write settings for calendar filters */
326 void writeFilterSettings(KConfig *config); 330 void writeFilterSettings(KConfig *config);
327 331
328 /** passes on the message that an event has changed to the currently 332 /** passes on the message that an event has changed to the currently
329 * activated view so that it can make appropriate display changes. */ 333 * activated view so that it can make appropriate display changes. */
330 void changeEventDisplay(Event *, int); 334 void changeEventDisplay(Event *, int);
331 void changeIncidenceDisplay(Incidence *, int); 335 void changeIncidenceDisplay(Incidence *, int);
332 void changeTodoDisplay(Todo *, int); 336 void changeTodoDisplay(Todo *, int);
333 337
334 void eventAdded(Event *); 338 void eventAdded(Event *);
335 void eventChanged(Event *); 339 void eventChanged(Event *);
336 void eventToBeDeleted(Event *); 340 void eventToBeDeleted(Event *);
337 void eventDeleted(); 341 void eventDeleted();
338 342
339 void todoAdded(Todo *); 343 void todoAdded(Todo *);
340 void todoChanged(Todo *); 344 void todoChanged(Todo *);
341 void todoToBeDeleted(Todo *); 345 void todoToBeDeleted(Todo *);
342 void todoDeleted(); 346 void todoDeleted();
343 347
344 void updateView(const QDate &start, const QDate &end); 348 void updateView(const QDate &start, const QDate &end);
345 void updateView(); 349 void updateView();
346 void clearAllViews(); 350 void clearAllViews();
347 351
348 /** Full update of visible todo views */ 352 /** Full update of visible todo views */
349 void updateTodoViews(); 353 void updateTodoViews();
350 354
351 void updateUnmanagedViews(); 355 void updateUnmanagedViews();
352 356
353 /** cut the current appointment to the clipboard */ 357 /** cut the current appointment to the clipboard */
354 void edit_cut(); 358 void edit_cut();
355 359
356 /** copy the current appointment(s) to the clipboard */ 360 /** copy the current appointment(s) to the clipboard */
357 void edit_copy(); 361 void edit_copy();
358 362
359 /** paste the current vobject(s) in the clipboard buffer into calendar */ 363 /** paste the current vobject(s) in the clipboard buffer into calendar */
360 void edit_paste(); 364 void edit_paste();
361 365
362 /** edit viewing and configuration options. */ 366 /** edit viewing and configuration options. */
363 void edit_options(); 367 void edit_options();
364 void edit_global_options(); 368 void edit_global_options();
365 /** 369 /**
366 Functions for printing, previewing a print, and setting up printing 370 Functions for printing, previewing a print, and setting up printing
367 parameters. 371 parameters.
368 */ 372 */
369 void print(); 373 void print();
370 void printSetup(); 374 void printSetup();
371 void printPreview(); 375 void printPreview();
372 376
373 /** Export as iCalendar file */ 377 /** Export as iCalendar file */
374 void exportICalendar(); 378 void exportICalendar();
375 379
376 /** Export as vCalendar file */ 380 /** Export as vCalendar file */
377 bool exportVCalendar( QString fn); 381 bool exportVCalendar( QString fn);
378 382
379 /** pop up a dialog to show an existing appointment. */ 383 /** pop up a dialog to show an existing appointment. */
380 void appointment_show(); 384 void appointment_show();
381 /** 385 /**
382 * pop up an Appointment Dialog to edit an existing appointment.Get 386 * pop up an Appointment Dialog to edit an existing appointment.Get
383 * information on the appointment from the list of unique IDs that is 387 * information on the appointment from the list of unique IDs that is
384 * currently in the View, called currIds. 388 * currently in the View, called currIds.
385 */ 389 */
386 void appointment_edit(); 390 void appointment_edit();
387 /** 391 /**
388 * pop up dialog confirming deletion of currently selected event in the 392 * pop up dialog confirming deletion of currently selected event in the
389 * View. 393 * View.
390 */ 394 */
391 void appointment_delete(); 395 void appointment_delete();
392 396
393 /** mails the currently selected event to a particular user as a vCalendar 397 /** mails the currently selected event to a particular user as a vCalendar
394 attachment. */ 398 attachment. */
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 9c2ac82..bfae1b5 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -470,726 +470,744 @@ void MainWindow::toggleBeamReceive()
470 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 470 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
471 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 471 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
472#endif 472#endif
473} 473}
474void MainWindow::showMaximized () 474void MainWindow::showMaximized ()
475{ 475{
476#ifndef DESKTOP_VERSION 476#ifndef DESKTOP_VERSION
477 if ( ! globalFlagBlockStartup ) 477 if ( ! globalFlagBlockStartup )
478 if ( mClosed ) 478 if ( mClosed )
479 mView->goToday(); 479 mView->goToday();
480#endif 480#endif
481 QWidget::showMaximized () ; 481 QWidget::showMaximized () ;
482 mClosed = false; 482 mClosed = false;
483} 483}
484void MainWindow::closeEvent( QCloseEvent* ce ) 484void MainWindow::closeEvent( QCloseEvent* ce )
485{ 485{
486 486
487 487
488 488
489 if ( ! KOPrefs::instance()->mAskForQuit ) { 489 if ( ! KOPrefs::instance()->mAskForQuit ) {
490 saveOnClose(); 490 saveOnClose();
491 mClosed = true; 491 mClosed = true;
492 ce->accept(); 492 ce->accept();
493 return; 493 return;
494 494
495 } 495 }
496 496
497 switch( QMessageBox::information( this, "KO/Pi", 497 switch( QMessageBox::information( this, "KO/Pi",
498 i18n("Do you really want\nto close KO/Pi?"), 498 i18n("Do you really want\nto close KO/Pi?"),
499 i18n("Close"), i18n("No"), 499 i18n("Close"), i18n("No"),
500 0, 0 ) ) { 500 0, 0 ) ) {
501 case 0: 501 case 0:
502 saveOnClose(); 502 saveOnClose();
503 mClosed = true; 503 mClosed = true;
504 ce->accept(); 504 ce->accept();
505 break; 505 break;
506 case 1: 506 case 1:
507 ce->ignore(); 507 ce->ignore();
508 break; 508 break;
509 case 2: 509 case 2:
510 510
511 default: 511 default:
512 break; 512 break;
513 } 513 }
514 514
515 515
516} 516}
517 517
518void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 518void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
519{ 519{
520 QDataStream stream( data, IO_ReadOnly ); 520 QDataStream stream( data, IO_ReadOnly );
521 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 521 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
522 //QString datamess; 522 //QString datamess;
523 //qDebug("message "); 523 //qDebug("message ");
524 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 524 qDebug("KO: QCOP message received: %s ", cmsg.data() );
525 525
526 if ( cmsg == "setDocument(QString)" ) { 526 if ( cmsg == "setDocument(QString)" ) {
527 QDataStream stream( data, IO_ReadOnly ); 527 QDataStream stream( data, IO_ReadOnly );
528 QString fileName; 528 QString fileName;
529 stream >> fileName; 529 stream >> fileName;
530 //qDebug("filename %s ", fileName.latin1()); 530 //qDebug("filename %s ", fileName.latin1());
531 showMaximized(); 531 showMaximized();
532 raise(); 532 raise();
533 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 533 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
534 mSyncManager->slotSyncMenu( 1002 ); 534 mSyncManager->slotSyncMenu( 1002 );
535 return; 535 return;
536 } 536 }
537 537
538 if ( cmsg == "-writeFile" ) { 538 if ( cmsg == "-writeFile" ) {
539 // I made from the "-writeFile" an "-writeAlarm" 539 // I made from the "-writeFile" an "-writeAlarm"
540 mView->viewManager()->showWhatsNextView(); 540 mView->viewManager()->showWhatsNextView();
541 mCalendar->checkAlarmForIncidence( 0, true); 541 mCalendar->checkAlarmForIncidence( 0, true);
542 showMaximized(); 542 showMaximized();
543 raise(); 543 raise();
544 return; 544 return;
545 545
546 } 546 }
547 if ( cmsg == "-writeFileSilent" ) { 547 if ( cmsg == "-writeFileSilent" ) {
548 // I made from the "-writeFile" an "-writeAlarm" 548 // I made from the "-writeFile" an "-writeAlarm"
549 // mView->viewManager()->showWhatsNextView(); 549 // mView->viewManager()->showWhatsNextView();
550 mCalendar->checkAlarmForIncidence( 0, true); 550 mCalendar->checkAlarmForIncidence( 0, true);
551 //showMaximized(); 551 //showMaximized();
552 //raise(); 552 //raise();
553 hide(); 553 hide();
554 return; 554 return;
555 } 555 }
556 if ( cmsg == "-newCountdown" ) { 556 if ( cmsg == "-newCountdown" ) {
557 qDebug("newCountdown "); 557 qDebug("newCountdown ");
558 558
559 } 559 }
560 QString msg ; 560 QString msg ;
561 QString allmsg = cmsg; 561 QString allmsg = cmsg;
562 while ( allmsg.length() > 0 ) { 562 while ( allmsg.length() > 0 ) {
563 int nextC = allmsg.find( "-", 1 ); 563 int nextC = allmsg.find( "-", 1 );
564 if ( nextC == -1 ) { 564 if ( nextC == -1 ) {
565 msg = allmsg; 565 msg = allmsg;
566 allmsg = ""; 566 allmsg = "";
567 } else{ 567 } else{
568 msg = allmsg.left( nextC ); 568 msg = allmsg.left( nextC );
569 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 569 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
570 } 570 }
571 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 571 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
572 if ( msg == "-newEvent" ) { 572 if ( msg == "-newEvent" ) {
573 QTimer::singleShot( 0, mView, SLOT ( newEvent())); 573 QTimer::singleShot( 0, mView, SLOT ( newEvent()));
574 } 574 }
575 if ( msg == "-newTodo" ) { 575 if ( msg == "-newTodo" ) {
576 QTimer::singleShot( 0, mView, SLOT ( newTodo())); 576 QTimer::singleShot( 0, mView, SLOT ( newTodo()));
577 } 577 }
578 if ( msg == "-showWN" ) { 578 if ( msg == "-showWN" ) {
579 mView->viewManager()->showWhatsNextView(); 579 mView->viewManager()->showWhatsNextView();
580 } 580 }
581 if ( msg == "-showTodo" ) { 581 if ( msg == "-showTodo" ) {
582 mView->viewManager()->showTodoView(); 582 mView->viewManager()->showTodoView();
583 } 583 }
584 if ( msg == "-showList" ) { 584 if ( msg == "-showList" ) {
585 mView->viewManager()->showListView(); 585 mView->viewManager()->showListView();
586 } 586 }
587 else if ( msg == "-showDay" ) { 587 else if ( msg == "-showDay" ) {
588 mView->viewManager()->showDayView(); 588 mView->viewManager()->showDayView();
589 } 589 }
590 else if ( msg == "-showWWeek" ) { 590 else if ( msg == "-showWWeek" ) {
591 mView->viewManager()->showWorkWeekView(); 591 mView->viewManager()->showWorkWeekView();
592 } 592 }
593 else if ( msg == "-ringSync" ) { 593 else if ( msg == "-ringSync" ) {
594 QTimer::singleShot( 0, this, SLOT (startMultiSync())); 594 QTimer::singleShot( 0, this, SLOT (startMultiSync()));
595 } 595 }
596 else if ( msg == "-showWeek" ) { 596 else if ( msg == "-showWeek" ) {
597 mView->viewManager()->showWeekView(); 597 mView->viewManager()->showWeekView();
598 } 598 }
599 else if ( msg == "-showTodo" ) { 599 else if ( msg == "-showTodo" ) {
600 mView->viewManager()->showTodoView(); 600 mView->viewManager()->showTodoView();
601 } 601 }
602 else if ( msg == "-showJournal" ) { 602 else if ( msg == "-showJournal" ) {
603 mView->dateNavigator()->selectDates( 1 ); 603 mView->dateNavigator()->selectDates( 1 );
604 mView->dateNavigator()->selectToday(); 604 mView->dateNavigator()->selectToday();
605 mView->viewManager()->showJournalView(); 605 mView->viewManager()->showJournalView();
606 } 606 }
607 else if ( msg == "-showKO" ) { 607 else if ( msg == "-showKO" ) {
608 mView->viewManager()->showNextXView(); 608 mView->viewManager()->showNextXView();
609 } 609 }
610 else if ( msg == "-showWNext" ) { 610 else if ( msg == "-showWNext" ) {
611 mView->viewManager()->showWhatsNextView(); 611 mView->viewManager()->showWhatsNextView();
612 } 612 }
613 else if ( msg == "nextView()" ) { 613 else if ( msg == "nextView()" ) {
614 mView->viewManager()->showNextView(); 614 mView->viewManager()->showNextView();
615 } 615 }
616 else if ( msg == "-showNextXView" ) { 616 else if ( msg == "-showNextXView" ) {
617 mView->viewManager()->showNextXView(); 617 mView->viewManager()->showNextXView();
618 } 618 }
619 619
620 620
621 } 621 }
622 622
623 showMaximized(); 623 showMaximized();
624 raise(); 624 raise();
625} 625}
626void MainWindow::startMultiSync() 626void MainWindow::startMultiSync()
627{ 627{
628 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 628 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
629 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"), 629 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"),
630 question, 630 question,
631 i18n("Yes"), i18n("No"), 631 i18n("Yes"), i18n("No"),
632 0, 0 ) != 0 ) { 632 0, 0 ) != 0 ) {
633 setCaption(i18n("Aborted! Nothing synced!")); 633 setCaption(i18n("Aborted! Nothing synced!"));
634 return; 634 return;
635 } 635 }
636 mSyncManager->multiSync( false ); 636 mSyncManager->multiSync( false );
637#ifndef DESKTOP_VERSION 637#ifndef DESKTOP_VERSION
638 QCopEnvelope e("QPE/Application/kapi", "doRingSync"); 638 QCopEnvelope e("QPE/Application/kapi", "doRingSync");
639#endif 639#endif
640} 640}
641QPixmap MainWindow::loadPixmap( QString name ) 641QPixmap MainWindow::loadPixmap( QString name )
642{ 642{
643 return SmallIcon( name ); 643 return SmallIcon( name );
644 644
645} 645}
646void MainWindow::setUsesBigPixmaps ( bool b ) 646void MainWindow::setUsesBigPixmaps ( bool b )
647{ 647{
648 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b); 648 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b);
649 if ( b ) 649 if ( b )
650 qDebug("KO: BigPixmaps are not supported "); 650 qDebug("KO: BigPixmaps are not supported ");
651} 651}
652void MainWindow::initActions() 652void MainWindow::initActions()
653{ 653{
654 //KOPrefs::instance()->mShowFullMenu 654 //KOPrefs::instance()->mShowFullMenu
655 iconToolBar->clear(); 655 iconToolBar->clear();
656 KOPrefs *p = KOPrefs::instance(); 656 KOPrefs *p = KOPrefs::instance();
657 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 657 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
658 658
659 QPopupMenu *viewMenu = new QPopupMenu( this ); 659 QPopupMenu *viewMenu = new QPopupMenu( this );
660 QPopupMenu *actionMenu = new QPopupMenu( this ); 660 QPopupMenu *actionMenu = new QPopupMenu( this );
661 mCurrentItemMenu = new QPopupMenu ( this ); 661 mCurrentItemMenu = new QPopupMenu ( this );
662 QPopupMenu *nextConflictMenu = new QPopupMenu ( this );
662 QPopupMenu *importMenu = new QPopupMenu( this ); 663 QPopupMenu *importMenu = new QPopupMenu( this );
663 QPopupMenu *importMenu_X = new QPopupMenu( this ); 664 QPopupMenu *importMenu_X = new QPopupMenu( this );
664 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 665 QPopupMenu *exportMenu_X = new QPopupMenu( this );
665 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 666 QPopupMenu *beamMenu_X = new QPopupMenu( this );
666 selectFilterMenu = new QPopupMenu( this ); 667 selectFilterMenu = new QPopupMenu( this );
667 selectFilterMenu->setCheckable( true ); 668 selectFilterMenu->setCheckable( true );
668 syncMenu = new QPopupMenu( this ); 669 syncMenu = new QPopupMenu( this );
669 configureAgendaMenu = new QPopupMenu( this ); 670 configureAgendaMenu = new QPopupMenu( this );
670 configureToolBarMenu = new QPopupMenu( this ); 671 configureToolBarMenu = new QPopupMenu( this );
671 QPopupMenu *helpMenu = new QPopupMenu( this ); 672 QPopupMenu *helpMenu = new QPopupMenu( this );
672 QIconSet icon; 673 QIconSet icon;
673 int pixWid = 22, pixHei = 22; 674 int pixWid = 22, pixHei = 22;
674 QString pathString = ""; 675 QString pathString = "";
675 if ( !p->mToolBarMiniIcons ) { 676 if ( !p->mToolBarMiniIcons ) {
676 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) { 677 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) {
677 pathString += "icons16/"; 678 pathString += "icons16/";
678 pixWid = 18; pixHei = 16; 679 pixWid = 18; pixHei = 16;
679 } 680 }
680 } else { 681 } else {
681 pathString += "iconsmini/"; 682 pathString += "iconsmini/";
682 pixWid = 18; pixHei = 16; 683 pixWid = 18; pixHei = 16;
683 } 684 }
684 if ( KOPrefs::instance()->mShowFullMenu ) { 685 if ( KOPrefs::instance()->mShowFullMenu ) {
685 QMenuBar *menuBar1; 686 QMenuBar *menuBar1;
686 menuBar1 = menuBar(); 687 menuBar1 = menuBar();
687 menuBar1->insertItem( i18n("File"), importMenu ); 688 menuBar1->insertItem( i18n("File"), importMenu );
688 menuBar1->insertItem( i18n("View"), viewMenu ); 689 menuBar1->insertItem( i18n("View"), viewMenu );
689 menuBar1->insertItem( i18n("Edit"), mCurrentItemMenu ); 690 menuBar1->insertItem( i18n("Edit"), mCurrentItemMenu );
690 menuBar1->insertItem( i18n("Action"), actionMenu ); 691 menuBar1->insertItem( i18n("Action"), actionMenu );
691#ifdef DESKTOP_VERSION 692#ifdef DESKTOP_VERSION
692 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 693 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
693 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 694 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
694#else 695#else
695 menuBar1->insertItem( i18n("Sync"), syncMenu ); 696 menuBar1->insertItem( i18n("Sync"), syncMenu );
696 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 697 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
697#endif 698#endif
698 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 699 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
699 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 700 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
700 menuBar1->insertItem( i18n("Help"), helpMenu ); 701 menuBar1->insertItem( i18n("Help"), helpMenu );
701 } else { 702 } else {
702 QPEMenuBar *menuBar1; 703 QPEMenuBar *menuBar1;
703 menuBar1 = new QPEMenuBar( iconToolBar ); 704 menuBar1 = new QPEMenuBar( iconToolBar );
704 QPopupMenu *menuBar = new QPopupMenu( this ); 705 QPopupMenu *menuBar = new QPopupMenu( this );
705 icon = loadPixmap( pathString + "z_menu" ); 706 icon = loadPixmap( pathString + "z_menu" );
706 menuBar1->insertItem( icon.pixmap(), menuBar); 707 menuBar1->insertItem( icon.pixmap(), menuBar);
707 //menuBar1->insertItem( i18n("ME"), menuBar); 708 //menuBar1->insertItem( i18n("ME"), menuBar);
708 menuBar->insertItem( i18n("File"), importMenu ); 709 menuBar->insertItem( i18n("File"), importMenu );
709 menuBar->insertItem( i18n("View"), viewMenu ); 710 menuBar->insertItem( i18n("View"), viewMenu );
710 menuBar->insertItem( i18n("Edit"), mCurrentItemMenu ); 711 menuBar->insertItem( i18n("Edit"), mCurrentItemMenu );
711 menuBar->insertItem( i18n("Action"), actionMenu ); 712 menuBar->insertItem( i18n("Action"), actionMenu );
712 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 713 menuBar->insertItem( i18n("Synchronize"), syncMenu );
713 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 714 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
714 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 715 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
715 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 716 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
716 menuBar->insertItem( i18n("Help"), helpMenu ); 717 menuBar->insertItem( i18n("Help"), helpMenu );
717 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 718 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
718 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 719 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
719 } 720 }
720 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 721 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
721 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 722 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
722 723
723 724
724 mWeekBgColor = iconToolBar->backgroundColor(); 725 mWeekBgColor = iconToolBar->backgroundColor();
725 mWeekPixmap.resize( pixWid , pixHei ); 726 mWeekPixmap.resize( pixWid , pixHei );
726 mWeekPixmap.fill( mWeekBgColor ); 727 mWeekPixmap.fill( mWeekBgColor );
727 icon = mWeekPixmap; 728 icon = mWeekPixmap;
728 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 729 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
729 if ( p-> mShowIconWeekNum ) 730 if ( p-> mShowIconWeekNum )
730 mWeekAction->addTo( iconToolBar ); 731 mWeekAction->addTo( iconToolBar );
731 mWeekFont = font(); 732 mWeekFont = font();
732 733
733 int fontPoint = mWeekFont.pointSize(); 734 int fontPoint = mWeekFont.pointSize();
734 QFontMetrics f( mWeekFont ); 735 QFontMetrics f( mWeekFont );
735 int fontWid = f.width( "30" ); 736 int fontWid = f.width( "30" );
736 while ( fontWid > pixWid ) { 737 while ( fontWid > pixWid ) {
737 --fontPoint; 738 --fontPoint;
738 mWeekFont.setPointSize( fontPoint ); 739 mWeekFont.setPointSize( fontPoint );
739 QFontMetrics f( mWeekFont ); 740 QFontMetrics f( mWeekFont );
740 fontWid = f.width( "30" ); 741 fontWid = f.width( "30" );
741 //qDebug("dec-- "); 742 //qDebug("dec-- ");
742 } 743 }
743 744
744 connect( mWeekAction, SIGNAL( activated() ), 745 connect( mWeekAction, SIGNAL( activated() ),
745 this, SLOT( weekAction() ) ); 746 this, SLOT( weekAction() ) );
746 747
747 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 748 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
748 if ( p->mShowIconFilterview ) { 749 if ( p->mShowIconFilterview ) {
749 icon = loadPixmap( pathString + "filter" ); 750 icon = loadPixmap( pathString + "filter" );
750 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this ); 751 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this );
751 connect( actionFilterMenuTB, SIGNAL( activated() ), 752 connect( actionFilterMenuTB, SIGNAL( activated() ),
752 this, SLOT( fillFilterMenuTB() ) ); 753 this, SLOT( fillFilterMenuTB() ) );
753 actionFilterMenuTB->addTo( iconToolBar ); 754 actionFilterMenuTB->addTo( iconToolBar );
754 selectFilterMenuTB = new QPopupMenu( this ); 755 selectFilterMenuTB = new QPopupMenu( this );
755 selectFilterMenuTB->setCheckable( true ); 756 selectFilterMenuTB->setCheckable( true );
756 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 757 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
757 } 758 }
758 759
759 //#endif 760 //#endif
760 // ****************** 761 // ******************
761 QAction *action; 762 QAction *action;
762 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 763 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
763 configureToolBarMenu->setCheckable( true ); 764 configureToolBarMenu->setCheckable( true );
764 765
765 766
766 configureAgendaMenu->setCheckable( true ); 767 configureAgendaMenu->setCheckable( true );
767 int iii ; 768 int iii ;
768 for ( iii = 1;iii<= 10 ;++iii ){ 769 for ( iii = 1;iii<= 10 ;++iii ){
769 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 770 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
770 } 771 }
771 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 772 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
772 773
773 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 774 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
774 this, SLOT( showConfigureAgenda( ) ) ); 775 this, SLOT( showConfigureAgenda( ) ) );
775 icon = loadPixmap( pathString + "today" ); 776 icon = loadPixmap( pathString + "today" );
776 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 777 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
777 today_action->addTo( actionMenu ); 778 today_action->addTo( actionMenu );
778 connect( today_action, SIGNAL( activated() ), 779 connect( today_action, SIGNAL( activated() ),
779 mView, SLOT( goToday() ) ); 780 mView, SLOT( goToday() ) );
780 781
781 icon = loadPixmap( pathString + "picker" ); 782 icon = loadPixmap( pathString + "picker" );
782 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this ); 783 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this );
783 dPickerAction->addTo( actionMenu ); 784 dPickerAction->addTo( actionMenu );
784 connect( dPickerAction, SIGNAL( activated() ), 785 connect( dPickerAction, SIGNAL( activated() ),
785 mView, SLOT( showDatePicker() ) ); 786 mView, SLOT( showDatePicker() ) );
786 787
787 icon = loadPixmap( pathString + "search" ); 788 icon = loadPixmap( pathString + "search" );
788 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 789 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
789 search_action->addTo( actionMenu ); 790 search_action->addTo( actionMenu );
790 connect( search_action, SIGNAL( activated() ), 791 connect( search_action, SIGNAL( activated() ),
791 mView->dialogManager(), SLOT( showSearchDialog() ) ); 792 mView->dialogManager(), SLOT( showSearchDialog() ) );
793 actionMenu->insertItem( i18n("Show next conflict for"), nextConflictMenu );
792 794
795 action = new QAction( "Undo Delete", i18n("All events"), 0, this );
796 action->addTo( nextConflictMenu );
797 connect( action, SIGNAL( activated() ),
798 mView, SLOT( conflictAll() ) );
799
800 action = new QAction( "Undo Delete", i18n("Allday events"), 0, this );
801 action->addTo( nextConflictMenu );
802 connect( action, SIGNAL( activated() ),
803 mView, SLOT( conflictAllday() ) );
804
805 action = new QAction( "Undo Delete", i18n("Events with time"), 0, this );
806 action->addTo( nextConflictMenu );
807 connect( action, SIGNAL( activated() ),
808 mView, SLOT( conflictNotAll() ) );
809
793 actionMenu->insertSeparator(); 810 actionMenu->insertSeparator();
794 811
812 icon = loadPixmap( pathString + "newevent" );
813 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
814 ne_action->addTo( mCurrentItemMenu );
815 connect( ne_action, SIGNAL( activated() ),
816 mView, SLOT( newEvent() ) );
817 icon = loadPixmap( pathString + "newtodo" );
818 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
819 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
820 nt_action->addTo( mCurrentItemMenu );
821 connect( nt_action, SIGNAL( activated() ),
822 mView, SLOT( newTodo() ) );
823 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
824 this );
825 mNewSubTodoAction->addTo( mCurrentItemMenu );
826 connect( mNewSubTodoAction, SIGNAL( activated() ),
827 mView, SLOT( newSubTodo() ) );
795 828
796
797 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
798 action->addTo( mCurrentItemMenu );
799 connect( action, SIGNAL( activated() ),
800 mView, SLOT( undo_delete() ) );
801 mCurrentItemMenu->insertSeparator(); 829 mCurrentItemMenu->insertSeparator();
802 icon = loadPixmap( pathString + "newevent" ); 830 icon = loadPixmap( pathString + "newevent" );
803 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 831 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
804 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); 832 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 );
805 configureToolBarMenu->insertSeparator(); 833 configureToolBarMenu->insertSeparator();
806 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 ); 834 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 );
807 configureToolBarMenu->insertSeparator(); 835 configureToolBarMenu->insertSeparator();
808 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 836 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
809 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 837 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
810 838
811 //actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu); 839 //actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu);
812 mShowAction = new QAction( "show_incidence", i18n("Show"), 0, this ); 840 mShowAction = new QAction( "show_incidence", i18n("Show"), 0, this );
813 mShowAction->addTo( mCurrentItemMenu ); 841 mShowAction->addTo( mCurrentItemMenu );
814 connect( mShowAction, SIGNAL( activated() ), 842 connect( mShowAction, SIGNAL( activated() ),
815 mView, SLOT( showIncidence() ) ); 843 mView, SLOT( showIncidence() ) );
816 844
817 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 845 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
818 mEditAction->addTo( mCurrentItemMenu ); 846 mEditAction->addTo( mCurrentItemMenu );
819 connect( mEditAction, SIGNAL( activated() ), 847 connect( mEditAction, SIGNAL( activated() ),
820 mView, SLOT( editIncidence() ) ); 848 mView, SLOT( editIncidence() ) );
821 849
822 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 850 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
823 mDeleteAction->addTo( mCurrentItemMenu ); 851 mDeleteAction->addTo( mCurrentItemMenu );
824 connect( mDeleteAction, SIGNAL( activated() ), 852 connect( mDeleteAction, SIGNAL( activated() ),
825 mView, SLOT( deleteIncidence() ) ); 853 mView, SLOT( deleteIncidence() ) );
826 854
827 855
828 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 856 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
829 mCloneAction->addTo( mCurrentItemMenu ); 857 mCloneAction->addTo( mCurrentItemMenu );
830 connect( mCloneAction, SIGNAL( activated() ), 858 connect( mCloneAction, SIGNAL( activated() ),
831 mView, SLOT( cloneIncidence() ) ); 859 mView, SLOT( cloneIncidence() ) );
832 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 860 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
833 mMoveAction->addTo( mCurrentItemMenu ); 861 mMoveAction->addTo( mCurrentItemMenu );
834 connect( mMoveAction, SIGNAL( activated() ), 862 connect( mMoveAction, SIGNAL( activated() ),
835 mView, SLOT( moveIncidence() ) ); 863 mView, SLOT( moveIncidence() ) );
836#ifndef DESKTOP_VERSION 864#ifndef DESKTOP_VERSION
837 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 865 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
838 mBeamAction->addTo(mCurrentItemMenu ); 866 mBeamAction->addTo(mCurrentItemMenu );
839 connect( mBeamAction, SIGNAL( activated() ), 867 connect( mBeamAction, SIGNAL( activated() ),
840 mView, SLOT( beamIncidence() ) ); 868 mView, SLOT( beamIncidence() ) );
841#endif 869#endif
842 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 870 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
843 mCancelAction->addTo( mCurrentItemMenu ); 871 mCancelAction->addTo( mCurrentItemMenu );
844 connect( mCancelAction, SIGNAL( activated() ), 872 connect( mCancelAction, SIGNAL( activated() ),
845 mView, SLOT( toggleCancelIncidence() ) ); 873 mView, SLOT( toggleCancelIncidence() ) );
846 874
847 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 875
848 ne_action->addTo( actionMenu ); 876 mCurrentItemMenu->insertSeparator();
849 connect( ne_action, SIGNAL( activated() ), 877 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
850 mView, SLOT( newEvent() ) ); 878 action->addTo( mCurrentItemMenu );
851 icon = loadPixmap( pathString + "newtodo" ); 879 connect( action, SIGNAL( activated() ),
852 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 880 mView, SLOT( undo_delete() ) );
853 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
854 nt_action->addTo( actionMenu );
855 connect( nt_action, SIGNAL( activated() ),
856 mView, SLOT( newTodo() ) );
857
858
859 881
860 // *********************** 882 // ***********************
861 if ( KOPrefs::instance()->mVerticalScreen ) { 883 if ( KOPrefs::instance()->mVerticalScreen ) {
862 icon = SmallIcon( "1updownarrow" ); 884 icon = SmallIcon( "1updownarrow" );
863 } else { 885 } else {
864 icon = SmallIcon("1leftrightarrow" ); 886 icon = SmallIcon("1leftrightarrow" );
865 } 887 }
866 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 ); 888 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 );
867 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this ); 889 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this );
868 FSaction->addTo( viewMenu ); 890 FSaction->addTo( viewMenu );
869 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() )); 891 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() ));
870 892
871 893
872 icon = loadPixmap( pathString + "filter" ); 894 icon = loadPixmap( pathString + "filter" );
873 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 ); 895 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 );
874 icon = loadPixmap( pathString + "configure" ); 896 icon = loadPixmap( pathString + "configure" );
875 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this ); 897 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this );
876 action->addTo( viewMenu ); 898 action->addTo( viewMenu );
877 connect( action, SIGNAL( activated() ), 899 connect( action, SIGNAL( activated() ),
878 mView, SLOT( toggleFilter() ) ); 900 mView, SLOT( toggleFilter() ) );
879 mToggleFilter = action; 901 mToggleFilter = action;
880 icon = loadPixmap( pathString + "navi" ); 902 icon = loadPixmap( pathString + "navi" );
881 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 ); 903 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 );
882 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 904 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
883 action->addTo( viewMenu ); 905 action->addTo( viewMenu );
884 connect( action, SIGNAL( activated() ), 906 connect( action, SIGNAL( activated() ),
885 mView, SLOT( toggleDateNavigatorWidget() ) ); 907 mView, SLOT( toggleDateNavigatorWidget() ) );
886 mToggleNav = action ; 908 mToggleNav = action ;
887 icon = loadPixmap( pathString + "allday" ); 909 icon = loadPixmap( pathString + "allday" );
888 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 ); 910 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 );
889 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 911 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
890 action->addTo( viewMenu ); 912 action->addTo( viewMenu );
891 connect( action, SIGNAL( activated() ), 913 connect( action, SIGNAL( activated() ),
892 mView, SLOT( toggleAllDaySize() ) ); 914 mView, SLOT( toggleAllDaySize() ) );
893 mToggleAllday = action; 915 mToggleAllday = action;
894 916
895 917
896 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 918 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
897 mToggleNav, SLOT( setEnabled ( bool ) ) ); 919 mToggleNav, SLOT( setEnabled ( bool ) ) );
898 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 920 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
899 // mToggleFilter, SLOT( setEnabled ( bool ) ) ); 921 // mToggleFilter, SLOT( setEnabled ( bool ) ) );
900 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 922 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
901 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 923 mToggleAllday, SLOT( setEnabled ( bool ) ) );
902 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 924 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
903 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) ); 925 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) );
904 926
905 927
906 dPickerAction->addTo( iconToolBar ); 928 dPickerAction->addTo( iconToolBar );
907 viewMenu->insertSeparator(); 929 viewMenu->insertSeparator();
908 930
909 if ( p-> mShowIconToggleFull ) 931 if ( p-> mShowIconToggleFull )
910 FSaction->addTo( iconToolBar ); 932 FSaction->addTo( iconToolBar );
911 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar ); 933 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar );
912 934
913 //******************** 935 //********************
914 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar ); 936 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar );
915 937
916 938
917 icon = loadPixmap( pathString + "whatsnext" ); 939 icon = loadPixmap( pathString + "whatsnext" );
918 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 940 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
919 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 941 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
920 whatsnext_action->addTo( viewMenu ); 942 whatsnext_action->addTo( viewMenu );
921 connect( whatsnext_action, SIGNAL( activated() ), 943 connect( whatsnext_action, SIGNAL( activated() ),
922 mView->viewManager(), SLOT( showWhatsNextView() ) ); 944 mView->viewManager(), SLOT( showWhatsNextView() ) );
923 945
924 icon = loadPixmap( pathString + "xdays" ); 946 icon = loadPixmap( pathString + "xdays" );
925 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 947 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
926 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 948 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
927 xdays_action->addTo( viewMenu ); 949 xdays_action->addTo( viewMenu );
928 connect( xdays_action, SIGNAL( activated() ), 950 connect( xdays_action, SIGNAL( activated() ),
929 mView->viewManager(), SLOT( showNextXView() ) ); 951 mView->viewManager(), SLOT( showNextXView() ) );
930 952
931 953
932 icon = loadPixmap( pathString + "journal" ); 954 icon = loadPixmap( pathString + "journal" );
933 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 955 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
934 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 956 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
935 viewjournal_action->addTo( viewMenu ); 957 viewjournal_action->addTo( viewMenu );
936 connect( viewjournal_action, SIGNAL( activated() ), 958 connect( viewjournal_action, SIGNAL( activated() ),
937 mView->viewManager(), SLOT( showJournalView() ) ); 959 mView->viewManager(), SLOT( showJournalView() ) );
938 960
939 961
940 icon = loadPixmap( pathString + "day" ); 962 icon = loadPixmap( pathString + "day" );
941 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 963 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
942 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 964 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
943 day1_action->addTo( viewMenu ); 965 day1_action->addTo( viewMenu );
944 // action->addTo( toolBar ); 966 // action->addTo( toolBar );
945 connect( day1_action, SIGNAL( activated() ), 967 connect( day1_action, SIGNAL( activated() ),
946 mView->viewManager(), SLOT( showDayView() ) ); 968 mView->viewManager(), SLOT( showDayView() ) );
947 969
948 icon = loadPixmap( pathString + "workweek" ); 970 icon = loadPixmap( pathString + "workweek" );
949 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 971 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
950 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 972 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
951 day5_action->addTo( viewMenu ); 973 day5_action->addTo( viewMenu );
952 connect( day5_action, SIGNAL( activated() ), 974 connect( day5_action, SIGNAL( activated() ),
953 mView->viewManager(), SLOT( showWorkWeekView() ) ); 975 mView->viewManager(), SLOT( showWorkWeekView() ) );
954 976
955 icon = loadPixmap( pathString + "week" ); 977 icon = loadPixmap( pathString + "week" );
956 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 978 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
957 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 979 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
958 day7_action->addTo( viewMenu ); 980 day7_action->addTo( viewMenu );
959 connect( day7_action, SIGNAL( activated() ), 981 connect( day7_action, SIGNAL( activated() ),
960 mView->viewManager(), SLOT( showWeekView() ) ); 982 mView->viewManager(), SLOT( showWeekView() ) );
961 983
962 icon = loadPixmap( pathString + "workweek2" ); 984 icon = loadPixmap( pathString + "workweek2" );
963 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 985 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
964 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 986 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
965 day6_action->addTo( viewMenu ); 987 day6_action->addTo( viewMenu );
966 connect( day6_action, SIGNAL( activated() ), 988 connect( day6_action, SIGNAL( activated() ),
967 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 989 mView->viewManager(), SLOT( showMonthViewWeek() ) );
968 990
969 icon = loadPixmap( pathString + "month" ); 991 icon = loadPixmap( pathString + "month" );
970 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 992 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
971 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 993 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
972 month_action->addTo( viewMenu ); 994 month_action->addTo( viewMenu );
973 connect( month_action, SIGNAL( activated() ), 995 connect( month_action, SIGNAL( activated() ),
974 mView->viewManager(), SLOT( showMonthView() ) ); 996 mView->viewManager(), SLOT( showMonthView() ) );
975 997
976 icon = loadPixmap( pathString + "list" ); 998 icon = loadPixmap( pathString + "list" );
977 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 999 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
978 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 1000 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
979 showlist_action->addTo( viewMenu ); 1001 showlist_action->addTo( viewMenu );
980 connect( showlist_action, SIGNAL( activated() ), 1002 connect( showlist_action, SIGNAL( activated() ),
981 mView->viewManager(), SLOT( showListView() ) ); 1003 mView->viewManager(), SLOT( showListView() ) );
982 1004
983 icon = loadPixmap( pathString + "todo" ); 1005 icon = loadPixmap( pathString + "todo" );
984 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 1006 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
985 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 1007 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
986 todoview_action->addTo( viewMenu ); 1008 todoview_action->addTo( viewMenu );
987 connect( todoview_action, SIGNAL( activated() ), 1009 connect( todoview_action, SIGNAL( activated() ),
988 mView->viewManager(), SLOT( showTodoView() ) ); 1010 mView->viewManager(), SLOT( showTodoView() ) );
989 1011
990 1012
991 1013
992#if 0 1014#if 0
993 action = new QAction( "view_timespan", "Time Span", 0, this ); 1015 action = new QAction( "view_timespan", "Time Span", 0, this );
994 action->addTo( viewMenu ); 1016 action->addTo( viewMenu );
995 connect( action, SIGNAL( activated() ), 1017 connect( action, SIGNAL( activated() ),
996 mView->viewManager(), SLOT( showTimeSpanView() ) ); 1018 mView->viewManager(), SLOT( showTimeSpanView() ) );
997#endif 1019#endif
998 1020
999 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 1021
1000 this );
1001 mNewSubTodoAction->addTo( actionMenu );
1002 connect( mNewSubTodoAction, SIGNAL( activated() ),
1003 mView, SLOT( newSubTodo() ) );
1004 1022
1005 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, 1023 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0,
1006 this ); 1024 this );
1007 action->addTo( actionMenu ); 1025 action->addTo( actionMenu );
1008 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 1026 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
1009 1027
1010 1028
1011 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 1029 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
1012 1030
1013 1031
1014 1032
1015 actionMenu->insertSeparator(); 1033 actionMenu->insertSeparator();
1016 action = new QAction( "manage cat", i18n("Edit category list..."), 0, 1034 action = new QAction( "manage cat", i18n("Edit category list..."), 0,
1017 this ); 1035 this );
1018 action->addTo( actionMenu ); 1036 action->addTo( actionMenu );
1019 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) ); 1037 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) );
1020 1038
1021 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1039 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1022 this ); 1040 this );
1023 action->addTo( actionMenu ); 1041 action->addTo( actionMenu );
1024 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1042 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1025 1043
1026 1044
1027 actionMenu->insertSeparator(); 1045 actionMenu->insertSeparator();
1028 icon = loadPixmap( pathString + "configure" ); 1046 icon = loadPixmap( pathString + "configure" );
1029 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this ); 1047 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this );
1030 action->addTo( actionMenu ); 1048 action->addTo( actionMenu );
1031 connect( action, SIGNAL( activated() ), 1049 connect( action, SIGNAL( activated() ),
1032 mView, SLOT( edit_options() ) ); 1050 mView, SLOT( edit_options() ) );
1033 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this ); 1051 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this );
1034 action->addTo( actionMenu ); 1052 action->addTo( actionMenu );
1035 connect( action, SIGNAL( activated() ), 1053 connect( action, SIGNAL( activated() ),
1036 this, SLOT( calHint() ) ); 1054 this, SLOT( calHint() ) );
1037 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this ); 1055 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this );
1038 action->addTo( actionMenu ); 1056 action->addTo( actionMenu );
1039 connect( action, SIGNAL( activated() ), 1057 connect( action, SIGNAL( activated() ),
1040 mView, SLOT( edit_global_options() ) ); 1058 mView, SLOT( edit_global_options() ) );
1041 if ( KOPrefs::instance()->mShowFullMenu ) { 1059 if ( KOPrefs::instance()->mShowFullMenu ) {
1042 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 1060 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
1043 1061
1044 } 1062 }
1045 // actionMenu->insertSeparator(); 1063 // actionMenu->insertSeparator();
1046 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 1064 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
1047 this ); 1065 this );
1048 action->addTo( importMenu_X ); 1066 action->addTo( importMenu_X );
1049 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 1067 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
1050 action = new QAction( "import_quick", i18n("Import last file"), 0, 1068 action = new QAction( "import_quick", i18n("Import last file"), 0,
1051 this ); 1069 this );
1052 action->addTo( importMenu_X ); 1070 action->addTo( importMenu_X );
1053 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 1071 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
1054 importMenu_X->insertSeparator(); 1072 importMenu_X->insertSeparator();
1055 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 1073 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
1056 this ); 1074 this );
1057 action->addTo( importMenu_X ); 1075 action->addTo( importMenu_X );
1058 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 1076 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
1059 //#ifndef DESKTOP_VERSION 1077 //#ifndef DESKTOP_VERSION
1060 importMenu_X->insertSeparator(); 1078 importMenu_X->insertSeparator();
1061 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 1079 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
1062 this ); 1080 this );
1063 action->addTo( importMenu_X ); 1081 action->addTo( importMenu_X );
1064 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 1082 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
1065 //#else 1083 //#else
1066#ifdef _OL_IMPORT_ 1084#ifdef _OL_IMPORT_
1067 importMenu_X->insertSeparator(); 1085 importMenu_X->insertSeparator();
1068 action = new QAction( "import_ol", i18n("Import from OL"), 0, 1086 action = new QAction( "import_ol", i18n("Import from OL"), 0,
1069 this ); 1087 this );
1070 action->addTo( importMenu_X ); 1088 action->addTo( importMenu_X );
1071 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 1089 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
1072#endif 1090#endif
1073 //#endif 1091 //#endif
1074 1092
1075 //importMenu->insertSeparator(); 1093 //importMenu->insertSeparator();
1076#if 0 1094#if 0
1077 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 1095 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
1078 this ); 1096 this );
1079 action->addTo( importMenu ); 1097 action->addTo( importMenu );
1080 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 1098 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
1081#endif 1099#endif
1082 action = new QAction( "save_cal", i18n("Save Backup..."), 0, 1100 action = new QAction( "save_cal", i18n("Save Backup..."), 0,
1083 this ); 1101 this );
1084 action->addTo( importMenu ); 1102 action->addTo( importMenu );
1085 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 1103 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
1086 importMenu->insertSeparator(); 1104 importMenu->insertSeparator();
1087 importMenu->insertItem( i18n("Import"), importMenu_X ); 1105 importMenu->insertItem( i18n("Import"), importMenu_X );
1088 //importMenu->insertSeparator(); 1106 //importMenu->insertSeparator();
1089 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 1107 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
1090 this ); 1108 this );
1091 action->addTo( exportMenu_X ); 1109 action->addTo( exportMenu_X );
1092 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 1110 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
1093 1111
1094 1112
1095 //LR 1113 //LR
1096 QPopupMenu *ex2phone = new QPopupMenu( this ); 1114 QPopupMenu *ex2phone = new QPopupMenu( this );
1097 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1115 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1098 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1116 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1099 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 1117 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
1100 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 1118 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
1101 1119
1102 importMenu->insertItem( i18n("Export"), exportMenu_X ); 1120 importMenu->insertItem( i18n("Export"), exportMenu_X );
1103#ifndef DESKTOP_VERSION 1121#ifndef DESKTOP_VERSION
1104 //importMenu->insertSeparator(); 1122 //importMenu->insertSeparator();
1105 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 1123 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
1106 this ); 1124 this );
1107 brAction->addTo( beamMenu_X ); 1125 brAction->addTo( beamMenu_X );
1108 brAction->setToggleAction (true ) ; 1126 brAction->setToggleAction (true ) ;
1109 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 1127 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
1110 1128
1111 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 1129 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
1112 this ); 1130 this );
1113 action->addTo( beamMenu_X ); 1131 action->addTo( beamMenu_X );
1114 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 1132 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
1115 1133
1116 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 1134 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
1117 this ); 1135 this );
1118 action->addTo( beamMenu_X ); 1136 action->addTo( beamMenu_X );
1119 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 1137 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
1120 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 1138 importMenu->insertItem( i18n("Beam"), beamMenu_X );
1121#else 1139#else
1122 //importMenu->insertSeparator(); 1140 //importMenu->insertSeparator();
1123 icon = loadPixmap( pathString + "print" ); 1141 icon = loadPixmap( pathString + "print" );
1124 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 1142 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
1125 action->addTo( beamMenu_X ); 1143 action->addTo( beamMenu_X );
1126 connect( action, SIGNAL( activated() ), 1144 connect( action, SIGNAL( activated() ),
1127 this, SLOT( printCal() ) ); 1145 this, SLOT( printCal() ) );
1128 1146
1129 icon = loadPixmap( pathString + "print" ); 1147 icon = loadPixmap( pathString + "print" );
1130 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 1148 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
1131 action->addTo( beamMenu_X ); 1149 action->addTo( beamMenu_X );
1132 connect( action, SIGNAL( activated() ), 1150 connect( action, SIGNAL( activated() ),
1133 this, SLOT( printSel() ) ); 1151 this, SLOT( printSel() ) );
1134 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 1152 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
1135 action->addTo( beamMenu_X ); 1153 action->addTo( beamMenu_X );
1136 connect( action, SIGNAL( activated() ), 1154 connect( action, SIGNAL( activated() ),
1137 mView->viewManager(), SLOT( slotprintWNV() ) ); 1155 mView->viewManager(), SLOT( slotprintWNV() ) );
1138 1156
1139 1157
1140 icon = loadPixmap( pathString + "print" ); 1158 icon = loadPixmap( pathString + "print" );
1141 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this ); 1159 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this );
1142 action->addTo( beamMenu_X ); 1160 action->addTo( beamMenu_X );
1143 connect( action, SIGNAL( activated() ), 1161 connect( action, SIGNAL( activated() ),
1144 this, SLOT( printListView() ) ); 1162 this, SLOT( printListView() ) );
1145 1163
1146 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this ); 1164 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this );
1147 action->addTo( beamMenu_X ); 1165 action->addTo( beamMenu_X );
1148 connect( action, SIGNAL( activated() ), 1166 connect( action, SIGNAL( activated() ),
1149 mView, SLOT( slotprintSelInc() ) ); 1167 mView, SLOT( slotprintSelInc() ) );
1150 1168
1151 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1169 importMenu->insertItem( i18n("Print"), beamMenu_X );
1152#endif 1170#endif
1153 1171
1154 importMenu->insertSeparator(); 1172 importMenu->insertSeparator();
1155 action = new QAction( "beam all", i18n("Save"), 0, 1173 action = new QAction( "beam all", i18n("Save"), 0,
1156 this ); 1174 this );
1157 action->addTo( importMenu ); 1175 action->addTo( importMenu );
1158 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1176 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1159 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1177 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1160 this ); 1178 this );
1161 action->addTo( importMenu ); 1179 action->addTo( importMenu );
1162 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1180 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1163 1181
1164 //menuBar->insertItem( "Configure",configureMenu ); 1182 //menuBar->insertItem( "Configure",configureMenu );
1165 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1183 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1166 icon = loadPixmap( "korganizer/korganizer" ); 1184 icon = loadPixmap( "korganizer/korganizer" );
1167 1185
1168 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1186 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1169 action->addTo( helpMenu ); 1187 action->addTo( helpMenu );
1170 connect( action, SIGNAL( activated() ), 1188 connect( action, SIGNAL( activated() ),
1171 SLOT( whatsNew() ) ); 1189 SLOT( whatsNew() ) );
1172 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1190 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1173 action->addTo( helpMenu ); 1191 action->addTo( helpMenu );
1174 connect( action, SIGNAL( activated() ), 1192 connect( action, SIGNAL( activated() ),
1175 SLOT( features() ) ); 1193 SLOT( features() ) );
1176 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1194 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1177 action->addTo( helpMenu ); 1195 action->addTo( helpMenu );
1178 connect( action, SIGNAL( activated() ), 1196 connect( action, SIGNAL( activated() ),
1179 SLOT( keyBindings() ) ); 1197 SLOT( keyBindings() ) );
1180 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); 1198 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this );
1181 action->addTo( helpMenu ); 1199 action->addTo( helpMenu );
1182 connect( action, SIGNAL( activated() ), 1200 connect( action, SIGNAL( activated() ),
1183 SLOT( storagehowto() ) ); 1201 SLOT( storagehowto() ) );
1184 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this ); 1202 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this );
1185 action->addTo( helpMenu ); 1203 action->addTo( helpMenu );
1186 connect( action, SIGNAL( activated() ), 1204 connect( action, SIGNAL( activated() ),
1187 SLOT( timetrackinghowto() ) ); 1205 SLOT( timetrackinghowto() ) );
1188 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 1206 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
1189 action->addTo( helpMenu ); 1207 action->addTo( helpMenu );
1190 connect( action, SIGNAL( activated() ), 1208 connect( action, SIGNAL( activated() ),
1191 SLOT( synchowto() ) ); 1209 SLOT( synchowto() ) );
1192 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 1210 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
1193 action->addTo( helpMenu ); 1211 action->addTo( helpMenu );
1194 connect( action, SIGNAL( activated() ), 1212 connect( action, SIGNAL( activated() ),
1195 SLOT( kdesynchowto() ) ); 1213 SLOT( kdesynchowto() ) );
@@ -1376,384 +1394,385 @@ void MainWindow::initActions()
1376} 1394}
1377void MainWindow::calHint() 1395void MainWindow::calHint()
1378{ 1396{
1379 QString message = i18n("You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>."); 1397 QString message = i18n("You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.");
1380 1398
1381 KMessageBox::information( this, message); 1399 KMessageBox::information( this, message);
1382} 1400}
1383void MainWindow::exportToPhone( int mode ) 1401void MainWindow::exportToPhone( int mode )
1384{ 1402{
1385 1403
1386 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1404 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1387 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1405 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1388 KOex2phonePrefs ex2phone; 1406 KOex2phonePrefs ex2phone;
1389 1407
1390 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1408 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1391 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1409 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1392 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1410 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1393 if ( mode == 1 ) 1411 if ( mode == 1 )
1394 ex2phone.setCaption(i18n("Export complete calendar")); 1412 ex2phone.setCaption(i18n("Export complete calendar"));
1395 if ( mode == 2 ) 1413 if ( mode == 2 )
1396 ex2phone.setCaption(i18n("Export filtered calendar")); 1414 ex2phone.setCaption(i18n("Export filtered calendar"));
1397 1415
1398 if ( !ex2phone.exec() ) { 1416 if ( !ex2phone.exec() ) {
1399 return; 1417 return;
1400 } 1418 }
1401 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1419 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1402 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1420 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1403 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1421 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1404 1422
1405 int inFuture = 0; 1423 int inFuture = 0;
1406 if ( ex2phone.mWriteBackFuture->isChecked() ) 1424 if ( ex2phone.mWriteBackFuture->isChecked() )
1407 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1425 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1408 QPtrList<Incidence> delSel; 1426 QPtrList<Incidence> delSel;
1409 if ( mode == 1 ) 1427 if ( mode == 1 )
1410 delSel = mCalendar->rawIncidences(); 1428 delSel = mCalendar->rawIncidences();
1411 if ( mode == 2 ) 1429 if ( mode == 2 )
1412 delSel = mCalendar->incidences(); 1430 delSel = mCalendar->incidences();
1413 CalendarLocal* cal = new CalendarLocal(); 1431 CalendarLocal* cal = new CalendarLocal();
1414 cal->setLocalTime(); 1432 cal->setLocalTime();
1415 Incidence *incidence = delSel.first(); 1433 Incidence *incidence = delSel.first();
1416 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1434 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1417 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1435 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1418 while ( incidence ) { 1436 while ( incidence ) {
1419 if ( incidence->typeID() != journalID ) { 1437 if ( incidence->typeID() != journalID ) {
1420 bool add = true; 1438 bool add = true;
1421 if ( inFuture ) { 1439 if ( inFuture ) {
1422 QDateTime dt; 1440 QDateTime dt;
1423 if ( incidence->typeID() == todoID ) { 1441 if ( incidence->typeID() == todoID ) {
1424 Todo * t = (Todo*)incidence; 1442 Todo * t = (Todo*)incidence;
1425 if ( t->hasDueDate() ) 1443 if ( t->hasDueDate() )
1426 dt = t->dtDue(); 1444 dt = t->dtDue();
1427 else 1445 else
1428 dt = cur.addSecs( 62 ); 1446 dt = cur.addSecs( 62 );
1429 } 1447 }
1430 else { 1448 else {
1431 bool ok; 1449 bool ok;
1432 dt = incidence->getNextOccurence( cur, &ok ); 1450 dt = incidence->getNextOccurence( cur, &ok );
1433 if ( !ok ) 1451 if ( !ok )
1434 dt = cur.addSecs( -62 ); 1452 dt = cur.addSecs( -62 );
1435 } 1453 }
1436 if ( dt < cur || dt > end ) { 1454 if ( dt < cur || dt > end ) {
1437 add = false; 1455 add = false;
1438 } 1456 }
1439 } 1457 }
1440 if ( add ) { 1458 if ( add ) {
1441 Incidence *in = incidence->clone(); 1459 Incidence *in = incidence->clone();
1442 cal->addIncidence( in ); 1460 cal->addIncidence( in );
1443 } 1461 }
1444 } 1462 }
1445 incidence = delSel.next(); 1463 incidence = delSel.next();
1446 } 1464 }
1447 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1465 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1448 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1466 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1449 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1467 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1450 1468
1451 setCaption( i18n("Writing to phone...")); 1469 setCaption( i18n("Writing to phone..."));
1452 if ( PhoneFormat::writeToPhone( cal ) ) 1470 if ( PhoneFormat::writeToPhone( cal ) )
1453 setCaption( i18n("Export to phone successful!")); 1471 setCaption( i18n("Export to phone successful!"));
1454 else 1472 else
1455 setCaption( i18n("Error exporting to phone!")); 1473 setCaption( i18n("Error exporting to phone!"));
1456 delete cal; 1474 delete cal;
1457} 1475}
1458 1476
1459 1477
1460void MainWindow::setDefaultPreferences() 1478void MainWindow::setDefaultPreferences()
1461{ 1479{
1462 KOPrefs *p = KOPrefs::instance(); 1480 KOPrefs *p = KOPrefs::instance();
1463 1481
1464 p->mCompactDialogs = true; 1482 p->mCompactDialogs = true;
1465 p->mConfirm = true; 1483 p->mConfirm = true;
1466 // p->mEnableQuickTodo = false; 1484 // p->mEnableQuickTodo = false;
1467 1485
1468} 1486}
1469 1487
1470QString MainWindow::resourcePath() 1488QString MainWindow::resourcePath()
1471{ 1489{
1472 return KGlobal::iconLoader()->iconPath(); 1490 return KGlobal::iconLoader()->iconPath();
1473} 1491}
1474 1492
1475void MainWindow::displayText( QString text ,QString cap ) 1493void MainWindow::displayText( QString text ,QString cap )
1476{ 1494{
1477 QDialog dia( this, "name", true ); ; 1495 QDialog dia( this, "name", true ); ;
1478 dia.setCaption( cap ); 1496 dia.setCaption( cap );
1479 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1497 QVBoxLayout* lay = new QVBoxLayout( &dia );
1480 lay->setSpacing( 3 ); 1498 lay->setSpacing( 3 );
1481 lay->setMargin( 3 ); 1499 lay->setMargin( 3 );
1482 QTextBrowser tb ( &dia ); 1500 QTextBrowser tb ( &dia );
1483 lay->addWidget( &tb ); 1501 lay->addWidget( &tb );
1484 tb.setText( text ); 1502 tb.setText( text );
1485#ifdef DESKTOP_VERSION 1503#ifdef DESKTOP_VERSION
1486 dia.resize( 640, 480); 1504 dia.resize( 640, 480);
1487#else 1505#else
1488 dia.showMaximized(); 1506 dia.showMaximized();
1489#endif 1507#endif
1490 dia.exec(); 1508 dia.exec();
1491} 1509}
1492 1510
1493void MainWindow::features() 1511void MainWindow::features()
1494{ 1512{
1495 1513
1496 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1514 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1497} 1515}
1498 1516
1499void MainWindow::usertrans() 1517void MainWindow::usertrans()
1500{ 1518{
1501 1519
1502 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1520 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1503} 1521}
1504 1522
1505void MainWindow::storagehowto() 1523void MainWindow::storagehowto()
1506{ 1524{
1507 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); 1525 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" );
1508} 1526}
1509void MainWindow::timetrackinghowto() 1527void MainWindow::timetrackinghowto()
1510{ 1528{
1511 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" ); 1529 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" );
1512} 1530}
1513void MainWindow::kdesynchowto() 1531void MainWindow::kdesynchowto()
1514{ 1532{
1515 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1533 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1516} 1534}
1517void MainWindow::multisynchowto() 1535void MainWindow::multisynchowto()
1518{ 1536{
1519 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1537 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1520} 1538}
1521void MainWindow::synchowto() 1539void MainWindow::synchowto()
1522{ 1540{
1523 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1541 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1524} 1542}
1525void MainWindow::faq() 1543void MainWindow::faq()
1526{ 1544{
1527 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1545 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1528 1546
1529} 1547}
1530void MainWindow::whatsNew() 1548void MainWindow::whatsNew()
1531{ 1549{
1532 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1550 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1533 1551
1534} 1552}
1535void MainWindow::licence() 1553void MainWindow::licence()
1536{ 1554{
1537 KApplication::showLicence(); 1555 KApplication::showLicence();
1538 1556
1539} 1557}
1540void MainWindow::about() 1558void MainWindow::about()
1541{ 1559{
1542 QString version; 1560 QString version;
1543#include <../version> 1561#include <../version>
1544 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1562 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1545 i18n("KOrganizer/Platform-independent\n") + 1563 i18n("KOrganizer/Platform-independent\n") +
1546 "(KO/Pi) " + version + " - " + 1564 "(KO/Pi) " + version + " - " +
1547 1565
1548#ifdef DESKTOP_VERSION 1566#ifdef DESKTOP_VERSION
1549 i18n("Desktop Edition\n") + 1567 i18n("Desktop Edition\n") +
1550#else 1568#else
1551 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1569 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1552#endif 1570#endif
1553 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!") ); 1571 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!") );
1554} 1572}
1555void MainWindow::keyBindings() 1573void MainWindow::keyBindings()
1556{ 1574{
1557 QString cap = i18n("KO/Pi Keys + Colors"); 1575 QString cap = i18n("KO/Pi Keys + Colors");
1558 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1576 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1559 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1577 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1560 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") + 1578 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") +
1561 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") + 1579 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") +
1562 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1580 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1563 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1581 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1564 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+ 1582 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+
1565 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1583 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1566 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1584 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1567 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+ 1585 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+
1586 i18n("<p><b>Q</b>: Show next date with conflicting events\n ")+
1568 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1587 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1569 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1588 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1570 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1589 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1571 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1590 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1572 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1591 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1573 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1592 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1574 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+ 1593 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+
1575 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1594 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1576 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1595 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1577 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1596 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1578 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1597 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1579 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1598 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1580 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1599 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1581 i18n("<p><h3>In agenda view:</h3></p>\n") + 1600 i18n("<p><h3>In agenda view:</h3></p>\n") +
1582 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1601 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1583 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1602 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1584 i18n("<p><h3>In todo view:</h3></p>\n") + 1603 i18n("<p><h3>In todo view:</h3></p>\n") +
1585 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1604 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1586 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1605 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1587 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1606 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1588 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1607 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1589 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1608 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1590 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1609 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1591 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1610 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1592 i18n("<p><h3>In list view:</h3></p>\n") + 1611 i18n("<p><h3>In list view:</h3></p>\n") +
1593 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1612 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1594 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1613 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1595 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1614 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1596 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1615 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1597 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1616 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1598 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1617 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1599 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1618 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1600 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1619 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1601 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1620 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1602 i18n("<p><b>E</b>: Edit item</p>\n") + 1621 i18n("<p><b>E</b>: Edit item</p>\n") +
1603 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1622 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1604 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1623 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1605 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1624 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1606 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1625 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1607 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1626 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1608 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1627 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1609 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1628 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1610 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1629 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1611 i18n("<p><b>White</b>: Item readonly</p>\n"); 1630 i18n("<p><b>White</b>: Item readonly</p>\n");
1612 displayText( text, cap); 1631 displayText( text, cap);
1613} 1632}
1614void MainWindow::aboutAutoSaving() 1633void MainWindow::aboutAutoSaving()
1615{ 1634{
1616 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"); 1635 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");
1617 1636
1618 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1637 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1619 1638
1620} 1639}
1621void MainWindow::aboutKnownBugs() 1640void MainWindow::aboutKnownBugs()
1622{ 1641{
1623 QMessageBox* msg; 1642 QMessageBox* msg;
1624 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1643 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1625 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")+ 1644 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")+
1626 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1645 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1627 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1646 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1628 i18n("\nor report them in the bugtracker on\n") + 1647 i18n("\nor report them in the bugtracker on\n") +
1629 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1648 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1630 QMessageBox::NoIcon, 1649 QMessageBox::NoIcon,
1631 QMessageBox::Ok, 1650 QMessageBox::Ok,
1632 QMessageBox::NoButton, 1651 QMessageBox::NoButton,
1633 QMessageBox::NoButton); 1652 QMessageBox::NoButton);
1634 msg->exec(); 1653 msg->exec();
1635 delete msg; 1654 delete msg;
1636 1655
1637} 1656}
1638 1657
1639QString MainWindow::defaultFileName() 1658QString MainWindow::defaultFileName()
1640{ 1659{
1641 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1660 return locateLocal( "data", "korganizer/mycalendar.ics" );
1642} 1661}
1643QString MainWindow::syncFileName() 1662QString MainWindow::syncFileName()
1644{ 1663{
1645#ifdef DESKTOP_VERSION 1664#ifdef DESKTOP_VERSION
1646 return locateLocal( "tmp", "synccalendar.ics" ); 1665 return locateLocal( "tmp", "synccalendar.ics" );
1647#else 1666#else
1648 return QString( "/tmp/synccalendar.ics" ); 1667 return QString( "/tmp/synccalendar.ics" );
1649#endif 1668#endif
1650} 1669}
1651#include "koglobals.h" 1670#include "koglobals.h"
1652#include <kcalendarsystem.h> 1671#include <kcalendarsystem.h>
1653void MainWindow::updateWeek(QDate seda) 1672void MainWindow::updateWeek(QDate seda)
1654{ 1673{
1655 int weekNum = KGlobal::locale()->weekNum ( seda ); 1674 int weekNum = KGlobal::locale()->weekNum ( seda );
1656 mWeekPixmap.fill( mWeekBgColor ); 1675 mWeekPixmap.fill( mWeekBgColor );
1657 QPainter p ( &mWeekPixmap ); 1676 QPainter p ( &mWeekPixmap );
1658 p.setFont( mWeekFont ); 1677 p.setFont( mWeekFont );
1659 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1678 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1660 p.end(); 1679 p.end();
1661 QIconSet icon3 ( mWeekPixmap ); 1680 QIconSet icon3 ( mWeekPixmap );
1662 mWeekAction->setIconSet ( icon3 ); 1681 mWeekAction->setIconSet ( icon3 );
1663 1682
1664} 1683}
1665void MainWindow::updateWeekNum(const DateList &selectedDates) 1684void MainWindow::updateWeekNum(const DateList &selectedDates)
1666{ 1685{
1667 updateWeek( selectedDates.first() ); 1686 updateWeek( selectedDates.first() );
1668} 1687}
1669void MainWindow::processIncidenceSelection( Incidence *incidence ) 1688void MainWindow::processIncidenceSelection( Incidence *incidence )
1670{ 1689{
1671 if ( !incidence ) { 1690 if ( !incidence ) {
1672 mShowAction->setMenuText( i18n("Show") ); 1691 mShowAction->setMenuText( i18n("Show") );
1673 enableIncidenceActions( false ); 1692 enableIncidenceActions( false );
1674 mNewSubTodoAction->setEnabled( false ); 1693 mNewSubTodoAction->setEnabled( false );
1675 setCaptionToDates(); 1694 setCaptionToDates();
1676 return; 1695 return;
1677 } 1696 }
1678 QString startString = ""; 1697 QString startString = "";
1679 if ( incidence->typeID() != todoID ) { 1698 if ( incidence->typeID() != todoID ) {
1680 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1699 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1681 if ( incidence->doesFloat() ) { 1700 if ( incidence->doesFloat() ) {
1682 startString += ": "+incidence->dtStartDateStr( true ); 1701 startString += ": "+incidence->dtStartDateStr( true );
1683 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1702 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1684 } else { 1703 } else {
1685 startString = ": "+incidence->dtStartStr(true); 1704 startString = ": "+incidence->dtStartStr(true);
1686 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1705 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1687 } 1706 }
1688 } else { 1707 } else {
1689 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1708 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1690 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1709 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1691 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1710 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1692 if ( incidence->isBirthday() || incidence->isAnniversary() ) { 1711 if ( incidence->isBirthday() || incidence->isAnniversary() ) {
1693 bool ok; 1712 bool ok;
1694 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1713 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1695 if ( ok ) { 1714 if ( ok ) {
1696 int years = noc.date().year() - incidence->dtStart().date().year(); 1715 int years = noc.date().year() - incidence->dtStart().date().year();
1697 startString += i18n(" (%1 y.)"). arg( years ); 1716 startString += i18n(" (%1 y.)"). arg( years );
1698 } 1717 }
1699 } 1718 }
1700 else 1719 else
1701 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1720 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1702 } 1721 }
1703 } 1722 }
1704 else { 1723 else {
1705 if ( (( KCal::Todo*)incidence)->percentComplete() == 100 ) 1724 if ( (( KCal::Todo*)incidence)->percentComplete() == 100 )
1706 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+i18n("completed on %1").arg( (( KCal::Todo*)incidence)->completedStr(true) ); 1725 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+i18n("completed on %1").arg( (( KCal::Todo*)incidence)->completedStr(true) );
1707 else 1726 else
1708 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1727 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1709 } 1728 }
1710 if ( !incidence->location().isEmpty() ) 1729 if ( !incidence->location().isEmpty() )
1711 startString += " (" +incidence->location()+")"; 1730 startString += " (" +incidence->location()+")";
1712 setCaption( incidence->summary()+startString); 1731 setCaption( incidence->summary()+startString);
1713 enableIncidenceActions( true ); 1732 enableIncidenceActions( true );
1714 if ( incidence->typeID() == eventID ) { 1733 if ( incidence->typeID() == eventID ) {
1715 mShowAction->setMenuText( i18n("Show Event") ); 1734 mShowAction->setMenuText( i18n("Show Event") );
1716 mNewSubTodoAction->setEnabled( false ); 1735 mNewSubTodoAction->setEnabled( false );
1717 } else if ( incidence->typeID() == todoID ) { 1736 } else if ( incidence->typeID() == todoID ) {
1718 mShowAction->setMenuText( i18n("Show Todo") ); 1737 mShowAction->setMenuText( i18n("Show Todo") );
1719 mNewSubTodoAction->setEnabled( true ); 1738 mNewSubTodoAction->setEnabled( true );
1720 } else { 1739 } else {
1721 mShowAction->setMenuText( i18n("Show") ); 1740 mShowAction->setMenuText( i18n("Show") );
1722 mNewSubTodoAction->setEnabled( false ); 1741 mNewSubTodoAction->setEnabled( false );
1723 } 1742 }
1724} 1743}
1725 1744
1726void MainWindow::enableIncidenceActions( bool enabled ) 1745void MainWindow::enableIncidenceActions( bool enabled )
1727{ 1746{
1728 mShowAction->setEnabled( enabled ); 1747 mShowAction->setEnabled( enabled );
1729 mEditAction->setEnabled( enabled ); 1748 mEditAction->setEnabled( enabled );
1730 mDeleteAction->setEnabled( enabled ); 1749 mDeleteAction->setEnabled( enabled );
1731 1750
1732 mCloneAction->setEnabled( enabled ); 1751 mCloneAction->setEnabled( enabled );
1733 mMoveAction->setEnabled( enabled ); 1752 mMoveAction->setEnabled( enabled );
1734#ifndef DESKTOP_VERSION 1753#ifndef DESKTOP_VERSION
1735 mBeamAction->setEnabled( enabled ); 1754 mBeamAction->setEnabled( enabled );
1736#endif 1755#endif
1737 mCancelAction->setEnabled( enabled ); 1756 mCancelAction->setEnabled( enabled );
1738} 1757}
1739 1758
1740void MainWindow::importOL() 1759void MainWindow::importOL()
1741{ 1760{
1742#ifdef _OL_IMPORT_ 1761#ifdef _OL_IMPORT_
1743 mView->clearAllViews(); 1762 mView->clearAllViews();
1744 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1763 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1745 id->exec(); 1764 id->exec();
1746 delete id; 1765 delete id;
1747 mView->calendar()->checkAlarmForIncidence( 0, true ); 1766 mView->calendar()->checkAlarmForIncidence( 0, true );
1748 mView->updateView(); 1767 mView->updateView();
1749#endif 1768#endif
1750} 1769}
1751void MainWindow::importBday() 1770void MainWindow::importBday()
1752{ 1771{
1753 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"), 1772 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"),
1754 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1773 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1755 i18n("Import!"), i18n("Cancel"), 0, 1774 i18n("Import!"), i18n("Cancel"), 0,
1756 0, 1 ); 1775 0, 1 );
1757 if ( result == 0 ) { 1776 if ( result == 0 ) {
1758 mView->importBday(); 1777 mView->importBday();
1759 1778
@@ -1910,384 +1929,392 @@ void MainWindow::backupAllFiles()
1910 } 1929 }
1911 // retval == 3: do nothing, try again later 1930 // retval == 3: do nothing, try again later
1912} 1931}
1913void MainWindow::save() 1932void MainWindow::save()
1914{ 1933{
1915 1934
1916 if ( mView->viewManager()->journalView() ) 1935 if ( mView->viewManager()->journalView() )
1917 mView->viewManager()->journalView()->checkModified(); 1936 mView->viewManager()->journalView()->checkModified();
1918 if ( !mCalendarModifiedFlag ) { 1937 if ( !mCalendarModifiedFlag ) {
1919 qDebug("KO: Calendar not modified. Nothing saved."); 1938 qDebug("KO: Calendar not modified. Nothing saved.");
1920 return; 1939 return;
1921 } 1940 }
1922 if ( mSyncManager->blockSave() ) 1941 if ( mSyncManager->blockSave() )
1923 return; 1942 return;
1924 mSyncManager->setBlockSave(true); 1943 mSyncManager->setBlockSave(true);
1925 if ( mView->checkAllFileVersions() ) { 1944 if ( mView->checkAllFileVersions() ) {
1926 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 1945 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
1927 QDate reference ( 2000,1,1); 1946 QDate reference ( 2000,1,1);
1928 int daysTo = reference.daysTo ( QDate::currentDate() ); 1947 int daysTo = reference.daysTo ( QDate::currentDate() );
1929 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 1948 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
1930 backupAllFiles(); 1949 backupAllFiles();
1931 } 1950 }
1932 ; // KPimGlobalPrefs::instance()->mLastBackupDate 1951 ; // KPimGlobalPrefs::instance()->mLastBackupDate
1933 } 1952 }
1934 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1953 QTime neededSaveTime = QDateTime::currentDateTime().time();
1935 if ( !isMinimized () ) 1954 if ( !isMinimized () )
1936 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1955 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1937 qDebug("KO: Start saving data to file!"); 1956 qDebug("KO: Start saving data to file!");
1938 mView->saveCalendars(); 1957 mView->saveCalendars();
1939 mCalendarModifiedFlag = false; 1958 mCalendarModifiedFlag = false;
1940 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1959 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1941 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1960 qDebug("KO: Needed %d ms for saving.",msNeeded );
1942 QString savemes; 1961 QString savemes;
1943 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1962 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1944 if ( !isMinimized () ) 1963 if ( !isMinimized () )
1945 setCaption(savemes); 1964 setCaption(savemes);
1946 else 1965 else
1947 qDebug(savemes); 1966 qDebug(savemes);
1948 } else 1967 } else
1949 setCaption(i18n("Saving cancelled!")); 1968 setCaption(i18n("Saving cancelled!"));
1950 mSyncManager->setBlockSave( false ); 1969 mSyncManager->setBlockSave( false );
1951} 1970}
1952 1971
1953void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1972void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1954{ 1973{
1955 if ( !e->isAutoRepeat() ) { 1974 if ( !e->isAutoRepeat() ) {
1956 mFlagKeyPressed = false; 1975 mFlagKeyPressed = false;
1957 } 1976 }
1958} 1977}
1959void MainWindow::keyPressEvent ( QKeyEvent * e ) 1978void MainWindow::keyPressEvent ( QKeyEvent * e )
1960{ 1979{
1961 qApp->processEvents(); 1980 qApp->processEvents();
1962 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1981 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1963 e->ignore(); 1982 e->ignore();
1964 // qDebug(" ignore %d",e->isAutoRepeat() ); 1983 // qDebug(" ignore %d",e->isAutoRepeat() );
1965 return; 1984 return;
1966 } 1985 }
1967 if (! e->isAutoRepeat() ) 1986 if (! e->isAutoRepeat() )
1968 mFlagKeyPressed = true; 1987 mFlagKeyPressed = true;
1969 KOPrefs *p = KOPrefs::instance(); 1988 KOPrefs *p = KOPrefs::instance();
1970 bool showSelectedDates = false; 1989 bool showSelectedDates = false;
1971 int size; 1990 int size;
1972 int pro = 0; 1991 int pro = 0;
1973 //qDebug("MainWindow::keyPressEvent "); 1992 //qDebug("MainWindow::keyPressEvent ");
1974 switch ( e->key() ) { 1993 switch ( e->key() ) {
1975 case Qt::Key_Right: 1994 case Qt::Key_Right:
1976 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1995 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1977 mView->goNextMonth(); 1996 mView->goNextMonth();
1978 else 1997 else
1979 mView->goNext(); 1998 mView->goNext();
1980 showSelectedDates = true; 1999 showSelectedDates = true;
1981 break; 2000 break;
1982 case Qt::Key_Left: 2001 case Qt::Key_Left:
1983 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2002 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1984 mView->goPreviousMonth(); 2003 mView->goPreviousMonth();
1985 else 2004 else
1986 mView->goPrevious(); 2005 mView->goPrevious();
1987 showSelectedDates = true; 2006 showSelectedDates = true;
1988 break; 2007 break;
1989 case Qt::Key_Down: 2008 case Qt::Key_Down:
1990 mView->viewManager()->agendaView()->scrollOneHourDown(); 2009 mView->viewManager()->agendaView()->scrollOneHourDown();
1991 break; 2010 break;
1992 case Qt::Key_Up: 2011 case Qt::Key_Up:
1993 mView->viewManager()->agendaView()->scrollOneHourUp(); 2012 mView->viewManager()->agendaView()->scrollOneHourUp();
1994 break; 2013 break;
1995 case Qt::Key_K: 2014 case Qt::Key_K:
1996 mView->viewManager()->showMonthViewWeek(); 2015 mView->viewManager()->showMonthViewWeek();
1997 break; 2016 break;
1998 case Qt::Key_I: 2017 case Qt::Key_I:
1999 mView->showIncidence(); 2018 mView->showIncidence();
2000 break; 2019 break;
2001 case Qt::Key_Delete: 2020 case Qt::Key_Delete:
2002 case Qt::Key_Backspace: 2021 case Qt::Key_Backspace:
2003 mView->deleteIncidence(); 2022 mView->deleteIncidence();
2004 break; 2023 break;
2005 case Qt::Key_D: 2024 case Qt::Key_D:
2006 mView->viewManager()->showDayView(); 2025 mView->viewManager()->showDayView();
2007 showSelectedDates = true; 2026 showSelectedDates = true;
2008 break; 2027 break;
2009 case Qt::Key_O: 2028 case Qt::Key_O:
2010 mView->toggleFilerEnabled( ); 2029 mView->toggleFilerEnabled( );
2011 break; 2030 break;
2012 case Qt::Key_0: 2031 case Qt::Key_0:
2013 case Qt::Key_1: 2032 case Qt::Key_1:
2014 case Qt::Key_2: 2033 case Qt::Key_2:
2015 case Qt::Key_3: 2034 case Qt::Key_3:
2016 case Qt::Key_4: 2035 case Qt::Key_4:
2017 case Qt::Key_5: 2036 case Qt::Key_5:
2018 case Qt::Key_6: 2037 case Qt::Key_6:
2019 case Qt::Key_7: 2038 case Qt::Key_7:
2020 case Qt::Key_8: 2039 case Qt::Key_8:
2021 case Qt::Key_9: 2040 case Qt::Key_9:
2022 pro = e->key()-48; 2041 pro = e->key()-48;
2023 if ( pro == 0 ) 2042 if ( pro == 0 )
2024 pro = 10; 2043 pro = 10;
2025 if ( e->state() == Qt::ControlButton) 2044 if ( e->state() == Qt::ControlButton)
2026 pro += 10; 2045 pro += 10;
2027 break; 2046 break;
2028 case Qt::Key_M: 2047 case Qt::Key_M:
2029 mView->viewManager()->showMonthView(); 2048 mView->viewManager()->showMonthView();
2030 showSelectedDates = true; 2049 showSelectedDates = true;
2031 break; 2050 break;
2032 case Qt::Key_Insert: 2051 case Qt::Key_Insert:
2033 mView->newEvent(); 2052 mView->newEvent();
2034 break; 2053 break;
2035 case Qt::Key_S : 2054 case Qt::Key_S :
2036 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2055 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2037 mView->newSubTodo(); 2056 mView->newSubTodo();
2038 else 2057 else
2039 mView->dialogManager()->showSearchDialog(); 2058 mView->dialogManager()->showSearchDialog();
2040 break; 2059 break;
2041 case Qt::Key_Y : 2060 case Qt::Key_Y :
2042 case Qt::Key_Z : 2061 case Qt::Key_Z :
2043 mView->viewManager()->showWorkWeekView(); 2062 mView->viewManager()->showWorkWeekView();
2044 showSelectedDates = true; 2063 showSelectedDates = true;
2045 break; 2064 break;
2046 case Qt::Key_U : 2065 case Qt::Key_U :
2047 mView->viewManager()->showWeekView(); 2066 mView->viewManager()->showWeekView();
2048 showSelectedDates = true; 2067 showSelectedDates = true;
2049 break; 2068 break;
2050 case Qt::Key_H : 2069 case Qt::Key_H :
2051 keyBindings(); 2070 keyBindings();
2052 break; 2071 break;
2053 case Qt::Key_W: 2072 case Qt::Key_W:
2054 mView->viewManager()->showWhatsNextView(); 2073 mView->viewManager()->showWhatsNextView();
2055 break; 2074 break;
2056 case Qt::Key_L: 2075 case Qt::Key_L:
2057 mView->viewManager()->showListView(); 2076 mView->viewManager()->showListView();
2058 break; 2077 break;
2059 case Qt::Key_N: 2078 case Qt::Key_N:
2060 mView->viewManager()->showNextView(); 2079 mView->viewManager()->showNextView();
2061 break; 2080 break;
2062 case Qt::Key_V: 2081 case Qt::Key_V:
2063 mView->viewManager()->showTodoView(); 2082 mView->viewManager()->showTodoView();
2064 break; 2083 break;
2065 case Qt::Key_C: 2084 case Qt::Key_C:
2066 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 2085 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
2067 break; 2086 break;
2068 case Qt::Key_P: 2087 case Qt::Key_P:
2069 mView->showDatePicker( ); 2088 mView->showDatePicker( );
2070 break; 2089 break;
2071 case Qt::Key_F: 2090 case Qt::Key_F:
2072 mView->editFilters(); 2091 mView->editFilters();
2073 break; 2092 break;
2074 case Qt::Key_R: 2093 case Qt::Key_R:
2075 mView->toggleFilter(); 2094 mView->toggleFilter();
2076 break; 2095 break;
2077 case Qt::Key_X: 2096 case Qt::Key_X:
2078 if ( e->state() == Qt::ControlButton ) 2097 if ( e->state() == Qt::ControlButton )
2079 mView->toggleDateNavigatorWidget(); 2098 mView->toggleDateNavigatorWidget();
2080 else { 2099 else {
2081 mView->viewManager()->showNextXView(); 2100 mView->viewManager()->showNextXView();
2082 showSelectedDates = true; 2101 showSelectedDates = true;
2083 } 2102 }
2084 break; 2103 break;
2085 case Qt::Key_Space: 2104 case Qt::Key_Space:
2086 mView->toggleExpand(); 2105 mView->toggleExpand();
2087 break; 2106 break;
2088 case Qt::Key_A: 2107 case Qt::Key_A:
2089 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 2108 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
2090 mView->showNextAlarms(); 2109 mView->showNextAlarms();
2091 else 2110 else
2092 mView->toggleAllDaySize(); 2111 mView->toggleAllDaySize();
2093 break; 2112 break;
2094 case Qt::Key_T: 2113 case Qt::Key_T:
2095 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2114 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2096 mView->newTodo(); 2115 mView->newTodo();
2097 else { 2116 else {
2098 mView->goToday(); 2117 mView->goToday();
2099 showSelectedDates = true; 2118 showSelectedDates = true;
2100 } 2119 }
2101 break; 2120 break;
2121 case Qt::Key_Q:
2122 if ( e->state() == Qt::ControlButton )
2123 mView->conflictNotAll();
2124 else if ( e->state() == Qt::ShiftButton )
2125 mView->conflictAllday();
2126 else
2127 mView->conflictAll();
2128 break;
2102 case Qt::Key_J: 2129 case Qt::Key_J:
2103 mView->viewManager()->showJournalView(); 2130 mView->viewManager()->showJournalView();
2104 break; 2131 break;
2105 case Qt::Key_B: 2132 case Qt::Key_B:
2106 mView->editIncidenceDescription();; 2133 mView->editIncidenceDescription();;
2107 break; 2134 break;
2108 // case Qt::Key_Return: 2135 // case Qt::Key_Return:
2109 case Qt::Key_E: 2136 case Qt::Key_E:
2110 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2137 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2111 mView->newEvent(); 2138 mView->newEvent();
2112 else 2139 else
2113 mView->editIncidence(); 2140 mView->editIncidence();
2114 break; 2141 break;
2115 case Qt::Key_Plus: 2142 case Qt::Key_Plus:
2116 size = p->mHourSize +2; 2143 size = p->mHourSize +2;
2117 if ( size <= 22 ) 2144 if ( size <= 22 )
2118 configureAgenda( size ); 2145 configureAgenda( size );
2119 break; 2146 break;
2120 case Qt::Key_Minus: 2147 case Qt::Key_Minus:
2121 size = p->mHourSize - 2; 2148 size = p->mHourSize - 2;
2122 if ( size >= 4 ) 2149 if ( size >= 4 )
2123 configureAgenda( size ); 2150 configureAgenda( size );
2124 break; 2151 break;
2125 2152
2126 2153
2127 default: 2154 default:
2128 e->ignore(); 2155 e->ignore();
2129 } 2156 }
2130 if ( pro > 0 ) { 2157 if ( pro > 0 ) {
2131 selectFilter( pro+1 ); 2158 selectFilter( pro+1 );
2132 } 2159 }
2133 if ( showSelectedDates ) { 2160 if ( showSelectedDates ) {
2134 ;// setCaptionToDates(); 2161 ;// setCaptionToDates();
2135 } 2162 }
2136 2163
2137} 2164}
2138void MainWindow::fillFilterMenuTB() 2165void MainWindow::fillFilterMenuTB()
2139{ 2166{
2140 selectFilterMenuTB->clear(); 2167 selectFilterMenuTB->clear();
2141 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 ); 2168 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 );
2142 selectFilterMenuTB->insertSeparator(); 2169 selectFilterMenuTB->insertSeparator();
2143 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 ); 2170 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 );
2144 2171
2145 selectFilterMenuTB->insertSeparator(); 2172 selectFilterMenuTB->insertSeparator();
2146 QPtrList<CalFilter> fili = mView->filters(); 2173 QPtrList<CalFilter> fili = mView->filters();
2147 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2174 CalFilter *curfilter = mView->filterView()->selectedFilter();
2148 CalFilter *filter = fili.first(); 2175 CalFilter *filter = fili.first();
2149 int iii = 2; 2176 int iii = 2;
2150 bool checkitem = mView->filterView()->filtersEnabled(); 2177 bool checkitem = mView->filterView()->filtersEnabled();
2151 while(filter) { 2178 while(filter) {
2152 selectFilterMenuTB->insertItem( filter->name(), iii ); 2179 selectFilterMenuTB->insertItem( filter->name(), iii );
2153 if ( filter == curfilter) 2180 if ( filter == curfilter)
2154 selectFilterMenuTB->setItemChecked( iii, checkitem ); 2181 selectFilterMenuTB->setItemChecked( iii, checkitem );
2155 filter = fili.next(); 2182 filter = fili.next();
2156 ++iii; 2183 ++iii;
2157 } 2184 }
2158 if ( !checkitem ) 2185 if ( !checkitem )
2159 selectFilterMenuTB->setItemChecked( 1, true ); 2186 selectFilterMenuTB->setItemChecked( 1, true );
2160 2187
2161 int x = 0; 2188 int x = 0;
2162 int y = iconToolBar->height(); 2189 int y = iconToolBar->height();
2163 int dX = 0; 2190 int dX = 0;
2164 int dY = 0; 2191 int dY = 0;
2165 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2192 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2166 if ( iconToolBar->y() > height()/2 ) { 2193 if ( iconToolBar->y() > height()/2 ) {
2167 dY = selectFilterMenuTB->sizeHint().height()+8; 2194 dY = selectFilterMenuTB->sizeHint().height()+8;
2168 y = 0; 2195 y = 0;
2169 } 2196 }
2170 } else { 2197 } else {
2171 if ( iconToolBar->x() > width()/2 ) { // right side 2198 if ( iconToolBar->x() > width()/2 ) { // right side
2172 x=0; 2199 x=0;
2173 dX= selectFilterMenuTB->sizeHint().width()+8; 2200 dX= selectFilterMenuTB->sizeHint().width()+8;
2174 y = 0; 2201 y = 0;
2175 } else { 2202 } else {
2176 x= iconToolBar->width(); 2203 x= iconToolBar->width();
2177 y = 0; 2204 y = 0;
2178 } 2205 }
2179 } 2206 }
2180 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2207 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2181 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))); 2208 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)));
2182} 2209}
2183void MainWindow::fillFilterMenu() 2210void MainWindow::fillFilterMenu()
2184{ 2211{
2185 selectFilterMenu->clear(); 2212 selectFilterMenu->clear();
2186 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 2213 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
2187 selectFilterMenu->insertSeparator(); 2214 selectFilterMenu->insertSeparator();
2188 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 ); 2215 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 );
2189 2216
2190 selectFilterMenu->insertSeparator(); 2217 selectFilterMenu->insertSeparator();
2191 QPtrList<CalFilter> fili = mView->filters(); 2218 QPtrList<CalFilter> fili = mView->filters();
2192 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2219 CalFilter *curfilter = mView->filterView()->selectedFilter();
2193 CalFilter *filter = fili.first(); 2220 CalFilter *filter = fili.first();
2194 int iii = 2; 2221 int iii = 2;
2195 bool checkitem = mView->filterView()->filtersEnabled(); 2222 bool checkitem = mView->filterView()->filtersEnabled();
2196 while(filter) { 2223 while(filter) {
2197 selectFilterMenu->insertItem( filter->name(), iii ); 2224 selectFilterMenu->insertItem( filter->name(), iii );
2198 if ( filter == curfilter) 2225 if ( filter == curfilter)
2199 selectFilterMenu->setItemChecked( iii, checkitem ); 2226 selectFilterMenu->setItemChecked( iii, checkitem );
2200 filter = fili.next(); 2227 filter = fili.next();
2201 ++iii; 2228 ++iii;
2202 } 2229 }
2203 if ( !checkitem ) 2230 if ( !checkitem )
2204 selectFilterMenu->setItemChecked( 1, true ); 2231 selectFilterMenu->setItemChecked( 1, true );
2205} 2232}
2206void MainWindow::fillFilterMenuPopup() 2233void MainWindow::fillFilterMenuPopup()
2207{ 2234{
2208 filterPopupMenu->clear(); 2235 filterPopupMenu->clear();
2209 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 ); 2236 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 );
2210 2237
2211 filterPopupMenu->insertSeparator(); 2238 filterPopupMenu->insertSeparator();
2212 QPtrList<CalFilter> fili = mView->filters(); 2239 QPtrList<CalFilter> fili = mView->filters();
2213 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2240 CalFilter *curfilter = mView->filterView()->selectedFilter();
2214 CalFilter *filter = fili.first(); 2241 CalFilter *filter = fili.first();
2215 int iii = 1; 2242 int iii = 1;
2216 bool checkitem = mView->filterView()->filtersEnabled(); 2243 bool checkitem = mView->filterView()->filtersEnabled();
2217 while(filter) { 2244 while(filter) {
2218 filterPopupMenu->insertItem( filter->name(), iii ); 2245 filterPopupMenu->insertItem( filter->name(), iii );
2219 if ( filter == curfilter) 2246 if ( filter == curfilter)
2220 filterPopupMenu->setItemChecked( iii, checkitem ); 2247 filterPopupMenu->setItemChecked( iii, checkitem );
2221 filter = fili.next(); 2248 filter = fili.next();
2222 ++iii; 2249 ++iii;
2223 } 2250 }
2224 if ( !checkitem ) 2251 if ( !checkitem )
2225 filterPopupMenu->setItemChecked( 0, true ); 2252 filterPopupMenu->setItemChecked( 0, true );
2226} 2253}
2227void MainWindow::selectFilter( int fil ) 2254void MainWindow::selectFilter( int fil )
2228{ 2255{
2229 2256
2230 if ( fil == 0 ) { 2257 if ( fil == 0 ) {
2231 mView->editFilters( ); 2258 mView->editFilters( );
2232 } else if ( fil == 1 ){ 2259 } else if ( fil == 1 ){
2233 if ( mView->filterView()->filtersEnabled() ) 2260 if ( mView->filterView()->filtersEnabled() )
2234 mView->toggleFilerEnabled( ); 2261 mView->toggleFilerEnabled( );
2235 } else { 2262 } else {
2236 if ( !mView->filterView()->filtersEnabled() ) { 2263 if ( !mView->filterView()->filtersEnabled() ) {
2237 mView->filterView()->blockSignals( true ); 2264 mView->filterView()->blockSignals( true );
2238 mView->toggleFilerEnabled( ); 2265 mView->toggleFilerEnabled( );
2239 mView->filterView()->blockSignals( false ); 2266 mView->filterView()->blockSignals( false );
2240 } 2267 }
2241 mView->selectFilter( fil-2 ); 2268 mView->selectFilter( fil-2 );
2242 } 2269 }
2243} 2270}
2244void MainWindow::updateFilterToolbar() 2271void MainWindow::updateFilterToolbar()
2245{ 2272{
2246 if ( filterMenubar ) { 2273 if ( filterMenubar ) {
2247 if ( !mView->filterView()->filtersEnabled() ) { 2274 if ( !mView->filterView()->filtersEnabled() ) {
2248 filterMenubar->changeItem( 0, i18n("No Filter") ); 2275 filterMenubar->changeItem( 0, i18n("No Filter") );
2249 } else { 2276 } else {
2250 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2277 CalFilter *curfilter = mView->filterView()->selectedFilter();
2251 if ( curfilter ) { 2278 if ( curfilter ) {
2252 filterMenubar->changeItem( 0, curfilter->name() ); 2279 filterMenubar->changeItem( 0, curfilter->name() );
2253 } 2280 }
2254 } 2281 }
2255 } 2282 }
2256} 2283}
2257void MainWindow::selectFilterPopup( int fil ) 2284void MainWindow::selectFilterPopup( int fil )
2258{ 2285{
2259 selectFilter( fil + 1 ); 2286 selectFilter( fil + 1 );
2260 2287
2261} 2288}
2262void MainWindow::configureToolBar( int item ) 2289void MainWindow::configureToolBar( int item )
2263{ 2290{
2264 2291
2265 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 2292 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
2266 KOPrefs *p = KOPrefs::instance(); 2293 KOPrefs *p = KOPrefs::instance();
2267 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 2294 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
2268 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 ); 2295 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 );
2269 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 ); 2296 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 );
2270 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 2297 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
2271 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 2298 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
2272 p->mShowIconNavigator = configureToolBarMenu->isItemChecked( 22 ); 2299 p->mShowIconNavigator = configureToolBarMenu->isItemChecked( 22 );
2273 p->mShowIconAllday = configureToolBarMenu->isItemChecked( 24 ); 2300 p->mShowIconAllday = configureToolBarMenu->isItemChecked( 24 );
2274 p->mShowIconFilterview = configureToolBarMenu->isItemChecked( 26 ); 2301 p->mShowIconFilterview = configureToolBarMenu->isItemChecked( 26 );
2275 p->mShowIconToggleFull = configureToolBarMenu->isItemChecked( 28 ); 2302 p->mShowIconToggleFull = configureToolBarMenu->isItemChecked( 28 );
2276 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 2303 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
2277 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 2304 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
2278 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 2305 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
2279 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 2306 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
2280 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); 2307 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 );
2281 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 2308 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
2282 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 2309 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
2283 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 2310 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
2284 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 2311 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
2285 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 2312 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
2286 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 2313 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
2287 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 2314 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
2288 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 2315 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
2289 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 2316 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
2290 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 2317 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
2291 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 2318 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
2292 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 2319 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
2293 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); 2320 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 );