summaryrefslogtreecommitdiffabout
path: root/kaddressbook/kabcore.cpp
Unidiff
Diffstat (limited to 'kaddressbook/kabcore.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index cc8eb52..8776b53 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2648,89 +2648,89 @@ int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, i
2648 break; 2648 break;
2649 2649
2650 default: 2650 default:
2651 // SYNC_PREF_TAKE_BOTH not implemented 2651 // SYNC_PREF_TAKE_BOTH not implemented
2652 break; 2652 break;
2653 } 2653 }
2654 return 0; 2654 return 0;
2655} 2655}
2656bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2656bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2657{ 2657{
2658 bool syncOK = true; 2658 bool syncOK = true;
2659 int addedAddressee = 0; 2659 int addedAddressee = 0;
2660 int addedAddresseeR = 0; 2660 int addedAddresseeR = 0;
2661 int deletedAddresseeR = 0; 2661 int deletedAddresseeR = 0;
2662 int deletedAddresseeL = 0; 2662 int deletedAddresseeL = 0;
2663 int changedLocal = 0; 2663 int changedLocal = 0;
2664 int changedRemote = 0; 2664 int changedRemote = 0;
2665 //QPtrList<Addressee> el = local->rawAddressees(); 2665 //QPtrList<Addressee> el = local->rawAddressees();
2666 Addressee addresseeR; 2666 Addressee addresseeR;
2667 QString uid; 2667 QString uid;
2668 int take; 2668 int take;
2669 Addressee addresseeL; 2669 Addressee addresseeL;
2670 Addressee addresseeRSync; 2670 Addressee addresseeRSync;
2671 Addressee addresseeLSync; 2671 Addressee addresseeLSync;
2672 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2672 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2673 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2673 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2674 bool fullDateRange = false; 2674 bool fullDateRange = false;
2675 local->resetTempSyncStat(); 2675 local->resetTempSyncStat();
2676 mLastAddressbookSync = QDateTime::currentDateTime(); 2676 mLastAddressbookSync = QDateTime::currentDateTime();
2677 QDateTime modifiedCalendar = mLastAddressbookSync;; 2677 QDateTime modifiedCalendar = mLastAddressbookSync;;
2678 addresseeLSync = getLastSyncAddressee(); 2678 addresseeLSync = getLastSyncAddressee();
2679 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2679 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2680 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2680 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2681 if ( !addresseeR.isEmpty() ) { 2681 if ( !addresseeR.isEmpty() ) {
2682 addresseeRSync = addresseeR; 2682 addresseeRSync = addresseeR;
2683 remote->removeAddressee(addresseeR ); 2683 remote->removeAddressee(addresseeR );
2684 2684
2685 } else { 2685 } else {
2686 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2686 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2687 addresseeRSync = addresseeLSync ; 2687 addresseeRSync = addresseeLSync ;
2688 } else { 2688 } else {
2689 qDebug("FULLDATE 1"); 2689 qDebug("FULLDATE 1");
2690 fullDateRange = true; 2690 fullDateRange = true;
2691 Addressee newAdd; 2691 Addressee newAdd;
2692 addresseeRSync = newAdd; 2692 addresseeRSync = newAdd;
2693 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2693 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2694 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2694 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2695 addresseeRSync.setRevision( mLastAddressbookSync ); 2695 addresseeRSync.setRevision( mLastAddressbookSync );
2696 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2696 addresseeRSync.setCategories( i18n("SyncAddressee") );
2697 } 2697 }
2698 } 2698 }
2699 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2699 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2700 qDebug("FULLDATE 2"); 2700 qDebug("FULLDATE 2");
2701 fullDateRange = true; 2701 fullDateRange = true;
2702 } 2702 }
2703 if ( ! fullDateRange ) { 2703 if ( ! fullDateRange ) {
2704 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2704 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2705 2705
2706 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2706 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2707 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2707 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2708 fullDateRange = true; 2708 fullDateRange = true;
2709 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2709 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2710 } 2710 }
2711 } 2711 }
2712 fullDateRange = true; // debug only! 2712 // fullDateRange = true; // debug only!
2713 if ( fullDateRange ) 2713 if ( fullDateRange )
2714 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2714 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2715 else 2715 else
2716 mLastAddressbookSync = addresseeLSync.revision(); 2716 mLastAddressbookSync = addresseeLSync.revision();
2717 // for resyncing if own file has changed 2717 // for resyncing if own file has changed
2718 // PENDING fixme later when implemented 2718 // PENDING fixme later when implemented
2719#if 0 2719#if 0
2720 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2720 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2721 mLastAddressbookSync = loadedFileVersion; 2721 mLastAddressbookSync = loadedFileVersion;
2722 qDebug("setting mLastAddressbookSync "); 2722 qDebug("setting mLastAddressbookSync ");
2723 } 2723 }
2724#endif 2724#endif
2725 2725
2726 //qDebug("*************************** "); 2726 //qDebug("*************************** ");
2727 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2727 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2728 QStringList er = remote->uidList(); 2728 QStringList er = remote->uidList();
2729 Addressee inR ;//= er.first(); 2729 Addressee inR ;//= er.first();
2730 Addressee inL; 2730 Addressee inL;
2731 QProgressBar bar( er.count(),0 ); 2731 QProgressBar bar( er.count(),0 );
2732 bar.setCaption (i18n("Syncing - close to abort!") ); 2732 bar.setCaption (i18n("Syncing - close to abort!") );
2733 2733
2734 int w = 300; 2734 int w = 300;
2735 if ( QApplication::desktop()->width() < 320 ) 2735 if ( QApplication::desktop()->width() < 320 )
2736 w = 220; 2736 w = 220;
@@ -2897,57 +2897,85 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2897 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 2897 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
2898 2898
2899 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2899 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2900 remote->insertAddressee( addresseeRSync, false ); 2900 remote->insertAddressee( addresseeRSync, false );
2901 local->insertAddressee( addresseeLSync, false ); 2901 local->insertAddressee( addresseeLSync, false );
2902 QString mes; 2902 QString mes;
2903 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"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR ); 2903 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"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR );
2904 if ( KABPrefs::instance()->mShowSyncSummary ) { 2904 if ( KABPrefs::instance()->mShowSyncSummary ) {
2905 KMessageBox::information(this, mes, i18n("KA/Pi Synchronization") ); 2905 KMessageBox::information(this, mes, i18n("KA/Pi Synchronization") );
2906 } 2906 }
2907 qDebug( mes ); 2907 qDebug( mes );
2908 return syncOK; 2908 return syncOK;
2909} 2909}
2910 2910
2911bool KABCore::syncAB(QString filename, int mode) 2911bool KABCore::syncAB(QString filename, int mode)
2912{ 2912{
2913 2913
2914 //pending prepare addresseeview for output 2914 //pending prepare addresseeview for output
2915 //pending detect, if remote file has REV field. if not switch to external sync 2915 //pending detect, if remote file has REV field. if not switch to external sync
2916 mGlobalSyncMode = SYNC_MODE_NORMAL; 2916 mGlobalSyncMode = SYNC_MODE_NORMAL;
2917 AddressBook abLocal(filename,"syncContact"); 2917 AddressBook abLocal(filename,"syncContact");
2918 bool syncOK = false; 2918 bool syncOK = false;
2919 if ( abLocal.load() ) { 2919 if ( abLocal.load() ) {
2920 qDebug("AB loaded %s mode %d",filename.latin1(), mode ); 2920 qDebug("AB loaded %s mode %d",filename.latin1(), mode );
2921 AddressBook::Iterator it; 2921 bool external = false;
2922 Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2923 if ( ! lse.isEmpty() ) {
2924 if ( lse.familyName().left(4) == "!E: " )
2925 external = true;
2926 } else {
2927 bool found = false;
2928 QDateTime dt( QDate( 2004,1,1));
2929 AddressBook::Iterator it;
2930 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2931 if ( (*it).revision() != dt ) {
2932 found = true;
2933 break;
2934 }
2935 }
2936 external = ! found;
2937 }
2938
2939 if ( external ) {
2940 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2941 AddressBook::Iterator it;
2942 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2943 (*it).setID( mCurrentSyncDevice, (*it).uid() );
2944 (*it).computeCsum( mCurrentSyncDevice );
2945 }
2946 }
2947 //AddressBook::Iterator it;
2922 //QStringList vcards; 2948 //QStringList vcards;
2923 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2949 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2924 // qDebug("Name %s ", (*it).familyName().latin1()); 2950 // qDebug("Name %s ", (*it).familyName().latin1());
2925 //} 2951 //}
2926 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2952 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2927 if ( syncOK ) { 2953 if ( syncOK ) {
2928 if ( KABPrefs::instance()->mWriteBackFile ) 2954 if ( KABPrefs::instance()->mWriteBackFile )
2929 { 2955 {
2956 if ( external )
2957 abLocal.removeDeletedAddressees();
2930 qDebug("saving remote AB "); 2958 qDebug("saving remote AB ");
2931 abLocal.saveAB(); 2959 abLocal.saveAB();
2932 } 2960 }
2933 } 2961 }
2934 setModified(); 2962 setModified();
2935 2963
2936 } 2964 }
2937 if ( syncOK ) 2965 if ( syncOK )
2938 mViewManager->refreshView(); 2966 mViewManager->refreshView();
2939 return syncOK; 2967 return syncOK;
2940#if 0 2968#if 0
2941 2969
2942 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 2970 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
2943 getEventViewerDialog()->setSyncMode( true ); 2971 getEventViewerDialog()->setSyncMode( true );
2944 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 2972 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
2945 getEventViewerDialog()->setSyncMode( false ); 2973 getEventViewerDialog()->setSyncMode( false );
2946 if ( syncOK ) { 2974 if ( syncOK ) {
2947 if ( KOPrefs::instance()->mWriteBackFile ) 2975 if ( KOPrefs::instance()->mWriteBackFile )
2948 { 2976 {
2949 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2977 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2950 storage->save(); 2978 storage->save();
2951 } 2979 }
2952 } 2980 }
2953 setModified(); 2981 setModified();