summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp5
-rw-r--r--kabc/addressbook.h2
-rw-r--r--kabc/addressee.cpp1
-rw-r--r--kaddressbook/kabcore.cpp200
-rw-r--r--kaddressbook/kabcore.h1
5 files changed, 171 insertions, 38 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 6e8d027..3ec0795 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -447,3 +447,3 @@ Ticket *AddressBook::requestSaveTicket( Resource *resource )
447 447
448void AddressBook::insertAddressee( const Addressee &a ) 448void AddressBook::insertAddressee( const Addressee &a, bool setRev )
449{ 449{
@@ -462,3 +462,4 @@ void AddressBook::insertAddressee( const Addressee &a )
462 if ( changed ) { 462 if ( changed ) {
463 (*it).setRevision( QDateTime::currentDateTime() ); 463 if ( setRev )
464 (*it).setRevision( QDateTime::currentDateTime() );
464 (*it).setChanged( true ); 465 (*it).setChanged( true );
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index 650a638..253de68 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -175,3 +175,3 @@ class AddressBook : public QObject
175 */ 175 */
176 void insertAddressee( const Addressee & ); 176 void insertAddressee( const Addressee &, bool setRev = true );
177 177
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index fb32f6e..7f04d8f 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -95,2 +95,3 @@ Addressee::Addressee()
95 mData->mExternalId = ":"; 95 mData->mExternalId = ":";
96 mData->revision = QDateTime ( QDate( 2004,1,1));
96 mTempSyncStat = SYNC_TEMPSTATE_INITIAL; 97 mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index f497541..226d5e4 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2525,3 +2525,4 @@ KABC::Addressee KABCore::getLastSyncAddressee()
2525 if (lse.isEmpty()) { 2525 if (lse.isEmpty()) {
2526 lse.setUid( "last-syncEvent-"+mCurrentSyncDevice ); 2526 qDebug("Creating new last-syncAddressee ");
2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2527 QString sum = ""; 2528 QString sum = "";
@@ -2536,3 +2537,136 @@ KABC::Addressee KABCore::getLastSyncAddressee()
2536} 2537}
2537 2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2539{
2540
2541 //void setZaurusId(int id);
2542 // int zaurusId() const;
2543 // void setZaurusUid(int id);
2544 // int zaurusUid() const;
2545 // void setZaurusStat(int id);
2546 // int zaurusStat() const;
2547 // 0 equal
2548 // 1 take local
2549 // 2 take remote
2550 // 3 cancel
2551 QDateTime lastSync = mLastAddressbookSync;
2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2553 bool remCh, locCh;
2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2555 //if ( remCh )
2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2557 locCh = ( local->revision() > mLastAddressbookSync );
2558 if ( !remCh && ! locCh ) {
2559 //qDebug("both not changed ");
2560 lastSync = local->revision().addDays(1);
2561 } else {
2562 if ( locCh ) {
2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1());
2564 lastSync = local->revision().addDays( -1 );
2565 if ( !remCh )
2566 remote->setRevision( lastSync.addDays( -1 ) );
2567 } else {
2568 //qDebug(" not loc changed ");
2569 lastSync = local->revision().addDays( 1 );
2570 if ( remCh )
2571 remote->setRevision( lastSync.addDays( 1 ) );
2572
2573 }
2574 }
2575 full = true;
2576 if ( mode < SYNC_PREF_ASK )
2577 mode = SYNC_PREF_ASK;
2578 } else {
2579 if ( local->revision() == remote->revision() )
2580 return 0;
2581
2582 }
2583 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
2584
2585 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
2586 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
2587 //full = true; //debug only
2588 if ( full ) {
2589 bool equ = ( (*local) == (*remote) );
2590 if ( equ ) {
2591 //qDebug("equal ");
2592 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2593 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2594 }
2595 if ( mode < SYNC_PREF_FORCE_LOCAL )
2596 return 0;
2597
2598 }//else //debug only
2599 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2600 }
2601 int result;
2602 bool localIsNew;
2603 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2604
2605 if ( full && mode < SYNC_PREF_NEWEST )
2606 mode = SYNC_PREF_ASK;
2607
2608 switch( mode ) {
2609 case SYNC_PREF_LOCAL:
2610 if ( lastSync > remote->revision() )
2611 return 1;
2612 if ( lastSync > local->revision() )
2613 return 2;
2614 return 1;
2615 break;
2616 case SYNC_PREF_REMOTE:
2617 if ( lastSync > remote->revision() )
2618 return 1;
2619 if ( lastSync > local->revision() )
2620 return 2;
2621 return 2;
2622 break;
2623 case SYNC_PREF_NEWEST:
2624 if ( local->revision() > remote->revision() )
2625 return 1;
2626 else
2627 return 2;
2628 break;
2629 case SYNC_PREF_ASK:
2630 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2631 if ( lastSync > remote->revision() )
2632 return 1;
2633 if ( lastSync > local->revision() )
2634 return 2;
2635 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2636 localIsNew = local->revision() >= remote->revision();
2637#if 0
2638 if ( localIsNew )
2639 getEventViewerDialog()->setColorMode( 1 );
2640 else
2641 getEventViewerDialog()->setColorMode( 2 );
2642 getEventViewerDialog()->setIncidence(local);
2643 if ( localIsNew )
2644 getEventViewerDialog()->setColorMode( 2 );
2645 else
2646 getEventViewerDialog()->setColorMode( 1 );
2647 getEventViewerDialog()->addIncidence(remote);
2648 getEventViewerDialog()->setColorMode( 0 );
2649 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
2650 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
2651 getEventViewerDialog()->showMe();
2652 result = getEventViewerDialog()->executeS( localIsNew );
2653#endif
2654 qDebug("conflict! ************************************** ");
2655 result = 1;
2656 return result;
2657
2658 break;
2659 case SYNC_PREF_FORCE_LOCAL:
2660 return 1;
2661 break;
2662 case SYNC_PREF_FORCE_REMOTE:
2663 return 2;
2664 break;
2665
2666 default:
2667 // SYNC_PREF_TAKE_BOTH not implemented
2668 break;
2669 }
2670 return 0;
2671}
2538bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2672bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
@@ -2560,2 +2694,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2560 addresseeLSync = getLastSyncAddressee(); 2694 addresseeLSync = getLastSyncAddressee();
2695 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2561 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2696 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
@@ -2569,2 +2704,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2569 } else { 2704 } else {
2705 qDebug("FULLDATE 1");
2570 fullDateRange = true; 2706 fullDateRange = true;
@@ -2578,4 +2714,6 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2578 } 2714 }
2579 if ( addresseeLSync.revision() == mLastAddressbookSync ) 2715 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2716 qDebug("FULLDATE 2");
2580 fullDateRange = true; 2717 fullDateRange = true;
2718 }
2581 if ( ! fullDateRange ) { 2719 if ( ! fullDateRange ) {
@@ -2586,2 +2724,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2586 fullDateRange = true; 2724 fullDateRange = true;
2725 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2587 } 2726 }
@@ -2636,4 +2775,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2636 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2775 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2637 // pending if ( (take = takeAddressee( inL, inR, mode, fullDateRange )) > 0 ) { 2776 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2638 if ( true ) {
2639 //qDebug("take %d %s ", take, inL.summary().latin1()); 2777 //qDebug("take %d %s ", take, inL.summary().latin1());
@@ -2644,3 +2782,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2644 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2782 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2645 local->insertAddressee( inL ); 2783 local->insertAddressee( inL, false );
2646 } 2784 }
@@ -2654,3 +2792,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2654 inR.setResource( 0 ); 2792 inR.setResource( 0 );
2655 remote->insertAddressee( inR ); 2793 remote->insertAddressee( inR , false);
2656 ++changedRemote; 2794 ++changedRemote;
@@ -2662,3 +2800,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2662 inL.setResource( 0 ); 2800 inL.setResource( 0 );
2663 local->insertAddressee( inL ); 2801 local->insertAddressee( inL , false );
2664 ++changedLocal; 2802 ++changedLocal;
@@ -2675,6 +2813,6 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2675 inR.setRevision( modifiedCalendar ); 2813 inR.setRevision( modifiedCalendar );
2676 remote->insertAddressee( inR ); 2814 remote->insertAddressee( inR, false );
2677 inL = inR; 2815 inL = inR;
2678 inL.setResource( 0 ); 2816 inL.setResource( 0 );
2679 local->insertAddressee( inL ); 2817 local->insertAddressee( inL , false);
2680 ++addedAddressee; 2818 ++addedAddressee;
@@ -2684,5 +2822,5 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2684 inR.setRevision( modifiedCalendar ); 2822 inR.setRevision( modifiedCalendar );
2685 remote->insertAddressee( inR ); 2823 remote->insertAddressee( inR, false );
2686 inR.setResource( 0 ); 2824 inR.setResource( 0 );
2687 local->insertAddressee( inR ); 2825 local->insertAddressee( inR, false );
2688 ++addedAddressee; 2826 ++addedAddressee;
@@ -2733,3 +2871,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2733 inL.setRevision( modifiedCalendar ); 2871 inL.setRevision( modifiedCalendar );
2734 local->insertAddressee( inL ); 2872 local->insertAddressee( inL, false );
2735 inR = inL; 2873 inR = inL;
@@ -2737,3 +2875,3 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2737 inR.setResource( 0 ); 2875 inR.setResource( 0 );
2738 remote->insertAddressee( inR ); 2876 remote->insertAddressee( inR, false );
2739 } 2877 }
@@ -2749,6 +2887,6 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2749 inL.setRevision( modifiedCalendar ); 2887 inL.setRevision( modifiedCalendar );
2750 local->insertAddressee( inL ); 2888 local->insertAddressee( inL, false );
2751 inR = inL; 2889 inR = inL;
2752 inR.setResource( 0 ); 2890 inR.setResource( 0 );
2753 remote->insertAddressee( inR ); 2891 remote->insertAddressee( inR, false );
2754 } 2892 }
@@ -2761,5 +2899,4 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2761 el.clear(); 2899 el.clear();
2762 int delFut = 0;
2763 2900
2764 #if 0 2901
2765 2902
@@ -2769,15 +2906,10 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2769 addresseeRSync.setRevision( mLastAddressbookSync ); 2906 addresseeRSync.setRevision( mLastAddressbookSync );
2770 addresseeRSync.setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 2907 addresseeRSync.setGivenName( i18n("Remote from: ")+mCurrentSyncName ) ;
2771 addresseeLSync.setLocation(i18n("Local from: ") + mCurrentSyncName ); 2908 addresseeLSync.setGivenName(i18n("Local from: ") + mCurrentSyncName );
2772 addresseeLSync.setReadOnly( true );
2773 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2909 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2774 remote->addAddressee( addresseeRSync ); 2910 remote->insertAddressee( addresseeRSync, false );
2911 local->insertAddressee( addresseeLSync, false );
2775 QString mes; 2912 QString mes;
2776 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 ); 2913 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 );
2777 QString delmess; 2914 if ( KABPrefs::instance()->mShowSyncSummary ) {
2778 if ( delFut ) {
2779 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture );
2780 mes += delmess;
2781 }
2782 if ( KOPrefs::instance()->mShowSyncSummary ) {
2783 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 2915 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
@@ -2785,7 +2917,5 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2785 qDebug( mes ); 2917 qDebug( mes );
2786 mCalendar->checkAlarmForIncidence( 0, true );
2787 return syncOK; 2918 return syncOK;
2788#endif
2789 return false;
2790} 2919}
2920
2791bool KABCore::syncAB(QString filename, int mode) 2921bool KABCore::syncAB(QString filename, int mode)
@@ -2801,6 +2931,6 @@ bool KABCore::syncAB(QString filename, int mode)
2801 AddressBook::Iterator it; 2931 AddressBook::Iterator it;
2802 QStringList vcards; 2932 //QStringList vcards;
2803 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2933 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2804 qDebug("Name %s ", (*it).familyName().latin1()); 2934 // qDebug("Name %s ", (*it).familyName().latin1());
2805 } 2935 //}
2806 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2936 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index c67cee6..f01f306 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -476,2 +476,3 @@ class KABCore : public QWidget
476 QDateTime mLastAddressbookSync; 476 QDateTime mLastAddressbookSync;
477 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full );
477 public slots: 478 public slots: