summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-09-19 20:27:44 (UTC)
committer zautrix <zautrix>2004-09-19 20:27:44 (UTC)
commit3da2cfeab2edbe64a17251662e56668fe143f7a3 (patch) (unidiff)
tree37e8d4445fca84bd4e93af38c96c5c489f9cbca8 /kabc
parentafa28a62314117555d6b32291188eedd1a576284 (diff)
downloadkdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.zip
kdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.tar.gz
kdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.tar.bz2
more AB sync
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp32
-rw-r--r--kabc/addressbook.h3
2 files changed, 35 insertions, 0 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 64832f1..86dc7c2 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -509,192 +509,224 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev )
509 } 509 }
510 } 510 }
511 } 511 }
512 } 512 }
513 } 513 }
514 if ( found ) 514 if ( found )
515 return; 515 return;
516 d->mAddressees.append( a ); 516 d->mAddressees.append( a );
517 Addressee& addr = d->mAddressees.last(); 517 Addressee& addr = d->mAddressees.last();
518 if ( addr.resource() == 0 ) 518 if ( addr.resource() == 0 )
519 addr.setResource( standardResource() ); 519 addr.setResource( standardResource() );
520 520
521 addr.setChanged( true ); 521 addr.setChanged( true );
522} 522}
523 523
524void AddressBook::removeAddressee( const Addressee &a ) 524void AddressBook::removeAddressee( const Addressee &a )
525{ 525{
526 Iterator it; 526 Iterator it;
527 Iterator it2; 527 Iterator it2;
528 bool found = false; 528 bool found = false;
529 for ( it = begin(); it != end(); ++it ) { 529 for ( it = begin(); it != end(); ++it ) {
530 if ( a.uid() == (*it).uid() ) { 530 if ( a.uid() == (*it).uid() ) {
531 found = true; 531 found = true;
532 it2 = it; 532 it2 = it;
533 } else { 533 } else {
534 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 534 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
535 QString name = (*it).uid().mid( 19 ); 535 QString name = (*it).uid().mid( 19 );
536 Addressee b = a; 536 Addressee b = a;
537 QString id = b.getID( name ); 537 QString id = b.getID( name );
538 if ( ! id.isEmpty() ) { 538 if ( ! id.isEmpty() ) {
539 QString des = (*it).note(); 539 QString des = (*it).note();
540 if( des.find( id ) < 0 ) { 540 if( des.find( id ) < 0 ) {
541 des += id + ","; 541 des += id + ",";
542 (*it).setNote( des ); 542 (*it).setNote( des );
543 } 543 }
544 } 544 }
545 } 545 }
546 546
547 } 547 }
548 } 548 }
549 549
550 if ( found ) 550 if ( found )
551 removeAddressee( it2 ); 551 removeAddressee( it2 );
552 552
553} 553}
554 554
555void AddressBook::removeDeletedAddressees() 555void AddressBook::removeDeletedAddressees()
556{ 556{
557 deleteRemovedAddressees(); 557 deleteRemovedAddressees();
558 Iterator it = begin(); 558 Iterator it = begin();
559 Iterator it2 ; 559 Iterator it2 ;
560 QDateTime dt ( QDate( 2004,1,1) ); 560 QDateTime dt ( QDate( 2004,1,1) );
561 while ( it != end() ) { 561 while ( it != end() ) {
562 (*it).setRevision( dt ); 562 (*it).setRevision( dt );
563 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); 563 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
564 (*it).setIDStr(""); 564 (*it).setIDStr("");
565 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { 565 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
566 it2 = it; 566 it2 = it;
567 //qDebug("removing %s ",(*it).uid().latin1() ); 567 //qDebug("removing %s ",(*it).uid().latin1() );
568 ++it; 568 ++it;
569 removeAddressee( it2 ); 569 removeAddressee( it2 );
570 } else { 570 } else {
571 //qDebug("skipping %s ",(*it).uid().latin1() ); 571 //qDebug("skipping %s ",(*it).uid().latin1() );
572 ++it; 572 ++it;
573 } 573 }
574 } 574 }
575 deleteRemovedAddressees(); 575 deleteRemovedAddressees();
576} 576}
577 577
578void AddressBook::removeAddressee( const Iterator &it ) 578void AddressBook::removeAddressee( const Iterator &it )
579{ 579{
580 d->mRemovedAddressees.append( (*it) ); 580 d->mRemovedAddressees.append( (*it) );
581 d->mAddressees.remove( it.d->mIt ); 581 d->mAddressees.remove( it.d->mIt );
582} 582}
583 583
584AddressBook::Iterator AddressBook::find( const Addressee &a ) 584AddressBook::Iterator AddressBook::find( const Addressee &a )
585{ 585{
586 Iterator it; 586 Iterator it;
587 for ( it = begin(); it != end(); ++it ) { 587 for ( it = begin(); it != end(); ++it ) {
588 if ( a.uid() == (*it).uid() ) { 588 if ( a.uid() == (*it).uid() ) {
589 return it; 589 return it;
590 } 590 }
591 } 591 }
592 return end(); 592 return end();
593} 593}
594 594
595Addressee AddressBook::findByUid( const QString &uid ) 595Addressee AddressBook::findByUid( const QString &uid )
596{ 596{
597 Iterator it; 597 Iterator it;
598 for ( it = begin(); it != end(); ++it ) { 598 for ( it = begin(); it != end(); ++it ) {
599 if ( uid == (*it).uid() ) { 599 if ( uid == (*it).uid() ) {
600 return *it; 600 return *it;
601 } 601 }
602 } 602 }
603 return Addressee(); 603 return Addressee();
604} 604}
605void AddressBook::preExternSync( AddressBook* aBook, const QString& csd )
606{
607 qDebug("AddressBook::preExternSync ");
608 AddressBook::Iterator it;
609 for ( it = begin(); it != end(); ++it ) {
610 (*it).setID( csd, (*it).externalUID() );
611 (*it).computeCsum( csd );
612 }
613 mergeAB( aBook ,csd );
614}
615void AddressBook::postExternSync( AddressBook* aBook , const QString& csd)
616{
617 qDebug("AddressBook::postExternSync ");
618 AddressBook::Iterator it;
619 for ( it = begin(); it != end(); ++it ) {
620 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
621 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) {
622 Addressee ad = aBook->findByUid( ( (*it).uid() ));
623 if ( ad.isEmpty() ) {
624 qDebug("ERROR ad empty ");
625 } else {
626 (*it).computeCsum( csd );
627 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
628 ad.setID( csd, (*it).externalUID() );
629 ad.setCsum( csd, (*it).getCsum( csd ) );
630 aBook->insertAddressee( ad );
631 }
632 }
633 }
634}
635
636
605Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) 637Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
606{ 638{
607 Iterator it; 639 Iterator it;
608 for ( it = begin(); it != end(); ++it ) { 640 for ( it = begin(); it != end(); ++it ) {
609 if ( uid == (*it).getID( profile ) ) 641 if ( uid == (*it).getID( profile ) )
610 return (*it); 642 return (*it);
611 } 643 }
612 return Addressee(); 644 return Addressee();
613} 645}
614void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) 646void AddressBook::mergeAB( AddressBook *aBook, const QString& profile )
615{ 647{
616 Iterator it; 648 Iterator it;
617 Addressee ad; 649 Addressee ad;
618 for ( it = begin(); it != end(); ++it ) { 650 for ( it = begin(); it != end(); ++it ) {
619 ad = aBook->findByExternUid( (*it).externalUID(), profile ); 651 ad = aBook->findByExternUid( (*it).externalUID(), profile );
620 if ( !ad.isEmpty() ) { 652 if ( !ad.isEmpty() ) {
621 (*it).mergeContact( ad ); 653 (*it).mergeContact( ad );
622 } 654 }
623 } 655 }
624} 656}
625 657
626#if 0 658#if 0
627Addressee::List AddressBook::getExternLastSyncAddressees() 659Addressee::List AddressBook::getExternLastSyncAddressees()
628{ 660{
629 Addressee::List results; 661 Addressee::List results;
630 662
631 Iterator it; 663 Iterator it;
632 for ( it = begin(); it != end(); ++it ) { 664 for ( it = begin(); it != end(); ++it ) {
633 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { 665 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
634 if ( (*it).familyName().left(4) == "!E: " ) 666 if ( (*it).familyName().left(4) == "!E: " )
635 results.append( *it ); 667 results.append( *it );
636 } 668 }
637 } 669 }
638 670
639 return results; 671 return results;
640} 672}
641#endif 673#endif
642void AddressBook::resetTempSyncStat() 674void AddressBook::resetTempSyncStat()
643{ 675{
644 Iterator it; 676 Iterator it;
645 for ( it = begin(); it != end(); ++it ) { 677 for ( it = begin(); it != end(); ++it ) {
646 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 678 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
647 } 679 }
648 680
649} 681}
650 682
651QStringList AddressBook:: uidList() 683QStringList AddressBook:: uidList()
652{ 684{
653 QStringList results; 685 QStringList results;
654 Iterator it; 686 Iterator it;
655 for ( it = begin(); it != end(); ++it ) { 687 for ( it = begin(); it != end(); ++it ) {
656 results.append( (*it).uid() ); 688 results.append( (*it).uid() );
657 } 689 }
658 return results; 690 return results;
659} 691}
660 692
661 693
662Addressee::List AddressBook::allAddressees() 694Addressee::List AddressBook::allAddressees()
663{ 695{
664 return d->mAddressees; 696 return d->mAddressees;
665 697
666} 698}
667 699
668Addressee::List AddressBook::findByName( const QString &name ) 700Addressee::List AddressBook::findByName( const QString &name )
669{ 701{
670 Addressee::List results; 702 Addressee::List results;
671 703
672 Iterator it; 704 Iterator it;
673 for ( it = begin(); it != end(); ++it ) { 705 for ( it = begin(); it != end(); ++it ) {
674 if ( name == (*it).realName() ) { 706 if ( name == (*it).realName() ) {
675 results.append( *it ); 707 results.append( *it );
676 } 708 }
677 } 709 }
678 710
679 return results; 711 return results;
680} 712}
681 713
682Addressee::List AddressBook::findByEmail( const QString &email ) 714Addressee::List AddressBook::findByEmail( const QString &email )
683{ 715{
684 Addressee::List results; 716 Addressee::List results;
685 QStringList mailList; 717 QStringList mailList;
686 718
687 Iterator it; 719 Iterator it;
688 for ( it = begin(); it != end(); ++it ) { 720 for ( it = begin(); it != end(); ++it ) {
689 mailList = (*it).emails(); 721 mailList = (*it).emails();
690 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 722 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
691 if ( email == (*ite) ) { 723 if ( email == (*ite) ) {
692 results.append( *it ); 724 results.append( *it );
693 } 725 }
694 } 726 }
695 } 727 }
696 728
697 return results; 729 return results;
698} 730}
699 731
700Addressee::List AddressBook::findByCategory( const QString &category ) 732Addressee::List AddressBook::findByCategory( const QString &category )
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index f40e015..157dc56 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -202,135 +202,138 @@ class AddressBook : public QObject
202 /** 202 /**
203 Returns a list of all addressees in the address book. This list can 203 Returns a list of all addressees in the address book. This list can
204 be sorted with @ref KABC::AddresseeList for example. 204 be sorted with @ref KABC::AddresseeList for example.
205 */ 205 */
206 Addressee::List allAddressees(); 206 Addressee::List allAddressees();
207 207
208 /** 208 /**
209 Find all entries with the specified name in the address book. Returns 209 Find all entries with the specified name in the address book. Returns
210 an empty list, if no entries could be found. 210 an empty list, if no entries could be found.
211 */ 211 */
212 Addressee::List findByName( const QString & ); 212 Addressee::List findByName( const QString & );
213 213
214 /** 214 /**
215 Find all entries with the specified email address in the address book. 215 Find all entries with the specified email address in the address book.
216 Returns an empty list, if no entries could be found. 216 Returns an empty list, if no entries could be found.
217 */ 217 */
218 Addressee::List findByEmail( const QString & ); 218 Addressee::List findByEmail( const QString & );
219 219
220 /** 220 /**
221 Find all entries wich have the specified category in the address book. 221 Find all entries wich have the specified category in the address book.
222 Returns an empty list, if no entries could be found. 222 Returns an empty list, if no entries could be found.
223 */ 223 */
224 Addressee::List findByCategory( const QString & ); 224 Addressee::List findByCategory( const QString & );
225 225
226 /** 226 /**
227 Return a string identifying this addressbook. 227 Return a string identifying this addressbook.
228 */ 228 */
229 virtual QString identifier(); 229 virtual QString identifier();
230 230
231 /** 231 /**
232 Used for debug output. 232 Used for debug output.
233 */ 233 */
234 void dump() const; 234 void dump() const;
235 235
236 void emitAddressBookLocked() { emit addressBookLocked( this ); } 236 void emitAddressBookLocked() { emit addressBookLocked( this ); }
237 void emitAddressBookUnlocked() { emit addressBookUnlocked( this ); } 237 void emitAddressBookUnlocked() { emit addressBookUnlocked( this ); }
238 void emitAddressBookChanged() { emit addressBookChanged( this ); } 238 void emitAddressBookChanged() { emit addressBookChanged( this ); }
239 239
240 /** 240 /**
241 Return list of all Fields known to the address book which are associated 241 Return list of all Fields known to the address book which are associated
242 with the given field category. 242 with the given field category.
243 */ 243 */
244 Field::List fields( int category = Field::All ); 244 Field::List fields( int category = Field::All );
245 245
246 /** 246 /**
247 Add custom field to address book. 247 Add custom field to address book.
248 248
249 @param label User visible label of the field. 249 @param label User visible label of the field.
250 @param category Ored list of field categories. 250 @param category Ored list of field categories.
251 @param key Identifier used as key for reading and writing the field. 251 @param key Identifier used as key for reading and writing the field.
252 @param app String used as application key for reading and writing 252 @param app String used as application key for reading and writing
253 the field. 253 the field.
254 */ 254 */
255 bool addCustomField( const QString &label, int category = Field::All, 255 bool addCustomField( const QString &label, int category = Field::All,
256 const QString &key = QString::null, 256 const QString &key = QString::null,
257 const QString &app = QString::null ); 257 const QString &app = QString::null );
258 258
259 259
260 /** 260 /**
261 Add address book resource. 261 Add address book resource.
262 */ 262 */
263 bool addResource( Resource * ); 263 bool addResource( Resource * );
264 264
265 /** 265 /**
266 Remove address book resource. 266 Remove address book resource.
267 */ 267 */
268 bool removeResource( Resource * ); 268 bool removeResource( Resource * );
269 269
270 /** 270 /**
271 Return pointer list of all resources. 271 Return pointer list of all resources.
272 */ 272 */
273 QPtrList<Resource> resources(); 273 QPtrList<Resource> resources();
274 274
275 /** 275 /**
276 Set the @p ErrorHandler, that is used by @ref error() to 276 Set the @p ErrorHandler, that is used by @ref error() to
277 provide gui-independend error messages. 277 provide gui-independend error messages.
278 */ 278 */
279 void setErrorHandler( ErrorHandler * ); 279 void setErrorHandler( ErrorHandler * );
280 280
281 /** 281 /**
282 Shows gui independend error messages. 282 Shows gui independend error messages.
283 */ 283 */
284 void error( const QString& ); 284 void error( const QString& );
285 285
286 /** 286 /**
287 Query all resources to clean up their lock files 287 Query all resources to clean up their lock files
288 */ 288 */
289 void cleanUp(); 289 void cleanUp();
290 290
291 // sync stuff 291 // sync stuff
292 //Addressee::List getExternLastSyncAddressees(); 292 //Addressee::List getExternLastSyncAddressees();
293 void resetTempSyncStat(); 293 void resetTempSyncStat();
294 QStringList uidList(); 294 QStringList uidList();
295 void removeDeletedAddressees(); 295 void removeDeletedAddressees();
296 void mergeAB( AddressBook *aBook, const QString& profile ); 296 void mergeAB( AddressBook *aBook, const QString& profile );
297 Addressee findByExternUid( const QString& uid , const QString& profile ); 297 Addressee findByExternUid( const QString& uid , const QString& profile );
298
299 void preExternSync( AddressBook* aBook, const QString& csd );
300 void postExternSync( AddressBook* aBook, const QString& csd );
298 signals: 301 signals:
299 /** 302 /**
300 Emitted, when the address book has changed on disk. 303 Emitted, when the address book has changed on disk.
301 */ 304 */
302 void addressBookChanged( AddressBook * ); 305 void addressBookChanged( AddressBook * );
303 306
304 /** 307 /**
305 Emitted, when the address book has been locked for writing. 308 Emitted, when the address book has been locked for writing.
306 */ 309 */
307 void addressBookLocked( AddressBook * ); 310 void addressBookLocked( AddressBook * );
308 311
309 /** 312 /**
310 Emitted, when the address book has been unlocked. 313 Emitted, when the address book has been unlocked.
311 */ 314 */
312 void addressBookUnlocked( AddressBook * ); 315 void addressBookUnlocked( AddressBook * );
313 316
314 protected: 317 protected:
315 void deleteRemovedAddressees(); 318 void deleteRemovedAddressees();
316 void setStandardResource( Resource * ); 319 void setStandardResource( Resource * );
317 Resource *standardResource(); 320 Resource *standardResource();
318 KRES::Manager<Resource> *resourceManager(); 321 KRES::Manager<Resource> *resourceManager();
319 322
320 void init(const QString &config, const QString &family); 323 void init(const QString &config, const QString &family);
321 324
322 private: 325 private:
323//US QPtrList<Resource> mDummy; // Remove in KDE 4 326//US QPtrList<Resource> mDummy; // Remove in KDE 4
324 327
325 328
326 struct AddressBookData; 329 struct AddressBookData;
327 AddressBookData *d; 330 AddressBookData *d;
328 bool blockLSEchange; 331 bool blockLSEchange;
329}; 332};
330 333
331QDataStream &operator<<( QDataStream &, const AddressBook & ); 334QDataStream &operator<<( QDataStream &, const AddressBook & );
332QDataStream &operator>>( QDataStream &, AddressBook & ); 335QDataStream &operator>>( QDataStream &, AddressBook & );
333 336
334} 337}
335 338
336#endif 339#endif