summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-07-31 12:48:10 (UTC)
committer zautrix <zautrix>2005-07-31 12:48:10 (UTC)
commit4fa00d59fd2895036e9f3bce7902bf6360679a0b (patch) (unidiff)
tree6d66c464aac30fc4aa9d5ace6ed08feb075a0182
parent40d43ebcc70748da775532a16f187c733aca8c8e (diff)
downloadkdepimpi-4fa00d59fd2895036e9f3bce7902bf6360679a0b.zip
kdepimpi-4fa00d59fd2895036e9f3bce7902bf6360679a0b.tar.gz
kdepimpi-4fa00d59fd2895036e9f3bce7902bf6360679a0b.tar.bz2
creating tt test data
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp204
-rw-r--r--korganizer/calendarview.h1
2 files changed, 202 insertions, 3 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index a1b1d71..8269910 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -655,443 +655,641 @@ CalendarView::~CalendarView()
655 delete mEventViewerDialog; 655 delete mEventViewerDialog;
656 //kdDebug() << "~CalendarView() done" << endl; 656 //kdDebug() << "~CalendarView() done" << endl;
657} 657}
658 658
659 659
660void CalendarView::nextConflict( bool all, bool allday ) 660void CalendarView::nextConflict( bool all, bool allday )
661{ 661{
662 static bool block = false; 662 static bool block = false;
663 if ( block ) return; 663 if ( block ) return;
664 block = true; 664 block = true;
665 QPtrList<Event> testlist = mCalendar->events(); 665 QPtrList<Event> testlist = mCalendar->events();
666 Event * test = testlist.first(); 666 Event * test = testlist.first();
667 while ( test ) { 667 while ( test ) {
668 test->setTagged( false ); 668 test->setTagged( false );
669 test = testlist.next(); 669 test = testlist.next();
670 } 670 }
671 QTime st ( 0,0,0); 671 QTime st ( 0,0,0);
672 if ( mViewManager->currentView() == mViewManager->agendaView() ) 672 if ( mViewManager->currentView() == mViewManager->agendaView() )
673 st = mViewManager->agendaView()->agenda()->getEndTime(); 673 st = mViewManager->agendaView()->agenda()->getEndTime();
674 //qDebug("time %s ", st.toString().latin1()); 674 //qDebug("time %s ", st.toString().latin1());
675 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 675 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
676 QDateTime conflict; 676 QDateTime conflict;
677 QDateTime retVal; 677 QDateTime retVal;
678 bool found = false; 678 bool found = false;
679 Event * cE = 0; 679 Event * cE = 0;
680 Event * cE2 = 0; 680 Event * cE2 = 0;
681 QPtrList<Event> testlist2 = testlist; 681 QPtrList<Event> testlist2 = testlist;
682 test = testlist.first(); 682 test = testlist.first();
683 bool skip = false; 683 bool skip = false;
684 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 684 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
685 //QTime tm; 685 //QTime tm;
686 //tm.start(); 686 //tm.start();
687 while ( test ) { 687 while ( test ) {
688 qApp->processEvents(); 688 qApp->processEvents();
689 skip = false; 689 skip = false;
690 if ( !all ) skip = ( allday != test->doesFloat() ); 690 if ( !all ) skip = ( allday != test->doesFloat() );
691 if ( !skip ) { 691 if ( !skip ) {
692 if ( found ) 692 if ( found )
693 skip = !test->matchTime( &startDT, &conflict ); 693 skip = !test->matchTime( &startDT, &conflict );
694 else 694 else
695 skip = !test->matchTime( &startDT, 0 ); 695 skip = !test->matchTime( &startDT, 0 );
696 } 696 }
697 if ( !skip ) { 697 if ( !skip ) {
698 Event * test2 = testlist2.first(); 698 Event * test2 = testlist2.first();
699 while ( test2 ) { 699 while ( test2 ) {
700 skip = test2->isTagged(); 700 skip = test2->isTagged();
701 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 701 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
702 if ( !skip ) { 702 if ( !skip ) {
703 if ( found ) 703 if ( found )
704 skip = !test2->matchTime( &startDT, &conflict ); 704 skip = !test2->matchTime( &startDT, &conflict );
705 else 705 else
706 skip = !test2->matchTime( &startDT, 0 ); 706 skip = !test2->matchTime( &startDT, 0 );
707 } 707 }
708 if ( !skip ) { 708 if ( !skip ) {
709 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 709 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
710 //qDebug("overlap "); 710 //qDebug("overlap ");
711 if ( ! found ) { 711 if ( ! found ) {
712 if ( retVal >= startDT ) { 712 if ( retVal >= startDT ) {
713 conflict = retVal; 713 conflict = retVal;
714 cE = test; 714 cE = test;
715 cE2 = test2; 715 cE2 = test2;
716 found = true; 716 found = true;
717 } 717 }
718 } else { 718 } else {
719 if ( retVal >= startDT && retVal < conflict ) { 719 if ( retVal >= startDT && retVal < conflict ) {
720 conflict = retVal; 720 conflict = retVal;
721 cE = test; 721 cE = test;
722 cE2 = test2; 722 cE2 = test2;
723 } 723 }
724 } 724 }
725 } 725 }
726 } 726 }
727 test2 = testlist2.next(); 727 test2 = testlist2.next();
728 } 728 }
729 } 729 }
730 test->setTagged( true ); 730 test->setTagged( true );
731 test = testlist.next(); 731 test = testlist.next();
732 } 732 }
733 //qDebug("Search time : %d", tm.elapsed()); 733 //qDebug("Search time : %d", tm.elapsed());
734 if ( found ) { 734 if ( found ) {
735 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 735 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
736 mViewManager->showDayView(); 736 mViewManager->showDayView();
737 mNavigator->slotDaySelect( conflict.date() ); 737 mNavigator->slotDaySelect( conflict.date() );
738 int hour = conflict.time().hour(); 738 int hour = conflict.time().hour();
739 mViewManager->agendaView()->setStartHour( hour ); 739 mViewManager->agendaView()->setStartHour( hour );
740 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 740 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
741 block = false; 741 block = false;
742 return; 742 return;
743 } 743 }
744 744
745 topLevelWidget()->setCaption( i18n("No conflict found") ); 745 topLevelWidget()->setCaption( i18n("No conflict found") );
746 //qDebug("No conflict found "); 746 //qDebug("No conflict found ");
747 block = false; 747 block = false;
748 return; 748 return;
749} 749}
750 750
751void CalendarView::conflictAll() 751void CalendarView::conflictAll()
752{ 752{
753 nextConflict ( true, true ); 753 nextConflict ( true, true );
754} 754}
755void CalendarView::conflictAllday() 755void CalendarView::conflictAllday()
756{ 756{
757 nextConflict ( false, true ); 757 nextConflict ( false, true );
758} 758}
759void CalendarView::conflictNotAll() 759void CalendarView::conflictNotAll()
760{ 760{
761 nextConflict ( false, false ); 761 nextConflict ( false, false );
762} 762}
763 763
764void CalendarView::setCalReadOnly( int id, bool readO ) 764void CalendarView::setCalReadOnly( int id, bool readO )
765{ 765{
766 if ( readO ) { 766 if ( readO ) {
767 emit save(); 767 emit save();
768 } 768 }
769 mCalendar->setReadOnly( id, readO ); 769 mCalendar->setReadOnly( id, readO );
770} 770}
771void CalendarView::setScrollBarStep(int val ) 771void CalendarView::setScrollBarStep(int val )
772{ 772{
773#ifdef DESKTOP_VERSION 773#ifdef DESKTOP_VERSION
774 mDateScrollBar->setLineStep ( val ); 774 mDateScrollBar->setLineStep ( val );
775#endif 775#endif
776} 776}
777void CalendarView::scrollBarValue(int val ) 777void CalendarView::scrollBarValue(int val )
778{ 778{
779#ifdef DESKTOP_VERSION 779#ifdef DESKTOP_VERSION
780 if ( QApplication::desktop()->width() < 800 ) return; 780 if ( QApplication::desktop()->width() < 800 ) return;
781 static bool block = false; 781 static bool block = false;
782 if ( block ) return; 782 if ( block ) return;
783 block = true; 783 block = true;
784 int count = mNavigator->selectedDates().count(); 784 int count = mNavigator->selectedDates().count();
785 int day = mNavigator->selectedDates().first().dayOfYear(); 785 int day = mNavigator->selectedDates().first().dayOfYear();
786 int stepdays = val; 786 int stepdays = val;
787 if ( mDateScrollBar->lineStep () <= count ) { 787 if ( mDateScrollBar->lineStep () <= count ) {
788 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 788 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
789 //qDebug("VAL %d ",val ); 789 //qDebug("VAL %d ",val );
790 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 790 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
791 stepdays = day+stepdays; 791 stepdays = day+stepdays;
792 if ( stepdays < 0 ) stepdays = 0; 792 if ( stepdays < 0 ) stepdays = 0;
793 } 793 }
794 if ( stepdays == day ) { 794 if ( stepdays == day ) {
795 block = false; 795 block = false;
796 return; 796 return;
797 } 797 }
798 int year = mNavigator->selectedDates().first().year(); 798 int year = mNavigator->selectedDates().first().year();
799 QDate d ( year,1,1 ); 799 QDate d ( year,1,1 );
800 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 800 mNavigator->selectDates( d.addDays( stepdays-1) , count );
801 block = false; 801 block = false;
802#endif 802#endif
803 803
804} 804}
805void CalendarView::updateView(const QDate &start, const QDate &end) 805void CalendarView::updateView(const QDate &start, const QDate &end)
806{ 806{
807#ifdef DESKTOP_VERSION 807#ifdef DESKTOP_VERSION
808 if ( ! mDateScrollBar->draggingSlider () ) { 808 if ( ! mDateScrollBar->draggingSlider () ) {
809 int dof = start.dayOfYear(); 809 int dof = start.dayOfYear();
810 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 810 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
811 if ( dof != mDateScrollBar->value() ) { 811 if ( dof != mDateScrollBar->value() ) {
812 mDateScrollBar->blockSignals( true ); 812 mDateScrollBar->blockSignals( true );
813 mDateScrollBar->setValue( start.dayOfYear()); 813 mDateScrollBar->setValue( start.dayOfYear());
814 mDateScrollBar->blockSignals( false ); 814 mDateScrollBar->blockSignals( false );
815 } 815 }
816 } 816 }
817#endif 817#endif
818 mTodoList->updateView(); 818 mTodoList->updateView();
819 mViewManager->updateView(start, end); 819 mViewManager->updateView(start, end);
820 //mDateNavigator->updateView(); 820 //mDateNavigator->updateView();
821} 821}
822 822
823 823
824 824
825void CalendarView::checkFiles() 825void CalendarView::checkFiles()
826{ 826{
827 QString message; 827 QString message;
828 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 828 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
829 KopiCalendarFile * cal = calendars.first(); 829 KopiCalendarFile * cal = calendars.first();
830 while ( cal ) { 830 while ( cal ) {
831 if ( cal->mErrorOnLoad ) { 831 if ( cal->mErrorOnLoad ) {
832 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 832 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
833 } 833 }
834 cal = calendars.next(); 834 cal = calendars.next();
835 } 835 }
836 if ( !message.isEmpty() ) { 836 if ( !message.isEmpty() ) {
837 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); 837 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);
838 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); 838 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed"));
839 } 839 }
840 static bool firstTime = true; 840 static bool firstTime = true;
841 if ( firstTime ) { 841 if ( firstTime ) {
842 firstTime = false; 842 firstTime = false;
843 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 843 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
844 } 844 }
845} 845}
846void CalendarView::checkAlarms() 846void CalendarView::checkAlarms()
847{ 847{
848
849
850 KConfig *config = KOGlobals::config(); 848 KConfig *config = KOGlobals::config();
851 config->setGroup( "AppRun" ); 849 config->setGroup( "AppRun" );
852 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 850 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
853 int daysto = dt.daysTo( QDate::currentDate() ); 851 int daysto = dt.daysTo( QDate::currentDate() );
854 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 852 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
855 dt = dt.addDays( days ); 853 dt = dt.addDays( days );
856 int secto = dt.secsTo( QDateTime::currentDateTime() ); 854 int secto = dt.secsTo( QDateTime::currentDateTime() );
857 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 855 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
858 //qDebug("KO: Reading program stop %d ", secs); 856 //qDebug("KO: Reading program stop %d ", secs);
859 //secs -= ( 3600 * 24*3 ); // debug only 857 //secs -= ( 3600 * 24*3 ); // debug only
860 QDateTime latest = dt.addSecs ( secs ); 858 QDateTime latest = dt.addSecs ( secs );
861 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 859 qDebug("KO: Last termination on %s ", latest.toString().latin1());
862 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 860 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
863 QPtrList<Incidence> el = mCalendar->rawIncidences(); 861 QPtrList<Incidence> el = mCalendar->rawIncidences();
864 QPtrList<Incidence> al; 862 QPtrList<Incidence> al;
865 Incidence* inL = el.first(); 863 Incidence* inL = el.first();
866 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 864 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
867 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 865 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
868 while ( inL ) { 866 while ( inL ) {
869 bool ok = false; 867 bool ok = false;
870 int offset = 0; 868 int offset = 0;
871 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 869 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
872 if ( ok ) { 870 if ( ok ) {
873 //qDebug("OK %s",next.toString().latin1()); 871 //qDebug("OK %s",next.toString().latin1());
874 if ( next < cur ) { 872 if ( next < cur ) {
875 al.append( inL ); 873 al.append( inL );
876 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 874 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
877 } 875 }
878 } 876 }
879 inL = el.next(); 877 inL = el.next();
880 } 878 }
881 if ( al.count() ) { 879 if ( al.count() ) {
882 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 880 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
883 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 881 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
884 QVBoxLayout* lay = new QVBoxLayout( dia ); 882 QVBoxLayout* lay = new QVBoxLayout( dia );
885 lay->setSpacing( 0 ); 883 lay->setSpacing( 0 );
886 lay->setMargin( 0 ); 884 lay->setMargin( 0 );
887 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 885 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
888 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 886 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
889 lay->addWidget( matb ); 887 lay->addWidget( matb );
890 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 888 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
891 int wid = 210; 889 int wid = 210;
892 int x = QApplication::desktop()->width() - wid - 7; 890 int x = QApplication::desktop()->width() - wid - 7;
893 int y = QApplication::desktop()->height() - wid - 70; 891 int y = QApplication::desktop()->height() - wid - 70;
894 dia->setGeometry ( x,y,wid,wid); 892 dia->setGeometry ( x,y,wid,wid);
895 } else { 893 } else {
896 int si = 220; 894 int si = 220;
897 if ( QApplication::desktop()->width() > 470 ) 895 if ( QApplication::desktop()->width() > 470 )
898 si = 400; 896 si = 400;
899 dia->resize(si,si/2); 897 dia->resize(si,si/2);
900 } 898 }
901 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 899 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
902 dia->show(); 900 dia->show();
903 901
904 } 902 }
903#if 0
904 // for creating timetracker test data
905 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc ");
906 Todo * nt;
907 mCalendar->close();
908 {
909 Todo * root1 = new Todo;
910 mCalendar->addTodo( root1 );
911 root1->setSummary( "Project_1");
912 root1->setPriority( 1 );
913 root1->setDescription( "This is a test description of a root Project" );
914 root1->setPercentComplete( 20 );
915 updateView();
916 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
917 QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) );
918
919 nt = new Todo;
920 mCalendar->addTodo( nt );
921 nt->setSummary( "Planning_Project_1");
922 nt->setPriority( 1 );
923 nt->setDescription( "This is a test description of Planning_Project_1" );
924 nt->setPercentComplete( 20 );
925
926
927 Todo * sub1 = nt;
928 sub1->setRelatedTo( root1 );
929
930 nt = new Todo;
931 mCalendar->addTodo( nt );
932 nt->setSummary( "Planning_Project_1: Lutz");
933 nt->setPriority( 1 );
934 nt->setDescription( "This todo counts the actual work of a person on a project" );
935 nt->setPercentComplete( 20 );
936 Todo * workLutz11 = nt;
937 workLutz11->setRelatedTo( sub1 );
938
939 nt = new Todo;
940 mCalendar->addTodo( nt );
941 nt->setSummary( "Planning_Project_1: Norbert");
942 nt->setPriority( 1 );
943 nt->setDescription( "This todo counts the actual work of a person on a project" );
944 nt->setPercentComplete( 20 );
945 Todo * workNorbert11 = nt;
946 workNorbert11->setRelatedTo( sub1 );
947
948 nt = new Todo;
949 mCalendar->addTodo( nt );
950 nt->setSummary( "Work on 1");
951 nt->setPriority( 1 );
952 nt->setDescription( "This is a test description of Work Project_1" );
953 nt->setPercentComplete( 20 );
954
955 Todo * sub2 = nt;
956 sub2->setRelatedTo( root1 );
957
958
959 nt = new Todo;
960 mCalendar->addTodo( nt );
961 nt->setSummary( "Work on 1: Lutz");
962 nt->setPriority( 1 );
963 nt->setDescription( "This todo counts the actual work of a person on a project" );
964 nt->setPercentComplete( 20 );
965 Todo * workLutz12 = nt;
966 workLutz12->setRelatedTo( sub2 );
967
968 nt = new Todo;
969 mCalendar->addTodo( nt );
970 nt->setSummary( "Work on 1: Norbert");
971 nt->setPriority( 1 );
972 nt->setDescription( "This todo counts the actual work of a person on a project" );
973 nt->setPercentComplete( 20 );
974 Todo * workNorbert12 = nt;
975 workNorbert12->setRelatedTo( sub2 );
976
977 int secLenRunning = 7200;
978 int secLenPausing = 3600 * 3;
979 int dayInterval = 1;
980 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval );
981 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 );
982 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1);
983 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3);
984 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0);
985 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1);
986 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3);
987 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0);
988
989 }
990
991 {
992 Todo * root1 = new Todo;
993 mCalendar->addTodo( root1 );
994 root1->setSummary( "Project_2");
995 root1->setPriority( 1 );
996 root1->setDescription( "This is a test description of a root Project 2" );
997 root1->setPercentComplete( 20 );
998 updateView();
999 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
1000 QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) );
1001 int secLenRunning = 7200;
1002 int secLenPausing = 3600 * 3;
1003 int dayInterval = 1;
1004
1005 nt = new Todo;
1006 mCalendar->addTodo( nt );
1007 nt->setSummary( "Planning_Project_2");
1008 nt->setPriority( 1 );
1009 nt->setDescription( "This is a test description of Planning_Project_2" );
1010 nt->setPercentComplete( 20 );
1011
1012
1013 Todo * sub1 = nt;
1014 sub1->setRelatedTo( root1 );
1015
1016 nt = new Todo;
1017 mCalendar->addTodo( nt );
1018 nt->setSummary( "Planning_Project_2: Lutz");
1019 nt->setPriority( 1 );
1020 nt->setDescription( "This todo counts the actual work of a person on a project" );
1021 nt->setPercentComplete( 20 );
1022 Todo * workLutz11 = nt;
1023 workLutz11->setRelatedTo( sub1 );
1024
1025 nt = new Todo;
1026 mCalendar->addTodo( nt );
1027 nt->setSummary( "Planning_Project_2: Norbert");
1028 nt->setPriority( 1 );
1029 nt->setDescription( "This todo counts the actual work of a person on a project" );
1030 nt->setPercentComplete( 20 );
1031 Todo * workNorbert11 = nt;
1032 workNorbert11->setRelatedTo( sub1 );
1033
1034 nt = new Todo;
1035 mCalendar->addTodo( nt );
1036 nt->setSummary( "Work on 2");
1037 nt->setPriority( 1 );
1038 nt->setDescription( "This is a test description of Work Project_2" );
1039 nt->setPercentComplete( 20 );
1040
1041 Todo * sub2 = nt;
1042 sub2->setRelatedTo( root1 );
1043
1044
1045 nt = new Todo;
1046 mCalendar->addTodo( nt );
1047 nt->setSummary( "Work on 2: Lutz");
1048 nt->setPriority( 1 );
1049 nt->setDescription( "This todo counts the actual work of a person on a project" );
1050 nt->setPercentComplete( 20 );
1051 Todo * workLutz12 = nt;
1052 workLutz12->setRelatedTo( sub2 );
1053
1054 nt = new Todo;
1055 mCalendar->addTodo( nt );
1056 nt->setSummary( "Work on 2: Norbert");
1057 nt->setPriority( 1 );
1058 nt->setDescription( "This todo counts the actual work of a person on a project" );
1059 nt->setPercentComplete( 20 );
1060 Todo * workNorbert12 = nt;
1061 workNorbert12->setRelatedTo( sub2 );
1062 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 );
1063 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2);
1064 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7);
1065 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0);
1066 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1);
1067 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0);
1068 createRunningDate4Todo( workNorbert11, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0);
1069 }
1070 updateView();
1071#endif
1072}
1073void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval )
1074{
1075 static int ccc = 0;
1076 ++ccc;
1077 QDateTime t_start = start;
1078 runT->setPriority( 5 );
1079 runT->setPercentComplete( 0 );
1080 int count = 0;
1081 int prio = 5;
1082 int complete = 0;
1083 while ( t_start < end ) {
1084 ++count;
1085 if ( count > ccc ) {
1086 count = 0;
1087 --prio;
1088 if ( prio == 0 ) prio = 5;
1089 complete += 20;
1090 if ( complete > 100 ) complete = 0;
1091 runT->setPriority( prio );
1092 runT->setPercentComplete( complete );
1093 }
1094 runT->setRunning( true );
1095 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) );
1096 if ( dayInterval )
1097 t_start = t_start.addDays( dayInterval );
1098 else {
1099 t_start = t_start.addSecs( secLenRunning + secLenPausing );
1100 }
1101 }
905} 1102}
1103
906void CalendarView::showDay( QDate d ) 1104void CalendarView::showDay( QDate d )
907{ 1105{
908 dateNavigator()->blockSignals( true ); 1106 dateNavigator()->blockSignals( true );
909 dateNavigator()->selectDate( d ); 1107 dateNavigator()->selectDate( d );
910 dateNavigator()->blockSignals( false ); 1108 dateNavigator()->blockSignals( false );
911 mViewManager->showDayView(); 1109 mViewManager->showDayView();
912 //dateNavigator()->selectDate( d ); 1110 //dateNavigator()->selectDate( d );
913} 1111}
914void CalendarView::timerAlarm() 1112void CalendarView::timerAlarm()
915{ 1113{
916 //qDebug("CalendarView::timerAlarm() "); 1114 //qDebug("CalendarView::timerAlarm() ");
917 computeAlarm(mAlarmNotification ); 1115 computeAlarm(mAlarmNotification );
918} 1116}
919 1117
920void CalendarView::suspendAlarm() 1118void CalendarView::suspendAlarm()
921{ 1119{
922 //qDebug(" CalendarView::suspendAlarm() "); 1120 //qDebug(" CalendarView::suspendAlarm() ");
923 computeAlarm(mSuspendAlarmNotification ); 1121 computeAlarm(mSuspendAlarmNotification );
924 1122
925} 1123}
926 1124
927void CalendarView::startAlarm( QString mess , QString filename) 1125void CalendarView::startAlarm( QString mess , QString filename)
928{ 1126{
929 1127
930 topLevelWidget()->showNormal(); 1128 topLevelWidget()->showNormal();
931 topLevelWidget()->setActiveWindow(); 1129 topLevelWidget()->setActiveWindow();
932 topLevelWidget()->raise(); 1130 topLevelWidget()->raise();
933 1131
934 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 1132 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
935 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 1133 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
936 1134
937} 1135}
938 1136
939void CalendarView::checkNextTimerAlarm() 1137void CalendarView::checkNextTimerAlarm()
940{ 1138{
941 mCalendar->checkAlarmForIncidence( 0, true ); 1139 mCalendar->checkAlarmForIncidence( 0, true );
942} 1140}
943 1141
944void CalendarView::computeAlarm( QString msg ) 1142void CalendarView::computeAlarm( QString msg )
945{ 1143{
946 1144
947 QString mess = msg; 1145 QString mess = msg;
948 QString mAlarmMessage = mess.mid( 9 ); 1146 QString mAlarmMessage = mess.mid( 9 );
949 QString filename = MainWindow::resourcePath(); 1147 QString filename = MainWindow::resourcePath();
950 filename += "koalarm.wav"; 1148 filename += "koalarm.wav";
951 QString tempfilename; 1149 QString tempfilename;
952 if ( mess.left( 13 ) == "suspend_alarm") { 1150 if ( mess.left( 13 ) == "suspend_alarm") {
953 bool error = false; 1151 bool error = false;
954 int len = mess.mid( 13 ).find("+++"); 1152 int len = mess.mid( 13 ).find("+++");
955 if ( len < 2 ) 1153 if ( len < 2 )
956 error = true; 1154 error = true;
957 else { 1155 else {
958 tempfilename = mess.mid( 13, len ); 1156 tempfilename = mess.mid( 13, len );
959 if ( !QFile::exists( tempfilename ) ) 1157 if ( !QFile::exists( tempfilename ) )
960 error = true; 1158 error = true;
961 } 1159 }
962 if ( ! error ) { 1160 if ( ! error ) {
963 filename = tempfilename; 1161 filename = tempfilename;
964 } 1162 }
965 mAlarmMessage = mess.mid( 13+len+3 ); 1163 mAlarmMessage = mess.mid( 13+len+3 );
966 //qDebug("suspend file %s ",tempfilename.latin1() ); 1164 //qDebug("suspend file %s ",tempfilename.latin1() );
967 startAlarm( mAlarmMessage, filename); 1165 startAlarm( mAlarmMessage, filename);
968 return; 1166 return;
969 } 1167 }
970 if ( mess.left( 11 ) == "timer_alarm") { 1168 if ( mess.left( 11 ) == "timer_alarm") {
971 //mTimerTime = 0; 1169 //mTimerTime = 0;
972 startAlarm( mess.mid( 11 ), filename ); 1170 startAlarm( mess.mid( 11 ), filename );
973 return; 1171 return;
974 } 1172 }
975 if ( mess.left( 10 ) == "proc_alarm") { 1173 if ( mess.left( 10 ) == "proc_alarm") {
976 bool error = false; 1174 bool error = false;
977 int len = mess.mid( 10 ).find("+++"); 1175 int len = mess.mid( 10 ).find("+++");
978 if ( len < 2 ) 1176 if ( len < 2 )
979 error = true; 1177 error = true;
980 else { 1178 else {
981 tempfilename = mess.mid( 10, len ); 1179 tempfilename = mess.mid( 10, len );
982 if ( !QFile::exists( tempfilename ) ) 1180 if ( !QFile::exists( tempfilename ) )
983 error = true; 1181 error = true;
984 } 1182 }
985 if ( error ) { 1183 if ( error ) {
986 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 1184 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
987 mAlarmMessage += mess.mid( 10+len+3+9 ); 1185 mAlarmMessage += mess.mid( 10+len+3+9 );
988 } else { 1186 } else {
989 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 1187 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
990 //qDebug("-----system command %s ",tempfilename.latin1() ); 1188 //qDebug("-----system command %s ",tempfilename.latin1() );
991#ifndef _WIN32_ 1189#ifndef _WIN32_
992 if ( vfork () == 0 ) { 1190 if ( vfork () == 0 ) {
993 execl ( tempfilename.latin1(), 0 ); 1191 execl ( tempfilename.latin1(), 0 );
994 return; 1192 return;
995 } 1193 }
996#else 1194#else
997 QProcess* p = new QProcess(); 1195 QProcess* p = new QProcess();
998 p->addArgument( tempfilename.latin1() ); 1196 p->addArgument( tempfilename.latin1() );
999 p->start(); 1197 p->start();
1000 return; 1198 return;
1001#endif 1199#endif
1002 1200
1003 return; 1201 return;
1004 } 1202 }
1005 1203
1006 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 1204 //qDebug("+++++++system command %s ",tempfilename.latin1() );
1007 } 1205 }
1008 if ( mess.left( 11 ) == "audio_alarm") { 1206 if ( mess.left( 11 ) == "audio_alarm") {
1009 bool error = false; 1207 bool error = false;
1010 int len = mess.mid( 11 ).find("+++"); 1208 int len = mess.mid( 11 ).find("+++");
1011 if ( len < 2 ) 1209 if ( len < 2 )
1012 error = true; 1210 error = true;
1013 else { 1211 else {
1014 tempfilename = mess.mid( 11, len ); 1212 tempfilename = mess.mid( 11, len );
1015 if ( !QFile::exists( tempfilename ) ) 1213 if ( !QFile::exists( tempfilename ) )
1016 error = true; 1214 error = true;
1017 } 1215 }
1018 if ( ! error ) { 1216 if ( ! error ) {
1019 filename = tempfilename; 1217 filename = tempfilename;
1020 } 1218 }
1021 mAlarmMessage = mess.mid( 11+len+3+9 ); 1219 mAlarmMessage = mess.mid( 11+len+3+9 );
1022 //qDebug("audio file command %s ",tempfilename.latin1() ); 1220 //qDebug("audio file command %s ",tempfilename.latin1() );
1023 } 1221 }
1024 if ( mess.left( 9 ) == "cal_alarm") { 1222 if ( mess.left( 9 ) == "cal_alarm") {
1025 mAlarmMessage = mess.mid( 9 ) ; 1223 mAlarmMessage = mess.mid( 9 ) ;
1026 } 1224 }
1027 1225
1028 startAlarm( mAlarmMessage, filename ); 1226 startAlarm( mAlarmMessage, filename );
1029 1227
1030 1228
1031} 1229}
1032 1230
1033void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 1231void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
1034{ 1232{
1035 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1233 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1036 1234
1037 mSuspendAlarmNotification = noti; 1235 mSuspendAlarmNotification = noti;
1038 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 1236 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
1039 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 1237 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
1040 mSuspendTimer->start( ms , true ); 1238 mSuspendTimer->start( ms , true );
1041 1239
1042} 1240}
1043 1241
1044void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 1242void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
1045{ 1243{
1046 mNextAlarmDateTime = qdt; 1244 mNextAlarmDateTime = qdt;
1047 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1245 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1048 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1246 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1049#ifndef DESKTOP_VERSION 1247#ifndef DESKTOP_VERSION
1050 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() ); 1248 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() );
1051#endif 1249#endif
1052 return; 1250 return;
1053 } 1251 }
1054 int maxSec; 1252 int maxSec;
1055 //maxSec = 5; //testing only 1253 //maxSec = 5; //testing only
1056 maxSec = 86400+3600; // one day+1hour 1254 maxSec = 86400+3600; // one day+1hour
1057 mAlarmNotification = noti; 1255 mAlarmNotification = noti;
1058 int sec = QDateTime::currentDateTime().secsTo( qdt ); 1256 int sec = QDateTime::currentDateTime().secsTo( qdt );
1059 if ( sec > maxSec ) { 1257 if ( sec > maxSec ) {
1060 mRecheckAlarmTimer->start( maxSec * 1000 ); 1258 mRecheckAlarmTimer->start( maxSec * 1000 );
1061 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 1259 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
1062 return; 1260 return;
1063 } else { 1261 } else {
1064 mRecheckAlarmTimer->stop(); 1262 mRecheckAlarmTimer->stop();
1065 } 1263 }
1066 //qDebug("Alarm timer started with secs: %d ", sec); 1264 //qDebug("Alarm timer started with secs: %d ", sec);
1067 mAlarmTimer->start( sec *1000 , true ); 1265 mAlarmTimer->start( sec *1000 , true );
1068 1266
1069} 1267}
1070// called by mRecheckAlarmTimer to get next alarm 1268// called by mRecheckAlarmTimer to get next alarm
1071// we need this, because a QTimer has only a max range of 25 days 1269// we need this, because a QTimer has only a max range of 25 days
1072void CalendarView::recheckTimerAlarm() 1270void CalendarView::recheckTimerAlarm()
1073{ 1271{
1074 mAlarmTimer->stop(); 1272 mAlarmTimer->stop();
1075 mRecheckAlarmTimer->stop(); 1273 mRecheckAlarmTimer->stop();
1076 mCalendar->checkAlarmForIncidence( 0, true ); 1274 mCalendar->checkAlarmForIncidence( 0, true );
1077} 1275}
1078#ifndef DESKTOP_VERSION 1276#ifndef DESKTOP_VERSION
1079void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 1277void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
1080#else 1278#else
1081void CalendarView::removeAlarm(const QDateTime &, const QString & ) 1279void CalendarView::removeAlarm(const QDateTime &, const QString & )
1082#endif 1280#endif
1083{ 1281{
1084 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1282 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1085 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1283 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1086#ifndef DESKTOP_VERSION 1284#ifndef DESKTOP_VERSION
1087 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() ); 1285 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() );
1088#endif 1286#endif
1089 return; 1287 return;
1090 } 1288 }
1091 mAlarmTimer->stop(); 1289 mAlarmTimer->stop();
1092} 1290}
1093void CalendarView::selectWeekNum ( int num ) 1291void CalendarView::selectWeekNum ( int num )
1094{ 1292{
1095 dateNavigator()->blockSignals( true ); 1293 dateNavigator()->blockSignals( true );
1096 dateNavigator()->selectWeek( num ); 1294 dateNavigator()->selectWeek( num );
1097 dateNavigator()->blockSignals( false ); 1295 dateNavigator()->blockSignals( false );
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 1debef7..b223315 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -323,345 +323,346 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
323 323
324 /** write current state to config file. */ 324 /** write current state to config file. */
325 void writeSettings(); 325 void writeSettings();
326 326
327 /** read settings for calendar filters */ 327 /** read settings for calendar filters */
328 void readFilterSettings(KConfig *config); 328 void readFilterSettings(KConfig *config);
329 329
330 /** write settings for calendar filters */ 330 /** write settings for calendar filters */
331 void writeFilterSettings(KConfig *config); 331 void writeFilterSettings(KConfig *config);
332 332
333 /** passes on the message that an event has changed to the currently 333 /** passes on the message that an event has changed to the currently
334 * activated view so that it can make appropriate display changes. */ 334 * activated view so that it can make appropriate display changes. */
335 void changeEventDisplay(Event *, int); 335 void changeEventDisplay(Event *, int);
336 void changeIncidenceDisplay(Incidence *, int); 336 void changeIncidenceDisplay(Incidence *, int);
337 void changeTodoDisplay(Todo *, int); 337 void changeTodoDisplay(Todo *, int);
338 338
339 void eventAdded(Event *); 339 void eventAdded(Event *);
340 void eventChanged(Event *); 340 void eventChanged(Event *);
341 void eventToBeDeleted(Event *); 341 void eventToBeDeleted(Event *);
342 void eventDeleted(); 342 void eventDeleted();
343 343
344 void todoAdded(Todo *); 344 void todoAdded(Todo *);
345 void todoChanged(Todo *); 345 void todoChanged(Todo *);
346 void todoToBeDeleted(Todo *); 346 void todoToBeDeleted(Todo *);
347 void todoDeleted(); 347 void todoDeleted();
348 348
349 void updateView(const QDate &start, const QDate &end); 349 void updateView(const QDate &start, const QDate &end);
350 void updateView(); 350 void updateView();
351 void clearAllViews(); 351 void clearAllViews();
352 352
353 /** Full update of visible todo views */ 353 /** Full update of visible todo views */
354 void updateTodoViews(); 354 void updateTodoViews();
355 355
356 void updateUnmanagedViews(); 356 void updateUnmanagedViews();
357 357
358 /** cut the current appointment to the clipboard */ 358 /** cut the current appointment to the clipboard */
359 void edit_cut(); 359 void edit_cut();
360 360
361 /** copy the current appointment(s) to the clipboard */ 361 /** copy the current appointment(s) to the clipboard */
362 void edit_copy(); 362 void edit_copy();
363 363
364 /** paste the current vobject(s) in the clipboard buffer into calendar */ 364 /** paste the current vobject(s) in the clipboard buffer into calendar */
365 void edit_paste(); 365 void edit_paste();
366 366
367 /** edit viewing and configuration options. */ 367 /** edit viewing and configuration options. */
368 void edit_options(); 368 void edit_options();
369 void edit_global_options(); 369 void edit_global_options();
370 /** 370 /**
371 Functions for printing, previewing a print, and setting up printing 371 Functions for printing, previewing a print, and setting up printing
372 parameters. 372 parameters.
373 */ 373 */
374 void print(); 374 void print();
375 void printSetup(); 375 void printSetup();
376 void printPreview(); 376 void printPreview();
377 377
378 /** Export as iCalendar file */ 378 /** Export as iCalendar file */
379 void exportICalendar(); 379 void exportICalendar();
380 380
381 /** Export as vCalendar file */ 381 /** Export as vCalendar file */
382 bool exportVCalendar( QString fn); 382 bool exportVCalendar( QString fn);
383 383
384 /** pop up a dialog to show an existing appointment. */ 384 /** pop up a dialog to show an existing appointment. */
385 void appointment_show(); 385 void appointment_show();
386 /** 386 /**
387 * pop up an Appointment Dialog to edit an existing appointment.Get 387 * pop up an Appointment Dialog to edit an existing appointment.Get
388 * information on the appointment from the list of unique IDs that is 388 * information on the appointment from the list of unique IDs that is
389 * currently in the View, called currIds. 389 * currently in the View, called currIds.
390 */ 390 */
391 void appointment_edit(); 391 void appointment_edit();
392 /** 392 /**
393 * pop up dialog confirming deletion of currently selected event in the 393 * pop up dialog confirming deletion of currently selected event in the
394 * View. 394 * View.
395 */ 395 */
396 void appointment_delete(); 396 void appointment_delete();
397 397
398 /** mails the currently selected event to a particular user as a vCalendar 398 /** mails the currently selected event to a particular user as a vCalendar
399 attachment. */ 399 attachment. */
400 void action_mail(); 400 void action_mail();
401 401
402 /* frees a subtodo from it's relation */ 402 /* frees a subtodo from it's relation */
403 void todo_unsub( Todo * ); 403 void todo_unsub( Todo * );
404 void todo_resub( Todo * parent, Todo * sub ); 404 void todo_resub( Todo * parent, Todo * sub );
405 405
406 /** Take ownership of selected event. */ 406 /** Take ownership of selected event. */
407 void takeOverEvent(); 407 void takeOverEvent();
408 408
409 /** Take ownership of all events in calendar. */ 409 /** Take ownership of all events in calendar. */
410 void takeOverCalendar(); 410 void takeOverCalendar();
411 411
412 /** query whether or not the calendar is "dirty". */ 412 /** query whether or not the calendar is "dirty". */
413 bool isModified(); 413 bool isModified();
414 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 414 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
415 void setModified(bool modified=true); 415 void setModified(bool modified=true);
416 416
417 /** query if the calendar is read-only. */ 417 /** query if the calendar is read-only. */
418 bool isReadOnly(); 418 bool isReadOnly();
419 /** set state of calendar to read-only */ 419 /** set state of calendar to read-only */
420 void setReadOnly(bool readOnly=true); 420 void setReadOnly(bool readOnly=true);
421 421
422 void eventUpdated(Incidence *); 422 void eventUpdated(Incidence *);
423 423
424 /* iTIP scheduling actions */ 424 /* iTIP scheduling actions */
425 void schedule_publish(Incidence *incidence = 0); 425 void schedule_publish(Incidence *incidence = 0);
426 void schedule_request(Incidence *incidence = 0); 426 void schedule_request(Incidence *incidence = 0);
427 void schedule_refresh(Incidence *incidence = 0); 427 void schedule_refresh(Incidence *incidence = 0);
428 void schedule_cancel(Incidence *incidence = 0); 428 void schedule_cancel(Incidence *incidence = 0);
429 void schedule_add(Incidence *incidence = 0); 429 void schedule_add(Incidence *incidence = 0);
430 void schedule_reply(Incidence *incidence = 0); 430 void schedule_reply(Incidence *incidence = 0);
431 void schedule_counter(Incidence *incidence = 0); 431 void schedule_counter(Incidence *incidence = 0);
432 void schedule_declinecounter(Incidence *incidence = 0); 432 void schedule_declinecounter(Incidence *incidence = 0);
433 void schedule_publish_freebusy(int daysToPublish = 30); 433 void schedule_publish_freebusy(int daysToPublish = 30);
434 434
435 void openAddressbook(); 435 void openAddressbook();
436 436
437 void editFilters(); 437 void editFilters();
438 void toggleFilerEnabled(); 438 void toggleFilerEnabled();
439 QPtrList<CalFilter> filters(); 439 QPtrList<CalFilter> filters();
440 void toggleFilter(); 440 void toggleFilter();
441 void showFilter(bool visible); 441 void showFilter(bool visible);
442 void updateFilter(); 442 void updateFilter();
443 void filterEdited(); 443 void filterEdited();
444 void selectFilter( int ); 444 void selectFilter( int );
445 KOFilterView *filterView(); 445 KOFilterView *filterView();
446 446
447 void showIntro(); 447 void showIntro();
448 448
449 /** Move the curdatepient view date to today */ 449 /** Move the curdatepient view date to today */
450 void goToday(); 450 void goToday();
451 451
452 /** Move to the next date(s) in the current view */ 452 /** Move to the next date(s) in the current view */
453 void goNext(); 453 void goNext();
454 454
455 /** Move to the previous date(s) in the current view */ 455 /** Move to the previous date(s) in the current view */
456 void goPrevious(); 456 void goPrevious();
457 /** Move to the next date(s) in the current view */ 457 /** Move to the next date(s) in the current view */
458 void goNextMonth(); 458 void goNextMonth();
459 459
460 /** Move to the previous date(s) in the current view */ 460 /** Move to the previous date(s) in the current view */
461 void goPreviousMonth(); 461 void goPreviousMonth();
462 462
463 void toggleExpand(); 463 void toggleExpand();
464 void toggleDateNavigatorWidget(); 464 void toggleDateNavigatorWidget();
465 void toggleAllDaySize(); 465 void toggleAllDaySize();
466 466
467 /** Look for new messages in the inbox */ 467 /** Look for new messages in the inbox */
468 void lookForIncomingMessages(); 468 void lookForIncomingMessages();
469 /** Look for new messages in the outbox */ 469 /** Look for new messages in the outbox */
470 void lookForOutgoingMessages(); 470 void lookForOutgoingMessages();
471 471
472 void processMainViewSelection( Incidence * ); 472 void processMainViewSelection( Incidence * );
473 void processTodoListSelection( Incidence * ); 473 void processTodoListSelection( Incidence * );
474 474
475 void processIncidenceSelection( Incidence * ); 475 void processIncidenceSelection( Incidence * );
476 476
477 void purgeCompleted(); 477 void purgeCompleted();
478 bool removeCompletedSubTodos( Todo* ); 478 bool removeCompletedSubTodos( Todo* );
479 void slotCalendarChanged(); 479 void slotCalendarChanged();
480 bool importBday(); 480 bool importBday();
481 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 481 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
482 bool importQtopia( const QString &categoriesFile, 482 bool importQtopia( const QString &categoriesFile,
483 const QString &datebookFile, 483 const QString &datebookFile,
484 const QString &tasklistFile ); 484 const QString &tasklistFile );
485 void syncExternal( int mode ); 485 void syncExternal( int mode );
486 void slotSelectPickerDate( QDate ) ; 486 void slotSelectPickerDate( QDate ) ;
487 void showDatePicker() ; 487 void showDatePicker() ;
488 void showDatePickerPopup() ; 488 void showDatePickerPopup() ;
489 void moveIncidence(Incidence *) ; 489 void moveIncidence(Incidence *) ;
490 void beamIncidence(Incidence *) ; 490 void beamIncidence(Incidence *) ;
491 void beamCalendar() ; 491 void beamCalendar() ;
492 void beamFilteredCalendar() ; 492 void beamFilteredCalendar() ;
493 void beamIncidenceList(QPtrList<Incidence>) ; 493 void beamIncidenceList(QPtrList<Incidence>) ;
494 void manageCategories(); 494 void manageCategories();
495 void editCategories(); 495 void editCategories();
496 int addCategories(); 496 int addCategories();
497 void removeCategories(); 497 void removeCategories();
498 void setSyncDevice( QString ); 498 void setSyncDevice( QString );
499 void setSyncName( QString ); 499 void setSyncName( QString );
500 void showDay( QDate ); 500 void showDay( QDate );
501 void undo_delete(); 501 void undo_delete();
502 protected slots: 502 protected slots:
503 void resetFocus(); 503 void resetFocus();
504 void scrollBarValue(int); 504 void scrollBarValue(int);
505 void slotViewerClosed(); 505 void slotViewerClosed();
506 void timerAlarm(); 506 void timerAlarm();
507 void suspendAlarm(); 507 void suspendAlarm();
508 void beamDone( Ir *ir ); 508 void beamDone( Ir *ir );
509 /** Select a view or adapt the current view to display the specified dates. */ 509 /** Select a view or adapt the current view to display the specified dates. */
510 void showDates( const KCal::DateList & ); 510 void showDates( const KCal::DateList & );
511 void selectWeekNum ( int ); 511 void selectWeekNum ( int );
512 void checkConflictForEvent(); 512 void checkConflictForEvent();
513 513
514 public: 514 public:
515 void createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval );
515 // show a standard warning 516 // show a standard warning
516 // returns KMsgBox::yesNoCancel() 517 // returns KMsgBox::yesNoCancel()
517 int msgCalModified(); 518 int msgCalModified();
518 virtual bool sync(KSyncManager* manager, QString filename, int mode); 519 virtual bool sync(KSyncManager* manager, QString filename, int mode);
519 520
520 virtual bool syncExternal(KSyncManager* manager, QString resource); 521 virtual bool syncExternal(KSyncManager* manager, QString resource);
521 virtual void removeSyncInfo( QString syncProfile); 522 virtual void removeSyncInfo( QString syncProfile);
522 void setSyncManager(KSyncManager* manager); 523 void setSyncManager(KSyncManager* manager);
523 void setLoadedFileVersion(QDateTime); 524 void setLoadedFileVersion(QDateTime);
524 bool checkFileVersion(QString fn); 525 bool checkFileVersion(QString fn);
525 bool checkAllFileVersions(); 526 bool checkAllFileVersions();
526 bool checkFileChanged(QString fn); 527 bool checkFileChanged(QString fn);
527 Event* getLastSyncEvent(); 528 Event* getLastSyncEvent();
528 /** Adapt navigation units correpsonding to step size of navigation of the 529 /** Adapt navigation units correpsonding to step size of navigation of the
529 * current view. 530 * current view.
530 */ 531 */
531 void adaptNavigationUnits(); 532 void adaptNavigationUnits();
532 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 533 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
533 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 534 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
534 //Attendee* getYourAttendee(Event *event); 535 //Attendee* getYourAttendee(Event *event);
535 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 536 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
536 void setScrollBarStep(int val ); 537 void setScrollBarStep(int val );
537 538
538 protected: 539 protected:
539 Event *mConflictingEvent; 540 Event *mConflictingEvent;
540 void schedule(Scheduler::Method, Incidence *incidence = 0); 541 void schedule(Scheduler::Method, Incidence *incidence = 0);
541 542
542 // returns KMsgBox::OKCandel() 543 // returns KMsgBox::OKCandel()
543 int msgItemDelete(const QString name); 544 int msgItemDelete(const QString name);
544 void showEventEditor(); 545 void showEventEditor();
545 void showTodoEditor(); 546 void showTodoEditor();
546 Todo *selectedTodo(); 547 Todo *selectedTodo();
547 private: 548 private:
548#ifdef DESKTOP_VERSION 549#ifdef DESKTOP_VERSION
549 QScrollBar * mDateScrollBar; 550 QScrollBar * mDateScrollBar;
550#endif 551#endif
551 QDateTime mNextAlarmDateTime; 552 QDateTime mNextAlarmDateTime;
552 bool mViewerCallerIsSearchDialog; 553 bool mViewerCallerIsSearchDialog;
553 bool mBlockShowDates; 554 bool mBlockShowDates;
554 KSyncManager* mSyncManager; 555 KSyncManager* mSyncManager;
555 AlarmDialog * mAlarmDialog; 556 AlarmDialog * mAlarmDialog;
556 QString mAlarmNotification; 557 QString mAlarmNotification;
557 QString mSuspendAlarmNotification; 558 QString mSuspendAlarmNotification;
558 QTimer* mSuspendTimer; 559 QTimer* mSuspendTimer;
559 QTimer* mAlarmTimer; 560 QTimer* mAlarmTimer;
560 QTimer* mRecheckAlarmTimer; 561 QTimer* mRecheckAlarmTimer;
561 void computeAlarm( QString ); 562 void computeAlarm( QString );
562 void startAlarm( QString, QString ); 563 void startAlarm( QString, QString );
563 void setSyncEventsReadOnly(); 564 void setSyncEventsReadOnly();
564 565
565 QDateTime loadedFileVersion; 566 QDateTime loadedFileVersion;
566 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 567 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
567 void checkExternalId( Incidence * inc ); 568 void checkExternalId( Incidence * inc );
568 int mGlobalSyncMode; 569 int mGlobalSyncMode;
569 QString mCurrentSyncDevice; 570 QString mCurrentSyncDevice;
570 QString mCurrentSyncName; 571 QString mCurrentSyncName;
571 void init(); 572 void init();
572 int mDatePickerMode; 573 int mDatePickerMode;
573 bool mFlagEditDescription; 574 bool mFlagEditDescription;
574 QDateTime mLastCalendarSync; 575 QDateTime mLastCalendarSync;
575 void createPrinter(); 576 void createPrinter();
576 577
577 void calendarModified( bool, Calendar * ); 578 void calendarModified( bool, Calendar * );
578 579
579 CalPrinter *mCalPrinter; 580 CalPrinter *mCalPrinter;
580 581
581 QSplitter *mPanner; 582 QSplitter *mPanner;
582 QSplitter *mLeftSplitter; 583 QSplitter *mLeftSplitter;
583 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 584 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
584 QWidgetStack *mRightFrame; 585 QWidgetStack *mRightFrame;
585 586
586 KDatePicker* mDatePicker; 587 KDatePicker* mDatePicker;
587 QVBox* mDateFrame; 588 QVBox* mDateFrame;
588 589
589 DateNavigatorContainer *mDateNavigator; // widget showing small month view. 590 DateNavigatorContainer *mDateNavigator; // widget showing small month view.
590 591
591 KOFilterView *mFilterView; 592 KOFilterView *mFilterView;
592 KOCalEditView *mCalEditView; 593 KOCalEditView *mCalEditView;
593 594
594 ResourceView *mResourceView; 595 ResourceView *mResourceView;
595 596
596 // calendar object for this viewing instance 597 // calendar object for this viewing instance
597 Calendar *mCalendar; 598 Calendar *mCalendar;
598 599
599 CalendarResourceManager *mResourceManager; 600 CalendarResourceManager *mResourceManager;
600 601
601 FileStorage *mStorage; 602 FileStorage *mStorage;
602 603
603 DateNavigator *mNavigator; 604 DateNavigator *mNavigator;
604 605
605 KOViewManager *mViewManager; 606 KOViewManager *mViewManager;
606 KODialogManager *mDialogManager; 607 KODialogManager *mDialogManager;
607 608
608 // Calendar filters 609 // Calendar filters
609 QPtrList<CalFilter> mFilters; 610 QPtrList<CalFilter> mFilters;
610 611
611 // various housekeeping variables. 612 // various housekeeping variables.
612 bool mModified; // flag indicating if calendar is modified 613 bool mModified; // flag indicating if calendar is modified
613 bool mReadOnly; // flag indicating if calendar is read-only 614 bool mReadOnly; // flag indicating if calendar is read-only
614 QDate mSaveSingleDate; 615 QDate mSaveSingleDate;
615 616
616 Incidence *mSelectedIncidence; 617 Incidence *mSelectedIncidence;
617 Incidence *mMoveIncidence; 618 Incidence *mMoveIncidence;
618 QDate mMoveIncidenceOldDate; 619 QDate mMoveIncidenceOldDate;
619 KOTodoView *mTodoList; 620 KOTodoView *mTodoList;
620 KOEventEditor * mEventEditor; 621 KOEventEditor * mEventEditor;
621 KOTodoEditor * mTodoEditor; 622 KOTodoEditor * mTodoEditor;
622 KOEventViewerDialog * mEventViewerDialog; 623 KOEventViewerDialog * mEventViewerDialog;
623 void keyPressEvent ( QKeyEvent *e) ; 624 void keyPressEvent ( QKeyEvent *e) ;
624 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 625 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
625}; 626};
626 627
627 628
628class CalendarViewVisitor : public Incidence::Visitor 629class CalendarViewVisitor : public Incidence::Visitor
629{ 630{
630 public: 631 public:
631 CalendarViewVisitor() : mView( 0 ) {} 632 CalendarViewVisitor() : mView( 0 ) {}
632 633
633 bool act( Incidence *incidence, CalendarView *view ) 634 bool act( Incidence *incidence, CalendarView *view )
634 { 635 {
635 mView = view; 636 mView = view;
636 return incidence->accept( *this ); 637 return incidence->accept( *this );
637 } 638 }
638 639
639 protected: 640 protected:
640 CalendarView *mView; 641 CalendarView *mView;
641}; 642};
642 643
643class ShowIncidenceVisitor : public CalendarViewVisitor 644class ShowIncidenceVisitor : public CalendarViewVisitor
644{ 645{
645 protected: 646 protected:
646 bool visit( Event *event ) { mView->showEvent( event ); return true; } 647 bool visit( Event *event ) { mView->showEvent( event ); return true; }
647 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 648 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
648 bool visit( Journal * j ) { mView->showJournal( j );return true; } 649 bool visit( Journal * j ) { mView->showJournal( j );return true; }
649}; 650};
650 651
651class EditIncidenceVisitor : public CalendarViewVisitor 652class EditIncidenceVisitor : public CalendarViewVisitor
652{ 653{
653 protected: 654 protected:
654 bool visit( Event *event ) { mView->editEvent( event ); return true; } 655 bool visit( Event *event ) { mView->editEvent( event ); return true; }
655 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 656 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
656 bool visit( Journal *j ) { mView->editJournal( j); return true; } 657 bool visit( Journal *j ) { mView->editJournal( j); return true; }
657}; 658};
658 659
659class DeleteIncidenceVisitor : public CalendarViewVisitor 660class DeleteIncidenceVisitor : public CalendarViewVisitor
660{ 661{
661 protected: 662 protected:
662 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 663 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
663 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 664 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
664 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 665 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
665}; 666};
666 667
667#endif 668#endif