summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp86
1 files changed, 43 insertions, 43 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 96ced08..90b36ac 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -802,2166 +802,2166 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
802 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 802 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
803 } 803 }
804 int result; 804 int result;
805 bool localIsNew; 805 bool localIsNew;
806 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 806 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
807 807
808 if ( full && mode < SYNC_PREF_NEWEST ) 808 if ( full && mode < SYNC_PREF_NEWEST )
809 mode = SYNC_PREF_ASK; 809 mode = SYNC_PREF_ASK;
810 810
811 switch( mode ) { 811 switch( mode ) {
812 case SYNC_PREF_LOCAL: 812 case SYNC_PREF_LOCAL:
813 if ( lastSync > remoteMod ) 813 if ( lastSync > remoteMod )
814 return 1; 814 return 1;
815 if ( lastSync > localMod ) 815 if ( lastSync > localMod )
816 return 2; 816 return 2;
817 return 1; 817 return 1;
818 break; 818 break;
819 case SYNC_PREF_REMOTE: 819 case SYNC_PREF_REMOTE:
820 if ( lastSync > remoteMod ) 820 if ( lastSync > remoteMod )
821 return 1; 821 return 1;
822 if ( lastSync > localMod ) 822 if ( lastSync > localMod )
823 return 2; 823 return 2;
824 return 2; 824 return 2;
825 break; 825 break;
826 case SYNC_PREF_NEWEST: 826 case SYNC_PREF_NEWEST:
827 if ( localMod > remoteMod ) 827 if ( localMod > remoteMod )
828 return 1; 828 return 1;
829 else 829 else
830 return 2; 830 return 2;
831 break; 831 break;
832 case SYNC_PREF_ASK: 832 case SYNC_PREF_ASK:
833 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 833 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
834 if ( lastSync > remoteMod ) 834 if ( lastSync > remoteMod )
835 return 1; 835 return 1;
836 if ( lastSync > localMod ) 836 if ( lastSync > localMod )
837 return 2; 837 return 2;
838 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 838 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
839 localIsNew = localMod >= remoteMod; 839 localIsNew = localMod >= remoteMod;
840 if ( localIsNew ) 840 if ( localIsNew )
841 getEventViewerDialog()->setColorMode( 1 ); 841 getEventViewerDialog()->setColorMode( 1 );
842 else 842 else
843 getEventViewerDialog()->setColorMode( 2 ); 843 getEventViewerDialog()->setColorMode( 2 );
844 getEventViewerDialog()->setIncidence(local); 844 getEventViewerDialog()->setIncidence(local);
845 if ( localIsNew ) 845 if ( localIsNew )
846 getEventViewerDialog()->setColorMode( 2 ); 846 getEventViewerDialog()->setColorMode( 2 );
847 else 847 else
848 getEventViewerDialog()->setColorMode( 1 ); 848 getEventViewerDialog()->setColorMode( 1 );
849 getEventViewerDialog()->addIncidence(remote); 849 getEventViewerDialog()->addIncidence(remote);
850 getEventViewerDialog()->setColorMode( 0 ); 850 getEventViewerDialog()->setColorMode( 0 );
851 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 851 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
852 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 852 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
853 getEventViewerDialog()->showMe(); 853 getEventViewerDialog()->showMe();
854 result = getEventViewerDialog()->executeS( localIsNew ); 854 result = getEventViewerDialog()->executeS( localIsNew );
855 return result; 855 return result;
856 856
857 break; 857 break;
858 case SYNC_PREF_FORCE_LOCAL: 858 case SYNC_PREF_FORCE_LOCAL:
859 return 1; 859 return 1;
860 break; 860 break;
861 case SYNC_PREF_FORCE_REMOTE: 861 case SYNC_PREF_FORCE_REMOTE:
862 return 2; 862 return 2;
863 break; 863 break;
864 864
865 default: 865 default:
866 // SYNC_PREF_TAKE_BOTH not implemented 866 // SYNC_PREF_TAKE_BOTH not implemented
867 break; 867 break;
868 } 868 }
869 return 0; 869 return 0;
870} 870}
871Event* CalendarView::getLastSyncEvent() 871Event* CalendarView::getLastSyncEvent()
872{ 872{
873 Event* lse; 873 Event* lse;
874 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 874 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
875 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 875 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
876 if (!lse) { 876 if (!lse) {
877 lse = new Event(); 877 lse = new Event();
878 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 878 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
879 QString sum = ""; 879 QString sum = "";
880 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 880 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
881 sum = "E: "; 881 sum = "E: ";
882 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 882 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
883 lse->setDtStart( mLastCalendarSync ); 883 lse->setDtStart( mLastCalendarSync );
884 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 884 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
885 lse->setCategories( i18n("SyncEvent") ); 885 lse->setCategories( i18n("SyncEvent") );
886 lse->setReadOnly( true ); 886 lse->setReadOnly( true );
887 mCalendar->addEvent( lse ); 887 mCalendar->addEvent( lse );
888 } 888 }
889 889
890 return lse; 890 return lse;
891 891
892} 892}
893 893
894// we check, if the to delete event has a id for a profile 894// we check, if the to delete event has a id for a profile
895// if yes, we set this id in the profile to delete 895// if yes, we set this id in the profile to delete
896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
897{ 897{
898 if ( lastSync.count() == 0 ) { 898 if ( lastSync.count() == 0 ) {
899 //qDebug(" lastSync.count() == 0"); 899 //qDebug(" lastSync.count() == 0");
900 return; 900 return;
901 } 901 }
902 if ( toDelete->type() == "Journal" ) 902 if ( toDelete->type() == "Journal" )
903 return; 903 return;
904 904
905 Event* eve = lastSync.first(); 905 Event* eve = lastSync.first();
906 906
907 while ( eve ) { 907 while ( eve ) {
908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
909 if ( !id.isEmpty() ) { 909 if ( !id.isEmpty() ) {
910 QString des = eve->description(); 910 QString des = eve->description();
911 QString pref = "e"; 911 QString pref = "e";
912 if ( toDelete->type() == "Todo" ) 912 if ( toDelete->type() == "Todo" )
913 pref = "t"; 913 pref = "t";
914 des += pref+ id + ","; 914 des += pref+ id + ",";
915 eve->setReadOnly( false ); 915 eve->setReadOnly( false );
916 eve->setDescription( des ); 916 eve->setDescription( des );
917 //qDebug("setdes %s ", des.latin1()); 917 //qDebug("setdes %s ", des.latin1());
918 eve->setReadOnly( true ); 918 eve->setReadOnly( true );
919 } 919 }
920 eve = lastSync.next(); 920 eve = lastSync.next();
921 } 921 }
922 922
923} 923}
924void CalendarView::checkExternalId( Incidence * inc ) 924void CalendarView::checkExternalId( Incidence * inc )
925{ 925{
926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
927 checkExternSyncEvent( lastSync, inc ); 927 checkExternSyncEvent( lastSync, inc );
928 928
929} 929}
930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
931{ 931{
932 bool syncOK = true; 932 bool syncOK = true;
933 int addedEvent = 0; 933 int addedEvent = 0;
934 int addedEventR = 0; 934 int addedEventR = 0;
935 int deletedEventR = 0; 935 int deletedEventR = 0;
936 int deletedEventL = 0; 936 int deletedEventL = 0;
937 int changedLocal = 0; 937 int changedLocal = 0;
938 int changedRemote = 0; 938 int changedRemote = 0;
939 int filteredIN = 0; 939 int filteredIN = 0;
940 int filteredOUT = 0; 940 int filteredOUT = 0;
941 //QPtrList<Event> el = local->rawEvents(); 941 //QPtrList<Event> el = local->rawEvents();
942 Event* eventR; 942 Event* eventR;
943 QString uid; 943 QString uid;
944 int take; 944 int take;
945 Event* eventL; 945 Event* eventL;
946 Event* eventRSync; 946 Event* eventRSync;
947 Event* eventLSync; 947 Event* eventLSync;
948 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 948 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
949 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 949 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
950 bool fullDateRange = false; 950 bool fullDateRange = false;
951 local->resetTempSyncStat(); 951 local->resetTempSyncStat();
952 mLastCalendarSync = QDateTime::currentDateTime(); 952 mLastCalendarSync = QDateTime::currentDateTime();
953 if ( mSyncManager->syncWithDesktop() ) { 953 if ( mSyncManager->syncWithDesktop() ) {
954 remote->resetPilotStat(1); 954 remote->resetPilotStat(1);
955 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 955 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
956 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 956 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
957 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 957 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
958 } else { 958 } else {
959 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 959 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
960 } 960 }
961 } 961 }
962 QDateTime modifiedCalendar = mLastCalendarSync; 962 QDateTime modifiedCalendar = mLastCalendarSync;
963 eventLSync = getLastSyncEvent(); 963 eventLSync = getLastSyncEvent();
964 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 964 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
965 if ( eventR ) { 965 if ( eventR ) {
966 eventRSync = (Event*) eventR->clone(); 966 eventRSync = (Event*) eventR->clone();
967 remote->deleteEvent(eventR ); 967 remote->deleteEvent(eventR );
968 968
969 } else { 969 } else {
970 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 970 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
971 eventRSync = (Event*)eventLSync->clone(); 971 eventRSync = (Event*)eventLSync->clone();
972 } else { 972 } else {
973 fullDateRange = true; 973 fullDateRange = true;
974 eventRSync = new Event(); 974 eventRSync = new Event();
975 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 975 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
976 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 976 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
977 eventRSync->setDtStart( mLastCalendarSync ); 977 eventRSync->setDtStart( mLastCalendarSync );
978 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 978 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
979 eventRSync->setCategories( i18n("SyncEvent") ); 979 eventRSync->setCategories( i18n("SyncEvent") );
980 } 980 }
981 } 981 }
982 if ( eventLSync->dtStart() == mLastCalendarSync ) 982 if ( eventLSync->dtStart() == mLastCalendarSync )
983 fullDateRange = true; 983 fullDateRange = true;
984 984
985 if ( ! fullDateRange ) { 985 if ( ! fullDateRange ) {
986 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 986 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
987 987
988 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 988 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
989 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 989 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
990 fullDateRange = true; 990 fullDateRange = true;
991 } 991 }
992 } 992 }
993 if ( mSyncManager->syncWithDesktop() ) { 993 if ( mSyncManager->syncWithDesktop() ) {
994 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 994 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
995 } 995 }
996 if ( fullDateRange ) 996 if ( fullDateRange )
997 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 997 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
998 else 998 else
999 mLastCalendarSync = eventLSync->dtStart(); 999 mLastCalendarSync = eventLSync->dtStart();
1000 // for resyncing if own file has changed 1000 // for resyncing if own file has changed
1001 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1001 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1002 mLastCalendarSync = loadedFileVersion; 1002 mLastCalendarSync = loadedFileVersion;
1003 //qDebug("setting mLastCalendarSync "); 1003 //qDebug("setting mLastCalendarSync ");
1004 } 1004 }
1005 //qDebug("*************************** "); 1005 //qDebug("*************************** ");
1006 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1006 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1007 QPtrList<Incidence> er = remote->rawIncidences(); 1007 QPtrList<Incidence> er = remote->rawIncidences();
1008 Incidence* inR = er.first(); 1008 Incidence* inR = er.first();
1009 Incidence* inL; 1009 Incidence* inL;
1010 QProgressBar bar( er.count(),0 ); 1010 QProgressBar bar( er.count(),0 );
1011 bar.setCaption (i18n("Syncing - close to abort!") ); 1011 bar.setCaption (i18n("Syncing - close to abort!") );
1012 1012
1013 // ************** setting up filter ************* 1013 // ************** setting up filter *************
1014 CalFilter *filterIN = 0; 1014 CalFilter *filterIN = 0;
1015 CalFilter *filterOUT = 0; 1015 CalFilter *filterOUT = 0;
1016 CalFilter *filter = mFilters.first(); 1016 CalFilter *filter = mFilters.first();
1017 while(filter) { 1017 while(filter) {
1018 if ( filter->name() == mSyncManager->mFilterInCal ) 1018 if ( filter->name() == mSyncManager->mFilterInCal )
1019 filterIN = filter; 1019 filterIN = filter;
1020 if ( filter->name() == mSyncManager->mFilterOutCal ) 1020 if ( filter->name() == mSyncManager->mFilterOutCal )
1021 filterOUT = filter; 1021 filterOUT = filter;
1022 filter = mFilters.next(); 1022 filter = mFilters.next();
1023 } 1023 }
1024 int w = 300; 1024 int w = 300;
1025 if ( QApplication::desktop()->width() < 320 ) 1025 if ( QApplication::desktop()->width() < 320 )
1026 w = 220; 1026 w = 220;
1027 int h = bar.sizeHint().height() ; 1027 int h = bar.sizeHint().height() ;
1028 int dw = QApplication::desktop()->width(); 1028 int dw = QApplication::desktop()->width();
1029 int dh = QApplication::desktop()->height(); 1029 int dh = QApplication::desktop()->height();
1030 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1030 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1031 bar.show(); 1031 bar.show();
1032 int modulo = (er.count()/10)+1; 1032 int modulo = (er.count()/10)+1;
1033 int incCounter = 0; 1033 int incCounter = 0;
1034 while ( inR ) { 1034 while ( inR ) {
1035 if ( ! bar.isVisible() ) 1035 if ( ! bar.isVisible() )
1036 return false; 1036 return false;
1037 if ( incCounter % modulo == 0 ) 1037 if ( incCounter % modulo == 0 )
1038 bar.setProgress( incCounter ); 1038 bar.setProgress( incCounter );
1039 ++incCounter; 1039 ++incCounter;
1040 uid = inR->uid(); 1040 uid = inR->uid();
1041 bool skipIncidence = false; 1041 bool skipIncidence = false;
1042 if ( uid.left(15) == QString("last-syncEvent-") ) 1042 if ( uid.left(15) == QString("last-syncEvent-") )
1043 skipIncidence = true; 1043 skipIncidence = true;
1044 QString idS; 1044 QString idS;
1045 qApp->processEvents(); 1045 qApp->processEvents();
1046 if ( !skipIncidence ) { 1046 if ( !skipIncidence ) {
1047 inL = local->incidence( uid ); 1047 inL = local->incidence( uid );
1048 if ( inL ) { // maybe conflict - same uid in both calendars 1048 if ( inL ) { // maybe conflict - same uid in both calendars
1049 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1049 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1050 //qDebug("take %d %s ", take, inL->summary().latin1()); 1050 //qDebug("take %d %s ", take, inL->summary().latin1());
1051 if ( take == 3 ) 1051 if ( take == 3 )
1052 return false; 1052 return false;
1053 if ( take == 1 ) {// take local ********************** 1053 if ( take == 1 ) {// take local **********************
1054 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1054 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1055 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1055 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1056 else 1056 else
1057 idS = inR->IDStr(); 1057 idS = inR->IDStr();
1058 remote->deleteIncidence( inR ); 1058 remote->deleteIncidence( inR );
1059 inR = inL->clone(); 1059 inR = inL->clone();
1060 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1060 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1061 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1061 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1062 inR->setIDStr( idS ); 1062 inR->setIDStr( idS );
1063 remote->addIncidence( inR ); 1063 remote->addIncidence( inR );
1064 if ( mSyncManager->syncWithDesktop() ) 1064 if ( mSyncManager->syncWithDesktop() )
1065 inR->setPilotId( 2 ); 1065 inR->setPilotId( 2 );
1066 ++changedRemote; 1066 ++changedRemote;
1067 } else {// take remote ********************** 1067 } else {// take remote **********************
1068 idS = inL->IDStr(); 1068 idS = inL->IDStr();
1069 int pid = inL->pilotId(); 1069 int pid = inL->pilotId();
1070 local->deleteIncidence( inL ); 1070 local->deleteIncidence( inL );
1071 inL = inR->clone(); 1071 inL = inR->clone();
1072 if ( mSyncManager->syncWithDesktop() ) 1072 if ( mSyncManager->syncWithDesktop() )
1073 inL->setPilotId( pid ); 1073 inL->setPilotId( pid );
1074 inL->setIDStr( idS ); 1074 inL->setIDStr( idS );
1075 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1075 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1076 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1076 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1077 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1077 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1078 } 1078 }
1079 local->addIncidence( inL ); 1079 local->addIncidence( inL );
1080 ++changedLocal; 1080 ++changedLocal;
1081 } 1081 }
1082 } 1082 }
1083 } else { // no conflict ********** add or delete remote 1083 } else { // no conflict ********** add or delete remote
1084 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1084 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1086 QString des = eventLSync->description(); 1086 QString des = eventLSync->description();
1087 QString pref = "e"; 1087 QString pref = "e";
1088 if ( inR->type() == "Todo" ) 1088 if ( inR->type() == "Todo" )
1089 pref = "t"; 1089 pref = "t";
1090 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1090 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1091 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1091 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1092 //remote->deleteIncidence( inR ); 1092 //remote->deleteIncidence( inR );
1093 ++deletedEventR; 1093 ++deletedEventR;
1094 } else { 1094 } else {
1095 inR->setLastModified( modifiedCalendar ); 1095 inR->setLastModified( modifiedCalendar );
1096 inL = inR->clone(); 1096 inL = inR->clone();
1097 inL->setIDStr( ":" ); 1097 inL->setIDStr( ":" );
1098 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1098 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1099 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1099 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1100 local->addIncidence( inL ); 1100 local->addIncidence( inL );
1101 ++addedEvent; 1101 ++addedEvent;
1102 1102
1103 } 1103 }
1104 } else { 1104 } else {
1105 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1105 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1106 inR->setLastModified( modifiedCalendar ); 1106 inR->setLastModified( modifiedCalendar );
1107 inL = inR->clone(); 1107 inL = inR->clone();
1108 inL->setIDStr( ":" ); 1108 inL->setIDStr( ":" );
1109 local->addIncidence( inL ); 1109 local->addIncidence( inL );
1110 ++addedEvent; 1110 ++addedEvent;
1111 1111
1112 } else { 1112 } else {
1113 checkExternSyncEvent(eventRSyncSharp, inR); 1113 checkExternSyncEvent(eventRSyncSharp, inR);
1114 remote->deleteIncidence( inR ); 1114 remote->deleteIncidence( inR );
1115 ++deletedEventR; 1115 ++deletedEventR;
1116 } 1116 }
1117 } 1117 }
1118 } else { 1118 } else {
1119 ++filteredIN; 1119 ++filteredIN;
1120 } 1120 }
1121 } 1121 }
1122 } 1122 }
1123 inR = er.next(); 1123 inR = er.next();
1124 } 1124 }
1125 QPtrList<Incidence> el = local->rawIncidences(); 1125 QPtrList<Incidence> el = local->rawIncidences();
1126 inL = el.first(); 1126 inL = el.first();
1127 modulo = (el.count()/10)+1; 1127 modulo = (el.count()/10)+1;
1128 bar.setCaption (i18n("Add / remove events") ); 1128 bar.setCaption (i18n("Add / remove events") );
1129 bar.setTotalSteps ( el.count() ) ; 1129 bar.setTotalSteps ( el.count() ) ;
1130 bar.show(); 1130 bar.show();
1131 incCounter = 0; 1131 incCounter = 0;
1132 1132
1133 while ( inL ) { 1133 while ( inL ) {
1134 1134
1135 qApp->processEvents(); 1135 qApp->processEvents();
1136 if ( ! bar.isVisible() ) 1136 if ( ! bar.isVisible() )
1137 return false; 1137 return false;
1138 if ( incCounter % modulo == 0 ) 1138 if ( incCounter % modulo == 0 )
1139 bar.setProgress( incCounter ); 1139 bar.setProgress( incCounter );
1140 ++incCounter; 1140 ++incCounter;
1141 uid = inL->uid(); 1141 uid = inL->uid();
1142 bool skipIncidence = false; 1142 bool skipIncidence = false;
1143 if ( uid.left(15) == QString("last-syncEvent-") ) 1143 if ( uid.left(15) == QString("last-syncEvent-") )
1144 skipIncidence = true; 1144 skipIncidence = true;
1145 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1145 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1146 skipIncidence = true; 1146 skipIncidence = true;
1147 if ( !skipIncidence ) { 1147 if ( !skipIncidence ) {
1148 inR = remote->incidence( uid ); 1148 inR = remote->incidence( uid );
1149 if ( ! inR ) { 1149 if ( ! inR ) {
1150 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1150 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1151 // no conflict ********** add or delete local 1151 // no conflict ********** add or delete local
1152 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1152 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1153 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1153 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1154 checkExternSyncEvent(eventLSyncSharp, inL); 1154 checkExternSyncEvent(eventLSyncSharp, inL);
1155 local->deleteIncidence( inL ); 1155 local->deleteIncidence( inL );
1156 ++deletedEventL; 1156 ++deletedEventL;
1157 } else { 1157 } else {
1158 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1158 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1159 inL->removeID(mCurrentSyncDevice ); 1159 inL->removeID(mCurrentSyncDevice );
1160 ++addedEventR; 1160 ++addedEventR;
1161 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1161 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1162 inL->setLastModified( modifiedCalendar ); 1162 inL->setLastModified( modifiedCalendar );
1163 inR = inL->clone(); 1163 inR = inL->clone();
1164 inR->setIDStr( ":" ); 1164 inR->setIDStr( ":" );
1165 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1165 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1166 remote->addIncidence( inR ); 1166 remote->addIncidence( inR );
1167 } 1167 }
1168 } 1168 }
1169 } else { 1169 } else {
1170 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1170 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1171 checkExternSyncEvent(eventLSyncSharp, inL); 1171 checkExternSyncEvent(eventLSyncSharp, inL);
1172 local->deleteIncidence( inL ); 1172 local->deleteIncidence( inL );
1173 ++deletedEventL; 1173 ++deletedEventL;
1174 } else { 1174 } else {
1175 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1175 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1176 ++addedEventR; 1176 ++addedEventR;
1177 inL->setLastModified( modifiedCalendar ); 1177 inL->setLastModified( modifiedCalendar );
1178 inR = inL->clone(); 1178 inR = inL->clone();
1179 inR->setIDStr( ":" ); 1179 inR->setIDStr( ":" );
1180 remote->addIncidence( inR ); 1180 remote->addIncidence( inR );
1181 } 1181 }
1182 } 1182 }
1183 } 1183 }
1184 } else { 1184 } else {
1185 ++filteredOUT; 1185 ++filteredOUT;
1186 } 1186 }
1187 } 1187 }
1188 } 1188 }
1189 inL = el.next(); 1189 inL = el.next();
1190 } 1190 }
1191 int delFut = 0; 1191 int delFut = 0;
1192 int remRem = 0; 1192 int remRem = 0;
1193 if ( mSyncManager->mWriteBackInFuture ) { 1193 if ( mSyncManager->mWriteBackInFuture ) {
1194 er = remote->rawIncidences(); 1194 er = remote->rawIncidences();
1195 remRem = er.count(); 1195 remRem = er.count();
1196 inR = er.first(); 1196 inR = er.first();
1197 QDateTime dt; 1197 QDateTime dt;
1198 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1198 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1199 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1199 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1200 while ( inR ) { 1200 while ( inR ) {
1201 if ( inR->type() == "Todo" ) { 1201 if ( inR->type() == "Todo" ) {
1202 Todo * t = (Todo*)inR; 1202 Todo * t = (Todo*)inR;
1203 if ( t->hasDueDate() ) 1203 if ( t->hasDueDate() )
1204 dt = t->dtDue(); 1204 dt = t->dtDue();
1205 else 1205 else
1206 dt = cur.addSecs( 62 ); 1206 dt = cur.addSecs( 62 );
1207 } 1207 }
1208 else if (inR->type() == "Event" ) { 1208 else if (inR->type() == "Event" ) {
1209 bool ok; 1209 bool ok;
1210 dt = inR->getNextOccurence( cur, &ok ); 1210 dt = inR->getNextOccurence( cur, &ok );
1211 if ( !ok ) 1211 if ( !ok )
1212 dt = cur.addSecs( -62 ); 1212 dt = cur.addSecs( -62 );
1213 } 1213 }
1214 else 1214 else
1215 dt = inR->dtStart(); 1215 dt = inR->dtStart();
1216 if ( dt < cur || dt > end ) { 1216 if ( dt < cur || dt > end ) {
1217 remote->deleteIncidence( inR ); 1217 remote->deleteIncidence( inR );
1218 ++delFut; 1218 ++delFut;
1219 } 1219 }
1220 inR = er.next(); 1220 inR = er.next();
1221 } 1221 }
1222 } 1222 }
1223 bar.hide(); 1223 bar.hide();
1224 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1224 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1225 eventLSync->setReadOnly( false ); 1225 eventLSync->setReadOnly( false );
1226 eventLSync->setDtStart( mLastCalendarSync ); 1226 eventLSync->setDtStart( mLastCalendarSync );
1227 eventRSync->setDtStart( mLastCalendarSync ); 1227 eventRSync->setDtStart( mLastCalendarSync );
1228 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1228 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1229 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1229 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1230 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1230 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1231 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1231 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1232 eventLSync->setReadOnly( true ); 1232 eventLSync->setReadOnly( true );
1233 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1233 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1234 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1234 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1235 remote->addEvent( eventRSync ); 1235 remote->addEvent( eventRSync );
1236 else 1236 else
1237 delete eventRSync; 1237 delete eventRSync;
1238 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1238 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1239 QString mes; 1239 QString mes;
1240 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1240 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1241 QString delmess; 1241 QString delmess;
1242 if ( delFut ) { 1242 if ( delFut ) {
1243 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1243 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1244 mes += delmess; 1244 mes += delmess;
1245 } 1245 }
1246 mes = i18n("Local calendar changed!\n") +mes; 1246 mes = i18n("Local calendar changed!\n") +mes;
1247 mCalendar->checkAlarmForIncidence( 0, true ); 1247 mCalendar->checkAlarmForIncidence( 0, true );
1248 qDebug( mes ); 1248 qDebug( mes );
1249 if ( mSyncManager->mShowSyncSummary ) { 1249 if ( mSyncManager->mShowSyncSummary ) {
1250 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1250 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1251 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1251 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1252 qDebug("KO: WB cancelled "); 1252 qDebug("KO: WB cancelled ");
1253 mSyncManager->mWriteBackFile = false; 1253 mSyncManager->mWriteBackFile = false;
1254 return syncOK; 1254 return syncOK;
1255 } 1255 }
1256 } 1256 }
1257 return syncOK; 1257 return syncOK;
1258} 1258}
1259 1259
1260void CalendarView::setSyncDevice( QString s ) 1260void CalendarView::setSyncDevice( QString s )
1261{ 1261{
1262 mCurrentSyncDevice= s; 1262 mCurrentSyncDevice= s;
1263} 1263}
1264void CalendarView::setSyncName( QString s ) 1264void CalendarView::setSyncName( QString s )
1265{ 1265{
1266 mCurrentSyncName= s; 1266 mCurrentSyncName= s;
1267} 1267}
1268bool CalendarView::syncCalendar(QString filename, int mode) 1268bool CalendarView::syncCalendar(QString filename, int mode)
1269{ 1269{
1270 //qDebug("syncCalendar %s ", filename.latin1()); 1270 //qDebug("syncCalendar %s ", filename.latin1());
1271 mGlobalSyncMode = SYNC_MODE_NORMAL; 1271 mGlobalSyncMode = SYNC_MODE_NORMAL;
1272 CalendarLocal* calendar = new CalendarLocal(); 1272 CalendarLocal* calendar = new CalendarLocal();
1273 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1273 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1274 FileStorage* storage = new FileStorage( calendar ); 1274 FileStorage* storage = new FileStorage( calendar );
1275 bool syncOK = false; 1275 bool syncOK = false;
1276 storage->setFileName( filename ); 1276 storage->setFileName( filename );
1277 // qDebug("loading ... "); 1277 // qDebug("loading ... ");
1278 if ( storage->load() ) { 1278 if ( storage->load() ) {
1279 getEventViewerDialog()->setSyncMode( true ); 1279 getEventViewerDialog()->setSyncMode( true );
1280 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1280 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1281 getEventViewerDialog()->setSyncMode( false ); 1281 getEventViewerDialog()->setSyncMode( false );
1282 if ( syncOK ) { 1282 if ( syncOK ) {
1283 if ( mSyncManager->mWriteBackFile ) 1283 if ( mSyncManager->mWriteBackFile )
1284 { 1284 {
1285 storage->setSaveFormat( new ICalFormat() ); 1285 storage->setSaveFormat( new ICalFormat() );
1286 storage->save(); 1286 storage->save();
1287 } 1287 }
1288 } 1288 }
1289 setModified( true ); 1289 setModified( true );
1290 } 1290 }
1291 delete storage; 1291 delete storage;
1292 delete calendar; 1292 delete calendar;
1293 if ( syncOK ) 1293 if ( syncOK )
1294 updateView(); 1294 updateView();
1295 return syncOK; 1295 return syncOK;
1296} 1296}
1297 1297
1298void CalendarView::syncExternal( int mode ) 1298void CalendarView::syncExternal( int mode )
1299{ 1299{
1300 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1300 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1301 1301
1302 qApp->processEvents(); 1302 qApp->processEvents();
1303 CalendarLocal* calendar = new CalendarLocal(); 1303 CalendarLocal* calendar = new CalendarLocal();
1304 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1304 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1305 bool syncOK = false; 1305 bool syncOK = false;
1306 bool loadSuccess = false; 1306 bool loadSuccess = false;
1307 PhoneFormat* phoneFormat = 0; 1307 PhoneFormat* phoneFormat = 0;
1308 emit tempDisableBR(true); 1308 emit tempDisableBR(true);
1309#ifndef DESKTOP_VERSION 1309#ifndef DESKTOP_VERSION
1310 SharpFormat* sharpFormat = 0; 1310 SharpFormat* sharpFormat = 0;
1311 if ( mode == 0 ) { // sharp 1311 if ( mode == 0 ) { // sharp
1312 sharpFormat = new SharpFormat () ; 1312 sharpFormat = new SharpFormat () ;
1313 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1313 loadSuccess = sharpFormat->load( calendar, mCalendar );
1314 1314
1315 } else 1315 } else
1316#endif 1316#endif
1317 if ( mode == 1 ) { // phone 1317 if ( mode == 1 ) { // phone
1318 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1318 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1319 mSyncManager->mPhoneDevice, 1319 mSyncManager->mPhoneDevice,
1320 mSyncManager->mPhoneConnection, 1320 mSyncManager->mPhoneConnection,
1321 mSyncManager->mPhoneModel); 1321 mSyncManager->mPhoneModel);
1322 loadSuccess = phoneFormat->load( calendar,mCalendar); 1322 loadSuccess = phoneFormat->load( calendar,mCalendar);
1323 1323
1324 } else { 1324 } else {
1325 emit tempDisableBR(false); 1325 emit tempDisableBR(false);
1326 return; 1326 return;
1327 } 1327 }
1328 if ( loadSuccess ) { 1328 if ( loadSuccess ) {
1329 getEventViewerDialog()->setSyncMode( true ); 1329 getEventViewerDialog()->setSyncMode( true );
1330 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1330 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1331 getEventViewerDialog()->setSyncMode( false ); 1331 getEventViewerDialog()->setSyncMode( false );
1332 qApp->processEvents(); 1332 qApp->processEvents();
1333 if ( syncOK ) { 1333 if ( syncOK ) {
1334 if ( mSyncManager->mWriteBackFile ) 1334 if ( mSyncManager->mWriteBackFile )
1335 { 1335 {
1336 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1336 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1337 Incidence* inc = iL.first(); 1337 Incidence* inc = iL.first();
1338 if ( phoneFormat ) { 1338 if ( phoneFormat ) {
1339 while ( inc ) { 1339 while ( inc ) {
1340 inc->removeID(mCurrentSyncDevice); 1340 inc->removeID(mCurrentSyncDevice);
1341 inc = iL.next(); 1341 inc = iL.next();
1342 } 1342 }
1343 } 1343 }
1344#ifndef DESKTOP_VERSION 1344#ifndef DESKTOP_VERSION
1345 if ( sharpFormat ) 1345 if ( sharpFormat )
1346 sharpFormat->save(calendar); 1346 sharpFormat->save(calendar);
1347#endif 1347#endif
1348 if ( phoneFormat ) 1348 if ( phoneFormat )
1349 phoneFormat->save(calendar); 1349 phoneFormat->save(calendar);
1350 iL = calendar->rawIncidences(); 1350 iL = calendar->rawIncidences();
1351 inc = iL.first(); 1351 inc = iL.first();
1352 Incidence* loc; 1352 Incidence* loc;
1353 while ( inc ) { 1353 while ( inc ) {
1354 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1354 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1355 loc = mCalendar->incidence(inc->uid() ); 1355 loc = mCalendar->incidence(inc->uid() );
1356 if ( loc ) { 1356 if ( loc ) {
1357 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1357 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1358 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1358 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1359 } 1359 }
1360 } 1360 }
1361 inc = iL.next(); 1361 inc = iL.next();
1362 } 1362 }
1363 Incidence* lse = getLastSyncEvent(); 1363 Incidence* lse = getLastSyncEvent();
1364 if ( lse ) { 1364 if ( lse ) {
1365 lse->setReadOnly( false ); 1365 lse->setReadOnly( false );
1366 lse->setDescription( "" ); 1366 lse->setDescription( "" );
1367 lse->setReadOnly( true ); 1367 lse->setReadOnly( true );
1368 } 1368 }
1369 } 1369 }
1370 } else { 1370 } else {
1371 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 1371 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
1372 } 1372 }
1373 setModified( true ); 1373 setModified( true );
1374 } else { 1374 } else {
1375 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1375 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1376 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1376 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1377 question, i18n("Ok")) ; 1377 question, i18n("Ok")) ;
1378 1378
1379 } 1379 }
1380 delete calendar; 1380 delete calendar;
1381 updateView(); 1381 updateView();
1382 emit tempDisableBR(false); 1382 emit tempDisableBR(false);
1383 return ;//syncOK; 1383 return ;//syncOK;
1384 1384
1385} 1385}
1386 1386
1387bool CalendarView::importBday() 1387bool CalendarView::importBday()
1388{ 1388{
1389#ifndef KORG_NOKABC 1389#ifndef KORG_NOKABC
1390 1390
1391#ifdef DESKTOP_VERSION 1391#ifdef DESKTOP_VERSION
1392 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1392 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1393 KABC::AddressBook::Iterator it; 1393 KABC::AddressBook::Iterator it;
1394 int count = 0; 1394 int count = 0;
1395 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1395 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1396 ++count; 1396 ++count;
1397 } 1397 }
1398 QProgressBar bar(count,0 ); 1398 QProgressBar bar(count,0 );
1399 int w = 300; 1399 int w = 300;
1400 if ( QApplication::desktop()->width() < 320 ) 1400 if ( QApplication::desktop()->width() < 320 )
1401 w = 220; 1401 w = 220;
1402 int h = bar.sizeHint().height() ; 1402 int h = bar.sizeHint().height() ;
1403 int dw = QApplication::desktop()->width(); 1403 int dw = QApplication::desktop()->width();
1404 int dh = QApplication::desktop()->height(); 1404 int dh = QApplication::desktop()->height();
1405 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1405 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1406 bar.show(); 1406 bar.show();
1407 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1407 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1408 qApp->processEvents(); 1408 qApp->processEvents();
1409 count = 0; 1409 count = 0;
1410 int addCount = 0; 1410 int addCount = 0;
1411 KCal::Attendee* a = 0; 1411 KCal::Attendee* a = 0;
1412 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1412 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1413 if ( ! bar.isVisible() ) 1413 if ( ! bar.isVisible() )
1414 return false; 1414 return false;
1415 bar.setProgress( count++ ); 1415 bar.setProgress( count++ );
1416 qApp->processEvents(); 1416 qApp->processEvents();
1417 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1417 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1418 if ( (*it).birthday().date().isValid() ){ 1418 if ( (*it).birthday().date().isValid() ){
1419 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1419 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1420 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1420 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1421 ++addCount; 1421 ++addCount;
1422 } 1422 }
1423 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1423 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1424 if ( anni.isValid() ){ 1424 if ( anni.isValid() ){
1425 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1425 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1426 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1426 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1427 ++addCount; 1427 ++addCount;
1428 } 1428 }
1429 } 1429 }
1430 updateView(); 1430 updateView();
1431 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1431 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1432#else //DESKTOP_VERSION 1432#else //DESKTOP_VERSION
1433 1433
1434 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1434 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1435 // the result should now arrive through method insertBirthdays 1435 // the result should now arrive through method insertBirthdays
1436 1436
1437#endif //DESKTOP_VERSION 1437#endif //DESKTOP_VERSION
1438 1438
1439#endif //KORG_NOKABC 1439#endif //KORG_NOKABC
1440 1440
1441 1441
1442 return true; 1442 return true;
1443} 1443}
1444 1444
1445// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1445// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1446void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1446void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1447 const QStringList& anniversaryList, const QStringList& realNameList, 1447 const QStringList& anniversaryList, const QStringList& realNameList,
1448 const QStringList& emailList, const QStringList& assembledNameList, 1448 const QStringList& emailList, const QStringList& assembledNameList,
1449 const QStringList& uidList) 1449 const QStringList& uidList)
1450{ 1450{
1451 //qDebug("KO::CalendarView::insertBirthdays"); 1451 //qDebug("KO::CalendarView::insertBirthdays");
1452 if (uid == this->name()) 1452 if (uid == this->name())
1453 { 1453 {
1454 int count = birthdayList.count(); 1454 int count = birthdayList.count();
1455 int addCount = 0; 1455 int addCount = 0;
1456 KCal::Attendee* a = 0; 1456 KCal::Attendee* a = 0;
1457 1457
1458 //qDebug("CalView 1 %i", count); 1458 //qDebug("CalView 1 %i", count);
1459 1459
1460 QProgressBar bar(count,0 ); 1460 QProgressBar bar(count,0 );
1461 int w = 300; 1461 int w = 300;
1462 if ( QApplication::desktop()->width() < 320 ) 1462 if ( QApplication::desktop()->width() < 320 )
1463 w = 220; 1463 w = 220;
1464 int h = bar.sizeHint().height() ; 1464 int h = bar.sizeHint().height() ;
1465 int dw = QApplication::desktop()->width(); 1465 int dw = QApplication::desktop()->width();
1466 int dh = QApplication::desktop()->height(); 1466 int dh = QApplication::desktop()->height();
1467 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1467 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1468 bar.show(); 1468 bar.show();
1469 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1469 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1470 qApp->processEvents(); 1470 qApp->processEvents();
1471 1471
1472 QDate birthday; 1472 QDate birthday;
1473 QDate anniversary; 1473 QDate anniversary;
1474 QString realName; 1474 QString realName;
1475 QString email; 1475 QString email;
1476 QString assembledName; 1476 QString assembledName;
1477 QString uid; 1477 QString uid;
1478 bool ok = true; 1478 bool ok = true;
1479 for ( int i = 0; i < count; i++) 1479 for ( int i = 0; i < count; i++)
1480 { 1480 {
1481 if ( ! bar.isVisible() ) 1481 if ( ! bar.isVisible() )
1482 return; 1482 return;
1483 bar.setProgress( i ); 1483 bar.setProgress( i );
1484 qApp->processEvents(); 1484 qApp->processEvents();
1485 1485
1486 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1486 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1487 if (!ok) { 1487 if (!ok) {
1488 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1488 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1489 } 1489 }
1490 1490
1491 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1491 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1492 if (!ok) { 1492 if (!ok) {
1493 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1493 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1494 } 1494 }
1495 realName = realNameList[i]; 1495 realName = realNameList[i];
1496 email = emailList[i]; 1496 email = emailList[i];
1497 assembledName = assembledNameList[i]; 1497 assembledName = assembledNameList[i];
1498 uid = uidList[i]; 1498 uid = uidList[i];
1499 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1499 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1500 1500
1501 if ( birthday.isValid() ){ 1501 if ( birthday.isValid() ){
1502 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1502 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1503 KCal::Attendee::ReqParticipant,uid) ; 1503 KCal::Attendee::ReqParticipant,uid) ;
1504 if ( addAnniversary( birthday, assembledName, a, true ) ) 1504 if ( addAnniversary( birthday, assembledName, a, true ) )
1505 ++addCount; 1505 ++addCount;
1506 } 1506 }
1507 1507
1508 if ( anniversary.isValid() ){ 1508 if ( anniversary.isValid() ){
1509 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1509 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1510 KCal::Attendee::ReqParticipant,uid) ; 1510 KCal::Attendee::ReqParticipant,uid) ;
1511 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1511 if ( addAnniversary( anniversary, assembledName, a, false ) )
1512 ++addCount; 1512 ++addCount;
1513 } 1513 }
1514 } 1514 }
1515 1515
1516 updateView(); 1516 updateView();
1517 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1517 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1518 1518
1519 } 1519 }
1520 1520
1521} 1521}
1522 1522
1523 1523
1524 1524
1525bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1525bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1526{ 1526{
1527 //qDebug("addAnni "); 1527 //qDebug("addAnni ");
1528 Event * ev = new Event(); 1528 Event * ev = new Event();
1529 ev->setOrganizer(KOPrefs::instance()->email()); 1529 ev->setOrganizer(KOPrefs::instance()->email());
1530 if ( a ) { 1530 if ( a ) {
1531 ev->addAttendee( a ); 1531 ev->addAttendee( a );
1532 } 1532 }
1533 QString kind; 1533 QString kind;
1534 if ( birthday ) { 1534 if ( birthday ) {
1535 kind = i18n( "Birthday" ); 1535 kind = i18n( "Birthday" );
1536 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1536 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1537 } 1537 }
1538 else { 1538 else {
1539 kind = i18n( "Anniversary" ); 1539 kind = i18n( "Anniversary" );
1540 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1540 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1541 } 1541 }
1542 ev->setCategories( kind ); 1542 ev->setCategories( kind );
1543 ev->setDtStart( QDateTime(date) ); 1543 ev->setDtStart( QDateTime(date) );
1544 ev->setDtEnd( QDateTime(date) ); 1544 ev->setDtEnd( QDateTime(date) );
1545 ev->setFloats( true ); 1545 ev->setFloats( true );
1546 Recurrence * rec = ev->recurrence(); 1546 Recurrence * rec = ev->recurrence();
1547 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1547 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1548 rec->addYearlyNum( date.month() ); 1548 rec->addYearlyNum( date.month() );
1549 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1549 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1550 delete ev; 1550 delete ev;
1551 return false; 1551 return false;
1552 } 1552 }
1553 return true; 1553 return true;
1554 1554
1555} 1555}
1556bool CalendarView::importQtopia( const QString &categories, 1556bool CalendarView::importQtopia( const QString &categories,
1557 const QString &datebook, 1557 const QString &datebook,
1558 const QString &todolist ) 1558 const QString &todolist )
1559{ 1559{
1560 1560
1561 QtopiaFormat qtopiaFormat; 1561 QtopiaFormat qtopiaFormat;
1562 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1562 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1563 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1563 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1564 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1564 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1565 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1565 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1566 1566
1567 updateView(); 1567 updateView();
1568 return true; 1568 return true;
1569 1569
1570#if 0 1570#if 0
1571 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1571 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1572 mCurrentSyncDevice = "qtopia-XML"; 1572 mCurrentSyncDevice = "qtopia-XML";
1573 if ( mSyncManager->mAskForPreferences ) 1573 if ( mSyncManager->mAskForPreferences )
1574 edit_sync_options(); 1574 edit_sync_options();
1575 qApp->processEvents(); 1575 qApp->processEvents();
1576 CalendarLocal* calendar = new CalendarLocal(); 1576 CalendarLocal* calendar = new CalendarLocal();
1577 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1577 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1578 bool syncOK = false; 1578 bool syncOK = false;
1579 QtopiaFormat qtopiaFormat; 1579 QtopiaFormat qtopiaFormat;
1580 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1580 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1581 bool loadOk = true; 1581 bool loadOk = true;
1582 if ( !categories.isEmpty() ) 1582 if ( !categories.isEmpty() )
1583 loadOk = qtopiaFormat.load( calendar, categories ); 1583 loadOk = qtopiaFormat.load( calendar, categories );
1584 if ( loadOk && !datebook.isEmpty() ) 1584 if ( loadOk && !datebook.isEmpty() )
1585 loadOk = qtopiaFormat.load( calendar, datebook ); 1585 loadOk = qtopiaFormat.load( calendar, datebook );
1586 if ( loadOk && !todolist.isEmpty() ) 1586 if ( loadOk && !todolist.isEmpty() )
1587 loadOk = qtopiaFormat.load( calendar, todolist ); 1587 loadOk = qtopiaFormat.load( calendar, todolist );
1588 1588
1589 if ( loadOk ) { 1589 if ( loadOk ) {
1590 getEventViewerDialog()->setSyncMode( true ); 1590 getEventViewerDialog()->setSyncMode( true );
1591 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1591 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1592 getEventViewerDialog()->setSyncMode( false ); 1592 getEventViewerDialog()->setSyncMode( false );
1593 qApp->processEvents(); 1593 qApp->processEvents();
1594 if ( syncOK ) { 1594 if ( syncOK ) {
1595 if ( mSyncManager->mWriteBackFile ) 1595 if ( mSyncManager->mWriteBackFile )
1596 { 1596 {
1597 // write back XML file 1597 // write back XML file
1598 1598
1599 } 1599 }
1600 setModified( true ); 1600 setModified( true );
1601 } 1601 }
1602 } else { 1602 } else {
1603 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1603 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1604 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1604 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1605 question, i18n("Ok")) ; 1605 question, i18n("Ok")) ;
1606 } 1606 }
1607 delete calendar; 1607 delete calendar;
1608 updateView(); 1608 updateView();
1609 return syncOK; 1609 return syncOK;
1610 1610
1611 1611
1612#endif 1612#endif
1613 1613
1614} 1614}
1615 1615
1616void CalendarView::setSyncEventsReadOnly() 1616void CalendarView::setSyncEventsReadOnly()
1617{ 1617{
1618 Event * ev; 1618 Event * ev;
1619 QPtrList<Event> eL = mCalendar->rawEvents(); 1619 QPtrList<Event> eL = mCalendar->rawEvents();
1620 ev = eL.first(); 1620 ev = eL.first();
1621 while ( ev ) { 1621 while ( ev ) {
1622 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1622 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1623 ev->setReadOnly( true ); 1623 ev->setReadOnly( true );
1624 ev = eL.next(); 1624 ev = eL.next();
1625 } 1625 }
1626} 1626}
1627bool CalendarView::openCalendar(QString filename, bool merge) 1627bool CalendarView::openCalendar(QString filename, bool merge)
1628{ 1628{
1629 1629
1630 if (filename.isEmpty()) { 1630 if (filename.isEmpty()) {
1631 return false; 1631 return false;
1632 } 1632 }
1633 1633
1634 if (!QFile::exists(filename)) { 1634 if (!QFile::exists(filename)) {
1635 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1635 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1636 return false; 1636 return false;
1637 } 1637 }
1638 1638
1639 globalFlagBlockAgenda = 1; 1639 globalFlagBlockAgenda = 1;
1640 if (!merge) mCalendar->close(); 1640 if (!merge) mCalendar->close();
1641 1641
1642 mStorage->setFileName( filename ); 1642 mStorage->setFileName( filename );
1643 1643
1644 if ( mStorage->load() ) { 1644 if ( mStorage->load() ) {
1645 if ( merge ) ;//setModified( true ); 1645 if ( merge ) ;//setModified( true );
1646 else { 1646 else {
1647 //setModified( true ); 1647 //setModified( true );
1648 mViewManager->setDocumentId( filename ); 1648 mViewManager->setDocumentId( filename );
1649 mDialogManager->setDocumentId( filename ); 1649 mDialogManager->setDocumentId( filename );
1650 mTodoList->setDocumentId( filename ); 1650 mTodoList->setDocumentId( filename );
1651 } 1651 }
1652 globalFlagBlockAgenda = 2; 1652 globalFlagBlockAgenda = 2;
1653 // if ( getLastSyncEvent() ) 1653 // if ( getLastSyncEvent() )
1654 // getLastSyncEvent()->setReadOnly( true ); 1654 // getLastSyncEvent()->setReadOnly( true );
1655 mCalendar->reInitAlarmSettings(); 1655 mCalendar->reInitAlarmSettings();
1656 setSyncEventsReadOnly(); 1656 setSyncEventsReadOnly();
1657 updateUnmanagedViews(); 1657 updateUnmanagedViews();
1658 updateView(); 1658 updateView();
1659 if ( filename != MainWindow::defaultFileName() ) { 1659 if ( filename != MainWindow::defaultFileName() ) {
1660 saveCalendar( MainWindow::defaultFileName() ); 1660 saveCalendar( MainWindow::defaultFileName() );
1661 } else { 1661 } else {
1662 QFileInfo finf ( MainWindow::defaultFileName()); 1662 QFileInfo finf ( MainWindow::defaultFileName());
1663 if ( finf.exists() ) { 1663 if ( finf.exists() ) {
1664 setLoadedFileVersion( finf.lastModified () ); 1664 setLoadedFileVersion( finf.lastModified () );
1665 } 1665 }
1666 } 1666 }
1667 return true; 1667 return true;
1668 } else { 1668 } else {
1669 // while failing to load, the calendar object could 1669 // while failing to load, the calendar object could
1670 // have become partially populated. Clear it out. 1670 // have become partially populated. Clear it out.
1671 if ( !merge ) { 1671 if ( !merge ) {
1672 mCalendar->close(); 1672 mCalendar->close();
1673 mViewManager->setDocumentId( filename ); 1673 mViewManager->setDocumentId( filename );
1674 mDialogManager->setDocumentId( filename ); 1674 mDialogManager->setDocumentId( filename );
1675 mTodoList->setDocumentId( filename ); 1675 mTodoList->setDocumentId( filename );
1676 } 1676 }
1677 1677
1678 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1678 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1679 1679
1680 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1680 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1681 globalFlagBlockAgenda = 2; 1681 globalFlagBlockAgenda = 2;
1682 mCalendar->reInitAlarmSettings(); 1682 mCalendar->reInitAlarmSettings();
1683 setSyncEventsReadOnly(); 1683 setSyncEventsReadOnly();
1684 updateUnmanagedViews(); 1684 updateUnmanagedViews();
1685 updateView(); 1685 updateView();
1686 } 1686 }
1687 return false; 1687 return false;
1688} 1688}
1689void CalendarView::showOpenError() 1689void CalendarView::showOpenError()
1690{ 1690{
1691 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1691 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1692} 1692}
1693void CalendarView::setLoadedFileVersion(QDateTime dt) 1693void CalendarView::setLoadedFileVersion(QDateTime dt)
1694{ 1694{
1695 loadedFileVersion = dt; 1695 loadedFileVersion = dt;
1696} 1696}
1697bool CalendarView::checkFileChanged(QString fn) 1697bool CalendarView::checkFileChanged(QString fn)
1698{ 1698{
1699 QFileInfo finf ( fn ); 1699 QFileInfo finf ( fn );
1700 if ( !finf.exists() ) 1700 if ( !finf.exists() )
1701 return true; 1701 return true;
1702 QDateTime dt = finf.lastModified (); 1702 QDateTime dt = finf.lastModified ();
1703 if ( dt <= loadedFileVersion ) 1703 if ( dt <= loadedFileVersion )
1704 return false; 1704 return false;
1705 return true; 1705 return true;
1706 1706
1707} 1707}
1708void CalendarView::watchSavedFile() 1708void CalendarView::watchSavedFile()
1709{ 1709{
1710 QFileInfo finf ( MainWindow::defaultFileName()); 1710 QFileInfo finf ( MainWindow::defaultFileName());
1711 if ( !finf.exists() ) 1711 if ( !finf.exists() )
1712 return; 1712 return;
1713 QDateTime dt = finf.lastModified (); 1713 QDateTime dt = finf.lastModified ();
1714 if ( dt < loadedFileVersion ) { 1714 if ( dt < loadedFileVersion ) {
1715 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1715 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1716 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1716 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1717 return; 1717 return;
1718 } 1718 }
1719 loadedFileVersion = dt; 1719 loadedFileVersion = dt;
1720} 1720}
1721 1721
1722bool CalendarView::checkFileVersion(QString fn) 1722bool CalendarView::checkFileVersion(QString fn)
1723{ 1723{
1724 QFileInfo finf ( fn ); 1724 QFileInfo finf ( fn );
1725 if ( !finf.exists() ) 1725 if ( !finf.exists() )
1726 return true; 1726 return true;
1727 QDateTime dt = finf.lastModified (); 1727 QDateTime dt = finf.lastModified ();
1728 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1728 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1729 //qDebug("file on disk version %s",dt.toString().latin1()); 1729 //qDebug("file on disk version %s",dt.toString().latin1());
1730 if ( dt <= loadedFileVersion ) 1730 if ( dt <= loadedFileVersion )
1731 return true; 1731 return true;
1732 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1732 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1733 i18n("KO/Pi Warning"),i18n("Overwrite"), 1733 i18n("KO/Pi Warning"),i18n("Overwrite"),
1734 i18n("Sync+save")); 1734 i18n("Sync+save"));
1735 1735
1736 if ( km == KMessageBox::Cancel ) 1736 if ( km == KMessageBox::Cancel )
1737 return false; 1737 return false;
1738 if ( km == KMessageBox::Yes ) 1738 if ( km == KMessageBox::Yes )
1739 return true; 1739 return true;
1740 1740
1741 setSyncDevice("deleteaftersync" ); 1741 setSyncDevice("deleteaftersync" );
1742 mSyncManager->mAskForPreferences = true; 1742 mSyncManager->mAskForPreferences = true;
1743 mSyncManager->mSyncAlgoPrefs = 3; 1743 mSyncManager->mSyncAlgoPrefs = 3;
1744 mSyncManager->mWriteBackFile = false; 1744 mSyncManager->mWriteBackFile = false;
1745 mSyncManager->mWriteBackExistingOnly = false; 1745 mSyncManager->mWriteBackExistingOnly = false;
1746 mSyncManager->mShowSyncSummary = false; 1746 mSyncManager->mShowSyncSummary = false;
1747 syncCalendar( fn, 3 ); 1747 syncCalendar( fn, 3 );
1748 Event * e = getLastSyncEvent(); 1748 Event * e = getLastSyncEvent();
1749 mCalendar->deleteEvent ( e ); 1749 mCalendar->deleteEvent ( e );
1750 updateView(); 1750 updateView();
1751 return true; 1751 return true;
1752} 1752}
1753 1753
1754bool CalendarView::saveCalendar( QString filename ) 1754bool CalendarView::saveCalendar( QString filename )
1755{ 1755{
1756 1756
1757 // Store back all unsaved data into calendar object 1757 // Store back all unsaved data into calendar object
1758 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1758 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1759 if ( mViewManager->currentView() ) 1759 if ( mViewManager->currentView() )
1760 mViewManager->currentView()->flushView(); 1760 mViewManager->currentView()->flushView();
1761 1761
1762 1762
1763 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1763 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1764 mStorage->setSaveFormat( new ICalFormat() ); 1764 mStorage->setSaveFormat( new ICalFormat() );
1765 mStorage->setFileName( filename ); 1765 mStorage->setFileName( filename );
1766 bool success; 1766 bool success;
1767 success = mStorage->save(); 1767 success = mStorage->save();
1768 if ( !success ) { 1768 if ( !success ) {
1769 return false; 1769 return false;
1770 } 1770 }
1771 if ( filename == MainWindow::defaultFileName() ) { 1771 if ( filename == MainWindow::defaultFileName() ) {
1772 setLoadedFileVersion( lfv ); 1772 setLoadedFileVersion( lfv );
1773 watchSavedFile(); 1773 watchSavedFile();
1774 } 1774 }
1775 return true; 1775 return true;
1776} 1776}
1777 1777
1778void CalendarView::closeCalendar() 1778void CalendarView::closeCalendar()
1779{ 1779{
1780 1780
1781 // child windows no longer valid 1781 // child windows no longer valid
1782 emit closingDown(); 1782 emit closingDown();
1783 1783
1784 mCalendar->close(); 1784 mCalendar->close();
1785 setModified(false); 1785 setModified(false);
1786 updateView(); 1786 updateView();
1787} 1787}
1788 1788
1789void CalendarView::archiveCalendar() 1789void CalendarView::archiveCalendar()
1790{ 1790{
1791 mDialogManager->showArchiveDialog(); 1791 mDialogManager->showArchiveDialog();
1792} 1792}
1793 1793
1794 1794
1795void CalendarView::readSettings() 1795void CalendarView::readSettings()
1796{ 1796{
1797 1797
1798 1798
1799 // mViewManager->showAgendaView(); 1799 // mViewManager->showAgendaView();
1800 QString str; 1800 QString str;
1801 //qDebug("CalendarView::readSettings() "); 1801 //qDebug("CalendarView::readSettings() ");
1802 // read settings from the KConfig, supplying reasonable 1802 // read settings from the KConfig, supplying reasonable
1803 // defaults where none are to be found 1803 // defaults where none are to be found
1804 KConfig *config = KOGlobals::config(); 1804 KConfig *config = KOGlobals::config();
1805#ifndef KORG_NOSPLITTER 1805#ifndef KORG_NOSPLITTER
1806 config->setGroup("KOrganizer Geometry"); 1806 config->setGroup("KOrganizer Geometry");
1807 1807
1808 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1808 QValueList<int> sizes = config->readIntListEntry("Separator1");
1809 if (sizes.count() != 2) { 1809 if (sizes.count() != 2) {
1810 sizes << mDateNavigator->minimumSizeHint().width(); 1810 sizes << mDateNavigator->minimumSizeHint().width();
1811 sizes << 300; 1811 sizes << 300;
1812 } 1812 }
1813 mPanner->setSizes(sizes); 1813 mPanner->setSizes(sizes);
1814 1814
1815 sizes = config->readIntListEntry("Separator2"); 1815 sizes = config->readIntListEntry("Separator2");
1816 if ( ( mResourceView && sizes.count() == 4 ) || 1816 if ( ( mResourceView && sizes.count() == 4 ) ||
1817 ( !mResourceView && sizes.count() == 3 ) ) { 1817 ( !mResourceView && sizes.count() == 3 ) ) {
1818 mLeftSplitter->setSizes(sizes); 1818 mLeftSplitter->setSizes(sizes);
1819 } 1819 }
1820#endif 1820#endif
1821 globalFlagBlockAgenda = 1; 1821 globalFlagBlockAgenda = 1;
1822 mViewManager->showAgendaView(); 1822 mViewManager->showAgendaView();
1823 //mViewManager->readSettings( config ); 1823 //mViewManager->readSettings( config );
1824 mTodoList->restoreLayout(config,QString("Todo Layout")); 1824 mTodoList->restoreLayout(config,QString("Todo Layout"));
1825 readFilterSettings(config); 1825 readFilterSettings(config);
1826
1827#ifdef DESKTOP_VERSION
1828 config->setGroup("WidgetLayout");
1829 QStringList list;
1830 list = config->readListEntry("MainLayout");
1831 int x,y,w,h;
1832 if ( ! list.isEmpty() ) {
1833 x = list[0].toInt();
1834 y = list[1].toInt();
1835 w = list[2].toInt();
1836 h = list[3].toInt();
1837 topLevelWidget()->setGeometry(x,y,w,h);
1838
1839 } else {
1840 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1841 }
1842 list = config->readListEntry("EditEventLayout");
1843 if ( ! list.isEmpty() ) {
1844 x = list[0].toInt();
1845 y = list[1].toInt();
1846 w = list[2].toInt();
1847 h = list[3].toInt();
1848 mEventEditor->setGeometry(x,y,w,h);
1849
1850 }
1851 list = config->readListEntry("EditTodoLayout");
1852 if ( ! list.isEmpty() ) {
1853 x = list[0].toInt();
1854 y = list[1].toInt();
1855 w = list[2].toInt();
1856 h = list[3].toInt();
1857 mTodoEditor->setGeometry(x,y,w,h);
1858
1859 }
1860 list = config->readListEntry("ViewerLayout");
1861 if ( ! list.isEmpty() ) {
1862 x = list[0].toInt();
1863 y = list[1].toInt();
1864 w = list[2].toInt();
1865 h = list[3].toInt();
1866 getEventViewerDialog()->setGeometry(x,y,w,h);
1867 }
1868#endif
1826 config->setGroup( "Views" ); 1869 config->setGroup( "Views" );
1827 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1870 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1828 1871
1829 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 1872 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
1830 1873
1831 int resetval = 0; 1874 int resetval = 0;
1832 int maxVal = 0; 1875 int maxVal = 0;
1833 if (sizes.count() != 3) { 1876 if (sizes.count() != 3) {
1834 if ( KOPrefs::instance()->mVerticalScreen ) { 1877 if ( KOPrefs::instance()->mVerticalScreen ) {
1835 resetval = mDateNavigator->sizeHint().width()+2; 1878 resetval = mDateNavigator->sizeHint().width()+2;
1836 } else { 1879 } else {
1837 resetval = mDateNavigator->sizeHint().height()+2; 1880 resetval = mDateNavigator->sizeHint().height()+2;
1838 } 1881 }
1839 } 1882 }
1840 if ( !resetval ){// i.e. sizes.count() == 3 1883 if ( !resetval ){// i.e. sizes.count() == 3
1841 if ( KOPrefs::instance()->mVerticalScreen ) { 1884 if ( KOPrefs::instance()->mVerticalScreen ) {
1842 if ( sizes[0] < mDateNavigator->sizeHint().width()+1 ) 1885 if ( sizes[0] < mDateNavigator->sizeHint().width()+1 )
1843 resetval = mDateNavigator->sizeHint().width()+2; 1886 resetval = mDateNavigator->sizeHint().width()+2;
1844 } else { 1887 } else {
1845 if ( sizes[0] < mDateNavigator->sizeHint().height()+1 ) 1888 if ( sizes[0] < mDateNavigator->sizeHint().height()+1 )
1846 resetval = mDateNavigator->sizeHint().height()+2; 1889 resetval = mDateNavigator->sizeHint().height()+2;
1847 } 1890 }
1848 } 1891 }
1849 if ( resetval ) { 1892 if ( resetval ) {
1850 sizes.clear(); 1893 sizes.clear();
1851 if ( KOPrefs::instance()->mVerticalScreen ) { 1894 if ( KOPrefs::instance()->mVerticalScreen ) {
1852 maxVal = QApplication::desktop()->width() -10; 1895 maxVal = QApplication::desktop()->width() -10;
1853 } else { 1896 } else {
1854 maxVal = QApplication::desktop()->height()-10; 1897 maxVal = QApplication::desktop()->height()-10;
1855 } 1898 }
1856 sizes << resetval; 1899 sizes << resetval;
1857 if ( maxVal < resetval + resetval) 1900 if ( maxVal < resetval + resetval)
1858 resetval = maxVal - resetval; 1901 resetval = maxVal - resetval;
1859 sizes << resetval; 1902 sizes << resetval;
1860 sizes << 100; 1903 sizes << 100;
1861 } 1904 }
1862 mLeftFrame->setSizes(sizes); 1905 mLeftFrame->setSizes(sizes);
1863 sizes = config->readIntListEntry("Main Splitter Frame"); 1906 sizes = config->readIntListEntry("Main Splitter Frame");
1864 if (sizes.count() != 2) { 1907 if (sizes.count() != 2) {
1865 if ( !KOPrefs::instance()->mVerticalScreen ) { 1908 if ( !KOPrefs::instance()->mVerticalScreen ) {
1866 resetval = mDateNavigator->sizeHint().width()+2; 1909 resetval = mDateNavigator->sizeHint().width()+2;
1867 } else { 1910 } else {
1868 resetval = mDateNavigator->sizeHint().height()+2; 1911 resetval = mDateNavigator->sizeHint().height()+2;
1869 } 1912 }
1870 } 1913 }
1871 if ( !resetval ){// i.e. sizes.count() == 3 1914 if ( !resetval ){// i.e. sizes.count() == 3
1872 if ( !KOPrefs::instance()->mVerticalScreen ) { 1915 if ( !KOPrefs::instance()->mVerticalScreen ) {
1873 if ( sizes[0] < mDateNavigator->sizeHint().width()+1 ) 1916 if ( sizes[0] < mDateNavigator->sizeHint().width()+1 )
1874 resetval = mDateNavigator->sizeHint().width()+2; 1917 resetval = mDateNavigator->sizeHint().width()+2;
1875 } else { 1918 } else {
1876 if ( sizes[0] < mDateNavigator->sizeHint().height()+1 ) 1919 if ( sizes[0] < mDateNavigator->sizeHint().height()+1 )
1877 resetval = mDateNavigator->sizeHint().height()+2; 1920 resetval = mDateNavigator->sizeHint().height()+2;
1878 } 1921 }
1879 } 1922 }
1880 if ( resetval ) { 1923 if ( resetval ) {
1881 sizes.clear(); 1924 sizes.clear();
1882 if ( !KOPrefs::instance()->mVerticalScreen ) { 1925 if ( !KOPrefs::instance()->mVerticalScreen ) {
1883 maxVal = QApplication::desktop()->width() -10; 1926 maxVal = QApplication::desktop()->width() -10;
1884 } else { 1927 } else {
1885 maxVal = QApplication::desktop()->height()-10; 1928 maxVal = QApplication::desktop()->height()-10;
1886 } 1929 }
1887 sizes << resetval; 1930 sizes << resetval;
1888 if ( maxVal < resetval + resetval) 1931 if ( maxVal < resetval + resetval)
1889 resetval = maxVal - resetval; 1932 resetval = maxVal - resetval;
1890 sizes << resetval; 1933 sizes << resetval;
1891 } 1934 }
1892 mMainFrame->setSizes(sizes); 1935 mMainFrame->setSizes(sizes);
1893 1936
1894 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1937 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1895 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1938 else if ( dateCount == 7 ) mNavigator->selectWeek();
1896 else mNavigator->selectDates( dateCount ); 1939 else mNavigator->selectDates( dateCount );
1897 // mViewManager->readSettings( config ); 1940 // mViewManager->readSettings( config );
1898 updateConfig(); 1941 updateConfig();
1899 globalFlagBlockAgenda = 2; 1942 globalFlagBlockAgenda = 2;
1900 mViewManager->readSettings( config ); 1943 mViewManager->readSettings( config );
1901#ifdef DESKTOP_VERSION
1902 config->setGroup("WidgetLayout");
1903 QStringList list;
1904 list = config->readListEntry("MainLayout");
1905 int x,y,w,h;
1906 if ( ! list.isEmpty() ) {
1907 x = list[0].toInt();
1908 y = list[1].toInt();
1909 w = list[2].toInt();
1910 h = list[3].toInt();
1911 topLevelWidget()->setGeometry(x,y,w,h);
1912
1913 } else {
1914 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1915 }
1916 list = config->readListEntry("EditEventLayout");
1917 if ( ! list.isEmpty() ) {
1918 x = list[0].toInt();
1919 y = list[1].toInt();
1920 w = list[2].toInt();
1921 h = list[3].toInt();
1922 mEventEditor->setGeometry(x,y,w,h);
1923
1924 }
1925 list = config->readListEntry("EditTodoLayout");
1926 if ( ! list.isEmpty() ) {
1927 x = list[0].toInt();
1928 y = list[1].toInt();
1929 w = list[2].toInt();
1930 h = list[3].toInt();
1931 mTodoEditor->setGeometry(x,y,w,h);
1932
1933 }
1934 list = config->readListEntry("ViewerLayout");
1935 if ( ! list.isEmpty() ) {
1936 x = list[0].toInt();
1937 y = list[1].toInt();
1938 w = list[2].toInt();
1939 h = list[3].toInt();
1940 getEventViewerDialog()->setGeometry(x,y,w,h);
1941 }
1942#endif
1943
1944} 1944}
1945 1945
1946 1946
1947void CalendarView::writeSettings() 1947void CalendarView::writeSettings()
1948{ 1948{
1949 // kdDebug() << "CalendarView::writeSettings" << endl; 1949 // kdDebug() << "CalendarView::writeSettings" << endl;
1950 1950
1951 KConfig *config = KOGlobals::config(); 1951 KConfig *config = KOGlobals::config();
1952 1952
1953 mViewManager->writeSettings( config ); 1953 mViewManager->writeSettings( config );
1954 mTodoList->saveLayout(config,QString("Todo Layout")); 1954 mTodoList->saveLayout(config,QString("Todo Layout"));
1955 mDialogManager->writeSettings( config ); 1955 mDialogManager->writeSettings( config );
1956 //KOPrefs::instance()->usrWriteConfig(); 1956 //KOPrefs::instance()->usrWriteConfig();
1957 KOPrefs::instance()->writeConfig(); 1957 KOPrefs::instance()->writeConfig();
1958 1958
1959 writeFilterSettings(config); 1959 writeFilterSettings(config);
1960 1960
1961 config->setGroup( "Views" ); 1961 config->setGroup( "Views" );
1962 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1962 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1963 1963
1964 QValueList<int> listINT = mLeftFrame->sizes(); 1964 QValueList<int> listINT = mLeftFrame->sizes();
1965 config->writeEntry("Left Splitter Frame",listINT); 1965 config->writeEntry("Left Splitter Frame",listINT);
1966 QValueList<int> listINT2 = mMainFrame->sizes(); 1966 QValueList<int> listINT2 = mMainFrame->sizes();
1967 config->writeEntry("Main Splitter Frame",listINT2); 1967 config->writeEntry("Main Splitter Frame",listINT2);
1968#ifdef DESKTOP_VERSION 1968#ifdef DESKTOP_VERSION
1969 config->setGroup("WidgetLayout"); 1969 config->setGroup("WidgetLayout");
1970 QStringList list ;//= config->readListEntry("MainLayout"); 1970 QStringList list ;//= config->readListEntry("MainLayout");
1971 int x,y,w,h; 1971 int x,y,w,h;
1972 QWidget* wid; 1972 QWidget* wid;
1973 wid = topLevelWidget(); 1973 wid = topLevelWidget();
1974 x = wid->geometry().x(); 1974 x = wid->geometry().x();
1975 y = wid->geometry().y(); 1975 y = wid->geometry().y();
1976 w = wid->width(); 1976 w = wid->width();
1977 h = wid->height(); 1977 h = wid->height();
1978 list.clear(); 1978 list.clear();
1979 list << QString::number( x ); 1979 list << QString::number( x );
1980 list << QString::number( y ); 1980 list << QString::number( y );
1981 list << QString::number( w ); 1981 list << QString::number( w );
1982 list << QString::number( h ); 1982 list << QString::number( h );
1983 config->writeEntry("MainLayout",list ); 1983 config->writeEntry("MainLayout",list );
1984 1984
1985 wid = mEventEditor; 1985 wid = mEventEditor;
1986 x = wid->geometry().x(); 1986 x = wid->geometry().x();
1987 y = wid->geometry().y(); 1987 y = wid->geometry().y();
1988 w = wid->width(); 1988 w = wid->width();
1989 h = wid->height(); 1989 h = wid->height();
1990 list.clear(); 1990 list.clear();
1991 list << QString::number( x ); 1991 list << QString::number( x );
1992 list << QString::number( y ); 1992 list << QString::number( y );
1993 list << QString::number( w ); 1993 list << QString::number( w );
1994 list << QString::number( h ); 1994 list << QString::number( h );
1995 config->writeEntry("EditEventLayout",list ); 1995 config->writeEntry("EditEventLayout",list );
1996 1996
1997 wid = mTodoEditor; 1997 wid = mTodoEditor;
1998 x = wid->geometry().x(); 1998 x = wid->geometry().x();
1999 y = wid->geometry().y(); 1999 y = wid->geometry().y();
2000 w = wid->width(); 2000 w = wid->width();
2001 h = wid->height(); 2001 h = wid->height();
2002 list.clear(); 2002 list.clear();
2003 list << QString::number( x ); 2003 list << QString::number( x );
2004 list << QString::number( y ); 2004 list << QString::number( y );
2005 list << QString::number( w ); 2005 list << QString::number( w );
2006 list << QString::number( h ); 2006 list << QString::number( h );
2007 config->writeEntry("EditTodoLayout",list ); 2007 config->writeEntry("EditTodoLayout",list );
2008 wid = getEventViewerDialog(); 2008 wid = getEventViewerDialog();
2009 x = wid->geometry().x(); 2009 x = wid->geometry().x();
2010 y = wid->geometry().y(); 2010 y = wid->geometry().y();
2011 w = wid->width(); 2011 w = wid->width();
2012 h = wid->height(); 2012 h = wid->height();
2013 list.clear(); 2013 list.clear();
2014 list << QString::number( x ); 2014 list << QString::number( x );
2015 list << QString::number( y ); 2015 list << QString::number( y );
2016 list << QString::number( w ); 2016 list << QString::number( w );
2017 list << QString::number( h ); 2017 list << QString::number( h );
2018 config->writeEntry("ViewerLayout",list ); 2018 config->writeEntry("ViewerLayout",list );
2019 wid = mDialogManager->getSearchDialog(); 2019 wid = mDialogManager->getSearchDialog();
2020 if ( wid ) { 2020 if ( wid ) {
2021 x = wid->geometry().x(); 2021 x = wid->geometry().x();
2022 y = wid->geometry().y(); 2022 y = wid->geometry().y();
2023 w = wid->width(); 2023 w = wid->width();
2024 h = wid->height(); 2024 h = wid->height();
2025 list.clear(); 2025 list.clear();
2026 list << QString::number( x ); 2026 list << QString::number( x );
2027 list << QString::number( y ); 2027 list << QString::number( y );
2028 list << QString::number( w ); 2028 list << QString::number( w );
2029 list << QString::number( h ); 2029 list << QString::number( h );
2030 config->writeEntry("SearchLayout",list ); 2030 config->writeEntry("SearchLayout",list );
2031 } 2031 }
2032#endif 2032#endif
2033 2033
2034 2034
2035 config->sync(); 2035 config->sync();
2036} 2036}
2037 2037
2038void CalendarView::readFilterSettings(KConfig *config) 2038void CalendarView::readFilterSettings(KConfig *config)
2039{ 2039{
2040 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2040 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2041 2041
2042 mFilters.clear(); 2042 mFilters.clear();
2043 2043
2044 config->setGroup("General"); 2044 config->setGroup("General");
2045 QStringList filterList = config->readListEntry("CalendarFilters"); 2045 QStringList filterList = config->readListEntry("CalendarFilters");
2046 2046
2047 QStringList::ConstIterator it = filterList.begin(); 2047 QStringList::ConstIterator it = filterList.begin();
2048 QStringList::ConstIterator end = filterList.end(); 2048 QStringList::ConstIterator end = filterList.end();
2049 while(it != end) { 2049 while(it != end) {
2050 // kdDebug() << " filter: " << (*it) << endl; 2050 // kdDebug() << " filter: " << (*it) << endl;
2051 2051
2052 CalFilter *filter; 2052 CalFilter *filter;
2053 filter = new CalFilter(*it); 2053 filter = new CalFilter(*it);
2054 config->setGroup("Filter_" + (*it)); 2054 config->setGroup("Filter_" + (*it));
2055 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2055 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2056 filter->setCriteria(config->readNumEntry("Criteria",0)); 2056 filter->setCriteria(config->readNumEntry("Criteria",0));
2057 filter->setCategoryList(config->readListEntry("CategoryList")); 2057 filter->setCategoryList(config->readListEntry("CategoryList"));
2058 mFilters.append(filter); 2058 mFilters.append(filter);
2059 2059
2060 ++it; 2060 ++it;
2061 } 2061 }
2062 2062
2063 if (mFilters.count() == 0) { 2063 if (mFilters.count() == 0) {
2064 CalFilter *filter = new CalFilter(i18n("Default")); 2064 CalFilter *filter = new CalFilter(i18n("Default"));
2065 mFilters.append(filter); 2065 mFilters.append(filter);
2066 } 2066 }
2067 mFilterView->updateFilters(); 2067 mFilterView->updateFilters();
2068 config->setGroup("FilterView"); 2068 config->setGroup("FilterView");
2069 2069
2070 mFilterView->blockSignals(true); 2070 mFilterView->blockSignals(true);
2071 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2071 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2072 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2072 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2073 mFilterView->blockSignals(false); 2073 mFilterView->blockSignals(false);
2074 // We do it manually to avoid it being done twice by the above calls 2074 // We do it manually to avoid it being done twice by the above calls
2075 updateFilter(); 2075 updateFilter();
2076} 2076}
2077 2077
2078void CalendarView::writeFilterSettings(KConfig *config) 2078void CalendarView::writeFilterSettings(KConfig *config)
2079{ 2079{
2080 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2080 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2081 2081
2082 QStringList filterList; 2082 QStringList filterList;
2083 2083
2084 CalFilter *filter = mFilters.first(); 2084 CalFilter *filter = mFilters.first();
2085 while(filter) { 2085 while(filter) {
2086 // kdDebug() << " fn: " << filter->name() << endl; 2086 // kdDebug() << " fn: " << filter->name() << endl;
2087 filterList << filter->name(); 2087 filterList << filter->name();
2088 config->setGroup("Filter_" + filter->name()); 2088 config->setGroup("Filter_" + filter->name());
2089 config->writeEntry("Criteria",filter->criteria()); 2089 config->writeEntry("Criteria",filter->criteria());
2090 config->writeEntry("CategoryList",filter->categoryList()); 2090 config->writeEntry("CategoryList",filter->categoryList());
2091 filter = mFilters.next(); 2091 filter = mFilters.next();
2092 } 2092 }
2093 config->setGroup("General"); 2093 config->setGroup("General");
2094 config->writeEntry("CalendarFilters",filterList); 2094 config->writeEntry("CalendarFilters",filterList);
2095 2095
2096 config->setGroup("FilterView"); 2096 config->setGroup("FilterView");
2097 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2097 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2098 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2098 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2099} 2099}
2100 2100
2101 2101
2102void CalendarView::goToday() 2102void CalendarView::goToday()
2103{ 2103{
2104 if ( mViewManager->currentView()->isMonthView() ) 2104 if ( mViewManager->currentView()->isMonthView() )
2105 mNavigator->selectTodayMonth(); 2105 mNavigator->selectTodayMonth();
2106 else 2106 else
2107 mNavigator->selectToday(); 2107 mNavigator->selectToday();
2108} 2108}
2109 2109
2110void CalendarView::goNext() 2110void CalendarView::goNext()
2111{ 2111{
2112 mNavigator->selectNext(); 2112 mNavigator->selectNext();
2113} 2113}
2114 2114
2115void CalendarView::goPrevious() 2115void CalendarView::goPrevious()
2116{ 2116{
2117 mNavigator->selectPrevious(); 2117 mNavigator->selectPrevious();
2118} 2118}
2119void CalendarView::goNextMonth() 2119void CalendarView::goNextMonth()
2120{ 2120{
2121 mNavigator->selectNextMonth(); 2121 mNavigator->selectNextMonth();
2122} 2122}
2123 2123
2124void CalendarView::goPreviousMonth() 2124void CalendarView::goPreviousMonth()
2125{ 2125{
2126 mNavigator->selectPreviousMonth(); 2126 mNavigator->selectPreviousMonth();
2127} 2127}
2128void CalendarView::writeLocale() 2128void CalendarView::writeLocale()
2129{ 2129{
2130 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2130 //KPimGlobalPrefs::instance()->setGlobalConfig();
2131#if 0 2131#if 0
2132 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2132 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2133 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2133 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2134 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2134 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2135 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2135 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2136 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2136 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2137 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2137 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2138 dummy = KOPrefs::instance()->mUserDateFormatShort; 2138 dummy = KOPrefs::instance()->mUserDateFormatShort;
2139 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2139 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2140 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2140 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2141 KOPrefs::instance()->mDaylightsavingStart, 2141 KOPrefs::instance()->mDaylightsavingStart,
2142 KOPrefs::instance()->mDaylightsavingEnd ); 2142 KOPrefs::instance()->mDaylightsavingEnd );
2143 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId ); 2143 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId );
2144#endif 2144#endif
2145} 2145}
2146void CalendarView::updateConfig() 2146void CalendarView::updateConfig()
2147{ 2147{
2148 writeLocale(); 2148 writeLocale();
2149 if ( KOPrefs::instance()->mUseAppColors ) 2149 if ( KOPrefs::instance()->mUseAppColors )
2150 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2150 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2151 emit configChanged(); 2151 emit configChanged();
2152 mTodoList->updateConfig(); 2152 mTodoList->updateConfig();
2153 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2153 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2154 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2154 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2155 // To make the "fill window" configurations work 2155 // To make the "fill window" configurations work
2156 //mViewManager->raiseCurrentView(); 2156 //mViewManager->raiseCurrentView();
2157} 2157}
2158 2158
2159 2159
2160void CalendarView::eventChanged(Event *event) 2160void CalendarView::eventChanged(Event *event)
2161{ 2161{
2162 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2162 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2163 //updateUnmanagedViews(); 2163 //updateUnmanagedViews();
2164} 2164}
2165 2165
2166void CalendarView::eventAdded(Event *event) 2166void CalendarView::eventAdded(Event *event)
2167{ 2167{
2168 changeEventDisplay(event,KOGlobals::EVENTADDED); 2168 changeEventDisplay(event,KOGlobals::EVENTADDED);
2169} 2169}
2170 2170
2171void CalendarView::eventToBeDeleted(Event *) 2171void CalendarView::eventToBeDeleted(Event *)
2172{ 2172{
2173 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2173 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2174} 2174}
2175 2175
2176void CalendarView::eventDeleted() 2176void CalendarView::eventDeleted()
2177{ 2177{
2178 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2178 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2179} 2179}
2180void CalendarView::changeTodoDisplay(Todo *which, int action) 2180void CalendarView::changeTodoDisplay(Todo *which, int action)
2181{ 2181{
2182 changeIncidenceDisplay((Incidence *)which, action); 2182 changeIncidenceDisplay((Incidence *)which, action);
2183 mDateNavigator->updateView(); //LR 2183 mDateNavigator->updateView(); //LR
2184 //mDialogManager->updateSearchDialog(); 2184 //mDialogManager->updateSearchDialog();
2185 2185
2186 if (which) { 2186 if (which) {
2187 mViewManager->updateWNview(); 2187 mViewManager->updateWNview();
2188 //mTodoList->updateView(); 2188 //mTodoList->updateView();
2189 } 2189 }
2190 2190
2191} 2191}
2192 2192
2193void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2193void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2194{ 2194{
2195 updateUnmanagedViews(); 2195 updateUnmanagedViews();
2196 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2196 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2197 if ( action == KOGlobals::EVENTDELETED ) { //delete 2197 if ( action == KOGlobals::EVENTDELETED ) { //delete
2198 mCalendar->checkAlarmForIncidence( 0, true ); 2198 mCalendar->checkAlarmForIncidence( 0, true );
2199 if ( mEventViewerDialog ) 2199 if ( mEventViewerDialog )
2200 mEventViewerDialog->hide(); 2200 mEventViewerDialog->hide();
2201 } 2201 }
2202 else 2202 else
2203 mCalendar->checkAlarmForIncidence( which , false ); 2203 mCalendar->checkAlarmForIncidence( which , false );
2204} 2204}
2205 2205
2206// most of the changeEventDisplays() right now just call the view's 2206// most of the changeEventDisplays() right now just call the view's
2207// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2207// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2208void CalendarView::changeEventDisplay(Event *which, int action) 2208void CalendarView::changeEventDisplay(Event *which, int action)
2209{ 2209{
2210 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2210 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2211 changeIncidenceDisplay((Incidence *)which, action); 2211 changeIncidenceDisplay((Incidence *)which, action);
2212 mDateNavigator->updateView(); 2212 mDateNavigator->updateView();
2213 //mDialogManager->updateSearchDialog(); 2213 //mDialogManager->updateSearchDialog();
2214 2214
2215 if (which) { 2215 if (which) {
2216 // If there is an event view visible update the display 2216 // If there is an event view visible update the display
2217 mViewManager->currentView()->changeEventDisplay(which,action); 2217 mViewManager->currentView()->changeEventDisplay(which,action);
2218 // TODO: check, if update needed 2218 // TODO: check, if update needed
2219 // if (which->getTodoStatus()) { 2219 // if (which->getTodoStatus()) {
2220 mTodoList->updateView(); 2220 mTodoList->updateView();
2221 // } 2221 // }
2222 } else { 2222 } else {
2223 mViewManager->currentView()->updateView(); 2223 mViewManager->currentView()->updateView();
2224 } 2224 }
2225} 2225}
2226 2226
2227 2227
2228void CalendarView::updateTodoViews() 2228void CalendarView::updateTodoViews()
2229{ 2229{
2230 mTodoList->updateView(); 2230 mTodoList->updateView();
2231 mViewManager->currentView()->updateView(); 2231 mViewManager->currentView()->updateView();
2232 2232
2233} 2233}
2234 2234
2235 2235
2236void CalendarView::updateView(const QDate &start, const QDate &end) 2236void CalendarView::updateView(const QDate &start, const QDate &end)
2237{ 2237{
2238 mTodoList->updateView(); 2238 mTodoList->updateView();
2239 mViewManager->updateView(start, end); 2239 mViewManager->updateView(start, end);
2240 //mDateNavigator->updateView(); 2240 //mDateNavigator->updateView();
2241} 2241}
2242 2242
2243void CalendarView::updateView() 2243void CalendarView::updateView()
2244{ 2244{
2245 DateList tmpList = mNavigator->selectedDates(); 2245 DateList tmpList = mNavigator->selectedDates();
2246 2246
2247 if ( KOPrefs::instance()->mHideNonStartedTodos ) 2247 if ( KOPrefs::instance()->mHideNonStartedTodos )
2248 mTodoList->updateView(); 2248 mTodoList->updateView();
2249 // We assume that the navigator only selects consecutive days. 2249 // We assume that the navigator only selects consecutive days.
2250 updateView( tmpList.first(), tmpList.last() ); 2250 updateView( tmpList.first(), tmpList.last() );
2251} 2251}
2252 2252
2253void CalendarView::updateUnmanagedViews() 2253void CalendarView::updateUnmanagedViews()
2254{ 2254{
2255 mDateNavigator->updateDayMatrix(); 2255 mDateNavigator->updateDayMatrix();
2256} 2256}
2257 2257
2258int CalendarView::msgItemDelete(const QString name) 2258int CalendarView::msgItemDelete(const QString name)
2259{ 2259{
2260 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 2260 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
2261 i18n("This item will be\npermanently deleted."), 2261 i18n("This item will be\npermanently deleted."),
2262 i18n("KO/Pi Confirmation"),i18n("Delete")); 2262 i18n("KO/Pi Confirmation"),i18n("Delete"));
2263} 2263}
2264 2264
2265 2265
2266void CalendarView::edit_cut() 2266void CalendarView::edit_cut()
2267{ 2267{
2268 Event *anEvent=0; 2268 Event *anEvent=0;
2269 2269
2270 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2270 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2271 2271
2272 if (mViewManager->currentView()->isEventView()) { 2272 if (mViewManager->currentView()->isEventView()) {
2273 if ( incidence && incidence->type() == "Event" ) { 2273 if ( incidence && incidence->type() == "Event" ) {
2274 anEvent = static_cast<Event *>(incidence); 2274 anEvent = static_cast<Event *>(incidence);
2275 } 2275 }
2276 } 2276 }
2277 2277
2278 if (!anEvent) { 2278 if (!anEvent) {
2279 KNotifyClient::beep(); 2279 KNotifyClient::beep();
2280 return; 2280 return;
2281 } 2281 }
2282 DndFactory factory( mCalendar ); 2282 DndFactory factory( mCalendar );
2283 factory.cutIncidence(anEvent); 2283 factory.cutIncidence(anEvent);
2284 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2284 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2285} 2285}
2286 2286
2287void CalendarView::edit_copy() 2287void CalendarView::edit_copy()
2288{ 2288{
2289 Event *anEvent=0; 2289 Event *anEvent=0;
2290 2290
2291 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2291 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2292 2292
2293 if (mViewManager->currentView()->isEventView()) { 2293 if (mViewManager->currentView()->isEventView()) {
2294 if ( incidence && incidence->type() == "Event" ) { 2294 if ( incidence && incidence->type() == "Event" ) {
2295 anEvent = static_cast<Event *>(incidence); 2295 anEvent = static_cast<Event *>(incidence);
2296 } 2296 }
2297 } 2297 }
2298 2298
2299 if (!anEvent) { 2299 if (!anEvent) {
2300 KNotifyClient::beep(); 2300 KNotifyClient::beep();
2301 return; 2301 return;
2302 } 2302 }
2303 DndFactory factory( mCalendar ); 2303 DndFactory factory( mCalendar );
2304 factory.copyIncidence(anEvent); 2304 factory.copyIncidence(anEvent);
2305} 2305}
2306 2306
2307void CalendarView::edit_paste() 2307void CalendarView::edit_paste()
2308{ 2308{
2309 QDate date = mNavigator->selectedDates().first(); 2309 QDate date = mNavigator->selectedDates().first();
2310 2310
2311 DndFactory factory( mCalendar ); 2311 DndFactory factory( mCalendar );
2312 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 2312 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
2313 2313
2314 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2314 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2315} 2315}
2316 2316
2317void CalendarView::edit_options() 2317void CalendarView::edit_options()
2318{ 2318{
2319 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 2319 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
2320 emit save(); 2320 emit save();
2321 emit saveStopTimer(); 2321 emit saveStopTimer();
2322 mDialogManager->showOptionsDialog(); 2322 mDialogManager->showOptionsDialog();
2323 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 2323 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
2324 emit saveStopTimer(); 2324 emit saveStopTimer();
2325 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 2325 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
2326 i18n("Timezone settings"),i18n("Reload"))) { 2326 i18n("Timezone settings"),i18n("Reload"))) {
2327 qDebug("KO: TZ reload cancelled "); 2327 qDebug("KO: TZ reload cancelled ");
2328 return; 2328 return;
2329 } 2329 }
2330 qDebug("KO: Timezone change "); 2330 qDebug("KO: Timezone change ");
2331 openCalendar( MainWindow::defaultFileName() ); 2331 openCalendar( MainWindow::defaultFileName() );
2332 setModified(true); 2332 setModified(true);
2333 } 2333 }
2334 else 2334 else
2335 qDebug("KO: No tz change "); 2335 qDebug("KO: No tz change ");
2336 2336
2337} 2337}
2338 2338
2339 2339
2340void CalendarView::slotSelectPickerDate( QDate d) 2340void CalendarView::slotSelectPickerDate( QDate d)
2341{ 2341{
2342 mDateFrame->hide(); 2342 mDateFrame->hide();
2343 if ( mDatePickerMode == 1 ) { 2343 if ( mDatePickerMode == 1 ) {
2344 mNavigator->slotDaySelect( d ); 2344 mNavigator->slotDaySelect( d );
2345 } else if ( mDatePickerMode == 2 ) { 2345 } else if ( mDatePickerMode == 2 ) {
2346 if ( mMoveIncidence->type() == "Todo" ) { 2346 if ( mMoveIncidence->type() == "Todo" ) {
2347 Todo * to = (Todo *) mMoveIncidence; 2347 Todo * to = (Todo *) mMoveIncidence;
2348 QTime tim; 2348 QTime tim;
2349 int len = 0; 2349 int len = 0;
2350 if ( to->hasStartDate() && to->hasDueDate() ) 2350 if ( to->hasStartDate() && to->hasDueDate() )
2351 len = to->dtStart().secsTo( to->dtDue()); 2351 len = to->dtStart().secsTo( to->dtDue());
2352 if ( to->hasDueDate() ) 2352 if ( to->hasDueDate() )
2353 tim = to->dtDue().time(); 2353 tim = to->dtDue().time();
2354 else { 2354 else {
2355 tim = QTime ( 0,0,0 ); 2355 tim = QTime ( 0,0,0 );
2356 to->setFloats( true ); 2356 to->setFloats( true );
2357 to->setHasDueDate( true ); 2357 to->setHasDueDate( true );
2358 } 2358 }
2359 QDateTime dt ( d,tim ); 2359 QDateTime dt ( d,tim );
2360 to->setDtDue( dt ); 2360 to->setDtDue( dt );
2361 2361
2362 if ( to->hasStartDate() ) { 2362 if ( to->hasStartDate() ) {
2363 if ( len>0 ) 2363 if ( len>0 )
2364 to->setDtStart(to->dtDue().addSecs( -len )); 2364 to->setDtStart(to->dtDue().addSecs( -len ));
2365 else 2365 else
2366 if (to->dtStart() > to->dtDue() ) 2366 if (to->dtStart() > to->dtDue() )
2367 to->setDtStart(to->dtDue().addDays( -3 )); 2367 to->setDtStart(to->dtDue().addDays( -3 ));
2368 } 2368 }
2369 2369
2370 todoChanged( to ); 2370 todoChanged( to );
2371 } else { 2371 } else {
2372 if ( mMoveIncidence->doesRecur() ) { 2372 if ( mMoveIncidence->doesRecur() ) {
2373#if 0 2373#if 0
2374 // PENDING implement this 2374 // PENDING implement this
2375 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 2375 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
2376 mCalendar()->addIncidence( newInc ); 2376 mCalendar()->addIncidence( newInc );
2377 if ( mMoveIncidence->type() == "Todo" ) 2377 if ( mMoveIncidence->type() == "Todo" )
2378 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 2378 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
2379 else 2379 else
2380 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 2380 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
2381 mMoveIncidence = newInc; 2381 mMoveIncidence = newInc;
2382 2382
2383#endif 2383#endif
2384 } 2384 }
2385 QTime tim = mMoveIncidence->dtStart().time(); 2385 QTime tim = mMoveIncidence->dtStart().time();
2386 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2386 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2387 QDateTime dt ( d,tim ); 2387 QDateTime dt ( d,tim );
2388 mMoveIncidence->setDtStart( dt ); 2388 mMoveIncidence->setDtStart( dt );
2389 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2389 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2390 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2390 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2391 } 2391 }
2392 2392
2393 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2393 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2394 } 2394 }
2395} 2395}
2396 2396
2397void CalendarView::removeCategories() 2397void CalendarView::removeCategories()
2398{ 2398{
2399 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2399 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2400 QStringList catList = KOPrefs::instance()->mCustomCategories; 2400 QStringList catList = KOPrefs::instance()->mCustomCategories;
2401 QStringList catIncList; 2401 QStringList catIncList;
2402 QStringList newCatList; 2402 QStringList newCatList;
2403 Incidence* inc = incList.first(); 2403 Incidence* inc = incList.first();
2404 int i; 2404 int i;
2405 int count = 0; 2405 int count = 0;
2406 while ( inc ) { 2406 while ( inc ) {
2407 newCatList.clear(); 2407 newCatList.clear();
2408 catIncList = inc->categories() ; 2408 catIncList = inc->categories() ;
2409 for( i = 0; i< catIncList.count(); ++i ) { 2409 for( i = 0; i< catIncList.count(); ++i ) {
2410 if ( catList.contains (catIncList[i])) 2410 if ( catList.contains (catIncList[i]))
2411 newCatList.append( catIncList[i] ); 2411 newCatList.append( catIncList[i] );
2412 } 2412 }
2413 newCatList.sort(); 2413 newCatList.sort();
2414 inc->setCategories( newCatList.join(",") ); 2414 inc->setCategories( newCatList.join(",") );
2415 inc = incList.next(); 2415 inc = incList.next();
2416 } 2416 }
2417} 2417}
2418 2418
2419int CalendarView::addCategories() 2419int CalendarView::addCategories()
2420{ 2420{
2421 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2421 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2422 QStringList catList = KOPrefs::instance()->mCustomCategories; 2422 QStringList catList = KOPrefs::instance()->mCustomCategories;
2423 QStringList catIncList; 2423 QStringList catIncList;
2424 Incidence* inc = incList.first(); 2424 Incidence* inc = incList.first();
2425 int i; 2425 int i;
2426 int count = 0; 2426 int count = 0;
2427 while ( inc ) { 2427 while ( inc ) {
2428 catIncList = inc->categories() ; 2428 catIncList = inc->categories() ;
2429 for( i = 0; i< catIncList.count(); ++i ) { 2429 for( i = 0; i< catIncList.count(); ++i ) {
2430 if ( !catList.contains (catIncList[i])) { 2430 if ( !catList.contains (catIncList[i])) {
2431 catList.append( catIncList[i] ); 2431 catList.append( catIncList[i] );
2432 //qDebug("add cat %s ", catIncList[i].latin1()); 2432 //qDebug("add cat %s ", catIncList[i].latin1());
2433 ++count; 2433 ++count;
2434 } 2434 }
2435 } 2435 }
2436 inc = incList.next(); 2436 inc = incList.next();
2437 } 2437 }
2438 catList.sort(); 2438 catList.sort();
2439 KOPrefs::instance()->mCustomCategories = catList; 2439 KOPrefs::instance()->mCustomCategories = catList;
2440 return count; 2440 return count;
2441} 2441}
2442 2442
2443void CalendarView::manageCategories() 2443void CalendarView::manageCategories()
2444{ 2444{
2445 KOCatPrefs* cp = new KOCatPrefs(); 2445 KOCatPrefs* cp = new KOCatPrefs();
2446 cp->show(); 2446 cp->show();
2447 int w =cp->sizeHint().width() ; 2447 int w =cp->sizeHint().width() ;
2448 int h = cp->sizeHint().height() ; 2448 int h = cp->sizeHint().height() ;
2449 int dw = QApplication::desktop()->width(); 2449 int dw = QApplication::desktop()->width();
2450 int dh = QApplication::desktop()->height(); 2450 int dh = QApplication::desktop()->height();
2451 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2451 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2452 if ( !cp->exec() ) { 2452 if ( !cp->exec() ) {
2453 delete cp; 2453 delete cp;
2454 return; 2454 return;
2455 } 2455 }
2456 int count = 0; 2456 int count = 0;
2457 if ( cp->addCat() ) { 2457 if ( cp->addCat() ) {
2458 count = addCategories(); 2458 count = addCategories();
2459 if ( count ) { 2459 if ( count ) {
2460 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2460 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2461 writeSettings(); 2461 writeSettings();
2462 } else 2462 } else
2463 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 2463 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2464 } else { 2464 } else {
2465 removeCategories(); 2465 removeCategories();
2466 updateView(); 2466 updateView();
2467 } 2467 }
2468 delete cp; 2468 delete cp;
2469} 2469}
2470 2470
2471void CalendarView::beamIncidence(Incidence * Inc) 2471void CalendarView::beamIncidence(Incidence * Inc)
2472{ 2472{
2473 QPtrList<Incidence> delSel ; 2473 QPtrList<Incidence> delSel ;
2474 delSel.append(Inc); 2474 delSel.append(Inc);
2475 beamIncidenceList( delSel ); 2475 beamIncidenceList( delSel );
2476} 2476}
2477void CalendarView::beamCalendar() 2477void CalendarView::beamCalendar()
2478{ 2478{
2479 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2479 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2480 //qDebug("beamCalendar() "); 2480 //qDebug("beamCalendar() ");
2481 beamIncidenceList( delSel ); 2481 beamIncidenceList( delSel );
2482} 2482}
2483void CalendarView::beamFilteredCalendar() 2483void CalendarView::beamFilteredCalendar()
2484{ 2484{
2485 QPtrList<Incidence> delSel = mCalendar->incidences(); 2485 QPtrList<Incidence> delSel = mCalendar->incidences();
2486 //qDebug("beamFilteredCalendar() "); 2486 //qDebug("beamFilteredCalendar() ");
2487 beamIncidenceList( delSel ); 2487 beamIncidenceList( delSel );
2488} 2488}
2489void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2489void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2490{ 2490{
2491 if ( beamDialog->exec () == QDialog::Rejected ) 2491 if ( beamDialog->exec () == QDialog::Rejected )
2492 return; 2492 return;
2493#ifdef DESKTOP_VERSION 2493#ifdef DESKTOP_VERSION
2494 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2494 QString fn = locateLocal( "tmp", "kopibeamfile" );
2495#else 2495#else
2496 QString fn = "/tmp/kopibeamfile"; 2496 QString fn = "/tmp/kopibeamfile";
2497#endif 2497#endif
2498 QString mes; 2498 QString mes;
2499 bool createbup = true; 2499 bool createbup = true;
2500 if ( createbup ) { 2500 if ( createbup ) {
2501 QString description = "\n"; 2501 QString description = "\n";
2502 CalendarLocal* cal = new CalendarLocal(); 2502 CalendarLocal* cal = new CalendarLocal();
2503 if ( beamDialog->beamLocal() ) 2503 if ( beamDialog->beamLocal() )
2504 cal->setLocalTime(); 2504 cal->setLocalTime();
2505 else 2505 else
2506 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2506 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2507 Incidence *incidence = delSel.first(); 2507 Incidence *incidence = delSel.first();
2508 bool addText = false; 2508 bool addText = false;
2509 if ( delSel.count() < 10 ) 2509 if ( delSel.count() < 10 )
2510 addText = true; 2510 addText = true;
2511 else { 2511 else {
2512 description.sprintf(i18n(" %d items?"),delSel.count() ); 2512 description.sprintf(i18n(" %d items?"),delSel.count() );
2513 } 2513 }
2514 while ( incidence ) { 2514 while ( incidence ) {
2515 Incidence *in = incidence->clone(); 2515 Incidence *in = incidence->clone();
2516 if ( ! in->summary().isEmpty() ) { 2516 if ( ! in->summary().isEmpty() ) {
2517 in->setDescription(""); 2517 in->setDescription("");
2518 } else { 2518 } else {
2519 in->setSummary( in->description().left(20)); 2519 in->setSummary( in->description().left(20));
2520 in->setDescription(""); 2520 in->setDescription("");
2521 } 2521 }
2522 if ( addText ) 2522 if ( addText )
2523 description += in->summary() + "\n"; 2523 description += in->summary() + "\n";
2524 cal->addIncidence( in ); 2524 cal->addIncidence( in );
2525 incidence = delSel.next(); 2525 incidence = delSel.next();
2526 } 2526 }
2527 if ( beamDialog->beamVcal() ) { 2527 if ( beamDialog->beamVcal() ) {
2528 fn += ".vcs"; 2528 fn += ".vcs";
2529 FileStorage storage( cal, fn, new VCalFormat ); 2529 FileStorage storage( cal, fn, new VCalFormat );
2530 storage.save(); 2530 storage.save();
2531 } else { 2531 } else {
2532 fn += ".ics"; 2532 fn += ".ics";
2533 FileStorage storage( cal, fn, new ICalFormat( ) ); 2533 FileStorage storage( cal, fn, new ICalFormat( ) );
2534 storage.save(); 2534 storage.save();
2535 } 2535 }
2536 delete cal; 2536 delete cal;
2537 mes = i18n("KO/Pi: Ready for beaming"); 2537 mes = i18n("KO/Pi: Ready for beaming");
2538 topLevelWidget()->setCaption(mes); 2538 topLevelWidget()->setCaption(mes);
2539 KApplication::convert2latin1( fn ); 2539 KApplication::convert2latin1( fn );
2540#ifndef DESKTOP_VERSION 2540#ifndef DESKTOP_VERSION
2541 Ir *ir = new Ir( this ); 2541 Ir *ir = new Ir( this );
2542 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2542 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2543 ir->send( fn, description, "text/x-vCalendar" ); 2543 ir->send( fn, description, "text/x-vCalendar" );
2544#endif 2544#endif
2545 } 2545 }
2546} 2546}
2547void CalendarView::beamDone( Ir *ir ) 2547void CalendarView::beamDone( Ir *ir )
2548{ 2548{
2549#ifndef DESKTOP_VERSION 2549#ifndef DESKTOP_VERSION
2550 delete ir; 2550 delete ir;
2551#endif 2551#endif
2552 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2552 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2553 topLevelWidget()->raise(); 2553 topLevelWidget()->raise();
2554} 2554}
2555 2555
2556void CalendarView::moveIncidence(Incidence * inc ) 2556void CalendarView::moveIncidence(Incidence * inc )
2557{ 2557{
2558 if ( !inc ) return; 2558 if ( !inc ) return;
2559 showDatePickerPopup(); 2559 showDatePickerPopup();
2560 mDatePickerMode = 2; 2560 mDatePickerMode = 2;
2561 mMoveIncidence = inc ; 2561 mMoveIncidence = inc ;
2562 QDate da; 2562 QDate da;
2563 if ( mMoveIncidence->type() == "Todo" ) { 2563 if ( mMoveIncidence->type() == "Todo" ) {
2564 Todo * to = (Todo *) mMoveIncidence; 2564 Todo * to = (Todo *) mMoveIncidence;
2565 if ( to->hasDueDate() ) 2565 if ( to->hasDueDate() )
2566 da = to->dtDue().date(); 2566 da = to->dtDue().date();
2567 else 2567 else
2568 da = QDate::currentDate(); 2568 da = QDate::currentDate();
2569 } else { 2569 } else {
2570 da = mMoveIncidence->dtStart().date(); 2570 da = mMoveIncidence->dtStart().date();
2571 } 2571 }
2572 //PENDING set date for recurring incidence to date of recurrence 2572 //PENDING set date for recurring incidence to date of recurrence
2573 //mMoveIncidenceOldDate; 2573 //mMoveIncidenceOldDate;
2574 mDatePicker->setDate( da ); 2574 mDatePicker->setDate( da );
2575} 2575}
2576void CalendarView::showDatePickerPopup() 2576void CalendarView::showDatePickerPopup()
2577{ 2577{
2578 if ( mDateFrame->isVisible() ) 2578 if ( mDateFrame->isVisible() )
2579 mDateFrame->hide(); 2579 mDateFrame->hide();
2580 else { 2580 else {
2581 int offX = 0, offY = 0; 2581 int offX = 0, offY = 0;
2582#ifdef DESKTOP_VERSION 2582#ifdef DESKTOP_VERSION
2583 int w =mDatePicker->sizeHint().width() ; 2583 int w =mDatePicker->sizeHint().width() ;
2584 int h = mDatePicker->sizeHint().height() ; 2584 int h = mDatePicker->sizeHint().height() ;
2585 int dw = topLevelWidget()->width(); 2585 int dw = topLevelWidget()->width();
2586 int dh = topLevelWidget()->height(); 2586 int dh = topLevelWidget()->height();
2587 offX = topLevelWidget()->x(); 2587 offX = topLevelWidget()->x();
2588 offY = topLevelWidget()->y(); 2588 offY = topLevelWidget()->y();
2589#else 2589#else
2590 int w =mDatePicker->sizeHint().width() ; 2590 int w =mDatePicker->sizeHint().width() ;
2591 int h = mDatePicker->sizeHint().height() ; 2591 int h = mDatePicker->sizeHint().height() ;
2592 int dw = QApplication::desktop()->width(); 2592 int dw = QApplication::desktop()->width();
2593 int dh = QApplication::desktop()->height(); 2593 int dh = QApplication::desktop()->height();
2594#endif 2594#endif
2595 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 2595 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
2596 mDateFrame->show(); 2596 mDateFrame->show();
2597 } 2597 }
2598} 2598}
2599void CalendarView::showDatePicker( ) 2599void CalendarView::showDatePicker( )
2600{ 2600{
2601 showDatePickerPopup(); 2601 showDatePickerPopup();
2602 mDatePickerMode = 1; 2602 mDatePickerMode = 1;
2603 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2603 mDatePicker->setDate( mNavigator->selectedDates().first() );
2604} 2604}
2605 2605
2606void CalendarView::showEventEditor() 2606void CalendarView::showEventEditor()
2607{ 2607{
2608#ifdef DESKTOP_VERSION 2608#ifdef DESKTOP_VERSION
2609 int x,y,w,h; 2609 int x,y,w,h;
2610 x = mEventEditor->geometry().x(); 2610 x = mEventEditor->geometry().x();
2611 y = mEventEditor->geometry().y(); 2611 y = mEventEditor->geometry().y();
2612 w = mEventEditor->width(); 2612 w = mEventEditor->width();
2613 h = mEventEditor->height(); 2613 h = mEventEditor->height();
2614 mEventEditor->show(); 2614 mEventEditor->show();
2615 mEventEditor->setGeometry(x,y,w,h); 2615 mEventEditor->setGeometry(x,y,w,h);
2616#else 2616#else
2617 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2617 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2618 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2618 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2619 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2619 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2620 qApp->processEvents(); 2620 qApp->processEvents();
2621 delete mEventEditor; 2621 delete mEventEditor;
2622 mEventEditor = mDialogManager->getEventEditor(); 2622 mEventEditor = mDialogManager->getEventEditor();
2623 topLevelWidget()->setCaption( i18n("") ); 2623 topLevelWidget()->setCaption( i18n("") );
2624 } 2624 }
2625 mEventEditor->showMaximized(); 2625 mEventEditor->showMaximized();
2626#endif 2626#endif
2627} 2627}
2628void CalendarView::showTodoEditor() 2628void CalendarView::showTodoEditor()
2629{ 2629{
2630#ifdef DESKTOP_VERSION 2630#ifdef DESKTOP_VERSION
2631 int x,y,w,h; 2631 int x,y,w,h;
2632 x = mTodoEditor->geometry().x(); 2632 x = mTodoEditor->geometry().x();
2633 y = mTodoEditor->geometry().y(); 2633 y = mTodoEditor->geometry().y();
2634 w = mTodoEditor->width(); 2634 w = mTodoEditor->width();
2635 h = mTodoEditor->height(); 2635 h = mTodoEditor->height();
2636 mTodoEditor->show(); 2636 mTodoEditor->show();
2637 mTodoEditor->setGeometry(x,y,w,h); 2637 mTodoEditor->setGeometry(x,y,w,h);
2638#else 2638#else
2639 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2639 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2640 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2640 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2641 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2641 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2642 qApp->processEvents(); 2642 qApp->processEvents();
2643 delete mTodoEditor; 2643 delete mTodoEditor;
2644 mTodoEditor = mDialogManager->getTodoEditor(); 2644 mTodoEditor = mDialogManager->getTodoEditor();
2645 topLevelWidget()->setCaption( i18n("") ); 2645 topLevelWidget()->setCaption( i18n("") );
2646 } 2646 }
2647 mTodoEditor->showMaximized(); 2647 mTodoEditor->showMaximized();
2648#endif 2648#endif
2649} 2649}
2650 2650
2651void CalendarView::cloneIncidence() 2651void CalendarView::cloneIncidence()
2652{ 2652{
2653 Incidence *incidence = currentSelection(); 2653 Incidence *incidence = currentSelection();
2654 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2654 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2655 if ( incidence ) { 2655 if ( incidence ) {
2656 cloneIncidence(incidence); 2656 cloneIncidence(incidence);
2657 } 2657 }
2658} 2658}
2659void CalendarView::moveIncidence() 2659void CalendarView::moveIncidence()
2660{ 2660{
2661 Incidence *incidence = currentSelection(); 2661 Incidence *incidence = currentSelection();
2662 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2662 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2663 if ( incidence ) { 2663 if ( incidence ) {
2664 moveIncidence(incidence); 2664 moveIncidence(incidence);
2665 } 2665 }
2666} 2666}
2667void CalendarView::beamIncidence() 2667void CalendarView::beamIncidence()
2668{ 2668{
2669 Incidence *incidence = currentSelection(); 2669 Incidence *incidence = currentSelection();
2670 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2670 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2671 if ( incidence ) { 2671 if ( incidence ) {
2672 beamIncidence(incidence); 2672 beamIncidence(incidence);
2673 } 2673 }
2674} 2674}
2675void CalendarView::toggleCancelIncidence() 2675void CalendarView::toggleCancelIncidence()
2676{ 2676{
2677 Incidence *incidence = currentSelection(); 2677 Incidence *incidence = currentSelection();
2678 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2678 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2679 if ( incidence ) { 2679 if ( incidence ) {
2680 cancelIncidence(incidence); 2680 cancelIncidence(incidence);
2681 } 2681 }
2682} 2682}
2683 2683
2684 2684
2685void CalendarView::cancelIncidence(Incidence * inc ) 2685void CalendarView::cancelIncidence(Incidence * inc )
2686{ 2686{
2687 inc->setCancelled( ! inc->cancelled() ); 2687 inc->setCancelled( ! inc->cancelled() );
2688 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2688 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2689 updateView(); 2689 updateView();
2690} 2690}
2691void CalendarView::cloneIncidence(Incidence * orgInc ) 2691void CalendarView::cloneIncidence(Incidence * orgInc )
2692{ 2692{
2693 Incidence * newInc = orgInc->clone(); 2693 Incidence * newInc = orgInc->clone();
2694 newInc->recreate(); 2694 newInc->recreate();
2695 2695
2696 if ( newInc->type() == "Todo" ) { 2696 if ( newInc->type() == "Todo" ) {
2697 Todo* t = (Todo*) newInc; 2697 Todo* t = (Todo*) newInc;
2698 showTodoEditor(); 2698 showTodoEditor();
2699 mTodoEditor->editTodo( t ); 2699 mTodoEditor->editTodo( t );
2700 if ( mTodoEditor->exec() ) { 2700 if ( mTodoEditor->exec() ) {
2701 mCalendar->addTodo( t ); 2701 mCalendar->addTodo( t );
2702 updateView(); 2702 updateView();
2703 } else { 2703 } else {
2704 delete t; 2704 delete t;
2705 } 2705 }
2706 } 2706 }
2707 else { 2707 else {
2708 Event* e = (Event*) newInc; 2708 Event* e = (Event*) newInc;
2709 showEventEditor(); 2709 showEventEditor();
2710 mEventEditor->editEvent( e ); 2710 mEventEditor->editEvent( e );
2711 if ( mEventEditor->exec() ) { 2711 if ( mEventEditor->exec() ) {
2712 mCalendar->addEvent( e ); 2712 mCalendar->addEvent( e );
2713 updateView(); 2713 updateView();
2714 } else { 2714 } else {
2715 delete e; 2715 delete e;
2716 } 2716 }
2717 } 2717 }
2718 setActiveWindow(); 2718 setActiveWindow();
2719} 2719}
2720 2720
2721void CalendarView::newEvent() 2721void CalendarView::newEvent()
2722{ 2722{
2723 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2723 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2724 KOAgendaView *aView = mViewManager->agendaView(); 2724 KOAgendaView *aView = mViewManager->agendaView();
2725 if (aView) { 2725 if (aView) {
2726 if (aView->selectionStart().isValid()) { 2726 if (aView->selectionStart().isValid()) {
2727 if (aView->selectedIsAllDay()) { 2727 if (aView->selectedIsAllDay()) {
2728 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2728 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2729 } else { 2729 } else {
2730 newEvent(aView->selectionStart(),aView->selectionEnd()); 2730 newEvent(aView->selectionStart(),aView->selectionEnd());
2731 } 2731 }
2732 return; 2732 return;
2733 } 2733 }
2734 } 2734 }
2735 2735
2736 QDate date = mNavigator->selectedDates().first(); 2736 QDate date = mNavigator->selectedDates().first();
2737 QDateTime current = QDateTime::currentDateTime(); 2737 QDateTime current = QDateTime::currentDateTime();
2738 if ( date <= current.date() ) { 2738 if ( date <= current.date() ) {
2739 int hour = current.time().hour() +1; 2739 int hour = current.time().hour() +1;
2740 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2740 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2741 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2741 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2742 } else 2742 } else
2743 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2743 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2744 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2744 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2745 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2745 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2746} 2746}
2747 2747
2748void CalendarView::newEvent(QDateTime fh) 2748void CalendarView::newEvent(QDateTime fh)
2749{ 2749{
2750 newEvent(fh, 2750 newEvent(fh,
2751 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2751 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2752} 2752}
2753 2753
2754void CalendarView::newEvent(QDate dt) 2754void CalendarView::newEvent(QDate dt)
2755{ 2755{
2756 newEvent(QDateTime(dt, QTime(0,0,0)), 2756 newEvent(QDateTime(dt, QTime(0,0,0)),
2757 QDateTime(dt, QTime(0,0,0)), true); 2757 QDateTime(dt, QTime(0,0,0)), true);
2758} 2758}
2759void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2759void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2760{ 2760{
2761 newEvent(fromHint, toHint, false); 2761 newEvent(fromHint, toHint, false);
2762} 2762}
2763void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2763void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2764{ 2764{
2765 2765
2766 showEventEditor(); 2766 showEventEditor();
2767 mEventEditor->newEvent(fromHint,toHint,allDay); 2767 mEventEditor->newEvent(fromHint,toHint,allDay);
2768 if ( mFilterView->filtersEnabled() ) { 2768 if ( mFilterView->filtersEnabled() ) {
2769 CalFilter *filter = mFilterView->selectedFilter(); 2769 CalFilter *filter = mFilterView->selectedFilter();
2770 if (filter && filter->showCategories()) { 2770 if (filter && filter->showCategories()) {
2771 mEventEditor->setCategories(filter->categoryList().join(",") ); 2771 mEventEditor->setCategories(filter->categoryList().join(",") );
2772 } 2772 }
2773 if ( filter ) 2773 if ( filter )
2774 mEventEditor->setSecrecy( filter->getSecrecy() ); 2774 mEventEditor->setSecrecy( filter->getSecrecy() );
2775 } 2775 }
2776 mEventEditor->exec(); 2776 mEventEditor->exec();
2777 setActiveWindow(); 2777 setActiveWindow();
2778} 2778}
2779void CalendarView::todoAdded(Todo * t) 2779void CalendarView::todoAdded(Todo * t)
2780{ 2780{
2781 2781
2782 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2782 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2783 updateTodoViews(); 2783 updateTodoViews();
2784} 2784}
2785void CalendarView::todoChanged(Todo * t) 2785void CalendarView::todoChanged(Todo * t)
2786{ 2786{
2787 emit todoModified( t, 4 ); 2787 emit todoModified( t, 4 );
2788 // updateTodoViews(); 2788 // updateTodoViews();
2789} 2789}
2790void CalendarView::todoToBeDeleted(Todo *) 2790void CalendarView::todoToBeDeleted(Todo *)
2791{ 2791{
2792 //qDebug("todoToBeDeleted(Todo *) "); 2792 //qDebug("todoToBeDeleted(Todo *) ");
2793 updateTodoViews(); 2793 updateTodoViews();
2794} 2794}
2795void CalendarView::todoDeleted() 2795void CalendarView::todoDeleted()
2796{ 2796{
2797 //qDebug(" todoDeleted()"); 2797 //qDebug(" todoDeleted()");
2798 updateTodoViews(); 2798 updateTodoViews();
2799} 2799}
2800 2800
2801 2801
2802void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 2802void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
2803{ 2803{
2804 showTodoEditor(); 2804 showTodoEditor();
2805 mTodoEditor->newTodo(dt,0,allday); 2805 mTodoEditor->newTodo(dt,0,allday);
2806 if ( mFilterView->filtersEnabled() ) { 2806 if ( mFilterView->filtersEnabled() ) {
2807 CalFilter *filter = mFilterView->selectedFilter(); 2807 CalFilter *filter = mFilterView->selectedFilter();
2808 if (filter && filter->showCategories()) { 2808 if (filter && filter->showCategories()) {
2809 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2809 mTodoEditor->setCategories(filter->categoryList().join(",") );
2810 } 2810 }
2811 if ( filter ) 2811 if ( filter )
2812 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2812 mTodoEditor->setSecrecy( filter->getSecrecy() );
2813 } 2813 }
2814 mTodoEditor->exec(); 2814 mTodoEditor->exec();
2815 setActiveWindow(); 2815 setActiveWindow();
2816} 2816}
2817 2817
2818void CalendarView::newTodo() 2818void CalendarView::newTodo()
2819{ 2819{
2820 newTodoDateTime( QDateTime(),true ); 2820 newTodoDateTime( QDateTime(),true );
2821} 2821}
2822 2822
2823void CalendarView::newSubTodo() 2823void CalendarView::newSubTodo()
2824{ 2824{
2825 Todo *todo = selectedTodo(); 2825 Todo *todo = selectedTodo();
2826 if ( todo ) newSubTodo( todo ); 2826 if ( todo ) newSubTodo( todo );
2827} 2827}
2828 2828
2829void CalendarView::newSubTodo(Todo *parentEvent) 2829void CalendarView::newSubTodo(Todo *parentEvent)
2830{ 2830{
2831 2831
2832 showTodoEditor(); 2832 showTodoEditor();
2833 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 2833 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
2834 mTodoEditor->exec(); 2834 mTodoEditor->exec();
2835 setActiveWindow(); 2835 setActiveWindow();
2836} 2836}
2837 2837
2838void CalendarView::newFloatingEvent() 2838void CalendarView::newFloatingEvent()
2839{ 2839{
2840 DateList tmpList = mNavigator->selectedDates(); 2840 DateList tmpList = mNavigator->selectedDates();
2841 QDate date = tmpList.first(); 2841 QDate date = tmpList.first();
2842 2842
2843 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2843 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2844 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2844 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2845} 2845}
2846 2846
2847 2847
2848void CalendarView::editEvent( Event *event ) 2848void CalendarView::editEvent( Event *event )
2849{ 2849{
2850 2850
2851 if ( !event ) return; 2851 if ( !event ) return;
2852 if ( event->isReadOnly() ) { 2852 if ( event->isReadOnly() ) {
2853 showEvent( event ); 2853 showEvent( event );
2854 return; 2854 return;
2855 } 2855 }
2856 showEventEditor(); 2856 showEventEditor();
2857 mEventEditor->editEvent( event , mFlagEditDescription); 2857 mEventEditor->editEvent( event , mFlagEditDescription);
2858 mEventEditor->exec(); 2858 mEventEditor->exec();
2859 setActiveWindow(); 2859 setActiveWindow();
2860 2860
2861} 2861}
2862void CalendarView::editJournal( Journal *jour ) 2862void CalendarView::editJournal( Journal *jour )
2863{ 2863{
2864 if ( !jour ) return; 2864 if ( !jour ) return;
2865 mDialogManager->hideSearchDialog(); 2865 mDialogManager->hideSearchDialog();
2866 mViewManager->showJournalView(); 2866 mViewManager->showJournalView();
2867 mNavigator->slotDaySelect( jour->dtStart().date() ); 2867 mNavigator->slotDaySelect( jour->dtStart().date() );
2868} 2868}
2869void CalendarView::editTodo( Todo *todo ) 2869void CalendarView::editTodo( Todo *todo )
2870{ 2870{
2871 if ( !todo ) return; 2871 if ( !todo ) return;
2872 2872
2873 if ( todo->isReadOnly() ) { 2873 if ( todo->isReadOnly() ) {
2874 showTodo( todo ); 2874 showTodo( todo );
2875 return; 2875 return;
2876 } 2876 }
2877 showTodoEditor(); 2877 showTodoEditor();
2878 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2878 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2879 mTodoEditor->exec(); 2879 mTodoEditor->exec();
2880 setActiveWindow(); 2880 setActiveWindow();
2881 2881
2882} 2882}
2883 2883
2884KOEventViewerDialog* CalendarView::getEventViewerDialog() 2884KOEventViewerDialog* CalendarView::getEventViewerDialog()
2885{ 2885{
2886 if ( !mEventViewerDialog ) { 2886 if ( !mEventViewerDialog ) {
2887 mEventViewerDialog = new KOEventViewerDialog(0); 2887 mEventViewerDialog = new KOEventViewerDialog(0);
2888 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2888 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2889 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2889 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2890 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2890 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2891 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2891 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2892 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2892 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2893 viewManager(), SLOT( showAgendaView( bool ) ) ); 2893 viewManager(), SLOT( showAgendaView( bool ) ) );
2894 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 2894 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
2895 this, SLOT( slotViewerClosed() ) ); 2895 this, SLOT( slotViewerClosed() ) );
2896 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 2896 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
2897 this, SLOT( todoChanged(Todo *) ) ); 2897 this, SLOT( todoChanged(Todo *) ) );
2898 mEventViewerDialog->resize( 640, 480 ); 2898 mEventViewerDialog->resize( 640, 480 );
2899 2899
2900 } 2900 }
2901 return mEventViewerDialog; 2901 return mEventViewerDialog;
2902} 2902}
2903void CalendarView::showEvent(Event *event) 2903void CalendarView::showEvent(Event *event)
2904{ 2904{
2905 getEventViewerDialog()->setEvent(event); 2905 getEventViewerDialog()->setEvent(event);
2906 getEventViewerDialog()->showMe(); 2906 getEventViewerDialog()->showMe();
2907} 2907}
2908 2908
2909void CalendarView::showTodo(Todo *event) 2909void CalendarView::showTodo(Todo *event)
2910{ 2910{
2911 getEventViewerDialog()->setTodo(event); 2911 getEventViewerDialog()->setTodo(event);
2912 getEventViewerDialog()->showMe(); 2912 getEventViewerDialog()->showMe();
2913} 2913}
2914void CalendarView::showJournal( Journal *jour ) 2914void CalendarView::showJournal( Journal *jour )
2915{ 2915{
2916 getEventViewerDialog()->setJournal(jour); 2916 getEventViewerDialog()->setJournal(jour);
2917 getEventViewerDialog()->showMe(); 2917 getEventViewerDialog()->showMe();
2918 2918
2919} 2919}
2920// void CalendarView::todoModified (Todo *event, int changed) 2920// void CalendarView::todoModified (Todo *event, int changed)
2921// { 2921// {
2922// // if (mDialogList.find (event) != mDialogList.end ()) { 2922// // if (mDialogList.find (event) != mDialogList.end ()) {
2923// // kdDebug() << "Todo modified and open" << endl; 2923// // kdDebug() << "Todo modified and open" << endl;
2924// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2924// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2925// // temp->modified (changed); 2925// // temp->modified (changed);
2926 2926
2927// // } 2927// // }
2928 2928
2929// mViewManager->updateView(); 2929// mViewManager->updateView();
2930// } 2930// }
2931 2931
2932void CalendarView::appointment_show() 2932void CalendarView::appointment_show()
2933{ 2933{
2934 Event *anEvent = 0; 2934 Event *anEvent = 0;
2935 2935
2936 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2936 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2937 2937
2938 if (mViewManager->currentView()->isEventView()) { 2938 if (mViewManager->currentView()->isEventView()) {
2939 if ( incidence && incidence->type() == "Event" ) { 2939 if ( incidence && incidence->type() == "Event" ) {
2940 anEvent = static_cast<Event *>(incidence); 2940 anEvent = static_cast<Event *>(incidence);
2941 } 2941 }
2942 } 2942 }
2943 2943
2944 if (!anEvent) { 2944 if (!anEvent) {
2945 KNotifyClient::beep(); 2945 KNotifyClient::beep();
2946 return; 2946 return;
2947 } 2947 }
2948 2948
2949 showEvent(anEvent); 2949 showEvent(anEvent);
2950} 2950}
2951 2951
2952void CalendarView::appointment_edit() 2952void CalendarView::appointment_edit()
2953{ 2953{
2954 Event *anEvent = 0; 2954 Event *anEvent = 0;
2955 2955
2956 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2956 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2957 2957
2958 if (mViewManager->currentView()->isEventView()) { 2958 if (mViewManager->currentView()->isEventView()) {
2959 if ( incidence && incidence->type() == "Event" ) { 2959 if ( incidence && incidence->type() == "Event" ) {
2960 anEvent = static_cast<Event *>(incidence); 2960 anEvent = static_cast<Event *>(incidence);
2961 } 2961 }
2962 } 2962 }
2963 2963
2964 if (!anEvent) { 2964 if (!anEvent) {
2965 KNotifyClient::beep(); 2965 KNotifyClient::beep();
2966 return; 2966 return;
2967 } 2967 }