summaryrefslogtreecommitdiffabout
path: root/korganizer/koeditorrecurrence.cpp
Unidiff
Diffstat (limited to 'korganizer/koeditorrecurrence.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeditorrecurrence.cpp172
1 files changed, 89 insertions, 83 deletions
diff --git a/korganizer/koeditorrecurrence.cpp b/korganizer/koeditorrecurrence.cpp
index de4e4f7..89504db 100644
--- a/korganizer/koeditorrecurrence.cpp
+++ b/korganizer/koeditorrecurrence.cpp
@@ -897,100 +897,102 @@ void KOEditorRecurrence::readEvent(Incidence *event)
897 int month = 0; 897 int month = 0;
898 setDateTimes( event->dtStart(), dtEnd ); 898 setDateTimes( event->dtStart(), dtEnd );
899 899
900 Recurrence *r = event->recurrence(); 900
901 int f = r->frequency();
902 901
903 int recurs = r->doesRecur(); 902 int recurs = event->doesRecur();
904 903
905 mEnabledCheck->setChecked( recurs ); 904 mEnabledCheck->setChecked( recurs );
906 setEnabled( recurs ); 905 setEnabled( recurs );
907 906
908 int recurrenceType = RecurrenceChooser::Weekly; 907 int recurrenceType = RecurrenceChooser::Weekly;
909 908 if ( recurs ) {
910 switch ( recurs ) { 909 Recurrence *r = event->recurrence();
911 case Recurrence::rNone: 910 int f = r->frequency();
912 setDefaults( event->dtStart(), dtEnd ); 911 switch ( recurs ) {
913 break; 912 case Recurrence::rNone:
914 case Recurrence::rDaily: 913 setDefaults( event->dtStart(), dtEnd );
915 recurrenceType = RecurrenceChooser::Daily; 914 break;
916 mDaily->setFrequency( f ); 915 case Recurrence::rDaily:
917 break; 916 recurrenceType = RecurrenceChooser::Daily;
918 case Recurrence::rWeekly: 917 mDaily->setFrequency( f );
919 recurrenceType = RecurrenceChooser::Weekly; 918 break;
920 mWeekly->setFrequency( f ); 919 case Recurrence::rWeekly:
921 mWeekly->setDays( r->days() ); 920 recurrenceType = RecurrenceChooser::Weekly;
922 break; 921 mWeekly->setFrequency( f );
923 case Recurrence::rMonthlyPos: 922 mWeekly->setDays( r->days() );
924 // we only handle one possibility in the list right now, 923 break;
925 // so I have hardcoded calls with first(). If we make the GUI 924 case Recurrence::rMonthlyPos:
926 // more extended, this can be changed. 925 // we only handle one possibility in the list right now,
927 recurrenceType = RecurrenceChooser::Monthly; 926 // so I have hardcoded calls with first(). If we make the GUI
928 927 // more extended, this can be changed.
929 rmp = r->monthPositions(); 928 recurrenceType = RecurrenceChooser::Monthly;
930 if ( rmp.first()->negative ) 929
931 count = 5 - rmp.first()->rPos - 1; 930 rmp = r->monthPositions();
932 else 931 if ( rmp.first()->negative )
933 count = rmp.first()->rPos - 1; 932 count = 5 - rmp.first()->rPos - 1;
934 day = 0; 933 else
935 while ( !rmp.first()->rDays.testBit( day ) ) ++day; 934 count = rmp.first()->rPos - 1;
936 mMonthly->setByPos( count, day ); 935 day = 0;
937 936 while ( !rmp.first()->rDays.testBit( day ) ) ++day;
938 mMonthly->setFrequency( f ); 937 mMonthly->setByPos( count, day );
939 938
940 break; 939 mMonthly->setFrequency( f );
941 case Recurrence::rMonthlyDay: 940
942 recurrenceType = RecurrenceChooser::Monthly; 941 break;
943 942 case Recurrence::rMonthlyDay:
944 rmd = r->monthDays(); 943 recurrenceType = RecurrenceChooser::Monthly;
945 day = *rmd.first() - 1; 944
946 mMonthly->setByDay( day ); 945 rmd = r->monthDays();
947 946 day = *rmd.first() - 1;
948 mMonthly->setFrequency( f ); 947 mMonthly->setByDay( day );
949 948
950 break; 949 mMonthly->setFrequency( f );
951 case Recurrence::rYearlyMonth: 950
952 { 951 break;
953 recurrenceType = RecurrenceChooser::Yearly; 952 case Recurrence::rYearlyMonth:
954 //qDebug("Recurrence::rYearlyMonth: "); 953 {
955 day = event->dtStart().date().day(); 954 recurrenceType = RecurrenceChooser::Yearly;
956 rmd = r->yearNums(); 955 //qDebug("Recurrence::rYearlyMonth: ");
957 if ( rmd.count() > 0 ) 956 day = event->dtStart().date().day();
958 month = *rmd.first(); 957 rmd = r->yearNums();
959 else 958 if ( rmd.count() > 0 )
960 month = event->dtStart().date().month() ; 959 month = *rmd.first();
961 mYearly->setByMonth( month, day ); 960 else
961 month = event->dtStart().date().month() ;
962 mYearly->setByMonth( month, day );
962#if 0 963#if 0
963 //qDebug("2day = %d ",day ); 964 //qDebug("2day = %d ",day );
964 QPtrList<Recurrence::rMonthPos> monthlist = r->yearMonthPositions(); 965 QPtrList<Recurrence::rMonthPos> monthlist = r->yearMonthPositions();
965 int month; 966 int month;
966 if ( !monthlist.isEmpty() ) { 967 if ( !monthlist.isEmpty() ) {
967 month = monthlist.first()->rPos ; 968 month = monthlist.first()->rPos ;
968 } else { 969 } else {
969 month = event->dtStart().date().month() ; 970 month = event->dtStart().date().month() ;
970 } 971 }
971 mYearly->setByMonth( day, month ); 972 mYearly->setByMonth( day, month );
972#endif 973#endif
973 mYearly->setFrequency( f ); 974 mYearly->setFrequency( f );
974 } 975 }
975 976
976 break; 977 break;
977 case Recurrence::rYearlyDay: 978 case Recurrence::rYearlyDay:
978 //qDebug("Recurrence::rYearlyDay: "); 979 //qDebug("Recurrence::rYearlyDay: ");
979 recurrenceType = RecurrenceChooser::Yearly; 980 recurrenceType = RecurrenceChooser::Yearly;
980 mYearly->setByDay( event->dtStart().date().dayOfYear() ); 981 mYearly->setByDay( event->dtStart().date().dayOfYear() );
981 mYearly->setFrequency( f ); 982 mYearly->setFrequency( f );
982 break; 983 break;
983 default: 984 default:
984 setDefaults( event->dtStart(), dtEnd ); 985 setDefaults( event->dtStart(), dtEnd );
985 break; 986 break;
987 }
986 } 988 }
987
988 mRecurrenceChooser->setType( recurrenceType ); 989 mRecurrenceChooser->setType( recurrenceType );
989 showCurrentRule( recurrenceType ); 990 showCurrentRule( recurrenceType );
990 991
991 mRecurrenceRange->setDateTimes( event->dtStart() ); 992 mRecurrenceRange->setDateTimes( event->dtStart() );
992 993
993 if ( r->doesRecur() ) { 994 if ( event->doesRecur() ) {
995 Recurrence *r = event->recurrence();
994 mRecurrenceRange->setDuration( r->duration() ); 996 mRecurrenceRange->setDuration( r->duration() );
995 if ( r->duration() == 0 ) 997 if ( r->duration() == 0 )
996 { 998 {
@@ -1007,12 +1009,16 @@ void KOEditorRecurrence::readEvent(Incidence *event)
1007 1009
1008void KOEditorRecurrence::writeEvent( Incidence *event ) 1010void KOEditorRecurrence::writeEvent( Incidence *event )
1009{ 1011{
1010 Recurrence *r = event->recurrence(); 1012
1011 1013
1012 // clear out any old settings; 1014 if ( !mEnabledCheck->isChecked() ) {
1013 r->unsetRecurs(); 1015 if ( event->doesRecur() )
1016 event->recurrence()->unsetRecurs();
1017 } else {
1018 Recurrence *r = event->recurrence();
1014 1019
1015 if ( mEnabledCheck->isChecked() ) { 1020 // clear out any old settings;
1021 r->unsetRecurs();
1016 int duration = mRecurrenceRange->duration(); 1022 int duration = mRecurrenceRange->duration();
1017 QDate endDate; 1023 QDate endDate;
1018 if ( duration == 0 ) endDate = mRecurrenceRange->endDate(); 1024 if ( duration == 0 ) endDate = mRecurrenceRange->endDate();