author | zautrix <zautrix> | 2004-10-29 09:03:54 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-29 09:03:54 (UTC) |
commit | 6500d6ebb080f1de58fe676aa0a730d47fcf64f5 (patch) (side-by-side diff) | |
tree | 41841e05bf1e6b88e6e55f42011dce5f6bed85b4 /kabc | |
parent | 41e3625b8c38ff45e70b59416a519d59a5f4d937 (diff) | |
download | kdepimpi-6500d6ebb080f1de58fe676aa0a730d47fcf64f5.zip kdepimpi-6500d6ebb080f1de58fe676aa0a730d47fcf64f5.tar.gz kdepimpi-6500d6ebb080f1de58fe676aa0a730d47fcf64f5.tar.bz2 |
sync fixes
-rw-r--r-- | kabc/addressbook.cpp | 24 | ||||
-rw-r--r-- | kabc/addressee.cpp | 23 |
2 files changed, 27 insertions, 20 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index 6194d6d..4c4ae09 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -553,25 +553,24 @@ void AddressBook::smplifyAddressees() (*ait).simplifyAddresses(); } } void AddressBook::removeSyncInfo( QString syncProfile) { Iterator ait; for ( ait = begin(); ait != end(); ++ait ) { (*ait).removeID( syncProfile ); } if ( syncProfile.isEmpty() ) { Iterator it = begin(); Iterator it2 ; - QDateTime dt ( QDate( 2004,1,1) ); while ( it != end() ) { if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { it2 = it; //qDebug("removing %s ",(*it).uid().latin1() ); ++it; removeAddressee( it2 ); } else { //qDebug("skipping %s ",(*it).uid().latin1() ); ++it; } } } else { @@ -777,59 +776,54 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeRes if ( takeResource ) { Resource * res = (*it).resource(); (*it) = a; (*it).setResource( res ); } else { (*it) = a; if ( (*it).resource() == 0 ) (*it).setResource( standardResource() ); } if ( changed ) { if ( setRev ) { - - // get rid of micro seconds - QDateTime dt = QDateTime::currentDateTime(); - QTime t = dt.time(); - dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); - (*it).setRevision( dt ); + (*it).setRevision( QDateTime::currentDateTime() ); } (*it).setChanged( true ); } found = true; } else { if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { QString name = (*it).uid().mid( 19 ); Addressee b = a; QString id = b.getID( name ); if ( ! id.isEmpty() ) { QString des = (*it).note(); int startN; if( (startN = des.find( id ) ) >= 0 ) { int endN = des.find( ",", startN+1 ); des = des.left( startN ) + des.mid( endN+1 ); (*it).setNote( des ); } } } } } if ( found ) return; + d->mAddressees.append( a ); Addressee& addr = d->mAddressees.last(); if ( addr.resource() == 0 ) addr.setResource( standardResource() ); - addr.setChanged( true ); } void AddressBook::removeAddressee( const Addressee &a ) { Iterator it; Iterator it2; bool found = false; for ( it = begin(); it != end(); ++it ) { if ( a.uid() == (*it).uid() ) { found = true; it2 = it; @@ -850,45 +844,43 @@ void AddressBook::removeAddressee( const Addressee &a ) } } if ( found ) removeAddressee( it2 ); } void AddressBook::removeSyncAddressees( bool removeDeleted ) { Iterator it = begin(); Iterator it2 ; - QDateTime dt ( QDate( 2004,1,1) ); + QDateTime dt ( QDate( 2003,1,1) ); while ( it != end() ) { (*it).setRevision( dt ); if (( *it).IDStr() != "changed" ) { // "changed" is used for tagging changed addressees when syncing with KDE or OL (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); - (*it).setIDStr(""); + (*it).setIDStr(":"); } if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { it2 = it; //qDebug("removing %s ",(*it).uid().latin1() ); ++it; removeAddressee( it2 ); } else { //qDebug("skipping %s ",(*it).uid().latin1() ); if ( removeDeleted ) { // we have no postprocessing in the resource, we have to do it here // we have to compute csum for all, because it could be the first sync (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); - - } ++it; } } deleteRemovedAddressees(); } void AddressBook::removeAddressee( const Iterator &it ) { d->mRemovedAddressees.append( (*it) ); d->mAddressees.remove( it.d->mIt ); } @@ -922,38 +914,40 @@ void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool i (*it).setID( csd, (*it).externalUID() ); (*it).computeCsum( csd ); } mergeAB( aBook ,csd, isSubset ); } void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID) { //qDebug("AddressBook::postExternSync "); AddressBook::Iterator it; for ( it = begin(); it != end(); ++it ) { //qDebug("check uid %s ", (*it).uid().latin1() ); if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || - (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) { + (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM || + (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL) { Addressee ad = aBook->findByUid( ( (*it).uid() )); if ( ad.isEmpty() ) { qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1()); } else { (*it).setIDStr(":"); - (*it).computeCsum( csd ); if ( setID ) { if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) ad.setID( csd, (*it).externalUID() ); } else ad.setID( csd, (*it).uid() ); + (*it).computeCsum( csd ); ad.setCsum( csd, (*it).getCsum( csd ) ); - aBook->insertAddressee( ad ); + //qDebug("CSUM %s ",(*it).getCsum( csd ).latin1() ); + aBook->insertAddressee( ad , false); } } } } bool AddressBook::containsExternalUid( const QString& uid ) { Iterator it; for ( it = begin(); it != end(); ++it ) { if ( uid == (*it).externalUID( ) ) return true; } diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index d5a110a..3d4992c 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp @@ -200,29 +200,29 @@ ulong Addressee::getCsum4List( const QStringList & attList) } } //QString dump = attList.join(","); //qDebug("csum: %d %s", cSum,dump.latin1()); return cSum; } void Addressee::computeCsum(const QString &dev) { QStringList l; - if ( !mData->name.isEmpty() ) l.append(mData->name); - if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); + //if ( !mData->name.isEmpty() ) l.append(mData->name); + //if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); if ( !mData->familyName.isEmpty() ) l.append( mData->familyName ); if ( !mData->givenName.isEmpty() ) l.append(mData->givenName ); - if ( !mData->additionalName ) l.append( mData->additionalName ); + if ( !mData->additionalName.isEmpty() ) l.append( mData->additionalName ); if ( !mData->prefix.isEmpty() ) l.append( mData->prefix ); if ( !mData->suffix.isEmpty() ) l.append( mData->suffix ); if ( !mData->nickName.isEmpty() ) l.append( mData->nickName ); if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() ); if ( !mData->mailer.isEmpty() ) l.append( mData->mailer ); if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() ); if ( mData->geo.isValid() ) l.append( mData->geo.asString() ); if ( !mData->title .isEmpty() ) l.append( mData->title ); if ( !mData->role.isEmpty() ) l.append( mData->role ); if ( !mData->organization.isEmpty() ) l.append( mData->organization ); if ( !mData->note.isEmpty() ) l.append( mData->note ); if ( !mData->productId.isEmpty() ) l.append(mData->productId ); @@ -247,35 +247,45 @@ void Addressee::computeCsum(const QString &dev) l.append( t[iii] ); t = mData->emails; t.sort(); for ( iii = 0; iii < t.count(); ++iii) l.append( t[iii] ); t = mData->categories; t.sort(); for ( iii = 0; iii < t.count(); ++iii) l.append( t[iii] ); t = mData->custom; t.sort(); for ( iii = 0; iii < t.count(); ++iii) + if ( t[iii].left( 25 ) != "KADDRESSBOOK-X-ExternalID" ) { + int find = t[iii].find (':')+1; + //qDebug("lennnn %d %d ", find, t[iii].length()); + if ( find < t[iii].length()) l.append( t[iii] ); + + } KABC::Address::List::Iterator addressIter; for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); ++addressIter ) { t = (*addressIter).asList(); t.sort(); for ( iii = 0; iii < t.count(); ++iii) l.append( t[iii] ); } uint cs = getCsum4List(l); - //qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); +#if 1 + for ( iii = 0; iii < l.count(); ++iii) + qDebug("%d***%s***",iii,l[iii].latin1()); + qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); +#endif setCsum( dev, QString::number (cs )); } void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) { detach(); if ( mData->name.isEmpty() ) mData->name = ad.mData->name; if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName; if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ; if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName; @@ -1102,25 +1112,28 @@ QString Addressee::productId() const QString Addressee::productIdLabel() { return i18n("Product Identifier"); } void Addressee::setRevision( const QDateTime &revision ) { if ( revision == mData->revision ) return; detach(); mData->empty = false; - mData->revision = revision; + mData->revision = QDateTime( revision.date(), + QTime (revision.time().hour(), + revision.time().minute(), + revision.time().second())); } QDateTime Addressee::revision() const { return mData->revision; } QString Addressee::revisionLabel() { return i18n("Revision Date"); } |