summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2004-10-27 19:44:10 (UTC)
committer zautrix <zautrix>2004-10-27 19:44:10 (UTC)
commitbb82cac85cc196b3f60921ab27e84204036b54b8 (patch) (unidiff)
tree518629480b983b6b85a4cf1e5542f94fe1687e41 /kaddressbook
parent85a0e0d9b1d60805cb4947be1c296c18e73c82b8 (diff)
downloadkdepimpi-bb82cac85cc196b3f60921ab27e84204036b54b8.zip
kdepimpi-bb82cac85cc196b3f60921ab27e84204036b54b8.tar.gz
kdepimpi-bb82cac85cc196b3f60921ab27e84204036b54b8.tar.bz2
sync fixes
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index ea87929..b0cb986 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2492,54 +2492,54 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2492 bool syncOK = true; 2492 bool syncOK = true;
2493 int addedAddressee = 0; 2493 int addedAddressee = 0;
2494 int addedAddresseeR = 0; 2494 int addedAddresseeR = 0;
2495 int deletedAddresseeR = 0; 2495 int deletedAddresseeR = 0;
2496 int deletedAddresseeL = 0; 2496 int deletedAddresseeL = 0;
2497 int changedLocal = 0; 2497 int changedLocal = 0;
2498 int changedRemote = 0; 2498 int changedRemote = 0;
2499 2499
2500 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2500 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2501 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2501 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2502 2502
2503 //QPtrList<Addressee> el = local->rawAddressees(); 2503 //QPtrList<Addressee> el = local->rawAddressees();
2504 Addressee addresseeR; 2504 Addressee addresseeR;
2505 QString uid; 2505 QString uid;
2506 int take; 2506 int take;
2507 Addressee addresseeL; 2507 Addressee addresseeL;
2508 Addressee addresseeRSync; 2508 Addressee addresseeRSync;
2509 Addressee addresseeLSync; 2509 Addressee addresseeLSync;
2510 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2510 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2511 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2511 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2512 bool fullDateRange = false; 2512 bool fullDateRange = false;
2513 local->resetTempSyncStat(); 2513 local->resetTempSyncStat();
2514 mLastAddressbookSync = QDateTime::currentDateTime(); 2514 mLastAddressbookSync = QDateTime::currentDateTime();
2515 if ( syncManager->syncWithDesktop() ) { 2515 if ( syncManager->syncWithDesktop() ) {
2516 remote->removeSyncInfo( QString());//remove all info 2516 // remote->removeSyncInfo( QString());//remove all info
2517 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2517 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2518 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2518 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2519 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2519 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2520 } else { 2520 } else {
2521 qDebug("ERROR: KSyncManager::mRequestedSyncEvent has invalid datatime "); 2521 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
2522 } 2522 }
2523 } 2523 }
2524 QDateTime modifiedCalendar = mLastAddressbookSync; 2524 QDateTime modifiedCalendar = mLastAddressbookSync;
2525 addresseeLSync = getLastSyncAddressee(); 2525 addresseeLSync = getLastSyncAddressee();
2526 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2526 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2527 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2527 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2528 if ( !addresseeR.isEmpty() ) { 2528 if ( !addresseeR.isEmpty() ) {
2529 addresseeRSync = addresseeR; 2529 addresseeRSync = addresseeR;
2530 remote->removeAddressee(addresseeR ); 2530 remote->removeAddressee(addresseeR );
2531 2531
2532 } else { 2532 } else {
2533 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2533 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2534 addresseeRSync = addresseeLSync ; 2534 addresseeRSync = addresseeLSync ;
2535 } else { 2535 } else {
2536 qDebug("FULLDATE 1"); 2536 qDebug("FULLDATE 1");
2537 fullDateRange = true; 2537 fullDateRange = true;
2538 Addressee newAdd; 2538 Addressee newAdd;
2539 addresseeRSync = newAdd; 2539 addresseeRSync = newAdd;
2540 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2540 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2541 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2541 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2542 addresseeRSync.setRevision( mLastAddressbookSync ); 2542 addresseeRSync.setRevision( mLastAddressbookSync );
2543 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2543 addresseeRSync.setCategories( i18n("SyncAddressee") );
2544 } 2544 }
2545 } 2545 }
@@ -2599,49 +2599,50 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2599 //inR.setResource( 0 ); 2599 //inR.setResource( 0 );
2600 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2600 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2601 if ( !inL.resource() || inL.resource()->includeInSync() ) { 2601 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2602 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { 2602 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2603 //qDebug("take %d %s ", take, inL.summary().latin1()); 2603 //qDebug("take %d %s ", take, inL.summary().latin1());
2604 if ( take == 3 ) 2604 if ( take == 3 )
2605 return false; 2605 return false;
2606 if ( take == 1 ) {// take local 2606 if ( take == 1 ) {// take local
2607 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2607 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2608 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2608 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2609 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2609 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2610 local->insertAddressee( inL, false ); 2610 local->insertAddressee( inL, false );
2611 idS = inR.externalUID(); 2611 idS = inR.externalUID();
2612 OidS = inR.originalExternalUID(); 2612 OidS = inR.originalExternalUID();
2613 } 2613 }
2614 else 2614 else
2615 idS = inR.IDStr(); 2615 idS = inR.IDStr();
2616 remote->removeAddressee( inR ); 2616 remote->removeAddressee( inR );
2617 inR = inL; 2617 inR = inL;
2618 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2618 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2619 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2619 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2620 inR.setOriginalExternalUID( OidS ); 2620 inR.setOriginalExternalUID( OidS );
2621 inR.setExternalUID( idS ); 2621 inR.setExternalUID( idS );
2622 if ( syncManager->syncWithDesktop() ) 2622 if ( syncManager->syncWithDesktop() )
2623 inR.setIDStr( "changed" ); 2623 inR.setIDStr("changed" );
2624 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" );
2624 } else { 2625 } else {
2625 inR.setIDStr( idS ); 2626 inR.setIDStr( idS );
2626 } 2627 }
2627 inR.setResource( 0 ); 2628 inR.setResource( 0 );
2628 remote->insertAddressee( inR , false); 2629 remote->insertAddressee( inR , false);
2629 ++changedRemote; 2630 ++changedRemote;
2630 } else { // take == 2 take remote 2631 } else { // take == 2 take remote
2631 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2632 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2632 if ( inR.revision().date().year() < 2004 ) 2633 if ( inR.revision().date().year() < 2004 )
2633 inR.setRevision( modifiedCalendar ); 2634 inR.setRevision( modifiedCalendar );
2634 } 2635 }
2635 idS = inL.IDStr(); 2636 idS = inL.IDStr();
2636 local->removeAddressee( inL ); 2637 local->removeAddressee( inL );
2637 inL = inR; 2638 inL = inR;
2638 inL.setIDStr( idS ); 2639 inL.setIDStr( idS );
2639 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2640 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2640 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2641 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2641 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2642 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2642 } 2643 }
2643 inL.setResource( 0 ); 2644 inL.setResource( 0 );
2644 local->insertAddressee( inL , false ); 2645 local->insertAddressee( inL , false );
2645 ++changedLocal; 2646 ++changedLocal;
2646 } 2647 }
2647 } 2648 }
@@ -2791,128 +2792,129 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
2791 if ( external ) { 2792 if ( external ) {
2792 qDebug("Setting vcf mode to external "); 2793 qDebug("Setting vcf mode to external ");
2793 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2794 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2794 AddressBook::Iterator it; 2795 AddressBook::Iterator it;
2795 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2796 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2796 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 2797 (*it).setID( mCurrentSyncDevice, (*it).uid() );
2797 (*it).computeCsum( mCurrentSyncDevice ); 2798 (*it).computeCsum( mCurrentSyncDevice );
2798 } 2799 }
2799 } 2800 }
2800 } 2801 }
2801 //AddressBook::Iterator it; 2802 //AddressBook::Iterator it;
2802 //QStringList vcards; 2803 //QStringList vcards;
2803 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2804 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2804 // qDebug("Name %s ", (*it).familyName().latin1()); 2805 // qDebug("Name %s ", (*it).familyName().latin1());
2805 //} 2806 //}
2806 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2807 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2807 if ( syncOK ) { 2808 if ( syncOK ) {
2808 if ( syncManager->mWriteBackFile ) 2809 if ( syncManager->mWriteBackFile )
2809 { 2810 {
2810 if ( external ) 2811 if ( external )
2811 abLocal.removeSyncAddressees( !isXML); 2812 abLocal.removeSyncAddressees( !isXML);
2812 qDebug("Saving remote AB "); 2813 qDebug("Saving remote AB ");
2813 if ( ! abLocal.saveAB()) 2814 if ( ! abLocal.saveAB())
2814 qDebug("Error writing back AB to file "); 2815 qDebug("Error writing back AB to file ");
2815 if ( isXML ) { 2816 if ( external ) {
2816 // afterwrite processing 2817 // afterwrite processing
2817 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2818 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
2818 } 2819 }
2819 } 2820 }
2820 } 2821 }
2821 setModified(); 2822 setModified();
2822 2823
2823 } 2824 }
2824 if ( syncOK ) 2825 if ( syncOK )
2825 mViewManager->refreshView(); 2826 mViewManager->refreshView();
2826 return syncOK; 2827 return syncOK;
2827 2828
2828} 2829}
2829void KABCore::removeSyncInfo( QString syncProfile) 2830void KABCore::removeSyncInfo( QString syncProfile)
2830{ 2831{
2831 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 2832 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1());
2832 mAddressBook->removeSyncInfo( syncProfile ); 2833 mAddressBook->removeSyncInfo( syncProfile );
2834 setModified();
2833} 2835}
2834 2836
2835 2837
2836//this is a overwritten callbackmethods from the syncinterface 2838//this is a overwritten callbackmethods from the syncinterface
2837bool KABCore::syncExternal(KSyncManager* manager, QString resource) 2839bool KABCore::syncExternal(KSyncManager* manager, QString resource)
2838{ 2840{
2839 if ( resource == "phone" ) 2841 if ( resource == "phone" )
2840 return syncPhone(); 2842 return syncPhone();
2841 disableBR( true ); 2843 disableBR( true );
2842 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 2844 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
2843 2845
2844 AddressBook abLocal( resource,"syncContact"); 2846 AddressBook abLocal( resource,"syncContact");
2845 bool syncOK = false; 2847 bool syncOK = false;
2846 if ( abLocal.load() ) { 2848 if ( abLocal.load() ) {
2847 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 2849 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
2848 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2850 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2849 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 2851 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
2850 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2852 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
2851 if ( syncOK ) { 2853 if ( syncOK ) {
2852 if ( syncManager->mWriteBackFile ) { 2854 if ( syncManager->mWriteBackFile ) {
2853 abLocal.removeSyncAddressees( false ); 2855 abLocal.removeSyncAddressees( false );
2854 abLocal.saveAB(); 2856 abLocal.saveAB();
2855 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2857 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
2856 } 2858 }
2857 } 2859 }
2858 setModified(); 2860 setModified();
2859 } 2861 }
2860 if ( syncOK ) 2862 if ( syncOK )
2861 mViewManager->refreshView(); 2863 mViewManager->refreshView();
2862 disableBR( false ); 2864 disableBR( false );
2863 return syncOK; 2865 return syncOK;
2864 2866
2865} 2867}
2866void KABCore::message( QString m ) 2868void KABCore::message( QString m )
2867{ 2869{
2868 topLevelWidget()->setCaption( m ); 2870 topLevelWidget()->setCaption( m );
2869 mMessageTimer->start( 15000, true ); 2871 mMessageTimer->start( 15000, true );
2870} 2872}
2871bool KABCore::syncPhone() 2873bool KABCore::syncPhone()
2872{ 2874{
2873 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2875 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2874 QString fileName = getPhoneFile(); 2876 QString fileName = getPhoneFile();
2875 if ( !PhoneAccess::readFromPhone( fileName) ) { 2877 if ( !PhoneAccess::readFromPhone( fileName) ) {
2876 message(i18n("Phone access failed!")); 2878 message(i18n("Phone access failed!"));
2877 return false; 2879 return false;
2878 } 2880 }
2879 AddressBook abLocal( fileName,"syncContact"); 2881 AddressBook abLocal( fileName,"syncContact");
2880 bool syncOK = false; 2882 bool syncOK = false;
2881 { 2883 {
2882 abLocal.importFromFile( fileName ); 2884 abLocal.importFromFile( fileName );
2883 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 2885 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
2884 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2886 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2885 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 2887 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
2886 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 2888 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
2887 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2889 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
2888 if ( syncOK ) { 2890 if ( syncOK ) {
2889 if ( syncManager->mWriteBackFile ) { 2891 if ( syncManager->mWriteBackFile ) {
2890 abLocal.removeSyncAddressees( true ); 2892 abLocal.removeSyncAddressees( true );
2891 abLocal.saveABphone( fileName ); 2893 abLocal.saveABphone( fileName );
2892 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 2894 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
2893 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 2895 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
2894 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2896 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
2895 } 2897 }
2896 } 2898 }
2897 setModified(); 2899 setModified();
2898 } 2900 }
2899 if ( syncOK ) 2901 if ( syncOK )
2900 mViewManager->refreshView(); 2902 mViewManager->refreshView();
2901 return syncOK; 2903 return syncOK;
2902} 2904}
2903void KABCore::getFile( bool success ) 2905void KABCore::getFile( bool success )
2904{ 2906{
2905 if ( ! success ) { 2907 if ( ! success ) {
2906 message( i18n("Error receiving file. Nothing changed!") ); 2908 message( i18n("Error receiving file. Nothing changed!") );
2907 return; 2909 return;
2908 } 2910 }
2909 int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); 2911 int count = mAddressBook->importFromFile( sentSyncFile() , false, true );
2910 if ( count ) 2912 if ( count )
2911 setModified( true ); 2913 setModified( true );
2912 message( i18n("Pi-Sync successful!") ); 2914 message( i18n("Pi-Sync successful!") );
2913 mViewManager->refreshView(); 2915 mViewManager->refreshView();
2914} 2916}
2915void KABCore::syncFileRequest() 2917void KABCore::syncFileRequest()
2916{ 2918{
2917 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { 2919 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) {
2918 syncManager->slotSyncMenu( 999 ); 2920 syncManager->slotSyncMenu( 999 );