summaryrefslogtreecommitdiffabout
path: root/kabc/addressbook.cpp
authorzautrix <zautrix>2004-09-19 09:00:55 (UTC)
committer zautrix <zautrix>2004-09-19 09:00:55 (UTC)
commit787181d34f0d195ad72c9cf6aedbc317b6dd713e (patch) (unidiff)
treeac49d2b1d7887f96f3834458071b89e77b59218b /kabc/addressbook.cpp
parentf370d0f89bcaeeb68bd60152a9812a9cd55e5d8a (diff)
downloadkdepimpi-787181d34f0d195ad72c9cf6aedbc317b6dd713e.zip
kdepimpi-787181d34f0d195ad72c9cf6aedbc317b6dd713e.tar.gz
kdepimpi-787181d34f0d195ad72c9cf6aedbc317b6dd713e.tar.bz2
more AB sync
Diffstat (limited to 'kabc/addressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index ec9f893..46a9cf4 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -334,48 +334,58 @@ bool AddressBook::load()
334 clear(); 334 clear();
335 335
336 KRES::Manager<Resource>::ActiveIterator it; 336 KRES::Manager<Resource>::ActiveIterator it;
337 bool ok = true; 337 bool ok = true;
338 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 338 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
339 if ( !(*it)->load() ) { 339 if ( !(*it)->load() ) {
340 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 340 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
341 ok = false; 341 ok = false;
342 } 342 }
343 343
344 // mark all addressees as unchanged 344 // mark all addressees as unchanged
345 Addressee::List::Iterator addrIt; 345 Addressee::List::Iterator addrIt;
346 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) 346 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
347 (*addrIt).setChanged( false ); 347 (*addrIt).setChanged( false );
348 348 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
349 if ( !id.isEmpty() ) {
350 //qDebug("setId aa %s ", id.latin1());
351 (*addrIt).setIDStr(id );
352 }
353 }
349 blockLSEchange = true; 354 blockLSEchange = true;
350 return ok; 355 return ok;
351} 356}
352 357
353bool AddressBook::save( Ticket *ticket ) 358bool AddressBook::save( Ticket *ticket )
354{ 359{
355 kdDebug(5700) << "AddressBook::save()"<< endl; 360 kdDebug(5700) << "AddressBook::save()"<< endl;
356 361
357 if ( ticket->resource() ) { 362 if ( ticket->resource() ) {
358 deleteRemovedAddressees(); 363 deleteRemovedAddressees();
359 return ticket->resource()->save( ticket ); 364 return ticket->resource()->save( ticket );
360 } 365 }
361 366
362 return false; 367 return false;
363} 368}
364bool AddressBook::saveAB() 369bool AddressBook::saveAB()
365{ 370{
366 bool ok = true; 371 bool ok = true;
367 372
368 deleteRemovedAddressees(); 373 deleteRemovedAddressees();
369 374 Iterator ait;
375 for ( ait = begin(); ait != end(); ++ait ) {
376 if ( !(*ait).IDStr().isEmpty() ) {
377 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
378 }
379 }
370 KRES::Manager<Resource>::ActiveIterator it; 380 KRES::Manager<Resource>::ActiveIterator it;
371 KRES::Manager<Resource> *manager = d->mManager; 381 KRES::Manager<Resource> *manager = d->mManager;
372 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 382 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
373 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 383 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
374 Ticket *ticket = requestSaveTicket( *it ); 384 Ticket *ticket = requestSaveTicket( *it );
375// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 385// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
376 if ( !ticket ) { 386 if ( !ticket ) {
377 error( i18n( "Unable to save to resource '%1'. It is locked." ) 387 error( i18n( "Unable to save to resource '%1'. It is locked." )
378 .arg( (*it)->resourceName() ) ); 388 .arg( (*it)->resourceName() ) );
379 return false; 389 return false;
380 } 390 }
381 391
@@ -441,26 +451,28 @@ Ticket *AddressBook::requestSaveTicket( Resource *resource )
441 return 0; 451 return 0;
442 else 452 else
443 return (*it)->requestSaveTicket(); 453 return (*it)->requestSaveTicket();
444 } 454 }
445 } 455 }
446 456
447 return 0; 457 return 0;
448} 458}
449 459
450void AddressBook::insertAddressee( const Addressee &a, bool setRev ) 460void AddressBook::insertAddressee( const Addressee &a, bool setRev )
451{ 461{
452 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { 462 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) {
463 //qDebug("block insert ");
453 return; 464 return;
454 } 465 }
466 //qDebug("inserting.... %s ",a.uid().latin1() );
455 bool found = false; 467 bool found = false;
456 Addressee::List::Iterator it; 468 Addressee::List::Iterator it;
457 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 469 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
458 if ( a.uid() == (*it).uid() ) { 470 if ( a.uid() == (*it).uid() ) {
459 471
460 bool changed = false; 472 bool changed = false;
461 Addressee addr = a; 473 Addressee addr = a;
462 if ( addr != (*it) ) 474 if ( addr != (*it) )
463 changed = true; 475 changed = true;
464 476
465 (*it) = a; 477 (*it) = a;
466 if ( (*it).resource() == 0 ) 478 if ( (*it).resource() == 0 )
@@ -471,25 +483,25 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev )
471 483
472 // get rid of micro seconds 484 // get rid of micro seconds
473 QDateTime dt = QDateTime::currentDateTime(); 485 QDateTime dt = QDateTime::currentDateTime();
474 QTime t = dt.time(); 486 QTime t = dt.time();
475 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 487 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
476 (*it).setRevision( dt ); 488 (*it).setRevision( dt );
477 } 489 }
478 (*it).setChanged( true ); 490 (*it).setChanged( true );
479 } 491 }
480 492
481 found = true; 493 found = true;
482 } else { 494 } else {
483 if ( (*it).uid() == QString("last-syncAddressee-") ) { 495 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
484 QString name = (*it).uid().mid( 19 ); 496 QString name = (*it).uid().mid( 19 );
485 Addressee b = a; 497 Addressee b = a;
486 QString id = b.getID( name ); 498 QString id = b.getID( name );
487 if ( ! id.isEmpty() ) { 499 if ( ! id.isEmpty() ) {
488 QString des = (*it).note(); 500 QString des = (*it).note();
489 int startN; 501 int startN;
490 if( (startN = des.find( id ) ) >= 0 ) { 502 if( (startN = des.find( id ) ) >= 0 ) {
491 int endN = des.find( ",", startN+1 ); 503 int endN = des.find( ",", startN+1 );
492 des = des.left( startN ) + des.mid( endN+1 ); 504 des = des.left( startN ) + des.mid( endN+1 );
493 (*it).setNote( des ); 505 (*it).setNote( des );
494 } 506 }
495 } 507 }
@@ -507,25 +519,25 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev )
507} 519}
508 520
509void AddressBook::removeAddressee( const Addressee &a ) 521void AddressBook::removeAddressee( const Addressee &a )
510{ 522{
511 Iterator it; 523 Iterator it;
512 Iterator it2; 524 Iterator it2;
513 bool found = false; 525 bool found = false;
514 for ( it = begin(); it != end(); ++it ) { 526 for ( it = begin(); it != end(); ++it ) {
515 if ( a.uid() == (*it).uid() ) { 527 if ( a.uid() == (*it).uid() ) {
516 found = true; 528 found = true;
517 it2 = it; 529 it2 = it;
518 } else { 530 } else {
519 if ( (*it).uid() == QString("last-syncAddressee-") ) { 531 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
520 QString name = (*it).uid().mid( 19 ); 532 QString name = (*it).uid().mid( 19 );
521 Addressee b = a; 533 Addressee b = a;
522 QString id = b.getID( name ); 534 QString id = b.getID( name );
523 if ( ! id.isEmpty() ) { 535 if ( ! id.isEmpty() ) {
524 QString des = (*it).note(); 536 QString des = (*it).note();
525 if( des.find( id ) < 0 ) { 537 if( des.find( id ) < 0 ) {
526 des += id + ","; 538 des += id + ",";
527 (*it).setNote( des ); 539 (*it).setNote( des );
528 } 540 }
529 } 541 }
530 } 542 }
531 543
@@ -536,30 +548,35 @@ void AddressBook::removeAddressee( const Addressee &a )
536 removeAddressee( it2 ); 548 removeAddressee( it2 );
537 549
538} 550}
539 551
540void AddressBook::removeDeletedAddressees() 552void AddressBook::removeDeletedAddressees()
541{ 553{
542 deleteRemovedAddressees(); 554 deleteRemovedAddressees();
543 Iterator it = begin(); 555 Iterator it = begin();
544 Iterator it2 ; 556 Iterator it2 ;
545 QDateTime dt ( QDate( 2004,1,1) ); 557 QDateTime dt ( QDate( 2004,1,1) );
546 while ( it != end() ) { 558 while ( it != end() ) {
547 (*it).setRevision( dt ); 559 (*it).setRevision( dt );
548 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 560 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
561 (*it).setIDStr("");
562 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
549 it2 = it; 563 it2 = it;
564 //qDebug("removing %s ",(*it).uid().latin1() );
550 ++it; 565 ++it;
551 removeAddressee( it2 ); 566 removeAddressee( it2 );
552 } else 567 } else {
568 //qDebug("skipping %s ",(*it).uid().latin1() );
553 ++it; 569 ++it;
570 }
554 } 571 }
555 deleteRemovedAddressees(); 572 deleteRemovedAddressees();
556} 573}
557 574
558void AddressBook::removeAddressee( const Iterator &it ) 575void AddressBook::removeAddressee( const Iterator &it )
559{ 576{
560 d->mRemovedAddressees.append( (*it) ); 577 d->mRemovedAddressees.append( (*it) );
561 d->mAddressees.remove( it.d->mIt ); 578 d->mAddressees.remove( it.d->mIt );
562} 579}
563 580
564AddressBook::Iterator AddressBook::find( const Addressee &a ) 581AddressBook::Iterator AddressBook::find( const Addressee &a )
565{ 582{