summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-17 19:15:12 (UTC)
committer zautrix <zautrix>2004-10-17 19:15:12 (UTC)
commita20e8333d7178a01672545232b74bd5cb6d6958b (patch) (unidiff)
treec21854e85a9d5da5e91abba6705de8b3929ad97f
parent6f6d1d58938539215bb4fcb5b97cf9fb089a11ef (diff)
downloadkdepimpi-a20e8333d7178a01672545232b74bd5cb6d6958b.zip
kdepimpi-a20e8333d7178a01672545232b74bd5cb6d6958b.tar.gz
kdepimpi-a20e8333d7178a01672545232b74bd5cb6d6958b.tar.bz2
kde sync fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index ff1db2c..290c0b9 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -693,54 +693,48 @@ QDate CalendarView::endDate()
693void CalendarView::createPrinter() 693void CalendarView::createPrinter()
694{ 694{
695#ifndef KORG_NOPRINTER 695#ifndef KORG_NOPRINTER
696 if (!mCalPrinter) { 696 if (!mCalPrinter) {
697 mCalPrinter = new CalPrinter(this, mCalendar); 697 mCalPrinter = new CalPrinter(this, mCalendar);
698 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 698 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
699 } 699 }
700#endif 700#endif
701} 701}
702 702
703 703
704//KOPrefs::instance()->mWriteBackFile 704//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 705//KOPrefs::instance()->mWriteBackExistingOnly
706 706
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 713
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 715{
716 716
717 //void setZaurusId(int id);
718 // int zaurusId() const;
719 // void setZaurusUid(int id);
720 // int zaurusUid() const;
721 // void setZaurusStat(int id);
722 // int zaurusStat() const;
723 // 0 equal 717 // 0 equal
724 // 1 take local 718 // 1 take local
725 // 2 take remote 719 // 2 take remote
726 // 3 cancel 720 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 721 QDateTime lastSync = mLastCalendarSync;
728 QDateTime localMod = local->lastModified(); 722 QDateTime localMod = local->lastModified();
729 QDateTime remoteMod = remote->lastModified(); 723 QDateTime remoteMod = remote->lastModified();
730 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 724 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
731 bool remCh, locCh; 725 bool remCh, locCh;
732 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 726 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
733 //if ( remCh ) 727 //if ( remCh )
734 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 728 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
735 locCh = ( localMod > mLastCalendarSync ); 729 locCh = ( localMod > mLastCalendarSync );
736 if ( !remCh && ! locCh ) { 730 if ( !remCh && ! locCh ) {
737 //qDebug("both not changed "); 731 //qDebug("both not changed ");
738 lastSync = localMod.addDays(1); 732 lastSync = localMod.addDays(1);
739 if ( mode <= SYNC_PREF_ASK ) 733 if ( mode <= SYNC_PREF_ASK )
740 return 0; 734 return 0;
741 } else { 735 } else {
742 if ( locCh ) { 736 if ( locCh ) {
743 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 737 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
744 lastSync = localMod.addDays( -1 ); 738 lastSync = localMod.addDays( -1 );
745 if ( !remCh ) 739 if ( !remCh )
746 remoteMod = ( lastSync.addDays( -1 ) ); 740 remoteMod = ( lastSync.addDays( -1 ) );
@@ -922,139 +916,132 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
922 int changedLocal = 0; 916 int changedLocal = 0;
923 int changedRemote = 0; 917 int changedRemote = 0;
924 //QPtrList<Event> el = local->rawEvents(); 918 //QPtrList<Event> el = local->rawEvents();
925 Event* eventR; 919 Event* eventR;
926 QString uid; 920 QString uid;
927 int take; 921 int take;
928 Event* eventL; 922 Event* eventL;
929 Event* eventRSync; 923 Event* eventRSync;
930 Event* eventLSync; 924 Event* eventLSync;
931 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 925 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
932 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 926 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
933 bool fullDateRange = false; 927 bool fullDateRange = false;
934 local->resetTempSyncStat(); 928 local->resetTempSyncStat();
935 if ( mSyncKDE ) 929 if ( mSyncKDE )
936 remote->resetPilotStat(1); 930 remote->resetPilotStat(1);
937 mLastCalendarSync = QDateTime::currentDateTime(); 931 mLastCalendarSync = QDateTime::currentDateTime();
938 QDateTime modifiedCalendar = mLastCalendarSync;; 932 QDateTime modifiedCalendar = mLastCalendarSync;;
939 eventLSync = getLastSyncEvent(); 933 eventLSync = getLastSyncEvent();
940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 934 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
941 if ( eventR ) { 935 if ( eventR ) {
942 eventRSync = (Event*) eventR->clone(); 936 eventRSync = (Event*) eventR->clone();
943 remote->deleteEvent(eventR ); 937 remote->deleteEvent(eventR );
944 938
945 } else { 939 } else {
946 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 940 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncKDE) {
947 eventRSync = (Event*)eventLSync->clone(); 941 eventRSync = (Event*)eventLSync->clone();
948 } else { 942 } else {
949 fullDateRange = true; 943 fullDateRange = true;
950 eventRSync = new Event(); 944 eventRSync = new Event();
951 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 945 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
952 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 946 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
953 eventRSync->setDtStart( mLastCalendarSync ); 947 eventRSync->setDtStart( mLastCalendarSync );
954 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 948 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
955 eventRSync->setCategories( i18n("SyncEvent") ); 949 eventRSync->setCategories( i18n("SyncEvent") );
956 } 950 }
957 } 951 }
958 if ( eventLSync->dtStart() == mLastCalendarSync ) 952 if ( eventLSync->dtStart() == mLastCalendarSync )
959 fullDateRange = true; 953 fullDateRange = true;
960 954
961 if ( ! fullDateRange ) { 955 if ( ! fullDateRange ) {
962 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 956 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
963 957
964 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 958 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
965 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 959 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
966 fullDateRange = true; 960 fullDateRange = true;
967 } 961 }
968 } 962 }
969 if ( fullDateRange && !mSyncKDE ) 963 if ( fullDateRange && !mSyncKDE )
970 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 964 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
971 else 965 else
972 mLastCalendarSync = eventLSync->dtStart(); 966 mLastCalendarSync = eventLSync->dtStart();
973 // for resyncing if own file has changed 967 // for resyncing if own file has changed
974 if ( mCurrentSyncDevice == "deleteaftersync" ) { 968 if ( mCurrentSyncDevice == "deleteaftersync" ) {
975 mLastCalendarSync = loadedFileVersion; 969 mLastCalendarSync = loadedFileVersion;
976 qDebug("setting mLastCalendarSync "); 970 //qDebug("setting mLastCalendarSync ");
977 } 971 }
978 //qDebug("*************************** "); 972 //qDebug("*************************** ");
979 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 973 qDebug("mLastCalendarSync %s full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
980 QPtrList<Incidence> er = remote->rawIncidences(); 974 QPtrList<Incidence> er = remote->rawIncidences();
981 Incidence* inR = er.first(); 975 Incidence* inR = er.first();
982 Incidence* inL; 976 Incidence* inL;
983 QProgressBar bar( er.count(),0 ); 977 QProgressBar bar( er.count(),0 );
984 bar.setCaption (i18n("Syncing - close to abort!") ); 978 bar.setCaption (i18n("Syncing - close to abort!") );
985 979
986 int w = 300; 980 int w = 300;
987 if ( QApplication::desktop()->width() < 320 ) 981 if ( QApplication::desktop()->width() < 320 )
988 w = 220; 982 w = 220;
989 int h = bar.sizeHint().height() ; 983 int h = bar.sizeHint().height() ;
990 int dw = QApplication::desktop()->width(); 984 int dw = QApplication::desktop()->width();
991 int dh = QApplication::desktop()->height(); 985 int dh = QApplication::desktop()->height();
992 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 986 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
993 bar.show(); 987 bar.show();
994 int modulo = (er.count()/10)+1; 988 int modulo = (er.count()/10)+1;
995 int incCounter = 0; 989 int incCounter = 0;
996 while ( inR ) { 990 while ( inR ) {
997 if ( ! bar.isVisible() ) 991 if ( ! bar.isVisible() )
998 return false; 992 return false;
999 if ( incCounter % modulo == 0 ) 993 if ( incCounter % modulo == 0 )
1000 bar.setProgress( incCounter ); 994 bar.setProgress( incCounter );
1001 ++incCounter; 995 ++incCounter;
1002 uid = inR->uid(); 996 uid = inR->uid();
1003 bool skipIncidence = false; 997 bool skipIncidence = false;
1004 if ( uid.left(15) == QString("last-syncEvent-") ) 998 if ( uid.left(15) == QString("last-syncEvent-") )
1005 skipIncidence = true; 999 skipIncidence = true;
1006 QString idS; 1000 QString idS;
1007 qApp->processEvents(); 1001 qApp->processEvents();
1008 if ( !skipIncidence ) { 1002 if ( !skipIncidence ) {
1009 inL = local->incidence( uid ); 1003 inL = local->incidence( uid );
1010 if ( inL ) { // maybe conflict - same uid in both calendars 1004 if ( inL ) { // maybe conflict - same uid in both calendars
1011 int maxrev = inL->revision();
1012 if ( maxrev < inR->revision() )
1013 maxrev = inR->revision();
1014 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1005 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1015 //qDebug("take %d %s ", take, inL->summary().latin1()); 1006 //qDebug("take %d %s ", take, inL->summary().latin1());
1016 if ( take == 3 ) 1007 if ( take == 3 )
1017 return false; 1008 return false;
1018 if ( take == 1 ) {// take local 1009 if ( take == 1 ) {// take local
1019 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1010 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1020 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1011 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1021 else 1012 else
1022 idS = inR->IDStr(); 1013 idS = inR->IDStr();
1023 remote->deleteIncidence( inR ); 1014 remote->deleteIncidence( inR );
1024 if ( inL->revision() < maxrev )
1025 inL->setRevision( maxrev );
1026 inR = inL->clone(); 1015 inR = inL->clone();
1027 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1016 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1028 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1017 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1029 inR->setIDStr( idS ); 1018 inR->setIDStr( idS );
1030 remote->addIncidence( inR ); 1019 remote->addIncidence( inR );
1031 if ( mSyncKDE ) 1020 if ( mSyncKDE )
1032 inR->setPilotId( 2 ); 1021 inR->setPilotId( 2 );
1033 ++changedRemote; 1022 ++changedRemote;
1034 } else { 1023 } else {
1035 if ( inR->revision() < maxrev )
1036 inR->setRevision( maxrev );
1037 idS = inL->IDStr(); 1024 idS = inL->IDStr();
1038 int pid = inL->pilotId(); 1025 int pid = inL->pilotId();
1039 local->deleteIncidence( inL ); 1026 local->deleteIncidence( inL );
1040 inL = inR->clone(); 1027 inL = inR->clone();
1041 if ( mSyncKDE ) 1028 if ( mSyncKDE )
1042 inL->setPilotId( pid ); 1029 inL->setPilotId( pid );
1043 inL->setIDStr( idS ); 1030 inL->setIDStr( idS );
1044 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1045 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1032 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1046 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1033 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1047 } 1034 }
1048 local->addIncidence( inL ); 1035 local->addIncidence( inL );
1049 ++changedLocal; 1036 ++changedLocal;
1050 } 1037 }
1051 } 1038 }
1052 } else { // no conflict 1039 } else { // no conflict
1053 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1040 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1054 QString des = eventLSync->description(); 1041 QString des = eventLSync->description();
1055 QString pref = "e"; 1042 QString pref = "e";
1056 if ( inR->type() == "Todo" ) 1043 if ( inR->type() == "Todo" )
1057 pref = "t"; 1044 pref = "t";
1058 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1045 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1059 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1046 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1060 //remote->deleteIncidence( inR ); 1047 //remote->deleteIncidence( inR );