summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2004-09-14 01:59:37 (UTC)
committer zautrix <zautrix>2004-09-14 01:59:37 (UTC)
commit739fec31c8cea89dd40ff1ce7dd7b84b05e4e973 (patch) (unidiff)
treee632528a6825911b1b7ae9db9af4e4c8984e6dbf /korganizer
parent30762fe125216362e1a6c1d5ec5d22d9525aa336 (diff)
downloadkdepimpi-739fec31c8cea89dd40ff1ce7dd7b84b05e4e973.zip
kdepimpi-739fec31c8cea89dd40ff1ce7dd7b84b05e4e973.tar.gz
kdepimpi-739fec31c8cea89dd40ff1ce7dd7b84b05e4e973.tar.bz2
Sync fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 94cc97d..ce41fbd 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -968,183 +968,192 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
968 if ( eventLSync->dtStart() == mLastCalendarSync ) 968 if ( eventLSync->dtStart() == mLastCalendarSync )
969 fullDateRange = true; 969 fullDateRange = true;
970 970
971 if ( ! fullDateRange ) { 971 if ( ! fullDateRange ) {
972 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 972 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
973 973
974 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 974 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
975 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 975 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
976 fullDateRange = true; 976 fullDateRange = true;
977 } 977 }
978 } 978 }
979 if ( fullDateRange ) 979 if ( fullDateRange )
980 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 980 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
981 else 981 else
982 mLastCalendarSync = eventLSync->dtStart(); 982 mLastCalendarSync = eventLSync->dtStart();
983 // for resyncing if own file has changed 983 // for resyncing if own file has changed
984 if ( mCurrentSyncDevice == "deleteaftersync" ) { 984 if ( mCurrentSyncDevice == "deleteaftersync" ) {
985 mLastCalendarSync = loadedFileVersion; 985 mLastCalendarSync = loadedFileVersion;
986 qDebug("setting mLastCalendarSync "); 986 qDebug("setting mLastCalendarSync ");
987 } 987 }
988 //qDebug("*************************** "); 988 //qDebug("*************************** ");
989 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 989 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
990 QPtrList<Incidence> er = remote->rawIncidences(); 990 QPtrList<Incidence> er = remote->rawIncidences();
991 Incidence* inR = er.first(); 991 Incidence* inR = er.first();
992 Incidence* inL; 992 Incidence* inL;
993 QProgressBar bar( er.count(),0 ); 993 QProgressBar bar( er.count(),0 );
994 bar.setCaption (i18n("Syncing - close to abort!") ); 994 bar.setCaption (i18n("Syncing - close to abort!") );
995 995
996 int w = 300; 996 int w = 300;
997 if ( QApplication::desktop()->width() < 320 ) 997 if ( QApplication::desktop()->width() < 320 )
998 w = 220; 998 w = 220;
999 int h = bar.sizeHint().height() ; 999 int h = bar.sizeHint().height() ;
1000 int dw = QApplication::desktop()->width(); 1000 int dw = QApplication::desktop()->width();
1001 int dh = QApplication::desktop()->height(); 1001 int dh = QApplication::desktop()->height();
1002 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1002 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1003 bar.show(); 1003 bar.show();
1004 int modulo = (er.count()/10)+1; 1004 int modulo = (er.count()/10)+1;
1005 int incCounter = 0; 1005 int incCounter = 0;
1006 while ( inR ) { 1006 while ( inR ) {
1007 if ( ! bar.isVisible() ) 1007 if ( ! bar.isVisible() )
1008 return false; 1008 return false;
1009 if ( incCounter % modulo == 0 ) 1009 if ( incCounter % modulo == 0 )
1010 bar.setProgress( incCounter ); 1010 bar.setProgress( incCounter );
1011 ++incCounter; 1011 ++incCounter;
1012 uid = inR->uid(); 1012 uid = inR->uid();
1013 bool skipIncidence = false; 1013 bool skipIncidence = false;
1014 if ( uid.left(15) == QString("last-syncEvent-") ) 1014 if ( uid.left(15) == QString("last-syncEvent-") )
1015 skipIncidence = true; 1015 skipIncidence = true;
1016 1016 QString idS;
1017 qApp->processEvents(); 1017 qApp->processEvents();
1018 if ( !skipIncidence ) { 1018 if ( !skipIncidence ) {
1019 inL = local->incidence( uid ); 1019 inL = local->incidence( uid );
1020 if ( inL ) { // maybe conflict - same uid in both calendars 1020 if ( inL ) { // maybe conflict - same uid in both calendars
1021 int maxrev = inL->revision(); 1021 int maxrev = inL->revision();
1022 if ( maxrev < inR->revision() ) 1022 if ( maxrev < inR->revision() )
1023 maxrev = inR->revision(); 1023 maxrev = inR->revision();
1024 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1024 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1025 //qDebug("take %d %s ", take, inL->summary().latin1()); 1025 //qDebug("take %d %s ", take, inL->summary().latin1());
1026 if ( take == 3 ) 1026 if ( take == 3 )
1027 return false; 1027 return false;
1028 if ( take == 1 ) {// take local 1028 if ( take == 1 ) {// take local
1029 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1029 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1030 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1031 else
1032 idS = inR->IDStr();
1030 remote->deleteIncidence( inR ); 1033 remote->deleteIncidence( inR );
1031 if ( inL->revision() < maxrev ) 1034 if ( inL->revision() < maxrev )
1032 inL->setRevision( maxrev ); 1035 inL->setRevision( maxrev );
1033 inR = inL->clone(); 1036 inR = inL->clone();
1034 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1037 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1038 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1039 inR->setIDStr( idS );
1035 remote->addIncidence( inR ); 1040 remote->addIncidence( inR );
1036 ++changedRemote; 1041 ++changedRemote;
1037 } else { 1042 } else {
1038 if ( inR->revision() < maxrev ) 1043 if ( inR->revision() < maxrev )
1039 inR->setRevision( maxrev ); 1044 inR->setRevision( maxrev );
1045 idS = inL->IDStr();
1040 local->deleteIncidence( inL ); 1046 local->deleteIncidence( inL );
1041 local->addIncidence( inR->clone() ); 1047 inL = inR->clone();
1048 inL->setIDStr( idS );
1049 local->addIncidence( inL );
1042 ++changedLocal; 1050 ++changedLocal;
1043 } 1051 }
1044 } 1052 }
1045 } else { // no conflict 1053 } else { // no conflict
1046 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1054 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1047 QString des = eventLSync->description(); 1055 QString des = eventLSync->description();
1048 QString pref = "e"; 1056 QString pref = "e";
1049 if ( inR->type() == "Todo" ) 1057 if ( inR->type() == "Todo" )
1050 pref = "t"; 1058 pref = "t";
1051 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1059 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1052 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1060 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1053 //remote->deleteIncidence( inR ); 1061 //remote->deleteIncidence( inR );
1054 ++deletedEventR; 1062 ++deletedEventR;
1055 } else { 1063 } else {
1056 inR->setLastModified( modifiedCalendar ); 1064 inR->setLastModified( modifiedCalendar );
1057 inL = inR->clone(); 1065 inL = inR->clone();
1058 local->addIncidence( inL ); 1066 local->addIncidence( inL );
1059 ++addedEvent; 1067 ++addedEvent;
1060 } 1068 }
1061 } else { 1069 } else {
1062 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1070 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1063 inR->setLastModified( modifiedCalendar ); 1071 inR->setLastModified( modifiedCalendar );
1064 local->addIncidence( inR->clone() ); 1072 local->addIncidence( inR->clone() );
1065 ++addedEvent; 1073 ++addedEvent;
1066 } else { 1074 } else {
1067 checkExternSyncEvent(eventRSyncSharp, inR); 1075 checkExternSyncEvent(eventRSyncSharp, inR);
1068 remote->deleteIncidence( inR ); 1076 remote->deleteIncidence( inR );
1069 ++deletedEventR; 1077 ++deletedEventR;
1070 } 1078 }
1071 } 1079 }
1072 } 1080 }
1073 } 1081 }
1074 inR = er.next(); 1082 inR = er.next();
1075 } 1083 }
1076 QPtrList<Incidence> el = local->rawIncidences(); 1084 QPtrList<Incidence> el = local->rawIncidences();
1077 inL = el.first(); 1085 inL = el.first();
1078 modulo = (el.count()/10)+1; 1086 modulo = (el.count()/10)+1;
1079 bar.setCaption (i18n("Add / remove events") ); 1087 bar.setCaption (i18n("Add / remove events") );
1080 bar.setTotalSteps ( el.count() ) ; 1088 bar.setTotalSteps ( el.count() ) ;
1081 bar.show(); 1089 bar.show();
1082 incCounter = 0; 1090 incCounter = 0;
1083 1091
1084 while ( inL ) { 1092 while ( inL ) {
1085 1093
1086 qApp->processEvents(); 1094 qApp->processEvents();
1087 if ( ! bar.isVisible() ) 1095 if ( ! bar.isVisible() )
1088 return false; 1096 return false;
1089 if ( incCounter % modulo == 0 ) 1097 if ( incCounter % modulo == 0 )
1090 bar.setProgress( incCounter ); 1098 bar.setProgress( incCounter );
1091 ++incCounter; 1099 ++incCounter;
1092 uid = inL->uid(); 1100 uid = inL->uid();
1093 bool skipIncidence = false; 1101 bool skipIncidence = false;
1094 if ( uid.left(15) == QString("last-syncEvent-") ) 1102 if ( uid.left(15) == QString("last-syncEvent-") )
1095 skipIncidence = true; 1103 skipIncidence = true;
1096 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1104 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1097 skipIncidence = true; 1105 skipIncidence = true;
1098 if ( !skipIncidence ) { 1106 if ( !skipIncidence ) {
1099 inR = remote->incidence( uid ); 1107 inR = remote->incidence( uid );
1100 if ( ! inR ) { 1108 if ( ! inR ) {
1101 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1109 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1102 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1110 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1111 checkExternSyncEvent(eventLSyncSharp, inL);
1103 local->deleteIncidence( inL ); 1112 local->deleteIncidence( inL );
1104 ++deletedEventL; 1113 ++deletedEventL;
1105 } else { 1114 } else {
1106 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1115 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1107 inL->removeID(mCurrentSyncDevice ); 1116 inL->removeID(mCurrentSyncDevice );
1108 ++addedEventR; 1117 ++addedEventR;
1109 qDebug("remote added Incidence %s ", inL->summary().latin1()); 1118 qDebug("remote added Incidence %s ", inL->summary().latin1());
1110 inL->setLastModified( modifiedCalendar ); 1119 inL->setLastModified( modifiedCalendar );
1111 inR = inL->clone(); 1120 inR = inL->clone();
1112 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1121 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1113 remote->addIncidence( inR ); 1122 remote->addIncidence( inR );
1114 } 1123 }
1115 } 1124 }
1116 } else { 1125 } else {
1117 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1126 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1118 checkExternSyncEvent(eventLSyncSharp, inL); 1127 checkExternSyncEvent(eventLSyncSharp, inL);
1119 local->deleteIncidence( inL ); 1128 local->deleteIncidence( inL );
1120 ++deletedEventL; 1129 ++deletedEventL;
1121 } else { 1130 } else {
1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1131 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1123 ++addedEventR; 1132 ++addedEventR;
1124 inL->setLastModified( modifiedCalendar ); 1133 inL->setLastModified( modifiedCalendar );
1125 remote->addIncidence( inL->clone() ); 1134 remote->addIncidence( inL->clone() );
1126 } 1135 }
1127 } 1136 }
1128 } 1137 }
1129 } 1138 }
1130 } 1139 }
1131 inL = el.next(); 1140 inL = el.next();
1132 } 1141 }
1133 int delFut = 0; 1142 int delFut = 0;
1134 if ( KOPrefs::instance()->mWriteBackInFuture ) { 1143 if ( KOPrefs::instance()->mWriteBackInFuture ) {
1135 er = remote->rawIncidences(); 1144 er = remote->rawIncidences();
1136 inR = er.first(); 1145 inR = er.first();
1137 QDateTime dt; 1146 QDateTime dt;
1138 QDateTime cur = QDateTime::currentDateTime(); 1147 QDateTime cur = QDateTime::currentDateTime();
1139 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); 1148 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 );
1140 while ( inR ) { 1149 while ( inR ) {
1141 if ( inR->type() == "Todo" ) { 1150 if ( inR->type() == "Todo" ) {
1142 Todo * t = (Todo*)inR; 1151 Todo * t = (Todo*)inR;
1143 if ( t->hasDueDate() ) 1152 if ( t->hasDueDate() )
1144 dt = t->dtDue(); 1153 dt = t->dtDue();
1145 else 1154 else
1146 dt = cur.addSecs( 62 ); 1155 dt = cur.addSecs( 62 );
1147 } 1156 }
1148 else if (inR->type() == "Event" ) { 1157 else if (inR->type() == "Event" ) {
1149 bool ok; 1158 bool ok;
1150 dt = inR->getNextOccurence( cur, &ok ); 1159 dt = inR->getNextOccurence( cur, &ok );