-rw-r--r-- | kaddressbook/kabcore.cpp | 36 |
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 | } |
2656 | bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) | 2656 | bool 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 | ||
2911 | bool KABCore::syncAB(QString filename, int mode) | 2911 | bool 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(); |