summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-18 17:25:46 (UTC)
committer zautrix <zautrix>2004-09-18 17:25:46 (UTC)
commit3f16c7aa0ab6badf304c537a6981ece743138821 (patch) (unidiff)
tree1dda326a1025477c7dd1a284609fa108da4e2e1d
parenta355a58898d0d08d797f872751254cfa958387c1 (diff)
downloadkdepimpi-3f16c7aa0ab6badf304c537a6981ece743138821.zip
kdepimpi-3f16c7aa0ab6badf304c537a6981ece743138821.tar.gz
kdepimpi-3f16c7aa0ab6badf304c537a6981ece743138821.tar.bz2
sync fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp9
-rw-r--r--kaddressbook/kabcore.cpp20
2 files changed, 18 insertions, 11 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index d03dea3..16e1653 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -405,202 +405,207 @@ AddressBook::ConstIterator AddressBook::begin() const
405 405
406AddressBook::Iterator AddressBook::end() 406AddressBook::Iterator AddressBook::end()
407{ 407{
408 Iterator it = Iterator(); 408 Iterator it = Iterator();
409 it.d->mIt = d->mAddressees.end(); 409 it.d->mIt = d->mAddressees.end();
410 return it; 410 return it;
411} 411}
412 412
413AddressBook::ConstIterator AddressBook::end() const 413AddressBook::ConstIterator AddressBook::end() const
414{ 414{
415 ConstIterator it = ConstIterator(); 415 ConstIterator it = ConstIterator();
416 it.d->mIt = d->mAddressees.end(); 416 it.d->mIt = d->mAddressees.end();
417 return it; 417 return it;
418} 418}
419 419
420void AddressBook::clear() 420void AddressBook::clear()
421{ 421{
422 d->mAddressees.clear(); 422 d->mAddressees.clear();
423} 423}
424 424
425Ticket *AddressBook::requestSaveTicket( Resource *resource ) 425Ticket *AddressBook::requestSaveTicket( Resource *resource )
426{ 426{
427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
428 428
429 if ( !resource ) 429 if ( !resource )
430 { 430 {
431 qDebug("AddressBook::requestSaveTicket no resource" ); 431 qDebug("AddressBook::requestSaveTicket no resource" );
432 resource = standardResource(); 432 resource = standardResource();
433 } 433 }
434 434
435 KRES::Manager<Resource>::ActiveIterator it; 435 KRES::Manager<Resource>::ActiveIterator it;
436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
437 if ( (*it) == resource ) { 437 if ( (*it) == resource ) {
438 if ( (*it)->readOnly() || !(*it)->isOpen() ) 438 if ( (*it)->readOnly() || !(*it)->isOpen() )
439 return 0; 439 return 0;
440 else 440 else
441 return (*it)->requestSaveTicket(); 441 return (*it)->requestSaveTicket();
442 } 442 }
443 } 443 }
444 444
445 return 0; 445 return 0;
446} 446}
447 447
448void AddressBook::insertAddressee( const Addressee &a, bool setRev ) 448void AddressBook::insertAddressee( const Addressee &a, bool setRev )
449{ 449{
450 Addressee::List::Iterator it; 450 Addressee::List::Iterator it;
451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
452 if ( a.uid() == (*it).uid() ) { 452 if ( a.uid() == (*it).uid() ) {
453 if ( setRev && (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
454 return;
455 }
453 bool changed = false; 456 bool changed = false;
454 Addressee addr = a; 457 Addressee addr = a;
455 if ( addr != (*it) ) 458 if ( addr != (*it) )
456 changed = true; 459 changed = true;
457 460
458 (*it) = a; 461 (*it) = a;
459 if ( (*it).resource() == 0 ) 462 if ( (*it).resource() == 0 )
460 (*it).setResource( standardResource() ); 463 (*it).setResource( standardResource() );
461 464
462 if ( changed ) { 465 if ( changed ) {
463 if ( setRev ) { 466 if ( setRev ) {
467
464 // get rid of micro seconds 468 // get rid of micro seconds
465 QDateTime dt = QDateTime::currentDateTime(); 469 QDateTime dt = QDateTime::currentDateTime();
466 QTime t = dt.time(); 470 QTime t = dt.time();
467 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 471 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
468 (*it).setRevision( dt ); 472 (*it).setRevision( dt );
469 } 473 }
470 (*it).setChanged( true ); 474 (*it).setChanged( true );
471 } 475 }
472 476
473 return; 477 return;
474 } 478 }
475 } 479 }
476 d->mAddressees.append( a ); 480 d->mAddressees.append( a );
477 Addressee& addr = d->mAddressees.last(); 481 Addressee& addr = d->mAddressees.last();
478 if ( addr.resource() == 0 ) 482 if ( addr.resource() == 0 )
479 addr.setResource( standardResource() ); 483 addr.setResource( standardResource() );
480 484
481 addr.setChanged( true ); 485 addr.setChanged( true );
482} 486}
483 487
484void AddressBook::removeAddressee( const Addressee &a ) 488void AddressBook::removeAddressee( const Addressee &a )
485{ 489{
486 Iterator it; 490 Iterator it;
487 for ( it = begin(); it != end(); ++it ) { 491 for ( it = begin(); it != end(); ++it ) {
488 if ( a.uid() == (*it).uid() ) { 492 if ( a.uid() == (*it).uid() ) {
489 removeAddressee( it ); 493 removeAddressee( it );
490 return; 494 return;
491 } 495 }
492 } 496 }
493} 497}
494 498
495void AddressBook::removeAddressee( const Iterator &it ) 499void AddressBook::removeAddressee( const Iterator &it )
496{ 500{
497 d->mRemovedAddressees.append( (*it) ); 501 d->mRemovedAddressees.append( (*it) );
498 d->mAddressees.remove( it.d->mIt ); 502 d->mAddressees.remove( it.d->mIt );
499} 503}
500 504
501AddressBook::Iterator AddressBook::find( const Addressee &a ) 505AddressBook::Iterator AddressBook::find( const Addressee &a )
502{ 506{
503 Iterator it; 507 Iterator it;
504 for ( it = begin(); it != end(); ++it ) { 508 for ( it = begin(); it != end(); ++it ) {
505 if ( a.uid() == (*it).uid() ) { 509 if ( a.uid() == (*it).uid() ) {
506 return it; 510 return it;
507 } 511 }
508 } 512 }
509 return end(); 513 return end();
510} 514}
511 515
512Addressee AddressBook::findByUid( const QString &uid ) 516Addressee AddressBook::findByUid( const QString &uid )
513{ 517{
514 Iterator it; 518 Iterator it;
515 for ( it = begin(); it != end(); ++it ) { 519 for ( it = begin(); it != end(); ++it ) {
516 if ( uid == (*it).uid() ) { 520 if ( uid == (*it).uid() ) {
517 return *it; 521 return *it;
518 } 522 }
519 } 523 }
520 return Addressee(); 524 return Addressee();
521} 525}
522Addressee::List AddressBook::getExternLastSyncAddressees() 526Addressee::List AddressBook::getExternLastSyncAddressees()
523{ 527{
524 Addressee::List results; 528 Addressee::List results;
525 529
526 Iterator it; 530 Iterator it;
527 for ( it = begin(); it != end(); ++it ) { 531 for ( it = begin(); it != end(); ++it ) {
528 if ( (*it).uid().left( 20 ) == "last-syncAddressee-" ) { 532 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
529 if ( (*it).familyName().left(3) == "E: " ) 533 if ( (*it).familyName().left(3) == "E: " )
530 results.append( *it ); 534 results.append( *it );
531 } 535 }
532 } 536 }
533 537
534 return results; 538 return results;
535} 539}
536void AddressBook::resetTempSyncStat() 540void AddressBook::resetTempSyncStat()
537{ 541{
538 Iterator it; 542 Iterator it;
539 for ( it = begin(); it != end(); ++it ) { 543 for ( it = begin(); it != end(); ++it ) {
540 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 544 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
541 } 545 }
542 546
543} 547}
544 548
545QStringList AddressBook:: uidList() 549QStringList AddressBook:: uidList()
546{ 550{
547 QStringList results; 551 QStringList results;
548 Iterator it; 552 Iterator it;
549 for ( it = begin(); it != end(); ++it ) { 553 for ( it = begin(); it != end(); ++it ) {
550 results.append( (*it).uid() ); 554 results.append( (*it).uid() );
551 } 555 }
552 return results; 556 return results;
553} 557}
554 558
555 559
556Addressee::List AddressBook::allAddressees() 560Addressee::List AddressBook::allAddressees()
557{ 561{
558 return d->mAddressees; 562 return d->mAddressees;
563
559} 564}
560 565
561Addressee::List AddressBook::findByName( const QString &name ) 566Addressee::List AddressBook::findByName( const QString &name )
562{ 567{
563 Addressee::List results; 568 Addressee::List results;
564 569
565 Iterator it; 570 Iterator it;
566 for ( it = begin(); it != end(); ++it ) { 571 for ( it = begin(); it != end(); ++it ) {
567 if ( name == (*it).realName() ) { 572 if ( name == (*it).realName() ) {
568 results.append( *it ); 573 results.append( *it );
569 } 574 }
570 } 575 }
571 576
572 return results; 577 return results;
573} 578}
574 579
575Addressee::List AddressBook::findByEmail( const QString &email ) 580Addressee::List AddressBook::findByEmail( const QString &email )
576{ 581{
577 Addressee::List results; 582 Addressee::List results;
578 QStringList mailList; 583 QStringList mailList;
579 584
580 Iterator it; 585 Iterator it;
581 for ( it = begin(); it != end(); ++it ) { 586 for ( it = begin(); it != end(); ++it ) {
582 mailList = (*it).emails(); 587 mailList = (*it).emails();
583 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 588 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
584 if ( email == (*ite) ) { 589 if ( email == (*ite) ) {
585 results.append( *it ); 590 results.append( *it );
586 } 591 }
587 } 592 }
588 } 593 }
589 594
590 return results; 595 return results;
591} 596}
592 597
593Addressee::List AddressBook::findByCategory( const QString &category ) 598Addressee::List AddressBook::findByCategory( const QString &category )
594{ 599{
595 Addressee::List results; 600 Addressee::List results;
596 601
597 Iterator it; 602 Iterator it;
598 for ( it = begin(); it != end(); ++it ) { 603 for ( it = begin(); it != end(); ++it ) {
599 if ( (*it).hasCategory( category) ) { 604 if ( (*it).hasCategory( category) ) {
600 results.append( *it ); 605 results.append( *it );
601 } 606 }
602 } 607 }
603 608
604 return results; 609 return results;
605} 610}
606 611
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 215ce83..74c10d2 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2483,97 +2483,97 @@ void KABCore::edit_sync_options()
2483 // both.setChecked( true); 2483 // both.setChecked( true);
2484 break; 2484 break;
2485 default: 2485 default:
2486 break; 2486 break;
2487 } 2487 }
2488 if ( dia.exec() ) { 2488 if ( dia.exec() ) {
2489 KABPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2489 KABPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2490 } 2490 }
2491 2491
2492 2492
2493} 2493}
2494QString KABCore::getPassword( ) 2494QString KABCore::getPassword( )
2495{ 2495{
2496 QString retfile = ""; 2496 QString retfile = "";
2497 QDialog dia ( this, "input-dialog", true ); 2497 QDialog dia ( this, "input-dialog", true );
2498 QLineEdit lab ( &dia ); 2498 QLineEdit lab ( &dia );
2499 lab.setEchoMode( QLineEdit::Password ); 2499 lab.setEchoMode( QLineEdit::Password );
2500 QVBoxLayout lay( &dia ); 2500 QVBoxLayout lay( &dia );
2501 lay.setMargin(7); 2501 lay.setMargin(7);
2502 lay.setSpacing(7); 2502 lay.setSpacing(7);
2503 lay.addWidget( &lab); 2503 lay.addWidget( &lab);
2504 dia.setFixedSize( 230,50 ); 2504 dia.setFixedSize( 230,50 );
2505 dia.setCaption( i18n("Enter password") ); 2505 dia.setCaption( i18n("Enter password") );
2506 QPushButton pb ( "OK", &dia); 2506 QPushButton pb ( "OK", &dia);
2507 lay.addWidget( &pb ); 2507 lay.addWidget( &pb );
2508 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2508 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2509 dia.show(); 2509 dia.show();
2510 int res = dia.exec(); 2510 int res = dia.exec();
2511 if ( res ) 2511 if ( res )
2512 retfile = lab.text(); 2512 retfile = lab.text();
2513 dia.hide(); 2513 dia.hide();
2514 qApp->processEvents(); 2514 qApp->processEvents();
2515 return retfile; 2515 return retfile;
2516 2516
2517} 2517}
2518#include <libkcal/syncdefines.h> 2518#include <libkcal/syncdefines.h>
2519 2519
2520KABC::Addressee KABCore::getLastSyncAddressee() 2520KABC::Addressee KABCore::getLastSyncAddressee()
2521{ 2521{
2522 Addressee lse; 2522 Addressee lse;
2523 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2523 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2524 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2524 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2525 if (lse.isEmpty()) { 2525 if (lse.isEmpty()) {
2526 qDebug("Creating new last-syncAddressee "); 2526 qDebug("Creating new last-syncAddressee ");
2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2528 QString sum = ""; 2528 QString sum = "";
2529 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 2529 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
2530 sum = "E: "; 2530 sum = "E: ";
2531 lse.setFamilyName(sum+mCurrentSyncDevice + i18n(" - sync event")); 2531 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2532 lse.setRevision( mLastAddressbookSync ); 2532 lse.setRevision( mLastAddressbookSync );
2533 lse.setCategories( i18n("SyncEvent") ); 2533 lse.setCategories( i18n("SyncEvent") );
2534 mAddressBook->insertAddressee( lse ); 2534 mAddressBook->insertAddressee( lse );
2535 } 2535 }
2536 return lse; 2536 return lse;
2537} 2537}
2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2539{ 2539{
2540 2540
2541 //void setZaurusId(int id); 2541 //void setZaurusId(int id);
2542 // int zaurusId() const; 2542 // int zaurusId() const;
2543 // void setZaurusUid(int id); 2543 // void setZaurusUid(int id);
2544 // int zaurusUid() const; 2544 // int zaurusUid() const;
2545 // void setZaurusStat(int id); 2545 // void setZaurusStat(int id);
2546 // int zaurusStat() const; 2546 // int zaurusStat() const;
2547 // 0 equal 2547 // 0 equal
2548 // 1 take local 2548 // 1 take local
2549 // 2 take remote 2549 // 2 take remote
2550 // 3 cancel 2550 // 3 cancel
2551 QDateTime lastSync = mLastAddressbookSync; 2551 QDateTime lastSync = mLastAddressbookSync;
2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2553 bool remCh, locCh; 2553 bool remCh, locCh;
2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2555 //if ( remCh ) 2555 //if ( remCh )
2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2557 locCh = ( local->revision() > mLastAddressbookSync ); 2557 locCh = ( local->revision() > mLastAddressbookSync );
2558 if ( !remCh && ! locCh ) { 2558 if ( !remCh && ! locCh ) {
2559 //qDebug("both not changed "); 2559 //qDebug("both not changed ");
2560 lastSync = local->revision().addDays(1); 2560 lastSync = local->revision().addDays(1);
2561 } else { 2561 } else {
2562 if ( locCh ) { 2562 if ( locCh ) {
2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1()); 2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1());
2564 lastSync = local->revision().addDays( -1 ); 2564 lastSync = local->revision().addDays( -1 );
2565 if ( !remCh ) 2565 if ( !remCh )
2566 remote->setRevision( lastSync.addDays( -1 ) ); 2566 remote->setRevision( lastSync.addDays( -1 ) );
2567 } else { 2567 } else {
2568 //qDebug(" not loc changed "); 2568 //qDebug(" not loc changed ");
2569 lastSync = local->revision().addDays( 1 ); 2569 lastSync = local->revision().addDays( 1 );
2570 if ( remCh ) 2570 if ( remCh )
2571 remote->setRevision( lastSync.addDays( 1 ) ); 2571 remote->setRevision( lastSync.addDays( 1 ) );
2572 2572
2573 } 2573 }
2574 } 2574 }
2575 full = true; 2575 full = true;
2576 if ( mode < SYNC_PREF_ASK ) 2576 if ( mode < SYNC_PREF_ASK )
2577 mode = SYNC_PREF_ASK; 2577 mode = SYNC_PREF_ASK;
2578 } else { 2578 } else {
2579 if ( local->revision() == remote->revision() ) 2579 if ( local->revision() == remote->revision() )
@@ -2718,249 +2718,251 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2718 } 2718 }
2719 if ( ! fullDateRange ) { 2719 if ( ! fullDateRange ) {
2720 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2720 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2721 2721
2722 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2722 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2723 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2723 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2724 fullDateRange = true; 2724 fullDateRange = true;
2725 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2725 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2726 } 2726 }
2727 } 2727 }
2728 if ( fullDateRange ) 2728 if ( fullDateRange )
2729 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2729 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2730 else 2730 else
2731 mLastAddressbookSync = addresseeLSync.revision(); 2731 mLastAddressbookSync = addresseeLSync.revision();
2732 // for resyncing if own file has changed 2732 // for resyncing if own file has changed
2733 // PENDING fixme later when implemented 2733 // PENDING fixme later when implemented
2734#if 0 2734#if 0
2735 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2735 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2736 mLastAddressbookSync = loadedFileVersion; 2736 mLastAddressbookSync = loadedFileVersion;
2737 qDebug("setting mLastAddressbookSync "); 2737 qDebug("setting mLastAddressbookSync ");
2738 } 2738 }
2739#endif 2739#endif
2740 2740
2741 //qDebug("*************************** "); 2741 //qDebug("*************************** ");
2742 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2742 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2743 QStringList er = remote->uidList(); 2743 QStringList er = remote->uidList();
2744 Addressee inR ;//= er.first(); 2744 Addressee inR ;//= er.first();
2745 Addressee inL; 2745 Addressee inL;
2746 QProgressBar bar( er.count(),0 ); 2746 QProgressBar bar( er.count(),0 );
2747 bar.setCaption (i18n("Syncing - close to abort!") ); 2747 bar.setCaption (i18n("Syncing - close to abort!") );
2748 2748
2749 int w = 300; 2749 int w = 300;
2750 if ( QApplication::desktop()->width() < 320 ) 2750 if ( QApplication::desktop()->width() < 320 )
2751 w = 220; 2751 w = 220;
2752 int h = bar.sizeHint().height() ; 2752 int h = bar.sizeHint().height() ;
2753 int dw = QApplication::desktop()->width(); 2753 int dw = QApplication::desktop()->width();
2754 int dh = QApplication::desktop()->height(); 2754 int dh = QApplication::desktop()->height();
2755 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2755 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2756 bar.show(); 2756 bar.show();
2757 int modulo = (er.count()/10)+1; 2757 int modulo = (er.count()/10)+1;
2758 int incCounter = 0; 2758 int incCounter = 0;
2759 while ( incCounter < er.count()) { 2759 while ( incCounter < er.count()) {
2760 if ( ! bar.isVisible() ) 2760 if ( ! bar.isVisible() )
2761 return false; 2761 return false;
2762 if ( incCounter % modulo == 0 ) 2762 if ( incCounter % modulo == 0 )
2763 bar.setProgress( incCounter ); 2763 bar.setProgress( incCounter );
2764 uid = er[ incCounter ]; 2764 uid = er[ incCounter ];
2765 bool skipIncidence = false; 2765 bool skipIncidence = false;
2766 if ( uid.left(20) == QString("last-syncAddressee-") ) 2766 if ( uid.left(19) == QString("last-syncAddressee-") )
2767 skipIncidence = true; 2767 skipIncidence = true;
2768 QString idS; 2768 QString idS;
2769 qApp->processEvents(); 2769 qApp->processEvents();
2770 if ( !skipIncidence ) { 2770 if ( !skipIncidence ) {
2771 inL = local->findByUid( uid ); 2771 inL = local->findByUid( uid );
2772 inR = remote->findByUid( uid ); 2772 inR = remote->findByUid( uid );
2773 //inL.setResource( 0 ); 2773 //inL.setResource( 0 );
2774 //inR.setResource( 0 ); 2774 //inR.setResource( 0 );
2775 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2775 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2776 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { 2776 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2777 //qDebug("take %d %s ", take, inL.summary().latin1()); 2777 //qDebug("take %d %s ", take, inL.summary().latin1());
2778 if ( take == 3 ) 2778 if ( take == 3 )
2779 return false; 2779 return false;
2780 if ( take == 1 ) {// take local 2780 if ( take == 1 ) {// take local
2781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2782 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2782 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2783 local->insertAddressee( inL, false ); 2783 local->insertAddressee( inL, false );
2784 } 2784 }
2785 else 2785 else
2786 idS = inR.IDStr(); 2786 idS = inR.IDStr();
2787 remote->removeAddressee( inR ); 2787 remote->removeAddressee( inR );
2788 inR = inL; 2788 inR = inL;
2789 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2789 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2790 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 2790 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
2791 inR.setIDStr( idS ); 2791 inR.setIDStr( idS );
2792 inR.setResource( 0 ); 2792 inR.setResource( 0 );
2793 remote->insertAddressee( inR , false); 2793 remote->insertAddressee( inR , false);
2794 ++changedRemote; 2794 ++changedRemote;
2795 } else { 2795 } else {
2796 idS = inL.IDStr(); 2796 idS = inL.IDStr();
2797 local->removeAddressee( inL ); 2797 local->removeAddressee( inL );
2798 inL = inR; 2798 inL = inR;
2799 inL.setIDStr( idS ); 2799 inL.setIDStr( idS );
2800 inL.setResource( 0 ); 2800 inL.setResource( 0 );
2801 local->insertAddressee( inL , false ); 2801 local->insertAddressee( inL , false );
2802 ++changedLocal; 2802 ++changedLocal;
2803 } 2803 }
2804 } 2804 }
2805 } else { // no conflict 2805 } else { // no conflict
2806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2807 QString des = addresseeLSync.note(); 2807 QString des = addresseeLSync.note();
2808 QString pref = "a"; 2808 QString pref = "a";
2809 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2809 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2810 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2810 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2811 ++deletedAddresseeR; 2811 ++deletedAddresseeR;
2812 } else { 2812 } else {
2813 inR.setRevision( modifiedCalendar ); 2813 inR.setRevision( modifiedCalendar );
2814 remote->insertAddressee( inR, false ); 2814 remote->insertAddressee( inR, false );
2815 inL = inR; 2815 inL = inR;
2816 inL.setResource( 0 ); 2816 inL.setResource( 0 );
2817 local->insertAddressee( inL , false); 2817 local->insertAddressee( inL , false);
2818 ++addedAddressee; 2818 ++addedAddressee;
2819 } 2819 }
2820 } else { 2820 } else {
2821 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 2821 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
2822 inR.setRevision( modifiedCalendar ); 2822 inR.setRevision( modifiedCalendar );
2823 remote->insertAddressee( inR, false ); 2823 remote->insertAddressee( inR, false );
2824 inR.setResource( 0 ); 2824 inR.setResource( 0 );
2825 local->insertAddressee( inR, false ); 2825 local->insertAddressee( inR, false );
2826 ++addedAddressee; 2826 ++addedAddressee;
2827 } else { 2827 } else {
2828 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 2828 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
2829 remote->removeAddressee( inR ); 2829 remote->removeAddressee( inR );
2830 ++deletedAddresseeR; 2830 ++deletedAddresseeR;
2831 } 2831 }
2832 } 2832 }
2833 } 2833 }
2834 } 2834 }
2835 ++incCounter; 2835 ++incCounter;
2836 } 2836 }
2837 er.clear(); 2837 er.clear();
2838 QStringList el = remote->uidList(); 2838 QStringList el = remote->uidList();
2839 modulo = (el.count()/10)+1; 2839 modulo = (el.count()/10)+1;
2840 bar.setCaption (i18n("Add / remove addressees") ); 2840 bar.setCaption (i18n("Add / remove addressees") );
2841 bar.setTotalSteps ( el.count() ) ; 2841 bar.setTotalSteps ( el.count() ) ;
2842 bar.show(); 2842 bar.show();
2843 incCounter = 0; 2843 incCounter = 0;
2844 while ( incCounter < el.count()) { 2844 while ( incCounter < el.count()) {
2845 2845
2846 qApp->processEvents(); 2846 qApp->processEvents();
2847 if ( ! bar.isVisible() ) 2847 if ( ! bar.isVisible() )
2848 return false; 2848 return false;
2849 if ( incCounter % modulo == 0 ) 2849 if ( incCounter % modulo == 0 )
2850 bar.setProgress( incCounter ); 2850 bar.setProgress( incCounter );
2851 uid = el[ incCounter ]; 2851 uid = el[ incCounter ];
2852 bool skipIncidence = false; 2852 bool skipIncidence = false;
2853 if ( uid.left(20) == QString("last-syncAddressee-") ) 2853 if ( uid.left(19) == QString("last-syncAddressee-") )
2854 skipIncidence = true; 2854 skipIncidence = true;
2855 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2855 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2856 skipIncidence = true; 2856 skipIncidence = true;
2857 if ( !skipIncidence ) { 2857 if ( !skipIncidence ) {
2858 inL = local->findByUid( uid ); 2858 inL = local->findByUid( uid );
2859 inR = remote->findByUid( uid ); 2859 inR = remote->findByUid( uid );
2860 if ( inR.isEmpty() ) { 2860 if ( inR.isEmpty() ) {
2861 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2861 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2862 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 2862 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
2863 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2863 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2864 local->removeAddressee( inL ); 2864 local->removeAddressee( inL );
2865 ++deletedAddresseeL; 2865 ++deletedAddresseeL;
2866 } else { 2866 } else {
2867 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) { 2867 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) {
2868 inL.removeID(mCurrentSyncDevice ); 2868 inL.removeID(mCurrentSyncDevice );
2869 ++addedAddresseeR; 2869 ++addedAddresseeR;
2870 //qDebug("remote added Incidence %s ", inL.summary().latin1()); 2870 //qDebug("remote added Incidence %s ", inL.summary().latin1());
2871 inL.setRevision( modifiedCalendar ); 2871 inL.setRevision( modifiedCalendar );
2872 local->insertAddressee( inL, false ); 2872 local->insertAddressee( inL, false );
2873 inR = inL; 2873 inR = inL;
2874 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2874 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2875 inR.setResource( 0 ); 2875 inR.setResource( 0 );
2876 remote->insertAddressee( inR, false ); 2876 remote->insertAddressee( inR, false );
2877 } 2877 }
2878 } 2878 }
2879 } else { 2879 } else {
2880 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 2880 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
2881 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2881 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2882 local->removeAddressee( inL ); 2882 local->removeAddressee( inL );
2883 ++deletedAddresseeL; 2883 ++deletedAddresseeL;
2884 } else { 2884 } else {
2885 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) { 2885 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) {
2886 ++addedAddresseeR; 2886 ++addedAddresseeR;
2887 inL.setRevision( modifiedCalendar ); 2887 inL.setRevision( modifiedCalendar );
2888 local->insertAddressee( inL, false ); 2888 local->insertAddressee( inL, false );
2889 inR = inL; 2889 inR = inL;
2890 inR.setResource( 0 ); 2890 inR.setResource( 0 );
2891 remote->insertAddressee( inR, false ); 2891 remote->insertAddressee( inR, false );
2892 } 2892 }
2893 } 2893 }
2894 } 2894 }
2895 } 2895 }
2896 } 2896 }
2897 ++incCounter; 2897 ++incCounter;
2898 } 2898 }
2899 el.clear(); 2899 el.clear();
2900
2901
2902
2903 bar.hide(); 2900 bar.hide();
2904 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 2901 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2905 // get rid of micro seconds 2902 // get rid of micro seconds
2906 QTime t = mLastAddressbookSync.time(); 2903 QTime t = mLastAddressbookSync.time();
2907 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 2904 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
2908 addresseeLSync.setRevision( mLastAddressbookSync ); 2905 addresseeLSync.setRevision( mLastAddressbookSync );
2909 addresseeRSync.setRevision( mLastAddressbookSync ); 2906 addresseeRSync.setRevision( mLastAddressbookSync );
2910 addresseeRSync.setGivenName( i18n("Remote from: ")+mCurrentSyncName ) ; 2907 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
2911 addresseeLSync.setGivenName(i18n("Local from: ") + mCurrentSyncName ); 2908 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
2909 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
2910 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
2911 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
2912 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
2913
2912 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2914 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2913 remote->insertAddressee( addresseeRSync, false ); 2915 remote->insertAddressee( addresseeRSync, false );
2914 local->insertAddressee( addresseeLSync, false ); 2916 local->insertAddressee( addresseeLSync, false );
2915 QString mes; 2917 QString mes;
2916 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 ); 2918 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 );
2917 if ( KABPrefs::instance()->mShowSyncSummary ) { 2919 if ( KABPrefs::instance()->mShowSyncSummary ) {
2918 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 2920 KMessageBox::information(this, mes, i18n("KA/Pi Synchronization") );
2919 } 2921 }
2920 qDebug( mes ); 2922 qDebug( mes );
2921 return syncOK; 2923 return syncOK;
2922} 2924}
2923 2925
2924bool KABCore::syncAB(QString filename, int mode) 2926bool KABCore::syncAB(QString filename, int mode)
2925{ 2927{
2926 2928
2927 //pending prepare addresseeview for output 2929 //pending prepare addresseeview for output
2928 //pending detect, if remote file has REV field. if not switch to external sync 2930 //pending detect, if remote file has REV field. if not switch to external sync
2929 mGlobalSyncMode = SYNC_MODE_NORMAL; 2931 mGlobalSyncMode = SYNC_MODE_NORMAL;
2930 AddressBook abLocal(filename,"syncContact"); 2932 AddressBook abLocal(filename,"syncContact");
2931 bool syncOK = false; 2933 bool syncOK = false;
2932 if ( abLocal.load() ) { 2934 if ( abLocal.load() ) {
2933 qDebug("AB loaded %s mode %d",filename.latin1(), mode ); 2935 qDebug("AB loaded %s mode %d",filename.latin1(), mode );
2934 AddressBook::Iterator it; 2936 AddressBook::Iterator it;
2935 //QStringList vcards; 2937 //QStringList vcards;
2936 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2938 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2937 // qDebug("Name %s ", (*it).familyName().latin1()); 2939 // qDebug("Name %s ", (*it).familyName().latin1());
2938 //} 2940 //}
2939 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2941 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2940 if ( syncOK ) { 2942 if ( syncOK ) {
2941 if ( KABPrefs::instance()->mWriteBackFile ) 2943 if ( KABPrefs::instance()->mWriteBackFile )
2942 { 2944 {
2943 qDebug("saving remote AB "); 2945 qDebug("saving remote AB ");
2944 abLocal.saveAB(); 2946 abLocal.saveAB();
2945 } 2947 }
2946 } 2948 }
2947 setModified(); 2949 setModified();
2948 2950
2949 } 2951 }
2950 if ( syncOK ) 2952 if ( syncOK )
2951 mViewManager->refreshView(); 2953 mViewManager->refreshView();
2952 return syncOK; 2954 return syncOK;
2953#if 0 2955#if 0
2954 2956
2955 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 2957 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
2956 getEventViewerDialog()->setSyncMode( true ); 2958 getEventViewerDialog()->setSyncMode( true );
2957 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 2959 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
2958 getEventViewerDialog()->setSyncMode( false ); 2960 getEventViewerDialog()->setSyncMode( false );
2959 if ( syncOK ) { 2961 if ( syncOK ) {
2960 if ( KOPrefs::instance()->mWriteBackFile ) 2962 if ( KOPrefs::instance()->mWriteBackFile )
2961 { 2963 {
2962 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2964 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2963 storage->save(); 2965 storage->save();
2964 } 2966 }
2965 } 2967 }
2966 setModified(); 2968 setModified();