-rw-r--r-- | kabc/addressbook.cpp | 133 |
1 files changed, 97 insertions, 36 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index 16e1653..ec9f893 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -236,2 +236,3 @@ void AddressBook::init(const QString &config, const QString &family ) { + blockLSEchange = false; d = new AddressBookData; @@ -347,2 +348,3 @@ bool AddressBook::load() + blockLSEchange = true; return ok; @@ -449,38 +451,57 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev ) { - Addressee::List::Iterator it; - for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { - if ( a.uid() == (*it).uid() ) { - if ( setRev && (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { - return; - } - bool changed = false; - Addressee addr = a; - if ( addr != (*it) ) - changed = true; - - (*it) = a; - if ( (*it).resource() == 0 ) - (*it).setResource( standardResource() ); - - if ( changed ) { - if ( setRev ) { + if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { + return; + } + bool found = false; + Addressee::List::Iterator it; + for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { + if ( a.uid() == (*it).uid() ) { + + bool changed = false; + Addressee addr = a; + if ( addr != (*it) ) + changed = true; + + (*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).setChanged( true ); - } - - return; + // 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).setChanged( true ); + } + + found = true; + } else { + if ( (*it).uid() == 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 ); + } + } + } + } } - } - d->mAddressees.append( a ); - Addressee& addr = d->mAddressees.last(); - if ( addr.resource() == 0 ) - addr.setResource( standardResource() ); + if ( found ) + return; + d->mAddressees.append( a ); + Addressee& addr = d->mAddressees.last(); + if ( addr.resource() == 0 ) + addr.setResource( standardResource() ); - addr.setChanged( true ); + addr.setChanged( true ); } @@ -490,8 +511,46 @@ void AddressBook::removeAddressee( const Addressee &a ) Iterator it; + Iterator it2; + bool found = false; for ( it = begin(); it != end(); ++it ) { if ( a.uid() == (*it).uid() ) { - removeAddressee( it ); - return; + found = true; + it2 = it; + } else { + if ( (*it).uid() == QString("last-syncAddressee-") ) { + QString name = (*it).uid().mid( 19 ); + Addressee b = a; + QString id = b.getID( name ); + if ( ! id.isEmpty() ) { + QString des = (*it).note(); + if( des.find( id ) < 0 ) { + des += id + ","; + (*it).setNote( des ); + } + } + } + } } + + if ( found ) + removeAddressee( it2 ); + +} + +void AddressBook::removeDeletedAddressees() +{ + deleteRemovedAddressees(); + Iterator it = begin(); + Iterator it2 ; + QDateTime dt ( QDate( 2004,1,1) ); + while ( it != end() ) { + (*it).setRevision( dt ); + if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { + it2 = it; + ++it; + removeAddressee( it2 ); + } else + ++it; + } + deleteRemovedAddressees(); } @@ -525,2 +584,3 @@ Addressee AddressBook::findByUid( const QString &uid ) } +#if 0 Addressee::List AddressBook::getExternLastSyncAddressees() @@ -532,3 +592,3 @@ Addressee::List AddressBook::getExternLastSyncAddressees() if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { - if ( (*it).familyName().left(3) == "E: " ) + if ( (*it).familyName().left(4) == "!E: " ) results.append( *it ); @@ -539,2 +599,3 @@ Addressee::List AddressBook::getExternLastSyncAddressees() } +#endif void AddressBook::resetTempSyncStat() |