summaryrefslogtreecommitdiffabout
path: root/korganizer/calendarview.cpp
Unidiff
Diffstat (limited to 'korganizer/calendarview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp52
1 files changed, 34 insertions, 18 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 65750af..426e8f9 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -632,106 +632,121 @@ void CalendarView::init()
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 ) 657void CalendarView::nextConflict( bool all, bool allday )
658{ 658{
659 659
660 QPtrList<Event> testlist = mCalendar->events(); 660 QPtrList<Event> testlist = mCalendar->events();
661 Event * test = testlist.first(); 661 Event * test = testlist.first();
662 while ( test ) { 662 while ( test ) {
663 test->setTagged( false ); 663 test->setTagged( false );
664 test = testlist.next();
664 } 665 }
665 QDateTime startDT = QDateTime (mNavigator->selectedDates().first().addDays(1), QTime ( 0,0,0)); 666 QDateTime startDT = QDateTime (mNavigator->selectedDates().first().addDays(1), QTime ( 0,0,0));
666 QDateTime conflict; 667 QDateTime conflict;
667 QDateTime retVal; 668 QDateTime retVal;
668 bool found = false; 669 bool found = false;
669 Event * cE = 0; 670 Event * cE = 0;
671 Event * cE2 = 0;
670 QPtrList<Event> testlist2 = testlist; 672 QPtrList<Event> testlist2 = testlist;
673 test = testlist.first();
674 bool skip = false;
671 while ( test ) { 675 while ( test ) {
672 Event * test2 = testlist2.first(); 676 skip = false;
673 while ( test2 ) { 677 if ( !all ) skip = ( allday != test->doesFloat() );
674 if ( !test2->isTagged() ) { 678 if ( !skip ) {
675 if ( test->isOverlapping ( test2, &retVal, true ) ) { 679 Event * test2 = testlist2.first();
676 if ( ! found ) { 680 while ( test2 ) {
677 if ( retVal >= startDT ) { 681 skip = false;
678 conflict = retVal; 682 if ( !all ) skip = ( allday != test2->doesFloat() );
679 cE = test; 683 if ( !skip ) {
680 found = true; 684 if ( !test2->isTagged() ) {
681 } 685 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
682 } else { 686 //qDebug("overlap ");
683 if ( retVal >= startDT && retVal < conflict ) { 687 if ( ! found ) {
684 conflict = retVal; 688 if ( retVal >= startDT ) {
685 cE = test; 689 conflict = retVal;
690 cE = test;
691 cE2 = test2;
692 found = true;
693 }
694 } else {
695 if ( retVal >= startDT && retVal < conflict ) {
696 conflict = retVal;
697 cE = test;
698 cE2 = test2;
699 }
700 }
686 } 701 }
687 } 702 }
688 } 703 }
704 test2 = testlist2.next();
689 } 705 }
690 test2 = testlist2.next();
691 } 706 }
692 test->setTagged( true ); 707 test->setTagged( true );
693 test = testlist.next(); 708 test = testlist.next();
694 } 709 }
695 if ( found ) { 710 if ( found ) {
696 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 711 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
697 mViewManager->showDayView(); 712 mViewManager->showDayView();
698 mNavigator->slotDaySelect( conflict.date() ); 713 mNavigator->slotDaySelect( conflict.date() );
699 int hour = conflict.time().hour(); 714 int hour = conflict.time().hour();
700 mViewManager->agendaView()->setStartHour( hour ); 715 mViewManager->agendaView()->setStartHour( hour );
701 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( mConflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 716 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
702 return; 717 return;
703 } 718 }
704 719
705 topLevelWidget()->setCaption( i18n("No conflict found within the next two years") ); 720 topLevelWidget()->setCaption( i18n("No conflict found") );
706 qDebug("No conflict found "); 721 qDebug("No conflict found ");
707 return; 722 return;
708 723
709 724
710 725
711 726
712 727
713#if 0 728#if 0
714 729
715 730
716 QDate end = start.addDays( 365*2); 731 QDate end = start.addDays( 365*2);
717 while ( start < end ) { 732 while ( start < end ) {
718 QPtrList<Event> eventList = calendar()->events( start ); 733 QPtrList<Event> eventList = calendar()->events( start );
719 Event * ev = eventList.first(); 734 Event * ev = eventList.first();
720 QPtrList<Event> test = eventList; 735 QPtrList<Event> test = eventList;
721 while ( ev ) { 736 while ( ev ) {
722 //qDebug("found %d on %s ", eventList.count(), start.toString().latin1()); 737 //qDebug("found %d on %s ", eventList.count(), start.toString().latin1());
723 Event * t_ev = test.first(); 738 Event * t_ev = test.first();
724 QDateTime es = ev->dtStart(); 739 QDateTime es = ev->dtStart();
725 QDateTime ee = ev->dtEnd(); 740 QDateTime ee = ev->dtEnd();
726 if ( ev->doesFloat() ) 741 if ( ev->doesFloat() )
727 ee = ee.addDays( 1 ); 742 ee = ee.addDays( 1 );
728 if ( ! all ) { 743 if ( ! all ) {
729 if ( ev->doesFloat() != allday ) 744 if ( ev->doesFloat() != allday )
730 t_ev = 0; 745 t_ev = 0;
731 } 746 }
732 while ( t_ev ) { 747 while ( t_ev ) {
733 bool skip = false; 748 bool skip = false;
734 if ( ! all ) { 749 if ( ! all ) {
735 if ( t_ev->doesFloat() != allday ) 750 if ( t_ev->doesFloat() != allday )
736 skip = true; 751 skip = true;
737 } 752 }
@@ -2765,67 +2780,68 @@ void CalendarView::changeEventDisplay(Event *which, int action)
2765 //mDialogManager->updateSearchDialog(); 2780 //mDialogManager->updateSearchDialog();
2766 if (which) { 2781 if (which) {
2767 // If there is an event view visible update the display 2782 // If there is an event view visible update the display
2768 mViewManager->currentView()->changeEventDisplay(which,action); 2783 mViewManager->currentView()->changeEventDisplay(which,action);
2769 // TODO: check, if update needed 2784 // TODO: check, if update needed
2770 // if (which->getTodoStatus()) { 2785 // if (which->getTodoStatus()) {
2771 mTodoList->updateView(); 2786 mTodoList->updateView();
2772 if ( action != KOGlobals::EVENTDELETED ) { 2787 if ( action != KOGlobals::EVENTDELETED ) {
2773 mConflictingEvent = which ; 2788 mConflictingEvent = which ;
2774 QTimer::singleShot( 1000, this, SLOT ( checkConflictForEvent() ) ); 2789 QTimer::singleShot( 1000, this, SLOT ( checkConflictForEvent() ) );
2775 } 2790 }
2776 // } 2791 // }
2777 } else { 2792 } else {
2778 mViewManager->currentView()->updateView(); 2793 mViewManager->currentView()->updateView();
2779 } 2794 }
2780} 2795}
2781void CalendarView::checkConflictForEvent() 2796void CalendarView::checkConflictForEvent()
2782{ 2797{
2783 2798
2784 if (!KOPrefs::instance()->mConfirm) 2799 if (!KOPrefs::instance()->mConfirm)
2785 return; 2800 return;
2786 if ( ! mConflictingEvent ) return; 2801 if ( ! mConflictingEvent ) return;
2787 if ( mConflictingEvent->doesFloat() ) { 2802 if ( mConflictingEvent->doesFloat() ) {
2788 mConflictingEvent = 0; 2803 mConflictingEvent = 0;
2789 return; 2804 return;
2790 } 2805 }
2791 QPtrList<Event> testlist = mCalendar->events(); 2806 QPtrList<Event> testlist = mCalendar->events();
2792 Event * test = testlist.first(); 2807 Event * test = testlist.first();
2793 QDateTime conflict; 2808 QDateTime conflict;
2794 QDateTime retVal; 2809 QDateTime retVal;
2795 bool found = false; 2810 bool found = false;
2796 Event * cE = 0; 2811 Event * cE = 0;
2812 QDateTime current = QDateTime::currentDateTime();
2797 while ( test ) { 2813 while ( test ) {
2798 if ( !test->doesFloat() ) { 2814 if ( !test->doesFloat() ) {
2799 if ( mConflictingEvent->isOverlapping ( test, &retVal, true ) ) { 2815 if ( mConflictingEvent->isOverlapping ( test, &retVal, &current ) ) {
2800 if ( ! found ) { 2816 if ( ! found ) {
2801 conflict = retVal; 2817 conflict = retVal;
2802 cE = test; 2818 cE = test;
2803 } else { 2819 } else {
2804 if ( retVal < conflict ) { 2820 if ( retVal < conflict ) {
2805 conflict = retVal; 2821 conflict = retVal;
2806 cE = test; 2822 cE = test;
2807 } 2823 }
2808 } 2824 }
2809 found = true; 2825 found = true;
2810 } 2826 }
2811 } 2827 }
2812 test = testlist.next(); 2828 test = testlist.next();
2813 } 2829 }
2814 if ( found ) { 2830 if ( found ) {
2815 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( mConflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; 2831 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( mConflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ;
2816 qApp->processEvents(); 2832 qApp->processEvents();
2817 int km = KMessageBox::warningContinueCancel(this,mess, 2833 int km = KMessageBox::warningContinueCancel(this,mess,
2818 i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!")); 2834 i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!"));
2819 if ( km != KMessageBox::Continue ) 2835 if ( km != KMessageBox::Continue )
2820 return; 2836 return;
2821 2837
2822 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 2838 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
2823 mViewManager->showDayView(); 2839 mViewManager->showDayView();
2824 mNavigator->slotDaySelect( conflict.date() ); 2840 mNavigator->slotDaySelect( conflict.date() );
2825 int hour = conflict.time().hour(); 2841 int hour = conflict.time().hour();
2826 mViewManager->agendaView()->setStartHour( hour ); 2842 mViewManager->agendaView()->setStartHour( hour );
2827 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( mConflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 2843 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( mConflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) );
2828 return; 2844 return;
2829 } 2845 }
2830 2846
2831 return; 2847 return;