summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2005-01-29 07:48:23 (UTC)
committer zautrix <zautrix>2005-01-29 07:48:23 (UTC)
commitef1d97a243957180f5ffc3c3b055ffd8bf52e157 (patch) (unidiff)
tree57ebf97cfd0d324ffcecbfb0c9814745f73d54a5 /kaddressbook
parent0850ade22908615389800c6ee973f5906154d980 (diff)
downloadkdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.zip
kdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.tar.gz
kdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.tar.bz2
many stribg fixes
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e2e3a66..0def16e 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -505,2821 +505,2821 @@ void KABCore::restoreSettings()
505 setJumpButtonBarVisible( state ); 505 setJumpButtonBarVisible( state );
506/*US 506/*US
507 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 507 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
508 if ( splitterSize.count() == 0 ) { 508 if ( splitterSize.count() == 0 ) {
509 splitterSize.append( width() / 2 ); 509 splitterSize.append( width() / 2 );
510 splitterSize.append( width() / 2 ); 510 splitterSize.append( width() / 2 );
511 } 511 }
512 mMiniSplitter->setSizes( splitterSize ); 512 mMiniSplitter->setSizes( splitterSize );
513 if ( mExtensionBarSplitter ) { 513 if ( mExtensionBarSplitter ) {
514 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 514 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
515 if ( splitterSize.count() == 0 ) { 515 if ( splitterSize.count() == 0 ) {
516 splitterSize.append( width() / 2 ); 516 splitterSize.append( width() / 2 );
517 splitterSize.append( width() / 2 ); 517 splitterSize.append( width() / 2 );
518 } 518 }
519 mExtensionBarSplitter->setSizes( splitterSize ); 519 mExtensionBarSplitter->setSizes( splitterSize );
520 520
521 } 521 }
522*/ 522*/
523 mViewManager->restoreSettings(); 523 mViewManager->restoreSettings();
524 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 524 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
525 mExtensionManager->restoreSettings(); 525 mExtensionManager->restoreSettings();
526#ifdef DESKTOP_VERSION 526#ifdef DESKTOP_VERSION
527 int wid = width(); 527 int wid = width();
528 if ( wid < 10 ) 528 if ( wid < 10 )
529 wid = 400; 529 wid = 400;
530#else 530#else
531 int wid = QApplication::desktop()->width(); 531 int wid = QApplication::desktop()->width();
532 if ( wid < 640 ) 532 if ( wid < 640 )
533 wid = QApplication::desktop()->height(); 533 wid = QApplication::desktop()->height();
534#endif 534#endif
535 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 535 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
536 if ( true /*splitterSize.count() == 0*/ ) { 536 if ( true /*splitterSize.count() == 0*/ ) {
537 splitterSize.append( wid / 2 ); 537 splitterSize.append( wid / 2 );
538 splitterSize.append( wid / 2 ); 538 splitterSize.append( wid / 2 );
539 } 539 }
540 mMiniSplitter->setSizes( splitterSize ); 540 mMiniSplitter->setSizes( splitterSize );
541 if ( mExtensionBarSplitter ) { 541 if ( mExtensionBarSplitter ) {
542 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 542 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
543 if ( true /*splitterSize.count() == 0*/ ) { 543 if ( true /*splitterSize.count() == 0*/ ) {
544 splitterSize.append( wid / 2 ); 544 splitterSize.append( wid / 2 );
545 splitterSize.append( wid / 2 ); 545 splitterSize.append( wid / 2 );
546 } 546 }
547 mExtensionBarSplitter->setSizes( splitterSize ); 547 mExtensionBarSplitter->setSizes( splitterSize );
548 548
549 } 549 }
550 550
551 551
552} 552}
553 553
554void KABCore::saveSettings() 554void KABCore::saveSettings()
555{ 555{
556 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 556 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
557 if ( mExtensionBarSplitter ) 557 if ( mExtensionBarSplitter )
558 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 558 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
559 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 559 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
560 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 560 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
561#ifndef KAB_EMBEDDED 561#ifndef KAB_EMBEDDED
562 562
563 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 563 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
564 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 564 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
565#endif //KAB_EMBEDDED 565#endif //KAB_EMBEDDED
566 mExtensionManager->saveSettings(); 566 mExtensionManager->saveSettings();
567 mViewManager->saveSettings(); 567 mViewManager->saveSettings();
568 568
569 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 569 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
570 KABPrefs::instance()->writeConfig(); 570 KABPrefs::instance()->writeConfig();
571 qDebug("KA: KABCore::saveSettings() "); 571 qDebug("KA: KABCore::saveSettings() ");
572} 572}
573 573
574KABC::AddressBook *KABCore::addressBook() const 574KABC::AddressBook *KABCore::addressBook() const
575{ 575{
576 return mAddressBook; 576 return mAddressBook;
577} 577}
578 578
579KConfig *KABCore::config() 579KConfig *KABCore::config()
580{ 580{
581#ifndef KAB_EMBEDDED 581#ifndef KAB_EMBEDDED
582 return KABPrefs::instance()->config(); 582 return KABPrefs::instance()->config();
583#else //KAB_EMBEDDED 583#else //KAB_EMBEDDED
584 return KABPrefs::instance()->getConfig(); 584 return KABPrefs::instance()->getConfig();
585#endif //KAB_EMBEDDED 585#endif //KAB_EMBEDDED
586} 586}
587 587
588KActionCollection *KABCore::actionCollection() const 588KActionCollection *KABCore::actionCollection() const
589{ 589{
590 return mGUIClient->actionCollection(); 590 return mGUIClient->actionCollection();
591} 591}
592 592
593KABC::Field *KABCore::currentSearchField() const 593KABC::Field *KABCore::currentSearchField() const
594{ 594{
595 if (mIncSearchWidget) 595 if (mIncSearchWidget)
596 return mIncSearchWidget->currentField(); 596 return mIncSearchWidget->currentField();
597 else 597 else
598 return 0; 598 return 0;
599} 599}
600 600
601QStringList KABCore::selectedUIDs() const 601QStringList KABCore::selectedUIDs() const
602{ 602{
603 return mViewManager->selectedUids(); 603 return mViewManager->selectedUids();
604} 604}
605 605
606KABC::Resource *KABCore::requestResource( QWidget *parent ) 606KABC::Resource *KABCore::requestResource( QWidget *parent )
607{ 607{
608 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 608 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
609 609
610 QPtrList<KRES::Resource> kresResources; 610 QPtrList<KRES::Resource> kresResources;
611 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 611 QPtrListIterator<KABC::Resource> resIt( kabcResources );
612 KABC::Resource *resource; 612 KABC::Resource *resource;
613 while ( ( resource = resIt.current() ) != 0 ) { 613 while ( ( resource = resIt.current() ) != 0 ) {
614 ++resIt; 614 ++resIt;
615 if ( !resource->readOnly() ) { 615 if ( !resource->readOnly() ) {
616 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 616 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
617 if ( res ) 617 if ( res )
618 kresResources.append( res ); 618 kresResources.append( res );
619 } 619 }
620 } 620 }
621 621
622 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 622 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
623 return static_cast<KABC::Resource*>( res ); 623 return static_cast<KABC::Resource*>( res );
624} 624}
625 625
626#ifndef KAB_EMBEDDED 626#ifndef KAB_EMBEDDED
627KAboutData *KABCore::createAboutData() 627KAboutData *KABCore::createAboutData()
628#else //KAB_EMBEDDED 628#else //KAB_EMBEDDED
629void KABCore::createAboutData() 629void KABCore::createAboutData()
630#endif //KAB_EMBEDDED 630#endif //KAB_EMBEDDED
631{ 631{
632#ifndef KAB_EMBEDDED 632#ifndef KAB_EMBEDDED
633 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 633 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
634 "3.1", I18N_NOOP( "The KDE Address Book" ), 634 "3.1", I18N_NOOP( "The KDE Address Book" ),
635 KAboutData::License_GPL_V2, 635 KAboutData::License_GPL_V2,
636 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 636 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
637 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 637 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
638 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 638 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
639 about->addAuthor( "Cornelius Schumacher", 639 about->addAuthor( "Cornelius Schumacher",
640 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 640 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
641 "schumacher@kde.org" ); 641 "schumacher@kde.org" );
642 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 642 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
643 "mpilone@slac.com" ); 643 "mpilone@slac.com" );
644 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 644 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
645 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 645 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
646 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 646 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
647 "michel@klaralvdalens-datakonsult.se" ); 647 "michel@klaralvdalens-datakonsult.se" );
648 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 648 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
649 "hansen@kde.org" ); 649 "hansen@kde.org" );
650 650
651 return about; 651 return about;
652#endif //KAB_EMBEDDED 652#endif //KAB_EMBEDDED
653 653
654 QString version; 654 QString version;
655#include <../version> 655#include <../version>
656 QMessageBox::about( this, "About KAddressbook/Pi", 656 QMessageBox::about( this, "About KAddressbook/Pi",
657 "KAddressbook/Platform-independent\n" 657 "KAddressbook/Platform-independent\n"
658 "(KA/Pi) " +version + " - " + 658 "(KA/Pi) " +version + " - " +
659#ifdef DESKTOP_VERSION 659#ifdef DESKTOP_VERSION
660 "Desktop Edition\n" 660 "Desktop Edition\n"
661#else 661#else
662 "PDA-Edition\n" 662 "PDA-Edition\n"
663 "for: Zaurus 5500 / 7x0 / 8x0\n" 663 "for: Zaurus 5500 / 7x0 / 8x0\n"
664#endif 664#endif
665 665
666 "(c) 2004 Ulf Schenk\n" 666 "(c) 2004 Ulf Schenk\n"
667 "(c) 2004 Lutz Rogowski\n" 667 "(c) 2004 Lutz Rogowski\n"
668 "(c) 1997-2003, The KDE PIM Team\n" 668 "(c) 1997-2003, The KDE PIM Team\n"
669 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 669 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
670 "Don Sanders Original author\n" 670 "Don Sanders Original author\n"
671 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 671 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
672 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 672 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
673 "Greg Stern DCOP interface\n" 673 "Greg Stern DCOP interface\n"
674 "Mark Westcot Contact pinning\n" 674 "Mark Westcot Contact pinning\n"
675 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 675 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
676 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 676 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
677#ifdef _WIN32_ 677#ifdef _WIN32_
678 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 678 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
679#endif 679#endif
680 ); 680 );
681} 681}
682 682
683void KABCore::setContactSelected( const QString &uid ) 683void KABCore::setContactSelected( const QString &uid )
684{ 684{
685 KABC::Addressee addr = mAddressBook->findByUid( uid ); 685 KABC::Addressee addr = mAddressBook->findByUid( uid );
686 if ( !mDetails->isHidden() ) 686 if ( !mDetails->isHidden() )
687 mDetails->setAddressee( addr ); 687 mDetails->setAddressee( addr );
688 688
689 if ( !addr.isEmpty() ) { 689 if ( !addr.isEmpty() ) {
690 emit contactSelected( addr.formattedName() ); 690 emit contactSelected( addr.formattedName() );
691 KABC::Picture pic = addr.photo(); 691 KABC::Picture pic = addr.photo();
692 if ( pic.isIntern() ) { 692 if ( pic.isIntern() ) {
693//US emit contactSelected( pic.data() ); 693//US emit contactSelected( pic.data() );
694//US instead use: 694//US instead use:
695 QPixmap px; 695 QPixmap px;
696 if (pic.data().isNull() != true) 696 if (pic.data().isNull() != true)
697 { 697 {
698 px.convertFromImage(pic.data()); 698 px.convertFromImage(pic.data());
699 } 699 }
700 700
701 emit contactSelected( px ); 701 emit contactSelected( px );
702 } 702 }
703 } 703 }
704 704
705 705
706 mExtensionManager->setSelectionChanged(); 706 mExtensionManager->setSelectionChanged();
707 707
708 // update the actions 708 // update the actions
709 bool selected = !uid.isEmpty(); 709 bool selected = !uid.isEmpty();
710 710
711 if ( mReadWrite ) { 711 if ( mReadWrite ) {
712 mActionCut->setEnabled( selected ); 712 mActionCut->setEnabled( selected );
713 mActionPaste->setEnabled( selected ); 713 mActionPaste->setEnabled( selected );
714 } 714 }
715 715
716 mActionCopy->setEnabled( selected ); 716 mActionCopy->setEnabled( selected );
717 mActionDelete->setEnabled( selected ); 717 mActionDelete->setEnabled( selected );
718 mActionEditAddressee->setEnabled( selected ); 718 mActionEditAddressee->setEnabled( selected );
719 mActionMail->setEnabled( selected ); 719 mActionMail->setEnabled( selected );
720 mActionMailVCard->setEnabled( selected ); 720 mActionMailVCard->setEnabled( selected );
721 //if (mActionBeam) 721 //if (mActionBeam)
722 //mActionBeam->setEnabled( selected ); 722 //mActionBeam->setEnabled( selected );
723 mActionWhoAmI->setEnabled( selected ); 723 mActionWhoAmI->setEnabled( selected );
724} 724}
725 725
726void KABCore::sendMail() 726void KABCore::sendMail()
727{ 727{
728 sendMail( mViewManager->selectedEmails().join( ", " ) ); 728 sendMail( mViewManager->selectedEmails().join( ", " ) );
729} 729}
730 730
731void KABCore::sendMail( const QString& emaillist ) 731void KABCore::sendMail( const QString& emaillist )
732{ 732{
733 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 733 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
734 if (emaillist.contains(",") > 0) 734 if (emaillist.contains(",") > 0)
735 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 735 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
736 else 736 else
737 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 737 ExternalAppHandler::instance()->mailToOneContact( emaillist );
738} 738}
739 739
740 740
741 741
742void KABCore::mailVCard() 742void KABCore::mailVCard()
743{ 743{
744 QStringList uids = mViewManager->selectedUids(); 744 QStringList uids = mViewManager->selectedUids();
745 if ( !uids.isEmpty() ) 745 if ( !uids.isEmpty() )
746 mailVCard( uids ); 746 mailVCard( uids );
747} 747}
748 748
749void KABCore::mailVCard( const QStringList& uids ) 749void KABCore::mailVCard( const QStringList& uids )
750{ 750{
751 QStringList urls; 751 QStringList urls;
752 752
753// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 753// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
754 754
755 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 755 QString dirName = "/tmp/" + KApplication::randomString( 8 );
756 756
757 757
758 758
759 QDir().mkdir( dirName, true ); 759 QDir().mkdir( dirName, true );
760 760
761 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 761 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
762 KABC::Addressee a = mAddressBook->findByUid( *it ); 762 KABC::Addressee a = mAddressBook->findByUid( *it );
763 763
764 if ( a.isEmpty() ) 764 if ( a.isEmpty() )
765 continue; 765 continue;
766 766
767 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 767 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
768 768
769 QString fileName = dirName + "/" + name; 769 QString fileName = dirName + "/" + name;
770 770
771 QFile outFile(fileName); 771 QFile outFile(fileName);
772 772
773 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 773 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
774 KABC::VCardConverter converter; 774 KABC::VCardConverter converter;
775 QString vcard; 775 QString vcard;
776 776
777 converter.addresseeToVCard( a, vcard ); 777 converter.addresseeToVCard( a, vcard );
778 778
779 QTextStream t( &outFile ); // use a text stream 779 QTextStream t( &outFile ); // use a text stream
780 t.setEncoding( QTextStream::UnicodeUTF8 ); 780 t.setEncoding( QTextStream::UnicodeUTF8 );
781 t << vcard; 781 t << vcard;
782 782
783 outFile.close(); 783 outFile.close();
784 784
785 urls.append( fileName ); 785 urls.append( fileName );
786 } 786 }
787 } 787 }
788 788
789 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 789 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
790 790
791 791
792/*US 792/*US
793 kapp->invokeMailer( QString::null, QString::null, QString::null, 793 kapp->invokeMailer( QString::null, QString::null, QString::null,
794 QString::null, // subject 794 QString::null, // subject
795 QString::null, // body 795 QString::null, // body
796 QString::null, 796 QString::null,
797 urls ); // attachments 797 urls ); // attachments
798*/ 798*/
799 799
800} 800}
801 801
802/** 802/**
803 Beams the "WhoAmI contact. 803 Beams the "WhoAmI contact.
804*/ 804*/
805void KABCore::beamMySelf() 805void KABCore::beamMySelf()
806{ 806{
807 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 807 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
808 if (!a.isEmpty()) 808 if (!a.isEmpty())
809 { 809 {
810 QStringList uids; 810 QStringList uids;
811 uids << a.uid(); 811 uids << a.uid();
812 812
813 beamVCard(uids); 813 beamVCard(uids);
814 } else { 814 } else {
815 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 815 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
816 816
817 817
818 } 818 }
819} 819}
820void KABCore::updateMainWindow() 820void KABCore::updateMainWindow()
821{ 821{
822 822
823 mMainWindow->showMaximized(); 823 mMainWindow->showMaximized();
824 mMainWindow->update(); 824 mMainWindow->update();
825} 825}
826void KABCore::resizeEvent(QResizeEvent* e ) 826void KABCore::resizeEvent(QResizeEvent* e )
827{ 827{
828 if ( !mMiniSplitter ) 828 if ( !mMiniSplitter )
829 return; 829 return;
830 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) "); 830 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) ");
831 if ( QApplication::desktop()->width() >= 480 ) { 831 if ( QApplication::desktop()->width() >= 480 ) {
832 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480 832 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480
833 if ( mMiniSplitter->orientation() == Qt::Vertical ) { 833 if ( mMiniSplitter->orientation() == Qt::Vertical ) {
834 mMiniSplitter->setOrientation( Qt::Horizontal); 834 mMiniSplitter->setOrientation( Qt::Horizontal);
835 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 835 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
836 if ( QApplication::desktop()->width() <= 640 ) { 836 if ( QApplication::desktop()->width() <= 640 ) {
837 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 837 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
838 mViewManager->getFilterAction()->setComboWidth( 150 ); 838 mViewManager->getFilterAction()->setComboWidth( 150 );
839 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 839 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
840 } 840 }
841 } 841 }
842 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640 842 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640
843 if ( mMiniSplitter->orientation() == Qt::Horizontal ) { 843 if ( mMiniSplitter->orientation() == Qt::Horizontal ) {
844 mMiniSplitter->setOrientation( Qt::Vertical ); 844 mMiniSplitter->setOrientation( Qt::Vertical );
845 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 845 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
846 if ( QApplication::desktop()->width() <= 640 ) { 846 if ( QApplication::desktop()->width() <= 640 ) {
847 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 847 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
848 mMainWindow->showMinimized(); 848 mMainWindow->showMinimized();
849 mViewManager->getFilterAction()->setComboWidth( 0 ); 849 mViewManager->getFilterAction()->setComboWidth( 0 );
850 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 850 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
851 } 851 }
852 } 852 }
853 } 853 }
854 } 854 }
855 855
856} 856}
857void KABCore::export2phone() 857void KABCore::export2phone()
858{ 858{
859 859
860 QStringList uids; 860 QStringList uids;
861 XXPortSelectDialog dlg( this, false, this ); 861 XXPortSelectDialog dlg( this, false, this );
862 if ( dlg.exec() ) 862 if ( dlg.exec() )
863 uids = dlg.uids(); 863 uids = dlg.uids();
864 else 864 else
865 return; 865 return;
866 if ( uids.isEmpty() ) 866 if ( uids.isEmpty() )
867 return; 867 return;
868 // qDebug("count %d ", uids.count()); 868 // qDebug("count %d ", uids.count());
869 869
870 KAex2phonePrefs ex2phone; 870 KAex2phonePrefs ex2phone;
871 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 871 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
872 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 872 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
873 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 873 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
874 874
875 if ( !ex2phone.exec() ) { 875 if ( !ex2phone.exec() ) {
876 return; 876 return;
877 } 877 }
878 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 878 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
879 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 879 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
880 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 880 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
881 881
882 882
883 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 883 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
884 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 884 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
885 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 885 KPimGlobalPrefs::instance()->mEx2PhoneModel );
886 886
887 QString fileName = getPhoneFile(); 887 QString fileName = getPhoneFile();
888 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) ) 888 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) )
889 return; 889 return;
890 890
891 message(i18n("Exporting to phone...")); 891 message(i18n("Exporting to phone..."));
892 QTimer::singleShot( 1, this , SLOT ( writeToPhone())); 892 QTimer::singleShot( 1, this , SLOT ( writeToPhone()));
893 893
894} 894}
895QString KABCore::getPhoneFile() 895QString KABCore::getPhoneFile()
896{ 896{
897#ifdef DESKTOP_VERSION 897#ifdef DESKTOP_VERSION
898 return locateLocal("tmp", "phonefile.vcf"); 898 return locateLocal("tmp", "phonefile.vcf");
899#else 899#else
900 return "/tmp/phonefile.vcf"; 900 return "/tmp/phonefile.vcf";
901#endif 901#endif
902 902
903} 903}
904void KABCore::writeToPhone( ) 904void KABCore::writeToPhone( )
905{ 905{
906 if ( PhoneAccess::writeToPhone( getPhoneFile() ) ) 906 if ( PhoneAccess::writeToPhone( getPhoneFile() ) )
907 message(i18n("Export to phone finished!")); 907 message(i18n("Export to phone finished!"));
908 else 908 else
909 qDebug(i18n("KA: Error exporting to phone")); 909 qDebug(i18n("KA: Error exporting to phone"));
910} 910}
911void KABCore::beamVCard() 911void KABCore::beamVCard()
912{ 912{
913 QStringList uids; 913 QStringList uids;
914 XXPortSelectDialog dlg( this, false, this ); 914 XXPortSelectDialog dlg( this, false, this );
915 if ( dlg.exec() ) 915 if ( dlg.exec() )
916 uids = dlg.uids(); 916 uids = dlg.uids();
917 else 917 else
918 return; 918 return;
919 if ( uids.isEmpty() ) 919 if ( uids.isEmpty() )
920 return; 920 return;
921 beamVCard( uids ); 921 beamVCard( uids );
922} 922}
923 923
924 924
925void KABCore::beamVCard(const QStringList& uids) 925void KABCore::beamVCard(const QStringList& uids)
926{ 926{
927 927
928 // LR: we should use the /tmp dir on the Zaurus, 928 // LR: we should use the /tmp dir on the Zaurus,
929 // because: /tmp = RAM, (HOME)/kdepim = flash memory 929 // because: /tmp = RAM, (HOME)/kdepim = flash memory
930 930
931#ifdef DESKTOP_VERSION 931#ifdef DESKTOP_VERSION
932 QString fileName = locateLocal("tmp", "kapibeamfile.vcf"); 932 QString fileName = locateLocal("tmp", "kapibeamfile.vcf");
933#else 933#else
934 QString fileName = "/tmp/kapibeamfile.vcf"; 934 QString fileName = "/tmp/kapibeamfile.vcf";
935#endif 935#endif
936 936
937 KABC::VCardConverter converter; 937 KABC::VCardConverter converter;
938 QString description; 938 QString description;
939 QString datastream; 939 QString datastream;
940 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 940 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
941 KABC::Addressee a = mAddressBook->findByUid( *it ); 941 KABC::Addressee a = mAddressBook->findByUid( *it );
942 942
943 if ( a.isEmpty() ) 943 if ( a.isEmpty() )
944 continue; 944 continue;
945 945
946 if (description.isEmpty()) 946 if (description.isEmpty())
947 description = a.formattedName(); 947 description = a.formattedName();
948 948
949 QString vcard; 949 QString vcard;
950 converter.addresseeToVCard( a, vcard ); 950 converter.addresseeToVCard( a, vcard );
951 int start = 0; 951 int start = 0;
952 int next; 952 int next;
953 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 953 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
954 int semi = vcard.find(";", next); 954 int semi = vcard.find(";", next);
955 int dopp = vcard.find(":", next); 955 int dopp = vcard.find(":", next);
956 int sep; 956 int sep;
957 if ( semi < dopp && semi >= 0 ) 957 if ( semi < dopp && semi >= 0 )
958 sep = semi ; 958 sep = semi ;
959 else 959 else
960 sep = dopp; 960 sep = dopp;
961 datastream +=vcard.mid( start, next - start); 961 datastream +=vcard.mid( start, next - start);
962 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 962 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
963 start = sep; 963 start = sep;
964 } 964 }
965 datastream += vcard.mid( start,vcard.length() ); 965 datastream += vcard.mid( start,vcard.length() );
966 } 966 }
967#ifndef DESKTOP_VERSION 967#ifndef DESKTOP_VERSION
968 QFile outFile(fileName); 968 QFile outFile(fileName);
969 if ( outFile.open(IO_WriteOnly) ) { 969 if ( outFile.open(IO_WriteOnly) ) {
970 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 970 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
971 QTextStream t( &outFile ); // use a text stream 971 QTextStream t( &outFile ); // use a text stream
972 //t.setEncoding( QTextStream::UnicodeUTF8 ); 972 //t.setEncoding( QTextStream::UnicodeUTF8 );
973 t.setEncoding( QTextStream::Latin1 ); 973 t.setEncoding( QTextStream::Latin1 );
974 t <<datastream.latin1(); 974 t <<datastream.latin1();
975 outFile.close(); 975 outFile.close();
976 Ir *ir = new Ir( this ); 976 Ir *ir = new Ir( this );
977 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 977 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
978 ir->send( fileName, description, "text/x-vCard" ); 978 ir->send( fileName, description, "text/x-vCard" );
979 } else { 979 } else {
980 qDebug("KA: Error open temp beam file "); 980 qDebug("KA: Error open temp beam file ");
981 return; 981 return;
982 } 982 }
983#endif 983#endif
984 984
985} 985}
986 986
987void KABCore::beamDone( Ir *ir ) 987void KABCore::beamDone( Ir *ir )
988{ 988{
989#ifndef DESKTOP_VERSION 989#ifndef DESKTOP_VERSION
990 delete ir; 990 delete ir;
991#endif 991#endif
992 topLevelWidget()->raise(); 992 topLevelWidget()->raise();
993 message( i18n("Beaming finished!") ); 993 message( i18n("Beaming finished!") );
994} 994}
995 995
996 996
997void KABCore::browse( const QString& url ) 997void KABCore::browse( const QString& url )
998{ 998{
999#ifndef KAB_EMBEDDED 999#ifndef KAB_EMBEDDED
1000 kapp->invokeBrowser( url ); 1000 kapp->invokeBrowser( url );
1001#else //KAB_EMBEDDED 1001#else //KAB_EMBEDDED
1002 qDebug("KABCore::browse must be fixed"); 1002 qDebug("KABCore::browse must be fixed");
1003#endif //KAB_EMBEDDED 1003#endif //KAB_EMBEDDED
1004} 1004}
1005 1005
1006void KABCore::selectAllContacts() 1006void KABCore::selectAllContacts()
1007{ 1007{
1008 mViewManager->setSelected( QString::null, true ); 1008 mViewManager->setSelected( QString::null, true );
1009} 1009}
1010 1010
1011void KABCore::deleteContacts() 1011void KABCore::deleteContacts()
1012{ 1012{
1013 QStringList uidList = mViewManager->selectedUids(); 1013 QStringList uidList = mViewManager->selectedUids();
1014 deleteContacts( uidList ); 1014 deleteContacts( uidList );
1015} 1015}
1016 1016
1017void KABCore::deleteContacts( const QStringList &uids ) 1017void KABCore::deleteContacts( const QStringList &uids )
1018{ 1018{
1019 if ( uids.count() > 0 ) { 1019 if ( uids.count() > 0 ) {
1020 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 1020 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
1021 UndoStack::instance()->push( command ); 1021 UndoStack::instance()->push( command );
1022 RedoStack::instance()->clear(); 1022 RedoStack::instance()->clear();
1023 1023
1024 // now if we deleted anything, refresh 1024 // now if we deleted anything, refresh
1025 setContactSelected( QString::null ); 1025 setContactSelected( QString::null );
1026 setModified( true ); 1026 setModified( true );
1027 } 1027 }
1028} 1028}
1029 1029
1030void KABCore::copyContacts() 1030void KABCore::copyContacts()
1031{ 1031{
1032 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1032 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1033 1033
1034 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 1034 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
1035 1035
1036 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 1036 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
1037 1037
1038 QClipboard *cb = QApplication::clipboard(); 1038 QClipboard *cb = QApplication::clipboard();
1039 cb->setText( clipText ); 1039 cb->setText( clipText );
1040} 1040}
1041 1041
1042void KABCore::cutContacts() 1042void KABCore::cutContacts()
1043{ 1043{
1044 QStringList uidList = mViewManager->selectedUids(); 1044 QStringList uidList = mViewManager->selectedUids();
1045 1045
1046//US if ( uidList.size() > 0 ) { 1046//US if ( uidList.size() > 0 ) {
1047 if ( uidList.count() > 0 ) { 1047 if ( uidList.count() > 0 ) {
1048 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 1048 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
1049 UndoStack::instance()->push( command ); 1049 UndoStack::instance()->push( command );
1050 RedoStack::instance()->clear(); 1050 RedoStack::instance()->clear();
1051 1051
1052 setModified( true ); 1052 setModified( true );
1053 } 1053 }
1054} 1054}
1055 1055
1056void KABCore::pasteContacts() 1056void KABCore::pasteContacts()
1057{ 1057{
1058 QClipboard *cb = QApplication::clipboard(); 1058 QClipboard *cb = QApplication::clipboard();
1059 1059
1060 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 1060 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
1061 1061
1062 pasteContacts( list ); 1062 pasteContacts( list );
1063} 1063}
1064 1064
1065void KABCore::pasteContacts( KABC::Addressee::List &list ) 1065void KABCore::pasteContacts( KABC::Addressee::List &list )
1066{ 1066{
1067 KABC::Resource *resource = requestResource( this ); 1067 KABC::Resource *resource = requestResource( this );
1068 KABC::Addressee::List::Iterator it; 1068 KABC::Addressee::List::Iterator it;
1069 for ( it = list.begin(); it != list.end(); ++it ) 1069 for ( it = list.begin(); it != list.end(); ++it )
1070 (*it).setResource( resource ); 1070 (*it).setResource( resource );
1071 1071
1072 PwPasteCommand *command = new PwPasteCommand( this, list ); 1072 PwPasteCommand *command = new PwPasteCommand( this, list );
1073 UndoStack::instance()->push( command ); 1073 UndoStack::instance()->push( command );
1074 RedoStack::instance()->clear(); 1074 RedoStack::instance()->clear();
1075 1075
1076 setModified( true ); 1076 setModified( true );
1077} 1077}
1078 1078
1079void KABCore::setWhoAmI() 1079void KABCore::setWhoAmI()
1080{ 1080{
1081 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1081 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1082 1082
1083 if ( addrList.count() > 1 ) { 1083 if ( addrList.count() > 1 ) {
1084 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1084 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
1085 return; 1085 return;
1086 } 1086 }
1087 1087
1088 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1088 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1089 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1089 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
1090 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1090 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1091} 1091}
1092void KABCore::editCategories() 1092void KABCore::editCategories()
1093{ 1093{
1094 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1094 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1095 dlg.exec(); 1095 dlg.exec();
1096} 1096}
1097void KABCore::setCategories() 1097void KABCore::setCategories()
1098{ 1098{
1099 1099
1100 QStringList uids; 1100 QStringList uids;
1101 XXPortSelectDialog dlgx( this, false, this ); 1101 XXPortSelectDialog dlgx( this, false, this );
1102 if ( dlgx.exec() ) 1102 if ( dlgx.exec() )
1103 uids = dlgx.uids(); 1103 uids = dlgx.uids();
1104 else 1104 else
1105 return; 1105 return;
1106 if ( uids.isEmpty() ) 1106 if ( uids.isEmpty() )
1107 return; 1107 return;
1108 // qDebug("count %d ", uids.count()); 1108 // qDebug("count %d ", uids.count());
1109 1109
1110 1110
1111 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1111 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1112 if ( !dlg.exec() ) { 1112 if ( !dlg.exec() ) {
1113 message( i18n("Setting categories cancelled") ); 1113 message( i18n("Setting categories cancelled") );
1114 return; 1114 return;
1115 } 1115 }
1116 bool merge = false; 1116 bool merge = false;
1117 QString msg = i18n( "Merge with existing categories?" ); 1117 QString msg = i18n( "Merge with existing categories?" );
1118 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 1118 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
1119 merge = true; 1119 merge = true;
1120 1120
1121 message( i18n("Setting categories ... please wait!") ); 1121 message( i18n("Setting categories ... please wait!") );
1122 QStringList categories = dlg.selectedCategories(); 1122 QStringList categories = dlg.selectedCategories();
1123 1123
1124 //QStringList uids = mViewManager->selectedUids(); 1124 //QStringList uids = mViewManager->selectedUids();
1125 QStringList::Iterator it; 1125 QStringList::Iterator it;
1126 for ( it = uids.begin(); it != uids.end(); ++it ) { 1126 for ( it = uids.begin(); it != uids.end(); ++it ) {
1127 KABC::Addressee addr = mAddressBook->findByUid( *it ); 1127 KABC::Addressee addr = mAddressBook->findByUid( *it );
1128 if ( !addr.isEmpty() ) { 1128 if ( !addr.isEmpty() ) {
1129 if ( !merge ) 1129 if ( !merge )
1130 addr.setCategories( categories ); 1130 addr.setCategories( categories );
1131 else { 1131 else {
1132 QStringList addrCategories = addr.categories(); 1132 QStringList addrCategories = addr.categories();
1133 QStringList::Iterator catIt; 1133 QStringList::Iterator catIt;
1134 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1134 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1135 if ( !addrCategories.contains( *catIt ) ) 1135 if ( !addrCategories.contains( *catIt ) )
1136 addrCategories.append( *catIt ); 1136 addrCategories.append( *catIt );
1137 } 1137 }
1138 addr.setCategories( addrCategories ); 1138 addr.setCategories( addrCategories );
1139 } 1139 }
1140 mAddressBook->insertAddressee( addr ); 1140 mAddressBook->insertAddressee( addr );
1141 } 1141 }
1142 } 1142 }
1143 1143
1144 if ( uids.count() > 0 ) 1144 if ( uids.count() > 0 )
1145 setModified( true ); 1145 setModified( true );
1146 message( i18n("Setting categories completed!") ); 1146 message( i18n("Setting categories completed!") );
1147} 1147}
1148 1148
1149void KABCore::setSearchFields( const KABC::Field::List &fields ) 1149void KABCore::setSearchFields( const KABC::Field::List &fields )
1150{ 1150{
1151 mIncSearchWidget->setFields( fields ); 1151 mIncSearchWidget->setFields( fields );
1152} 1152}
1153 1153
1154void KABCore::incrementalSearch( const QString& text ) 1154void KABCore::incrementalSearch( const QString& text )
1155{ 1155{
1156 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1156 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1157} 1157}
1158 1158
1159void KABCore::setModified() 1159void KABCore::setModified()
1160{ 1160{
1161 setModified( true ); 1161 setModified( true );
1162} 1162}
1163 1163
1164void KABCore::setModifiedWOrefresh() 1164void KABCore::setModifiedWOrefresh()
1165{ 1165{
1166 // qDebug("KABCore::setModifiedWOrefresh() "); 1166 // qDebug("KABCore::setModifiedWOrefresh() ");
1167 mModified = true; 1167 mModified = true;
1168 mActionSave->setEnabled( mModified ); 1168 mActionSave->setEnabled( mModified );
1169 1169
1170 1170
1171} 1171}
1172void KABCore::setModified( bool modified ) 1172void KABCore::setModified( bool modified )
1173{ 1173{
1174 mModified = modified; 1174 mModified = modified;
1175 mActionSave->setEnabled( mModified ); 1175 mActionSave->setEnabled( mModified );
1176 1176
1177 if ( modified ) 1177 if ( modified )
1178 mJumpButtonBar->recreateButtons(); 1178 mJumpButtonBar->recreateButtons();
1179 1179
1180 mViewManager->refreshView(); 1180 mViewManager->refreshView();
1181 1181
1182} 1182}
1183 1183
1184bool KABCore::modified() const 1184bool KABCore::modified() const
1185{ 1185{
1186 return mModified; 1186 return mModified;
1187} 1187}
1188 1188
1189void KABCore::contactModified( const KABC::Addressee &addr ) 1189void KABCore::contactModified( const KABC::Addressee &addr )
1190{ 1190{
1191 addrModified( addr ); 1191 addrModified( addr );
1192#if 0 // debug only 1192#if 0 // debug only
1193 KABC::Addressee ad = addr; 1193 KABC::Addressee ad = addr;
1194 ad.computeCsum( "123"); 1194 ad.computeCsum( "123");
1195#endif 1195#endif
1196} 1196}
1197 1197
1198void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails ) 1198void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails )
1199{ 1199{
1200 1200
1201 Command *command = 0; 1201 Command *command = 0;
1202 QString uid; 1202 QString uid;
1203 1203
1204 // check if it exists already 1204 // check if it exists already
1205 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1205 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1206 if ( origAddr.isEmpty() ) 1206 if ( origAddr.isEmpty() )
1207 command = new PwNewCommand( mAddressBook, addr ); 1207 command = new PwNewCommand( mAddressBook, addr );
1208 else { 1208 else {
1209 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1209 command = new PwEditCommand( mAddressBook, origAddr, addr );
1210 uid = addr.uid(); 1210 uid = addr.uid();
1211 } 1211 }
1212 1212
1213 UndoStack::instance()->push( command ); 1213 UndoStack::instance()->push( command );
1214 RedoStack::instance()->clear(); 1214 RedoStack::instance()->clear();
1215 if ( updateDetails ) 1215 if ( updateDetails )
1216 mDetails->setAddressee( addr ); 1216 mDetails->setAddressee( addr );
1217 setModified( true ); 1217 setModified( true );
1218} 1218}
1219 1219
1220void KABCore::newContact() 1220void KABCore::newContact()
1221{ 1221{
1222 1222
1223 1223
1224 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1224 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1225 1225
1226 QPtrList<KRES::Resource> kresResources; 1226 QPtrList<KRES::Resource> kresResources;
1227 QPtrListIterator<KABC::Resource> it( kabcResources ); 1227 QPtrListIterator<KABC::Resource> it( kabcResources );
1228 KABC::Resource *resource; 1228 KABC::Resource *resource;
1229 while ( ( resource = it.current() ) != 0 ) { 1229 while ( ( resource = it.current() ) != 0 ) {
1230 ++it; 1230 ++it;
1231 if ( !resource->readOnly() ) { 1231 if ( !resource->readOnly() ) {
1232 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1232 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1233 if ( res ) 1233 if ( res )
1234 kresResources.append( res ); 1234 kresResources.append( res );
1235 } 1235 }
1236 } 1236 }
1237 1237
1238 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1238 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1239 resource = static_cast<KABC::Resource*>( res ); 1239 resource = static_cast<KABC::Resource*>( res );
1240 1240
1241 if ( resource ) { 1241 if ( resource ) {
1242 KABC::Addressee addr; 1242 KABC::Addressee addr;
1243 addr.setResource( resource ); 1243 addr.setResource( resource );
1244 mEditorDialog->setAddressee( addr ); 1244 mEditorDialog->setAddressee( addr );
1245 KApplication::execDialog ( mEditorDialog ); 1245 KApplication::execDialog ( mEditorDialog );
1246 1246
1247 } else 1247 } else
1248 return; 1248 return;
1249 1249
1250 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1250 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1251 1251
1252 1252
1253} 1253}
1254 1254
1255void KABCore::addEmail( QString aStr ) 1255void KABCore::addEmail( QString aStr )
1256{ 1256{
1257#ifndef KAB_EMBEDDED 1257#ifndef KAB_EMBEDDED
1258 QString fullName, email; 1258 QString fullName, email;
1259 1259
1260 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1260 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1261 1261
1262 // Try to lookup the addressee matching the email address 1262 // Try to lookup the addressee matching the email address
1263 bool found = false; 1263 bool found = false;
1264 QStringList emailList; 1264 QStringList emailList;
1265 KABC::AddressBook::Iterator it; 1265 KABC::AddressBook::Iterator it;
1266 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1266 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1267 emailList = (*it).emails(); 1267 emailList = (*it).emails();
1268 if ( emailList.contains( email ) > 0 ) { 1268 if ( emailList.contains( email ) > 0 ) {
1269 found = true; 1269 found = true;
1270 (*it).setNameFromString( fullName ); 1270 (*it).setNameFromString( fullName );
1271 editContact( (*it).uid() ); 1271 editContact( (*it).uid() );
1272 } 1272 }
1273 } 1273 }
1274 1274
1275 if ( !found ) { 1275 if ( !found ) {
1276 KABC::Addressee addr; 1276 KABC::Addressee addr;
1277 addr.setNameFromString( fullName ); 1277 addr.setNameFromString( fullName );
1278 addr.insertEmail( email, true ); 1278 addr.insertEmail( email, true );
1279 1279
1280 mAddressBook->insertAddressee( addr ); 1280 mAddressBook->insertAddressee( addr );
1281 mViewManager->refreshView( addr.uid() ); 1281 mViewManager->refreshView( addr.uid() );
1282 editContact( addr.uid() ); 1282 editContact( addr.uid() );
1283 } 1283 }
1284#else //KAB_EMBEDDED 1284#else //KAB_EMBEDDED
1285 qDebug("KABCore::addEmail finsih method"); 1285 qDebug("KABCore::addEmail finsih method");
1286#endif //KAB_EMBEDDED 1286#endif //KAB_EMBEDDED
1287} 1287}
1288 1288
1289void KABCore::importVCard( const KURL &url, bool showPreview ) 1289void KABCore::importVCard( const KURL &url, bool showPreview )
1290{ 1290{
1291 mXXPortManager->importVCard( url, showPreview ); 1291 mXXPortManager->importVCard( url, showPreview );
1292} 1292}
1293void KABCore::importFromOL() 1293void KABCore::importFromOL()
1294{ 1294{
1295#ifdef _OL_IMPORT_ 1295#ifdef _OL_IMPORT_
1296 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1296 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1297 idgl->exec(); 1297 idgl->exec();
1298 KABC::Addressee::List list = idgl->getAddressList(); 1298 KABC::Addressee::List list = idgl->getAddressList();
1299 if ( list.count() > 0 ) { 1299 if ( list.count() > 0 ) {
1300 KABC::Addressee::List listNew; 1300 KABC::Addressee::List listNew;
1301 KABC::Addressee::List listExisting; 1301 KABC::Addressee::List listExisting;
1302 KABC::Addressee::List::Iterator it; 1302 KABC::Addressee::List::Iterator it;
1303 KABC::AddressBook::Iterator iter; 1303 KABC::AddressBook::Iterator iter;
1304 for ( it = list.begin(); it != list.end(); ++it ) { 1304 for ( it = list.begin(); it != list.end(); ++it ) {
1305 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1305 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1306 listNew.append( (*it) ); 1306 listNew.append( (*it) );
1307 else 1307 else
1308 listExisting.append( (*it) ); 1308 listExisting.append( (*it) );
1309 } 1309 }
1310 if ( listExisting.count() > 0 ) 1310 if ( listExisting.count() > 0 )
1311 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1311 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1312 if ( listNew.count() > 0 ) { 1312 if ( listNew.count() > 0 ) {
1313 pasteWithNewUid = false; 1313 pasteWithNewUid = false;
1314 pasteContacts( listNew ); 1314 pasteContacts( listNew );
1315 pasteWithNewUid = true; 1315 pasteWithNewUid = true;
1316 } 1316 }
1317 } 1317 }
1318 delete idgl; 1318 delete idgl;
1319#endif 1319#endif
1320} 1320}
1321 1321
1322void KABCore::importVCard( const QString &vCard, bool showPreview ) 1322void KABCore::importVCard( const QString &vCard, bool showPreview )
1323{ 1323{
1324 mXXPortManager->importVCard( vCard, showPreview ); 1324 mXXPortManager->importVCard( vCard, showPreview );
1325} 1325}
1326 1326
1327//US added a second method without defaultparameter 1327//US added a second method without defaultparameter
1328void KABCore::editContact2() { 1328void KABCore::editContact2() {
1329 editContact( QString::null ); 1329 editContact( QString::null );
1330} 1330}
1331 1331
1332void KABCore::editContact( const QString &uid ) 1332void KABCore::editContact( const QString &uid )
1333{ 1333{
1334 1334
1335 if ( mExtensionManager->isQuickEditVisible() ) 1335 if ( mExtensionManager->isQuickEditVisible() )
1336 return; 1336 return;
1337 1337
1338 // First, locate the contact entry 1338 // First, locate the contact entry
1339 QString localUID = uid; 1339 QString localUID = uid;
1340 if ( localUID.isNull() ) { 1340 if ( localUID.isNull() ) {
1341 QStringList uidList = mViewManager->selectedUids(); 1341 QStringList uidList = mViewManager->selectedUids();
1342 if ( uidList.count() > 0 ) 1342 if ( uidList.count() > 0 )
1343 localUID = *( uidList.at( 0 ) ); 1343 localUID = *( uidList.at( 0 ) );
1344 } 1344 }
1345 1345
1346 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1346 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1347 if ( !addr.isEmpty() ) { 1347 if ( !addr.isEmpty() ) {
1348 mEditorDialog->setAddressee( addr ); 1348 mEditorDialog->setAddressee( addr );
1349 KApplication::execDialog ( mEditorDialog ); 1349 KApplication::execDialog ( mEditorDialog );
1350 } 1350 }
1351} 1351}
1352 1352
1353/** 1353/**
1354 Shows or edits the detail view for the given uid. If the uid is QString::null, 1354 Shows or edits the detail view for the given uid. If the uid is QString::null,
1355 the method will try to find a selected addressee in the view. 1355 the method will try to find a selected addressee in the view.
1356 */ 1356 */
1357void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1357void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1358{ 1358{
1359 if ( mMultipleViewsAtOnce ) 1359 if ( mMultipleViewsAtOnce )
1360 { 1360 {
1361 editContact( uid ); 1361 editContact( uid );
1362 } 1362 }
1363 else 1363 else
1364 { 1364 {
1365 setDetailsVisible( true ); 1365 setDetailsVisible( true );
1366 mActionDetails->setChecked(true); 1366 mActionDetails->setChecked(true);
1367 } 1367 }
1368 1368
1369} 1369}
1370 1370
1371void KABCore::save() 1371void KABCore::save()
1372{ 1372{
1373 if (syncManager->blockSave()) 1373 if (syncManager->blockSave())
1374 return; 1374 return;
1375 if ( !mModified ) 1375 if ( !mModified )
1376 return; 1376 return;
1377 1377
1378 syncManager->setBlockSave(true); 1378 syncManager->setBlockSave(true);
1379 QString text = i18n( "There was an error while attempting to save\n the " 1379 QString text = i18n( "There was an error while attempting to save\n the "
1380 "address book. Please check that some \nother application is " 1380 "address book. Please check that some \nother application is "
1381 "not using it. " ); 1381 "not using it. " );
1382 message(i18n("Saving ... please wait! "), false); 1382 message(i18n("Saving ... please wait! "), false);
1383 //qApp->processEvents(); 1383 //qApp->processEvents();
1384#ifndef KAB_EMBEDDED 1384#ifndef KAB_EMBEDDED
1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1386 if ( !b || !b->save() ) { 1386 if ( !b || !b->save() ) {
1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1388 } 1388 }
1389#else //KAB_EMBEDDED 1389#else //KAB_EMBEDDED
1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1391 if ( !b || !b->save() ) { 1391 if ( !b || !b->save() ) {
1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1393 } 1393 }
1394#endif //KAB_EMBEDDED 1394#endif //KAB_EMBEDDED
1395 1395
1396 message(i18n("Addressbook saved!")); 1396 message(i18n("Addressbook saved!"));
1397 setModified( false ); 1397 setModified( false );
1398 syncManager->setBlockSave(false); 1398 syncManager->setBlockSave(false);
1399} 1399}
1400 1400
1401 1401
1402void KABCore::undo() 1402void KABCore::undo()
1403{ 1403{
1404 UndoStack::instance()->undo(); 1404 UndoStack::instance()->undo();
1405 1405
1406 // Refresh the view 1406 // Refresh the view
1407 mViewManager->refreshView(); 1407 mViewManager->refreshView();
1408} 1408}
1409 1409
1410void KABCore::redo() 1410void KABCore::redo()
1411{ 1411{
1412 RedoStack::instance()->redo(); 1412 RedoStack::instance()->redo();
1413 1413
1414 // Refresh the view 1414 // Refresh the view
1415 mViewManager->refreshView(); 1415 mViewManager->refreshView();
1416} 1416}
1417void KABCore::setJumpButtonBar( bool visible ) 1417void KABCore::setJumpButtonBar( bool visible )
1418{ 1418{
1419 setJumpButtonBarVisible(visible ); 1419 setJumpButtonBarVisible(visible );
1420 saveSettings(); 1420 saveSettings();
1421} 1421}
1422void KABCore::setJumpButtonBarVisible( bool visible ) 1422void KABCore::setJumpButtonBarVisible( bool visible )
1423{ 1423{
1424 if (mMultipleViewsAtOnce) 1424 if (mMultipleViewsAtOnce)
1425 { 1425 {
1426 if ( visible ) 1426 if ( visible )
1427 mJumpButtonBar->show(); 1427 mJumpButtonBar->show();
1428 else 1428 else
1429 mJumpButtonBar->hide(); 1429 mJumpButtonBar->hide();
1430 } 1430 }
1431 else 1431 else
1432 { 1432 {
1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1434 if (mViewManager->isVisible()) 1434 if (mViewManager->isVisible())
1435 { 1435 {
1436 if ( visible ) 1436 if ( visible )
1437 mJumpButtonBar->show(); 1437 mJumpButtonBar->show();
1438 else 1438 else
1439 mJumpButtonBar->hide(); 1439 mJumpButtonBar->hide();
1440 } 1440 }
1441 else 1441 else
1442 { 1442 {
1443 mJumpButtonBar->hide(); 1443 mJumpButtonBar->hide();
1444 } 1444 }
1445 } 1445 }
1446} 1446}
1447 1447
1448 1448
1449void KABCore::setDetailsToState() 1449void KABCore::setDetailsToState()
1450{ 1450{
1451 setDetailsVisible( mActionDetails->isChecked() ); 1451 setDetailsVisible( mActionDetails->isChecked() );
1452} 1452}
1453void KABCore::setDetailsToggle() 1453void KABCore::setDetailsToggle()
1454{ 1454{
1455 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1455 mActionDetails->setChecked( !mActionDetails->isChecked() );
1456 setDetailsToState(); 1456 setDetailsToState();
1457} 1457}
1458 1458
1459 1459
1460 1460
1461void KABCore::setDetailsVisible( bool visible ) 1461void KABCore::setDetailsVisible( bool visible )
1462{ 1462{
1463 if (visible && mDetails->isHidden()) 1463 if (visible && mDetails->isHidden())
1464 { 1464 {
1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1466 if ( addrList.count() > 0 ) 1466 if ( addrList.count() > 0 )
1467 mDetails->setAddressee( addrList[ 0 ] ); 1467 mDetails->setAddressee( addrList[ 0 ] );
1468 } 1468 }
1469 1469
1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1471 // the listview and the detailview. We do that by changing the splitbar size. 1471 // the listview and the detailview. We do that by changing the splitbar size.
1472 if (mMultipleViewsAtOnce) 1472 if (mMultipleViewsAtOnce)
1473 { 1473 {
1474 if ( visible ) 1474 if ( visible )
1475 mDetails->show(); 1475 mDetails->show();
1476 else 1476 else
1477 mDetails->hide(); 1477 mDetails->hide();
1478 } 1478 }
1479 else 1479 else
1480 { 1480 {
1481 if ( visible ) { 1481 if ( visible ) {
1482 mViewManager->hide(); 1482 mViewManager->hide();
1483 mDetails->show(); 1483 mDetails->show();
1484 mIncSearchWidget->setFocus(); 1484 mIncSearchWidget->setFocus();
1485 } 1485 }
1486 else { 1486 else {
1487 mViewManager->show(); 1487 mViewManager->show();
1488 mDetails->hide(); 1488 mDetails->hide();
1489 mViewManager->setFocusAV(); 1489 mViewManager->setFocusAV();
1490 } 1490 }
1491 setJumpButtonBarVisible( !visible ); 1491 setJumpButtonBarVisible( !visible );
1492 } 1492 }
1493 1493
1494} 1494}
1495 1495
1496void KABCore::extensionChanged( int id ) 1496void KABCore::extensionChanged( int id )
1497{ 1497{
1498 //change the details view only for non desktop systems 1498 //change the details view only for non desktop systems
1499#ifndef DESKTOP_VERSION 1499#ifndef DESKTOP_VERSION
1500 1500
1501 if (id == 0) 1501 if (id == 0)
1502 { 1502 {
1503 //the user disabled the extension. 1503 //the user disabled the extension.
1504 1504
1505 if (mMultipleViewsAtOnce) 1505 if (mMultipleViewsAtOnce)
1506 { // enable detailsview again 1506 { // enable detailsview again
1507 setDetailsVisible( true ); 1507 setDetailsVisible( true );
1508 mActionDetails->setChecked( true ); 1508 mActionDetails->setChecked( true );
1509 } 1509 }
1510 else 1510 else
1511 { //go back to the listview 1511 { //go back to the listview
1512 setDetailsVisible( false ); 1512 setDetailsVisible( false );
1513 mActionDetails->setChecked( false ); 1513 mActionDetails->setChecked( false );
1514 mActionDetails->setEnabled(true); 1514 mActionDetails->setEnabled(true);
1515 } 1515 }
1516 1516
1517 } 1517 }
1518 else 1518 else
1519 { 1519 {
1520 //the user enabled the extension. 1520 //the user enabled the extension.
1521 setDetailsVisible( false ); 1521 setDetailsVisible( false );
1522 mActionDetails->setChecked( false ); 1522 mActionDetails->setChecked( false );
1523 1523
1524 if (!mMultipleViewsAtOnce) 1524 if (!mMultipleViewsAtOnce)
1525 { 1525 {
1526 mActionDetails->setEnabled(false); 1526 mActionDetails->setEnabled(false);
1527 } 1527 }
1528 1528
1529 mExtensionManager->setSelectionChanged(); 1529 mExtensionManager->setSelectionChanged();
1530 1530
1531 } 1531 }
1532 1532
1533#endif// DESKTOP_VERSION 1533#endif// DESKTOP_VERSION
1534 1534
1535} 1535}
1536 1536
1537 1537
1538void KABCore::extensionModified( const KABC::Addressee::List &list ) 1538void KABCore::extensionModified( const KABC::Addressee::List &list )
1539{ 1539{
1540 1540
1541 if ( list.count() != 0 ) { 1541 if ( list.count() != 0 ) {
1542 KABC::Addressee::List::ConstIterator it; 1542 KABC::Addressee::List::ConstIterator it;
1543 for ( it = list.begin(); it != list.end(); ++it ) 1543 for ( it = list.begin(); it != list.end(); ++it )
1544 mAddressBook->insertAddressee( *it ); 1544 mAddressBook->insertAddressee( *it );
1545 if ( list.count() > 1 ) 1545 if ( list.count() > 1 )
1546 setModified(); 1546 setModified();
1547 else 1547 else
1548 setModifiedWOrefresh(); 1548 setModifiedWOrefresh();
1549 } 1549 }
1550 if ( list.count() == 0 ) 1550 if ( list.count() == 0 )
1551 mViewManager->refreshView(); 1551 mViewManager->refreshView();
1552 else 1552 else
1553 mViewManager->refreshView( list[ 0 ].uid() ); 1553 mViewManager->refreshView( list[ 0 ].uid() );
1554 1554
1555 1555
1556 1556
1557} 1557}
1558 1558
1559QString KABCore::getNameByPhone( const QString &phone ) 1559QString KABCore::getNameByPhone( const QString &phone )
1560{ 1560{
1561#ifndef KAB_EMBEDDED 1561#ifndef KAB_EMBEDDED
1562 QRegExp r( "[/*/-/ ]" ); 1562 QRegExp r( "[/*/-/ ]" );
1563 QString localPhone( phone ); 1563 QString localPhone( phone );
1564 1564
1565 bool found = false; 1565 bool found = false;
1566 QString ownerName = ""; 1566 QString ownerName = "";
1567 KABC::AddressBook::Iterator iter; 1567 KABC::AddressBook::Iterator iter;
1568 KABC::PhoneNumber::List::Iterator phoneIter; 1568 KABC::PhoneNumber::List::Iterator phoneIter;
1569 KABC::PhoneNumber::List phoneList; 1569 KABC::PhoneNumber::List phoneList;
1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1571 phoneList = (*iter).phoneNumbers(); 1571 phoneList = (*iter).phoneNumbers();
1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1573 ++phoneIter) { 1573 ++phoneIter) {
1574 // Get rid of separator chars so just the numbers are compared. 1574 // Get rid of separator chars so just the numbers are compared.
1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1576 ownerName = (*iter).formattedName(); 1576 ownerName = (*iter).formattedName();
1577 found = true; 1577 found = true;
1578 } 1578 }
1579 } 1579 }
1580 } 1580 }
1581 1581
1582 return ownerName; 1582 return ownerName;
1583#else //KAB_EMBEDDED 1583#else //KAB_EMBEDDED
1584 qDebug("KABCore::getNameByPhone finsih method"); 1584 qDebug("KABCore::getNameByPhone finsih method");
1585 return ""; 1585 return "";
1586#endif //KAB_EMBEDDED 1586#endif //KAB_EMBEDDED
1587 1587
1588} 1588}
1589 1589
1590void KABCore::openConfigDialog() 1590void KABCore::openConfigDialog()
1591{ 1591{
1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1594 ConfigureDialog->addModule(kabcfg ); 1594 ConfigureDialog->addModule(kabcfg );
1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1596 ConfigureDialog->addModule(kdelibcfg ); 1596 ConfigureDialog->addModule(kdelibcfg );
1597 1597
1598 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1598 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1599 this, SLOT( configurationChanged() ) ); 1599 this, SLOT( configurationChanged() ) );
1600 connect( ConfigureDialog, SIGNAL( okClicked() ), 1600 connect( ConfigureDialog, SIGNAL( okClicked() ),
1601 this, SLOT( configurationChanged() ) ); 1601 this, SLOT( configurationChanged() ) );
1602 saveSettings(); 1602 saveSettings();
1603#ifndef DESKTOP_VERSION 1603#ifndef DESKTOP_VERSION
1604 ConfigureDialog->showMaximized(); 1604 ConfigureDialog->showMaximized();
1605#endif 1605#endif
1606 if ( ConfigureDialog->exec() ) 1606 if ( ConfigureDialog->exec() )
1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1608 delete ConfigureDialog; 1608 delete ConfigureDialog;
1609} 1609}
1610 1610
1611void KABCore::openLDAPDialog() 1611void KABCore::openLDAPDialog()
1612{ 1612{
1613#ifndef KAB_EMBEDDED 1613#ifndef KAB_EMBEDDED
1614 if ( !mLdapSearchDialog ) { 1614 if ( !mLdapSearchDialog ) {
1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1617 SLOT( refreshView() ) ); 1617 SLOT( refreshView() ) );
1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1619 SLOT( setModified() ) ); 1619 SLOT( setModified() ) );
1620 } else 1620 } else
1621 mLdapSearchDialog->restoreSettings(); 1621 mLdapSearchDialog->restoreSettings();
1622 1622
1623 if ( mLdapSearchDialog->isOK() ) 1623 if ( mLdapSearchDialog->isOK() )
1624 mLdapSearchDialog->exec(); 1624 mLdapSearchDialog->exec();
1625#else //KAB_EMBEDDED 1625#else //KAB_EMBEDDED
1626 qDebug("KABCore::openLDAPDialog() finsih method"); 1626 qDebug("KABCore::openLDAPDialog() finsih method");
1627#endif //KAB_EMBEDDED 1627#endif //KAB_EMBEDDED
1628} 1628}
1629 1629
1630void KABCore::print() 1630void KABCore::print()
1631{ 1631{
1632#ifndef KAB_EMBEDDED 1632#ifndef KAB_EMBEDDED
1633 KPrinter printer; 1633 KPrinter printer;
1634 if ( !printer.setup( this ) ) 1634 if ( !printer.setup( this ) )
1635 return; 1635 return;
1636 1636
1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1638 mViewManager->selectedUids(), this ); 1638 mViewManager->selectedUids(), this );
1639 1639
1640 wizard.exec(); 1640 wizard.exec();
1641#else //KAB_EMBEDDED 1641#else //KAB_EMBEDDED
1642 qDebug("KABCore::print() finsih method"); 1642 qDebug("KABCore::print() finsih method");
1643#endif //KAB_EMBEDDED 1643#endif //KAB_EMBEDDED
1644 1644
1645} 1645}
1646 1646
1647 1647
1648void KABCore::addGUIClient( KXMLGUIClient *client ) 1648void KABCore::addGUIClient( KXMLGUIClient *client )
1649{ 1649{
1650 if ( mGUIClient ) 1650 if ( mGUIClient )
1651 mGUIClient->insertChildClient( client ); 1651 mGUIClient->insertChildClient( client );
1652 else 1652 else
1653 KMessageBox::error( this, "no KXMLGUICLient"); 1653 KMessageBox::error( this, "no KXMLGUICLient");
1654} 1654}
1655 1655
1656 1656
1657void KABCore::configurationChanged() 1657void KABCore::configurationChanged()
1658{ 1658{
1659 mExtensionManager->reconfigure(); 1659 mExtensionManager->reconfigure();
1660} 1660}
1661 1661
1662void KABCore::addressBookChanged() 1662void KABCore::addressBookChanged()
1663{ 1663{
1664/*US 1664/*US
1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1666 while ( it.current() ) { 1666 while ( it.current() ) {
1667 if ( it.current()->dirty() ) { 1667 if ( it.current()->dirty() ) {
1668 QString text = i18n( "Data has been changed externally. Unsaved " 1668 QString text = i18n( "Data has been changed externally. Unsaved "
1669 "changes will be lost." ); 1669 "changes will be lost." );
1670 KMessageBox::information( this, text ); 1670 KMessageBox::information( this, text );
1671 } 1671 }
1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1673 ++it; 1673 ++it;
1674 } 1674 }
1675*/ 1675*/
1676 if (mEditorDialog) 1676 if (mEditorDialog)
1677 { 1677 {
1678 if (mEditorDialog->dirty()) 1678 if (mEditorDialog->dirty())
1679 { 1679 {
1680 QString text = i18n( "Data has been changed externally. Unsaved " 1680 QString text = i18n( "Data has been changed externally. Unsaved "
1681 "changes will be lost." ); 1681 "changes will be lost." );
1682 KMessageBox::information( this, text ); 1682 KMessageBox::information( this, text );
1683 } 1683 }
1684 QString currentuid = mEditorDialog->addressee().uid(); 1684 QString currentuid = mEditorDialog->addressee().uid();
1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1686 } 1686 }
1687 mViewManager->refreshView(); 1687 mViewManager->refreshView();
1688 1688
1689 1689
1690} 1690}
1691 1691
1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1693 const char *name ) 1693 const char *name )
1694{ 1694{
1695 1695
1696 if ( mEditorDialog == 0 ) { 1696 if ( mEditorDialog == 0 ) {
1697 mEditorDialog = new AddresseeEditorDialog( this, parent, 1697 mEditorDialog = new AddresseeEditorDialog( this, parent,
1698 name ? name : "editorDialog" ); 1698 name ? name : "editorDialog" );
1699 1699
1700 1700
1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1702 SLOT( contactModified( const KABC::Addressee& ) ) ); 1702 SLOT( contactModified( const KABC::Addressee& ) ) );
1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1704 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1704 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1705 } 1705 }
1706 1706
1707 return mEditorDialog; 1707 return mEditorDialog;
1708} 1708}
1709 1709
1710void KABCore::slotEditorDestroyed( const QString &uid ) 1710void KABCore::slotEditorDestroyed( const QString &uid )
1711{ 1711{
1712 //mEditorDict.remove( uid ); 1712 //mEditorDict.remove( uid );
1713} 1713}
1714 1714
1715void KABCore::initGUI() 1715void KABCore::initGUI()
1716{ 1716{
1717#ifndef KAB_EMBEDDED 1717#ifndef KAB_EMBEDDED
1718 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1718 QHBoxLayout *topLayout = new QHBoxLayout( this );
1719 topLayout->setSpacing( KDialogBase::spacingHint() ); 1719 topLayout->setSpacing( KDialogBase::spacingHint() );
1720 1720
1721 mExtensionBarSplitter = new QSplitter( this ); 1721 mExtensionBarSplitter = new QSplitter( this );
1722 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1722 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1723 1723
1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1725 1725
1726 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1726 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1727 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1727 mIncSearchWidget = new IncSearchWidget( viewSpace );
1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1729 SLOT( incrementalSearch( const QString& ) ) ); 1729 SLOT( incrementalSearch( const QString& ) ) );
1730 1730
1731 mViewManager = new ViewManager( this, viewSpace ); 1731 mViewManager = new ViewManager( this, viewSpace );
1732 viewSpace->setStretchFactor( mViewManager, 1 ); 1732 viewSpace->setStretchFactor( mViewManager, 1 );
1733 1733
1734 mDetails = new ViewContainer( mDetailsSplitter ); 1734 mDetails = new ViewContainer( mDetailsSplitter );
1735 1735
1736 mJumpButtonBar = new JumpButtonBar( this, this ); 1736 mJumpButtonBar = new JumpButtonBar( this, this );
1737 1737
1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1739 1739
1740 topLayout->addWidget( mExtensionBarSplitter ); 1740 topLayout->addWidget( mExtensionBarSplitter );
1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1742 topLayout->addWidget( mJumpButtonBar ); 1742 topLayout->addWidget( mJumpButtonBar );
1743 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1743 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1744 1744
1745 mXXPortManager = new XXPortManager( this, this ); 1745 mXXPortManager = new XXPortManager( this, this );
1746 1746
1747#else //KAB_EMBEDDED 1747#else //KAB_EMBEDDED
1748 //US initialize viewMenu before settingup viewmanager. 1748 //US initialize viewMenu before settingup viewmanager.
1749 // Viewmanager needs this menu to plugin submenues. 1749 // Viewmanager needs this menu to plugin submenues.
1750 viewMenu = new QPopupMenu( this ); 1750 viewMenu = new QPopupMenu( this );
1751 settingsMenu = new QPopupMenu( this ); 1751 settingsMenu = new QPopupMenu( this );
1752 //filterMenu = new QPopupMenu( this ); 1752 //filterMenu = new QPopupMenu( this );
1753 ImportMenu = new QPopupMenu( this ); 1753 ImportMenu = new QPopupMenu( this );
1754 ExportMenu = new QPopupMenu( this ); 1754 ExportMenu = new QPopupMenu( this );
1755 syncMenu = new QPopupMenu( this ); 1755 syncMenu = new QPopupMenu( this );
1756 changeMenu= new QPopupMenu( this ); 1756 changeMenu= new QPopupMenu( this );
1757 beamMenu= new QPopupMenu( this ); 1757 beamMenu= new QPopupMenu( this );
1758 1758
1759//US since we have no splitter for the embedded system, setup 1759//US since we have no splitter for the embedded system, setup
1760// a layout with two frames. One left and one right. 1760// a layout with two frames. One left and one right.
1761 1761
1762 QBoxLayout *topLayout; 1762 QBoxLayout *topLayout;
1763 1763
1764 // = new QHBoxLayout( this ); 1764 // = new QHBoxLayout( this );
1765// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1765// QBoxLayout *topLayout = (QBoxLayout*)layout();
1766 1766
1767// QWidget *mainBox = new QWidget( this ); 1767// QWidget *mainBox = new QWidget( this );
1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1769 1769
1770#ifdef DESKTOP_VERSION 1770#ifdef DESKTOP_VERSION
1771 topLayout = new QHBoxLayout( this ); 1771 topLayout = new QHBoxLayout( this );
1772 1772
1773 1773
1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1776 1776
1777 topLayout->addWidget(mMiniSplitter ); 1777 topLayout->addWidget(mMiniSplitter );
1778 1778
1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1781 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1781 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1782 mDetails = new ViewContainer( mMiniSplitter ); 1782 mDetails = new ViewContainer( mMiniSplitter );
1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1784#else 1784#else
1785 if ( QApplication::desktop()->width() > 480 ) { 1785 if ( QApplication::desktop()->width() > 480 ) {
1786 topLayout = new QHBoxLayout( this ); 1786 topLayout = new QHBoxLayout( this );
1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1789 } else { 1789 } else {
1790 1790
1791 topLayout = new QHBoxLayout( this ); 1791 topLayout = new QHBoxLayout( this );
1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1794 } 1794 }
1795 1795
1796 topLayout->addWidget(mMiniSplitter ); 1796 topLayout->addWidget(mMiniSplitter );
1797 mViewManager = new ViewManager( this, mMiniSplitter ); 1797 mViewManager = new ViewManager( this, mMiniSplitter );
1798 mDetails = new ViewContainer( mMiniSplitter ); 1798 mDetails = new ViewContainer( mMiniSplitter );
1799 1799
1800 1800
1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1802#endif 1802#endif
1803 //eh->hide(); 1803 //eh->hide();
1804 // topLayout->addWidget(mExtensionManager ); 1804 // topLayout->addWidget(mExtensionManager );
1805 1805
1806 1806
1807/*US 1807/*US
1808#ifndef KAB_NOSPLITTER 1808#ifndef KAB_NOSPLITTER
1809 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1809 QHBoxLayout *topLayout = new QHBoxLayout( this );
1810//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1810//US topLayout->setSpacing( KDialogBase::spacingHint() );
1811 topLayout->setSpacing( 10 ); 1811 topLayout->setSpacing( 10 );
1812 1812
1813 mDetailsSplitter = new QSplitter( this ); 1813 mDetailsSplitter = new QSplitter( this );
1814 1814
1815 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1815 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1816 1816
1817 mViewManager = new ViewManager( this, viewSpace ); 1817 mViewManager = new ViewManager( this, viewSpace );
1818 viewSpace->setStretchFactor( mViewManager, 1 ); 1818 viewSpace->setStretchFactor( mViewManager, 1 );
1819 1819
1820 mDetails = new ViewContainer( mDetailsSplitter ); 1820 mDetails = new ViewContainer( mDetailsSplitter );
1821 1821
1822 topLayout->addWidget( mDetailsSplitter ); 1822 topLayout->addWidget( mDetailsSplitter );
1823 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1823 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1824#else //KAB_NOSPLITTER 1824#else //KAB_NOSPLITTER
1825 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1825 QHBoxLayout *topLayout = new QHBoxLayout( this );
1826//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1826//US topLayout->setSpacing( KDialogBase::spacingHint() );
1827 topLayout->setSpacing( 10 ); 1827 topLayout->setSpacing( 10 );
1828 1828
1829// mDetailsSplitter = new QSplitter( this ); 1829// mDetailsSplitter = new QSplitter( this );
1830 1830
1831 QVBox *viewSpace = new QVBox( this ); 1831 QVBox *viewSpace = new QVBox( this );
1832 1832
1833 mViewManager = new ViewManager( this, viewSpace ); 1833 mViewManager = new ViewManager( this, viewSpace );
1834 viewSpace->setStretchFactor( mViewManager, 1 ); 1834 viewSpace->setStretchFactor( mViewManager, 1 );
1835 1835
1836 mDetails = new ViewContainer( this ); 1836 mDetails = new ViewContainer( this );
1837 1837
1838 topLayout->addWidget( viewSpace ); 1838 topLayout->addWidget( viewSpace );
1839// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1839// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1840 topLayout->addWidget( mDetails ); 1840 topLayout->addWidget( mDetails );
1841#endif //KAB_NOSPLITTER 1841#endif //KAB_NOSPLITTER
1842*/ 1842*/
1843 1843
1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1845 syncManager->setBlockSave(false); 1845 syncManager->setBlockSave(false);
1846 1846
1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1849 QString sync_file = sentSyncFile(); 1849 QString sync_file = sentSyncFile();
1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1851 syncManager->setDefaultFileName( sync_file ); 1851 syncManager->setDefaultFileName( sync_file );
1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1853 1853
1854#endif //KAB_EMBEDDED 1854#endif //KAB_EMBEDDED
1855 initActions(); 1855 initActions();
1856 1856
1857#ifdef KAB_EMBEDDED 1857#ifdef KAB_EMBEDDED
1858 addActionsManually(); 1858 addActionsManually();
1859 //US make sure the export and import menues are initialized before creating the xxPortManager. 1859 //US make sure the export and import menues are initialized before creating the xxPortManager.
1860 mXXPortManager = new XXPortManager( this, this ); 1860 mXXPortManager = new XXPortManager( this, this );
1861 1861
1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1864 // mActionQuit->plug ( mMainWindow->toolBar()); 1864 // mActionQuit->plug ( mMainWindow->toolBar());
1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1867 // mIncSearchWidget->hide(); 1867 // mIncSearchWidget->hide();
1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1869 SLOT( incrementalSearch( const QString& ) ) ); 1869 SLOT( incrementalSearch( const QString& ) ) );
1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1872 1872
1873 mJumpButtonBar = new JumpButtonBar( this, this ); 1873 mJumpButtonBar = new JumpButtonBar( this, this );
1874 1874
1875 topLayout->addWidget( mJumpButtonBar ); 1875 topLayout->addWidget( mJumpButtonBar );
1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1877 1877
1878// mMainWindow->getIconToolBar()->raise(); 1878// mMainWindow->getIconToolBar()->raise();
1879 1879
1880#endif //KAB_EMBEDDED 1880#endif //KAB_EMBEDDED
1881 1881
1882} 1882}
1883void KABCore::initActions() 1883void KABCore::initActions()
1884{ 1884{
1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1886 1886
1887#ifndef KAB_EMBEDDED 1887#ifndef KAB_EMBEDDED
1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1889 SLOT( clipboardDataChanged() ) ); 1889 SLOT( clipboardDataChanged() ) );
1890#endif //KAB_EMBEDDED 1890#endif //KAB_EMBEDDED
1891 1891
1892 // file menu 1892 // file menu
1893 1893
1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, 1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" ); 1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1898 1898
1899 1899
1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, 1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); 1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1902 1902
1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1904 SLOT( save() ), actionCollection(), "file_sync" ); 1904 SLOT( save() ), actionCollection(), "file_sync" );
1905 1905
1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1907 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1907 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1908 1908
1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1910 this, SLOT( mailVCard() ), 1910 this, SLOT( mailVCard() ),
1911 actionCollection(), "file_mail_vcard"); 1911 actionCollection(), "file_mail_vcard");
1912 1912
1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1914 SLOT( export2phone() ), actionCollection(), 1914 SLOT( export2phone() ), actionCollection(),
1915 "kaddressbook_ex2phone" ); 1915 "kaddressbook_ex2phone" );
1916 1916
1917 mActionBeamVCard = 0; 1917 mActionBeamVCard = 0;
1918 mActionBeam = 0; 1918 mActionBeam = 0;
1919 1919
1920#ifndef DESKTOP_VERSION 1920#ifndef DESKTOP_VERSION
1921 if ( Ir::supported() ) { 1921 if ( Ir::supported() ) {
1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1923 SLOT( beamVCard() ), actionCollection(), 1923 SLOT( beamVCard() ), actionCollection(),
1924 "kaddressbook_beam_vcard" ); 1924 "kaddressbook_beam_vcard" );
1925 1925
1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1927 SLOT( beamMySelf() ), actionCollection(), 1927 SLOT( beamMySelf() ), actionCollection(),
1928 "kaddressbook_beam_myself" ); 1928 "kaddressbook_beam_myself" );
1929 } 1929 }
1930#endif 1930#endif
1931 1931
1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1933 this, SLOT( editContact2() ), 1933 this, SLOT( editContact2() ),
1934 actionCollection(), "file_properties" ); 1934 actionCollection(), "file_properties" );
1935 1935
1936#ifdef KAB_EMBEDDED 1936#ifdef KAB_EMBEDDED
1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1939 mMainWindow, SLOT( exit() ), 1939 mMainWindow, SLOT( exit() ),
1940 actionCollection(), "quit" ); 1940 actionCollection(), "quit" );
1941#endif //KAB_EMBEDDED 1941#endif //KAB_EMBEDDED
1942 1942
1943 // edit menu 1943 // edit menu
1944 if ( mIsPart ) { 1944 if ( mIsPart ) {
1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1946 SLOT( copyContacts() ), actionCollection(), 1946 SLOT( copyContacts() ), actionCollection(),
1947 "kaddressbook_copy" ); 1947 "kaddressbook_copy" );
1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1949 SLOT( cutContacts() ), actionCollection(), 1949 SLOT( cutContacts() ), actionCollection(),
1950 "kaddressbook_cut" ); 1950 "kaddressbook_cut" );
1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1952 SLOT( pasteContacts() ), actionCollection(), 1952 SLOT( pasteContacts() ), actionCollection(),
1953 "kaddressbook_paste" ); 1953 "kaddressbook_paste" );
1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1955 SLOT( selectAllContacts() ), actionCollection(), 1955 SLOT( selectAllContacts() ), actionCollection(),
1956 "kaddressbook_select_all" ); 1956 "kaddressbook_select_all" );
1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1958 SLOT( undo() ), actionCollection(), 1958 SLOT( undo() ), actionCollection(),
1959 "kaddressbook_undo" ); 1959 "kaddressbook_undo" );
1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1961 this, SLOT( redo() ), actionCollection(), 1961 this, SLOT( redo() ), actionCollection(),
1962 "kaddressbook_redo" ); 1962 "kaddressbook_redo" );
1963 } else { 1963 } else {
1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1970 } 1970 }
1971 1971
1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1973 Key_Delete, this, SLOT( deleteContacts() ), 1973 Key_Delete, this, SLOT( deleteContacts() ),
1974 actionCollection(), "edit_delete" ); 1974 actionCollection(), "edit_delete" );
1975 1975
1976 mActionUndo->setEnabled( false ); 1976 mActionUndo->setEnabled( false );
1977 mActionRedo->setEnabled( false ); 1977 mActionRedo->setEnabled( false );
1978 1978
1979 // settings menu 1979 // settings menu
1980#ifdef KAB_EMBEDDED 1980#ifdef KAB_EMBEDDED
1981//US special menuentry to configure the addressbook resources. On KDE 1981//US special menuentry to configure the addressbook resources. On KDE
1982// you do that through the control center !!! 1982// you do that through the control center !!!
1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1984 SLOT( configureResources() ), actionCollection(), 1984 SLOT( configureResources() ), actionCollection(),
1985 "kaddressbook_configure_resources" ); 1985 "kaddressbook_configure_resources" );
1986#endif //KAB_EMBEDDED 1986#endif //KAB_EMBEDDED
1987 1987
1988 if ( mIsPart ) { 1988 if ( mIsPart ) {
1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1990 SLOT( openConfigDialog() ), actionCollection(), 1990 SLOT( openConfigDialog() ), actionCollection(),
1991 "kaddressbook_configure" ); 1991 "kaddressbook_configure" );
1992 1992
1993 //US not implemented yet 1993 //US not implemented yet
1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1995 // this, SLOT( configureKeyBindings() ), actionCollection(), 1995 // this, SLOT( configureKeyBindings() ), actionCollection(),
1996 // "kaddressbook_configure_shortcuts" ); 1996 // "kaddressbook_configure_shortcuts" );
1997#ifdef KAB_EMBEDDED 1997#ifdef KAB_EMBEDDED
1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1999 mActionConfigureToolbars->setEnabled( false ); 1999 mActionConfigureToolbars->setEnabled( false );
2000#endif //KAB_EMBEDDED 2000#endif //KAB_EMBEDDED
2001 2001
2002 } else { 2002 } else {
2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
2004 2004
2005 //US not implemented yet 2005 //US not implemented yet
2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
2007 } 2007 }
2008 2008
2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2010 actionCollection(), "options_show_jump_bar" ); 2010 actionCollection(), "options_show_jump_bar" );
2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) ); 2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) );
2012 2012
2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2014 actionCollection(), "options_show_details" ); 2014 actionCollection(), "options_show_details" );
2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2016 2016
2017 2017
2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2019 SLOT( toggleBeamReceive() ), actionCollection(), 2019 SLOT( toggleBeamReceive() ), actionCollection(),
2020 "kaddressbook_beam_rec" ); 2020 "kaddressbook_beam_rec" );
2021 2021
2022 2022
2023 // misc 2023 // misc
2024 // only enable LDAP lookup if we can handle the protocol 2024 // only enable LDAP lookup if we can handle the protocol
2025#ifndef KAB_EMBEDDED 2025#ifndef KAB_EMBEDDED
2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2028 this, SLOT( openLDAPDialog() ), actionCollection(), 2028 this, SLOT( openLDAPDialog() ), actionCollection(),
2029 "ldap_lookup" ); 2029 "ldap_lookup" );
2030 } 2030 }
2031#else //KAB_EMBEDDED 2031#else //KAB_EMBEDDED
2032 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2032 //qDebug("KABCore::initActions() LDAP has to be implemented");
2033#endif //KAB_EMBEDDED 2033#endif //KAB_EMBEDDED
2034 2034
2035 2035
2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2037 SLOT( setWhoAmI() ), actionCollection(), 2037 SLOT( setWhoAmI() ), actionCollection(),
2038 "set_personal" ); 2038 "set_personal" );
2039 2039
2040 2040
2041 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 2041 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this,
2042 SLOT( setCategories() ), actionCollection(), 2042 SLOT( setCategories() ), actionCollection(),
2043 "edit_set_categories" ); 2043 "edit_set_categories" );
2044 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 2044 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this,
2045 SLOT( editCategories() ), actionCollection(), 2045 SLOT( editCategories() ), actionCollection(),
2046 "edit__categories" ); 2046 "edit__categories" );
2047 2047
2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2049 SLOT( removeVoice() ), actionCollection(), 2049 SLOT( removeVoice() ), actionCollection(),
2050 "remove_voice" ); 2050 "remove_voice" );
2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2052 SLOT( setFormattedName() ), actionCollection(), 2052 SLOT( setFormattedName() ), actionCollection(),
2053 "set_formatted" ); 2053 "set_formatted" );
2054 2054
2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2056 SLOT( manageCategories() ), actionCollection(), 2056 SLOT( manageCategories() ), actionCollection(),
2057 "remove_voice" ); 2057 "remove_voice" );
2058 2058
2059 2059
2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2061 SLOT( importFromOL() ), actionCollection(), 2061 SLOT( importFromOL() ), actionCollection(),
2062 "import_OL" ); 2062 "import_OL" );
2063#ifdef KAB_EMBEDDED 2063#ifdef KAB_EMBEDDED
2064 mActionLicence = new KAction( i18n( "Licence" ), 0, 2064 mActionLicence = new KAction( i18n( "Licence" ), 0,
2065 this, SLOT( showLicence() ), actionCollection(), 2065 this, SLOT( showLicence() ), actionCollection(),
2066 "licence_about_data" ); 2066 "licence_about_data" );
2067 mActionFaq = new KAction( i18n( "Faq" ), 0, 2067 mActionFaq = new KAction( i18n( "Faq" ), 0,
2068 this, SLOT( faq() ), actionCollection(), 2068 this, SLOT( faq() ), actionCollection(),
2069 "faq_about_data" ); 2069 "faq_about_data" );
2070 mActionWN = new KAction( i18n( "What's New?" ), 0, 2070 mActionWN = new KAction( i18n( "What's New?" ), 0,
2071 this, SLOT( whatsnew() ), actionCollection(), 2071 this, SLOT( whatsnew() ), actionCollection(),
2072 "wn" ); 2072 "wn" );
2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2074 this, SLOT( synchowto() ), actionCollection(), 2074 this, SLOT( synchowto() ), actionCollection(),
2075 "sync" ); 2075 "sync" );
2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2077 this, SLOT( kdesynchowto() ), actionCollection(), 2077 this, SLOT( kdesynchowto() ), actionCollection(),
2078 "kdesync" ); 2078 "kdesync" );
2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2080 this, SLOT( multisynchowto() ), actionCollection(), 2080 this, SLOT( multisynchowto() ), actionCollection(),
2081 "multisync" ); 2081 "multisync" );
2082 2082
2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2084 this, SLOT( createAboutData() ), actionCollection(), 2084 this, SLOT( createAboutData() ), actionCollection(),
2085 "kaddressbook_about_data" ); 2085 "kaddressbook_about_data" );
2086#endif //KAB_EMBEDDED 2086#endif //KAB_EMBEDDED
2087 2087
2088 clipboardDataChanged(); 2088 clipboardDataChanged();
2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2091} 2091}
2092 2092
2093//US we need this function, to plug all actions into the correct menues. 2093//US we need this function, to plug all actions into the correct menues.
2094// KDE uses a XML format to plug the actions, but we work her without this overhead. 2094// KDE uses a XML format to plug the actions, but we work her without this overhead.
2095void KABCore::addActionsManually() 2095void KABCore::addActionsManually()
2096{ 2096{
2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2098 2098
2099#ifdef KAB_EMBEDDED 2099#ifdef KAB_EMBEDDED
2100 QPopupMenu *fileMenu = new QPopupMenu( this ); 2100 QPopupMenu *fileMenu = new QPopupMenu( this );
2101 QPopupMenu *editMenu = new QPopupMenu( this ); 2101 QPopupMenu *editMenu = new QPopupMenu( this );
2102 QPopupMenu *helpMenu = new QPopupMenu( this ); 2102 QPopupMenu *helpMenu = new QPopupMenu( this );
2103 2103
2104 KToolBar* tb = mMainWindow->toolBar(); 2104 KToolBar* tb = mMainWindow->toolBar();
2105 2105
2106#ifndef DESKTOP_VERSION 2106#ifndef DESKTOP_VERSION
2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
2108#endif 2108#endif
2109 QMenuBar* mb = mMainWindow->menuBar(); 2109 QMenuBar* mb = mMainWindow->menuBar();
2110 2110
2111 //US setup menubar. 2111 //US setup menubar.
2112 //Disable the following block if you do not want to have a menubar. 2112 //Disable the following block if you do not want to have a menubar.
2113 mb->insertItem( i18n("&File"), fileMenu ); 2113 mb->insertItem( i18n("&File"), fileMenu );
2114 mb->insertItem( i18n("&Edit"), editMenu ); 2114 mb->insertItem( i18n("&Edit"), editMenu );
2115 mb->insertItem( i18n("&View"), viewMenu ); 2115 mb->insertItem( i18n("&View"), viewMenu );
2116 mb->insertItem( i18n("&Settings"), settingsMenu ); 2116 mb->insertItem( i18n("&Settings"), settingsMenu );
2117 mb->insertItem( i18n("Synchronize"), syncMenu ); 2117 mb->insertItem( i18n("Synchronize"), syncMenu );
2118 //mb->insertItem( i18n("&Change"), changeMenu ); 2118 //mb->insertItem( i18n("&Change"), changeMenu );
2119 mb->insertItem( i18n("&Help"), helpMenu ); 2119 mb->insertItem( i18n("&Help"), helpMenu );
2120 mIncSearchWidget = new IncSearchWidget( tb ); 2120 mIncSearchWidget = new IncSearchWidget( tb );
2121 // tb->insertWidget(-1, 0, mIncSearchWidget); 2121 // tb->insertWidget(-1, 0, mIncSearchWidget);
2122#ifndef DESKTOP_VERSION 2122#ifndef DESKTOP_VERSION
2123 } else { 2123 } else {
2124 //US setup toolbar 2124 //US setup toolbar
2125 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2125 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2126 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2126 QPopupMenu *popupBarTB = new QPopupMenu( this );
2127 menuBarTB->insertItem( "ME", popupBarTB); 2127 menuBarTB->insertItem( "ME", popupBarTB);
2128 tb->insertWidget(-1, 0, menuBarTB); 2128 tb->insertWidget(-1, 0, menuBarTB);
2129 mIncSearchWidget = new IncSearchWidget( tb ); 2129 mIncSearchWidget = new IncSearchWidget( tb );
2130 2130
2131 tb->enableMoving(false); 2131 tb->enableMoving(false);
2132 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2132 popupBarTB->insertItem( i18n("&File"), fileMenu );
2133 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2133 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2134 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2134 popupBarTB->insertItem( i18n("&View"), viewMenu );
2135 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2135 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2136 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2136 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2137 mViewManager->getFilterAction()->plug ( popupBarTB); 2137 mViewManager->getFilterAction()->plug ( popupBarTB);
2138 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2138 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2139 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2139 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2140 if (QApplication::desktop()->width() > 320 ) { 2140 if (QApplication::desktop()->width() > 320 ) {
2141 // mViewManager->getFilterAction()->plug ( tb); 2141 // mViewManager->getFilterAction()->plug ( tb);
2142 } 2142 }
2143 } 2143 }
2144#endif 2144#endif
2145 // mActionQuit->plug ( mMainWindow->toolBar()); 2145 // mActionQuit->plug ( mMainWindow->toolBar());
2146 2146
2147 2147
2148 2148
2149 //US Now connect the actions with the menue entries. 2149 //US Now connect the actions with the menue entries.
2150#ifdef DESKTOP_VERSION 2150#ifdef DESKTOP_VERSION
2151 mActionPrint->plug( fileMenu ); 2151 mActionPrint->plug( fileMenu );
2152 mActionPrintDetails->plug( fileMenu ); 2152 mActionPrintDetails->plug( fileMenu );
2153 fileMenu->insertSeparator(); 2153 fileMenu->insertSeparator();
2154#endif 2154#endif
2155 mActionMail->plug( fileMenu ); 2155 mActionMail->plug( fileMenu );
2156 fileMenu->insertSeparator(); 2156 fileMenu->insertSeparator();
2157 2157
2158 mActionNewContact->plug( fileMenu ); 2158 mActionNewContact->plug( fileMenu );
2159 mActionNewContact->plug( tb ); 2159 mActionNewContact->plug( tb );
2160 2160
2161 mActionEditAddressee->plug( fileMenu ); 2161 mActionEditAddressee->plug( fileMenu );
2162 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2162 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2163 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2163 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2164 mActionEditAddressee->plug( tb ); 2164 mActionEditAddressee->plug( tb );
2165 2165
2166 fileMenu->insertSeparator(); 2166 fileMenu->insertSeparator();
2167 mActionSave->plug( fileMenu ); 2167 mActionSave->plug( fileMenu );
2168 fileMenu->insertItem( "&Import", ImportMenu ); 2168 fileMenu->insertItem( "&Import", ImportMenu );
2169 fileMenu->insertItem( "&Export", ExportMenu ); 2169 fileMenu->insertItem( "&Export", ExportMenu );
2170 fileMenu->insertItem( i18n("&Change"), changeMenu ); 2170 fileMenu->insertItem( i18n("&Change"), changeMenu );
2171#ifndef DESKTOP_VERSION 2171#ifndef DESKTOP_VERSION
2172 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu ); 2172 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu );
2173#endif 2173#endif
2174#if 0 2174#if 0
2175 // PENDING fix MailVCard 2175 // PENDING fix MailVCard
2176 fileMenu->insertSeparator(); 2176 fileMenu->insertSeparator();
2177 mActionMailVCard->plug( fileMenu ); 2177 mActionMailVCard->plug( fileMenu );
2178#endif 2178#endif
2179#ifndef DESKTOP_VERSION 2179#ifndef DESKTOP_VERSION
2180 if ( Ir::supported() ) mActionBR->plug( beamMenu ); 2180 if ( Ir::supported() ) mActionBR->plug( beamMenu );
2181 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu ); 2181 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu );
2182 if ( Ir::supported() ) mActionBeam->plug( beamMenu ); 2182 if ( Ir::supported() ) mActionBeam->plug( beamMenu );
2183#endif 2183#endif
2184 fileMenu->insertSeparator(); 2184 fileMenu->insertSeparator();
2185 mActionQuit->plug( fileMenu ); 2185 mActionQuit->plug( fileMenu );
2186#ifdef _OL_IMPORT_ 2186#ifdef _OL_IMPORT_
2187 mActionImportOL->plug( ImportMenu ); 2187 mActionImportOL->plug( ImportMenu );
2188#endif 2188#endif
2189 // edit menu 2189 // edit menu
2190 mActionUndo->plug( editMenu ); 2190 mActionUndo->plug( editMenu );
2191 mActionRedo->plug( editMenu ); 2191 mActionRedo->plug( editMenu );
2192 editMenu->insertSeparator(); 2192 editMenu->insertSeparator();
2193 mActionCut->plug( editMenu ); 2193 mActionCut->plug( editMenu );
2194 mActionCopy->plug( editMenu ); 2194 mActionCopy->plug( editMenu );
2195 mActionPaste->plug( editMenu ); 2195 mActionPaste->plug( editMenu );
2196 mActionDelete->plug( editMenu ); 2196 mActionDelete->plug( editMenu );
2197 editMenu->insertSeparator(); 2197 editMenu->insertSeparator();
2198 mActionSelectAll->plug( editMenu ); 2198 mActionSelectAll->plug( editMenu );
2199 2199
2200 mActionSetFormattedName->plug( changeMenu ); 2200 mActionSetFormattedName->plug( changeMenu );
2201 mActionRemoveVoice->plug( changeMenu ); 2201 mActionRemoveVoice->plug( changeMenu );
2202 // settings menu 2202 // settings menu
2203//US special menuentry to configure the addressbook resources. On KDE 2203//US special menuentry to configure the addressbook resources. On KDE
2204// you do that through the control center !!! 2204// you do that through the control center !!!
2205 mActionConfigResources->plug( settingsMenu ); 2205 mActionConfigResources->plug( settingsMenu );
2206 settingsMenu->insertSeparator(); 2206 settingsMenu->insertSeparator();
2207 2207
2208 mActionConfigKAddressbook->plug( settingsMenu ); 2208 mActionConfigKAddressbook->plug( settingsMenu );
2209 2209
2210 if ( mIsPart ) { 2210 if ( mIsPart ) {
2211 //US not implemented yet 2211 //US not implemented yet
2212 //mActionConfigShortcuts->plug( settingsMenu ); 2212 //mActionConfigShortcuts->plug( settingsMenu );
2213 //mActionConfigureToolbars->plug( settingsMenu ); 2213 //mActionConfigureToolbars->plug( settingsMenu );
2214 2214
2215 } else { 2215 } else {
2216 //US not implemented yet 2216 //US not implemented yet
2217 //mActionKeyBindings->plug( settingsMenu ); 2217 //mActionKeyBindings->plug( settingsMenu );
2218 } 2218 }
2219 2219
2220 settingsMenu->insertSeparator(); 2220 settingsMenu->insertSeparator();
2221 2221
2222 mActionJumpBar->plug( settingsMenu ); 2222 mActionJumpBar->plug( settingsMenu );
2223 mActionDetails->plug( settingsMenu ); 2223 mActionDetails->plug( settingsMenu );
2224 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2224 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2225 mActionDetails->plug( tb ); 2225 mActionDetails->plug( tb );
2226 settingsMenu->insertSeparator(); 2226 settingsMenu->insertSeparator();
2227#ifndef DESKTOP_VERSION 2227#ifndef DESKTOP_VERSION
2228 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2228 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2229 settingsMenu->insertSeparator(); 2229 settingsMenu->insertSeparator();
2230#endif 2230#endif
2231 2231
2232 mActionWhoAmI->plug( settingsMenu ); 2232 mActionWhoAmI->plug( settingsMenu );
2233 mActionEditCategories->plug( settingsMenu ); 2233 mActionEditCategories->plug( settingsMenu );
2234 mActionEditCategories->plug( changeMenu ); 2234 mActionEditCategories->plug( changeMenu );
2235 mActionCategories->plug( changeMenu ); 2235 mActionCategories->plug( changeMenu );
2236 mActionManageCategories->plug( changeMenu ); 2236 mActionManageCategories->plug( changeMenu );
2237 2237
2238 mActionCategories->plug( settingsMenu ); 2238 mActionCategories->plug( settingsMenu );
2239 mActionManageCategories->plug( settingsMenu ); 2239 mActionManageCategories->plug( settingsMenu );
2240 2240
2241 2241
2242 mActionWN->plug( helpMenu ); 2242 mActionWN->plug( helpMenu );
2243 mActionSyncHowto->plug( helpMenu ); 2243 mActionSyncHowto->plug( helpMenu );
2244 mActionKdeSyncHowto->plug( helpMenu ); 2244 mActionKdeSyncHowto->plug( helpMenu );
2245 mActionMultiSyncHowto->plug( helpMenu ); 2245 mActionMultiSyncHowto->plug( helpMenu );
2246 mActionFaq->plug( helpMenu ); 2246 mActionFaq->plug( helpMenu );
2247 mActionLicence->plug( helpMenu ); 2247 mActionLicence->plug( helpMenu );
2248 mActionAboutKAddressbook->plug( helpMenu ); 2248 mActionAboutKAddressbook->plug( helpMenu );
2249 2249
2250 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2250 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2251 2251
2252 mActionSave->plug( tb ); 2252 mActionSave->plug( tb );
2253 mViewManager->getFilterAction()->plug ( tb); 2253 mViewManager->getFilterAction()->plug ( tb);
2254 //LR hide filteraction on started in 480x640 2254 //LR hide filteraction on started in 480x640
2255 if (QApplication::desktop()->width() == 480 ) { 2255 if (QApplication::desktop()->width() == 480 ) {
2256 mViewManager->getFilterAction()->setComboWidth( 0 ); 2256 mViewManager->getFilterAction()->setComboWidth( 0 );
2257 } 2257 }
2258 mActionUndo->plug( tb ); 2258 mActionUndo->plug( tb );
2259 mActionDelete->plug( tb ); 2259 mActionDelete->plug( tb );
2260 mActionRedo->plug( tb ); 2260 mActionRedo->plug( tb );
2261 } else { 2261 } else {
2262 mActionSave->plug( tb ); 2262 mActionSave->plug( tb );
2263 tb->enableMoving(false); 2263 tb->enableMoving(false);
2264 } 2264 }
2265 //mActionQuit->plug ( tb ); 2265 //mActionQuit->plug ( tb );
2266 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2266 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2267 2267
2268 //US link the searchwidget first to this. 2268 //US link the searchwidget first to this.
2269 // The real linkage to the toolbar happens later. 2269 // The real linkage to the toolbar happens later.
2270//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2270//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2271//US tb->insertItem( mIncSearchWidget ); 2271//US tb->insertItem( mIncSearchWidget );
2272/*US 2272/*US
2273 mIncSearchWidget = new IncSearchWidget( tb ); 2273 mIncSearchWidget = new IncSearchWidget( tb );
2274 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2274 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2275 SLOT( incrementalSearch( const QString& ) ) ); 2275 SLOT( incrementalSearch( const QString& ) ) );
2276 2276
2277 mJumpButtonBar = new JumpButtonBar( this, this ); 2277 mJumpButtonBar = new JumpButtonBar( this, this );
2278 2278
2279//US topLayout->addWidget( mJumpButtonBar ); 2279//US topLayout->addWidget( mJumpButtonBar );
2280 this->layout()->add( mJumpButtonBar ); 2280 this->layout()->add( mJumpButtonBar );
2281*/ 2281*/
2282 2282
2283#endif //KAB_EMBEDDED 2283#endif //KAB_EMBEDDED
2284 2284
2285 mActionExport2phone->plug( ExportMenu ); 2285 mActionExport2phone->plug( ExportMenu );
2286 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2286 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2287 syncManager->fillSyncMenu(); 2287 syncManager->fillSyncMenu();
2288 2288
2289} 2289}
2290void KABCore::showLicence() 2290void KABCore::showLicence()
2291{ 2291{
2292 KApplication::showLicence(); 2292 KApplication::showLicence();
2293} 2293}
2294 2294
2295void KABCore::manageCategories( ) 2295void KABCore::manageCategories( )
2296{ 2296{
2297 KABCatPrefs* cp = new KABCatPrefs(); 2297 KABCatPrefs* cp = new KABCatPrefs();
2298 cp->show(); 2298 cp->show();
2299 int w =cp->sizeHint().width() ; 2299 int w =cp->sizeHint().width() ;
2300 int h = cp->sizeHint().height() ; 2300 int h = cp->sizeHint().height() ;
2301 int dw = QApplication::desktop()->width(); 2301 int dw = QApplication::desktop()->width();
2302 int dh = QApplication::desktop()->height(); 2302 int dh = QApplication::desktop()->height();
2303 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2303 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2304 if ( !cp->exec() ) { 2304 if ( !cp->exec() ) {
2305 delete cp; 2305 delete cp;
2306 return; 2306 return;
2307 } 2307 }
2308 int count = 0; 2308 int count = 0;
2309 int cc = 0; 2309 int cc = 0;
2310 message( i18n("Please wait, processing categories...")); 2310 message( i18n("Please wait, processing categories..."));
2311 if ( cp->addCat() ) { 2311 if ( cp->addCat() ) {
2312 KABC::AddressBook::Iterator it; 2312 KABC::AddressBook::Iterator it;
2313 QStringList catList = KABPrefs::instance()->mCustomCategories; 2313 QStringList catList = KABPrefs::instance()->mCustomCategories;
2314 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2314 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2315 ++cc; 2315 ++cc;
2316 if ( cc %10 == 0) 2316 if ( cc %10 == 0)
2317 message(i18n("Processing contact #%1").arg(cc)); 2317 message(i18n("Processing contact #%1").arg(cc));
2318 QStringList catIncList = (*it).categories(); 2318 QStringList catIncList = (*it).categories();
2319 int i; 2319 int i;
2320 for( i = 0; i< catIncList.count(); ++i ) { 2320 for( i = 0; i< catIncList.count(); ++i ) {
2321 if ( !catList.contains (catIncList[i])) { 2321 if ( !catList.contains (catIncList[i])) {
2322 catList.append( catIncList[i] ); 2322 catList.append( catIncList[i] );
2323 //qDebug("add cat %s ", catIncList[i].latin1()); 2323 //qDebug("add cat %s ", catIncList[i].latin1());
2324 ++count; 2324 ++count;
2325 } 2325 }
2326 } 2326 }
2327 } 2327 }
2328 catList.sort(); 2328 catList.sort();
2329 KABPrefs::instance()->mCustomCategories = catList; 2329 KABPrefs::instance()->mCustomCategories = catList;
2330 KABPrefs::instance()->writeConfig(); 2330 KABPrefs::instance()->writeConfig();
2331 message(QString::number( count )+ i18n(" categories added to list! ")); 2331 message(QString::number( count )+ i18n(" categories added to list! "));
2332 } else { 2332 } else {
2333 QStringList catList = KABPrefs::instance()->mCustomCategories; 2333 QStringList catList = KABPrefs::instance()->mCustomCategories;
2334 QStringList catIncList; 2334 QStringList catIncList;
2335 QStringList newCatList; 2335 QStringList newCatList;
2336 KABC::AddressBook::Iterator it; 2336 KABC::AddressBook::Iterator it;
2337 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2337 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2338 ++cc; 2338 ++cc;
2339 if ( cc %10 == 0) 2339 if ( cc %10 == 0)
2340 message(i18n("Processing contact #%1").arg(cc)); 2340 message(i18n("Processing contact #%1").arg(cc));
2341 QStringList catIncList = (*it).categories(); 2341 QStringList catIncList = (*it).categories();
2342 int i; 2342 int i;
2343 if ( catIncList.count() ) { 2343 if ( catIncList.count() ) {
2344 newCatList.clear(); 2344 newCatList.clear();
2345 for( i = 0; i< catIncList.count(); ++i ) { 2345 for( i = 0; i< catIncList.count(); ++i ) {
2346 if ( catList.contains (catIncList[i])) { 2346 if ( catList.contains (catIncList[i])) {
2347 newCatList.append( catIncList[i] ); 2347 newCatList.append( catIncList[i] );
2348 } 2348 }
2349 } 2349 }
2350 newCatList.sort(); 2350 newCatList.sort();
2351 (*it).setCategories( newCatList ); 2351 (*it).setCategories( newCatList );
2352 mAddressBook->insertAddressee( (*it) ); 2352 mAddressBook->insertAddressee( (*it) );
2353 } 2353 }
2354 } 2354 }
2355 setModified( true ); 2355 setModified( true );
2356 mViewManager->refreshView(); 2356 mViewManager->refreshView();
2357 message( i18n("Removing categories done!")); 2357 message( i18n("Removing categories done!"));
2358 } 2358 }
2359 delete cp; 2359 delete cp;
2360} 2360}
2361void KABCore::removeVoice() 2361void KABCore::removeVoice()
2362{ 2362{
2363 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2363 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2364 return; 2364 return;
2365 XXPortSelectDialog dlg( this, false, this ); 2365 XXPortSelectDialog dlg( this, false, this );
2366 if ( !dlg.exec() ) 2366 if ( !dlg.exec() )
2367 return; 2367 return;
2368 mAddressBook->setUntagged(); 2368 mAddressBook->setUntagged();
2369 dlg.tagSelected(); 2369 dlg.tagSelected();
2370 message(i18n("Removing voice..."), false ); 2370 message(i18n("Removing voice..."), false );
2371 KABC::AddressBook::Iterator it; 2371 KABC::AddressBook::Iterator it;
2372 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2372 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2373 if ( (*it).tagged() ) { 2373 if ( (*it).tagged() ) {
2374 (*it).removeVoice(); 2374 (*it).removeVoice();
2375 } 2375 }
2376 } 2376 }
2377 message(i18n("Refreshing view...") ); 2377 message(i18n("Refreshing view...") );
2378 qApp->processEvents(); 2378 qApp->processEvents();
2379 mViewManager->refreshView( "" ); 2379 mViewManager->refreshView( "" );
2380 Addressee add; 2380 Addressee add;
2381 mDetails->setAddressee( add ); 2381 mDetails->setAddressee( add );
2382 message(i18n("Remove voice completed!") ); 2382 message(i18n("Remove voice completed!") );
2383 2383
2384 2384
2385 2385
2386} 2386}
2387 2387
2388void KABCore::setFormattedName() 2388void KABCore::setFormattedName()
2389{ 2389{
2390 KABFormatPrefs setpref; 2390 KABFormatPrefs setpref;
2391 if ( !setpref.exec() ) { 2391 if ( !setpref.exec() ) {
2392 return; 2392 return;
2393 } 2393 }
2394 XXPortSelectDialog dlg( this, false, this ); 2394 XXPortSelectDialog dlg( this, false, this );
2395 if ( !dlg.exec() ) 2395 if ( !dlg.exec() )
2396 return; 2396 return;
2397 mAddressBook->setUntagged(); 2397 mAddressBook->setUntagged();
2398 dlg.tagSelected(); 2398 dlg.tagSelected();
2399 int count = 0; 2399 int count = 0;
2400 KABC::AddressBook::Iterator it; 2400 KABC::AddressBook::Iterator it;
2401 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2401 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2402 if ( (*it).tagged() ) { 2402 if ( (*it).tagged() ) {
2403 ++count; 2403 ++count;
2404 if ( count %10 == 0 ) 2404 if ( count %10 == 0 )
2405 message(i18n("Changing contact #%1").arg( count ) ); 2405 message(i18n("Changing contact #%1").arg( count ) );
2406 qApp->processEvents(); 2406 qApp->processEvents();
2407 QString fName; 2407 QString fName;
2408 if ( setpref.simple->isChecked() ) 2408 if ( setpref.simple->isChecked() )
2409 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName ); 2409 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName );
2410 else if ( setpref.full->isChecked() ) 2410 else if ( setpref.full->isChecked() )
2411 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName ); 2411 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName );
2412 else if ( setpref.reverse->isChecked() ) 2412 else if ( setpref.reverse->isChecked() )
2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName ); 2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName );
2414 else 2414 else
2415 fName = (*it).organization(); 2415 fName = (*it).organization();
2416 if ( setpref.setCompany->isChecked() ) 2416 if ( setpref.setCompany->isChecked() )
2417 if ( fName.isEmpty() || fName =="," ) 2417 if ( fName.isEmpty() || fName =="," )
2418 fName = (*it).organization(); 2418 fName = (*it).organization();
2419 (*it).setFormattedName( fName ); 2419 (*it).setFormattedName( fName );
2420 } 2420 }
2421 } 2421 }
2422 message(i18n("Refreshing view...") ); 2422 message(i18n("Refreshing view...") );
2423 qApp->processEvents(); 2423 qApp->processEvents();
2424 mViewManager->refreshView( "" ); 2424 mViewManager->refreshView( "" );
2425 Addressee add; 2425 Addressee add;
2426 mDetails->setAddressee( add ); 2426 mDetails->setAddressee( add );
2427 message(i18n("Setting formatted name completed!") ); 2427 message(i18n("Setting formatted name completed!") );
2428} 2428}
2429 2429
2430void KABCore::clipboardDataChanged() 2430void KABCore::clipboardDataChanged()
2431{ 2431{
2432 2432
2433 if ( mReadWrite ) 2433 if ( mReadWrite )
2434 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2434 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2435 2435
2436} 2436}
2437 2437
2438void KABCore::updateActionMenu() 2438void KABCore::updateActionMenu()
2439{ 2439{
2440 UndoStack *undo = UndoStack::instance(); 2440 UndoStack *undo = UndoStack::instance();
2441 RedoStack *redo = RedoStack::instance(); 2441 RedoStack *redo = RedoStack::instance();
2442 2442
2443 if ( undo->isEmpty() ) 2443 if ( undo->isEmpty() )
2444 mActionUndo->setText( i18n( "Undo" ) ); 2444 mActionUndo->setText( i18n( "Undo" ) );
2445 else 2445 else
2446 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2446 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2447 2447
2448 mActionUndo->setEnabled( !undo->isEmpty() ); 2448 mActionUndo->setEnabled( !undo->isEmpty() );
2449 2449
2450 if ( !redo->top() ) 2450 if ( !redo->top() )
2451 mActionRedo->setText( i18n( "Redo" ) ); 2451 mActionRedo->setText( i18n( "Redo" ) );
2452 else 2452 else
2453 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2453 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2454 2454
2455 mActionRedo->setEnabled( !redo->isEmpty() ); 2455 mActionRedo->setEnabled( !redo->isEmpty() );
2456} 2456}
2457 2457
2458void KABCore::configureKeyBindings() 2458void KABCore::configureKeyBindings()
2459{ 2459{
2460#ifndef KAB_EMBEDDED 2460#ifndef KAB_EMBEDDED
2461 KKeyDialog::configure( actionCollection(), true ); 2461 KKeyDialog::configure( actionCollection(), true );
2462#else //KAB_EMBEDDED 2462#else //KAB_EMBEDDED
2463 qDebug("KABCore::configureKeyBindings() not implemented"); 2463 qDebug("KABCore::configureKeyBindings() not implemented");
2464#endif //KAB_EMBEDDED 2464#endif //KAB_EMBEDDED
2465} 2465}
2466 2466
2467#ifdef KAB_EMBEDDED 2467#ifdef KAB_EMBEDDED
2468void KABCore::configureResources() 2468void KABCore::configureResources()
2469{ 2469{
2470 KRES::KCMKResources dlg( this, "" , 0 ); 2470 KRES::KCMKResources dlg( this, "" , 0 );
2471 2471
2472 if ( !dlg.exec() ) 2472 if ( !dlg.exec() )
2473 return; 2473 return;
2474 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2474 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2475} 2475}
2476#endif //KAB_EMBEDDED 2476#endif //KAB_EMBEDDED
2477 2477
2478 2478
2479/* this method will be called through the QCop interface from Ko/Pi to select addresses 2479/* this method will be called through the QCop interface from Ko/Pi to select addresses
2480 * for the attendees list of an event. 2480 * for the attendees list of an event.
2481 */ 2481 */
2482void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2482void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2483{ 2483{
2484 QStringList nameList; 2484 QStringList nameList;
2485 QStringList emailList; 2485 QStringList emailList;
2486 QStringList uidList; 2486 QStringList uidList;
2487 2487
2488 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2488 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2489 uint i=0; 2489 uint i=0;
2490 for (i=0; i < list.count(); i++) 2490 for (i=0; i < list.count(); i++)
2491 { 2491 {
2492 nameList.append(list[i].realName()); 2492 nameList.append(list[i].realName());
2493 emailList.append(list[i].preferredEmail()); 2493 emailList.append(list[i].preferredEmail());
2494 uidList.append(list[i].uid()); 2494 uidList.append(list[i].uid());
2495 } 2495 }
2496 2496
2497 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2497 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2498 2498
2499} 2499}
2500 2500
2501/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2501/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2502 * to put them into the calendar. 2502 * to put them into the calendar.
2503 */ 2503 */
2504void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2504void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2505{ 2505{
2506 // qDebug("KABCore::requestForBirthdayList"); 2506 // qDebug("KABCore::requestForBirthdayList");
2507 QStringList birthdayList; 2507 QStringList birthdayList;
2508 QStringList anniversaryList; 2508 QStringList anniversaryList;
2509 QStringList realNameList; 2509 QStringList realNameList;
2510 QStringList preferredEmailList; 2510 QStringList preferredEmailList;
2511 QStringList assembledNameList; 2511 QStringList assembledNameList;
2512 QStringList uidList; 2512 QStringList uidList;
2513 2513
2514 KABC::AddressBook::Iterator it; 2514 KABC::AddressBook::Iterator it;
2515 2515
2516 int count = 0; 2516 int count = 0;
2517 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2517 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2518 ++count; 2518 ++count;
2519 } 2519 }
2520 QProgressBar bar(count,0 ); 2520 QProgressBar bar(count,0 );
2521 int w = 300; 2521 int w = 300;
2522 if ( QApplication::desktop()->width() < 320 ) 2522 if ( QApplication::desktop()->width() < 320 )
2523 w = 220; 2523 w = 220;
2524 int h = bar.sizeHint().height() ; 2524 int h = bar.sizeHint().height() ;
2525 int dw = QApplication::desktop()->width(); 2525 int dw = QApplication::desktop()->width();
2526 int dh = QApplication::desktop()->height(); 2526 int dh = QApplication::desktop()->height();
2527 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2527 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2528 bar.show(); 2528 bar.show();
2529 bar.setCaption (i18n("Collecting birthdays - close to abort!") ); 2529 bar.setCaption (i18n("Collecting birthdays - close to abort!") );
2530 qApp->processEvents(); 2530 qApp->processEvents();
2531 2531
2532 QDate bday; 2532 QDate bday;
2533 QString anni; 2533 QString anni;
2534 QString formattedbday; 2534 QString formattedbday;
2535 2535
2536 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2536 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2537 { 2537 {
2538 if ( ! bar.isVisible() ) 2538 if ( ! bar.isVisible() )
2539 return; 2539 return;
2540 bar.setProgress( count++ ); 2540 bar.setProgress( count++ );
2541 qApp->processEvents(); 2541 qApp->processEvents();
2542 bday = (*it).birthday().date(); 2542 bday = (*it).birthday().date();
2543 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2543 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2544 2544
2545 if ( bday.isValid() || !anni.isEmpty()) 2545 if ( bday.isValid() || !anni.isEmpty())
2546 { 2546 {
2547 if (bday.isValid()) 2547 if (bday.isValid())
2548 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2548 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2549 else 2549 else
2550 formattedbday = "NOTVALID"; 2550 formattedbday = "NOTVALID";
2551 if (anni.isEmpty()) 2551 if (anni.isEmpty())
2552 anni = "INVALID"; 2552 anni = "INVALID";
2553 2553
2554 birthdayList.append(formattedbday); 2554 birthdayList.append(formattedbday);
2555 anniversaryList.append(anni); //should be ISODate 2555 anniversaryList.append(anni); //should be ISODate
2556 realNameList.append((*it).realName()); 2556 realNameList.append((*it).realName());
2557 preferredEmailList.append((*it).preferredEmail()); 2557 preferredEmailList.append((*it).preferredEmail());
2558 assembledNameList.append((*it).assembledName()); 2558 assembledNameList.append((*it).assembledName());
2559 uidList.append((*it).uid()); 2559 uidList.append((*it).uid());
2560 2560
2561 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2561 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2562 } 2562 }
2563 } 2563 }
2564 2564
2565 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2565 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2566 2566
2567} 2567}
2568 2568
2569/* this method will be called through the QCop interface from other apps to show details of a contact. 2569/* this method will be called through the QCop interface from other apps to show details of a contact.
2570 */ 2570 */
2571void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2571void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2572{ 2572{
2573 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2573 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2574 2574
2575 QString foundUid = QString::null; 2575 QString foundUid = QString::null;
2576 if ( ! uid.isEmpty() ) { 2576 if ( ! uid.isEmpty() ) {
2577 Addressee adrr = mAddressBook->findByUid( uid ); 2577 Addressee adrr = mAddressBook->findByUid( uid );
2578 if ( !adrr.isEmpty() ) { 2578 if ( !adrr.isEmpty() ) {
2579 foundUid = uid; 2579 foundUid = uid;
2580 } 2580 }
2581 if ( email == "sendbacklist" ) { 2581 if ( email == "sendbacklist" ) {
2582 //qDebug("ssssssssssssssssssssssend "); 2582 //qDebug("ssssssssssssssssssssssend ");
2583 QStringList nameList; 2583 QStringList nameList;
2584 QStringList emailList; 2584 QStringList emailList;
2585 QStringList uidList; 2585 QStringList uidList;
2586 nameList.append(adrr.realName()); 2586 nameList.append(adrr.realName());
2587 emailList = adrr.emails(); 2587 emailList = adrr.emails();
2588 uidList.append( adrr.preferredEmail()); 2588 uidList.append( adrr.preferredEmail());
2589 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2589 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2590 return; 2590 return;
2591 } 2591 }
2592 2592
2593 } 2593 }
2594 2594
2595 if ( email == "sendbacklist" ) 2595 if ( email == "sendbacklist" )
2596 return; 2596 return;
2597 if (foundUid.isEmpty()) 2597 if (foundUid.isEmpty())
2598 { 2598 {
2599 //find the uid of the person first 2599 //find the uid of the person first
2600 Addressee::List namelist; 2600 Addressee::List namelist;
2601 Addressee::List emaillist; 2601 Addressee::List emaillist;
2602 2602
2603 if (!name.isEmpty()) 2603 if (!name.isEmpty())
2604 namelist = mAddressBook->findByName( name ); 2604 namelist = mAddressBook->findByName( name );
2605 2605
2606 if (!email.isEmpty()) 2606 if (!email.isEmpty())
2607 emaillist = mAddressBook->findByEmail( email ); 2607 emaillist = mAddressBook->findByEmail( email );
2608 //qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2608 //qDebug("count %d %d ", namelist.count(),emaillist.count() );
2609 //check if we have a match in Namelist and Emaillist 2609 //check if we have a match in Namelist and Emaillist
2610 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2610 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2611 foundUid = emaillist[0].uid(); 2611 foundUid = emaillist[0].uid();
2612 } 2612 }
2613 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2613 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2614 foundUid = namelist[0].uid(); 2614 foundUid = namelist[0].uid();
2615 else 2615 else
2616 { 2616 {
2617 for (int i = 0; i < namelist.count(); i++) 2617 for (int i = 0; i < namelist.count(); i++)
2618 { 2618 {
2619 for (int j = 0; j < emaillist.count(); j++) 2619 for (int j = 0; j < emaillist.count(); j++)
2620 { 2620 {
2621 if (namelist[i] == emaillist[j]) 2621 if (namelist[i] == emaillist[j])
2622 { 2622 {
2623 foundUid = namelist[i].uid(); 2623 foundUid = namelist[i].uid();
2624 } 2624 }
2625 } 2625 }
2626 } 2626 }
2627 } 2627 }
2628 } 2628 }
2629 else 2629 else
2630 { 2630 {
2631 foundUid = uid; 2631 foundUid = uid;
2632 } 2632 }
2633 2633
2634 if (!foundUid.isEmpty()) 2634 if (!foundUid.isEmpty())
2635 { 2635 {
2636 2636
2637 // raise Ka/Pi if it is in the background 2637 // raise Ka/Pi if it is in the background
2638#ifndef DESKTOP_VERSION 2638#ifndef DESKTOP_VERSION
2639#ifndef KORG_NODCOP 2639#ifndef KORG_NODCOP
2640 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2640 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2641#endif 2641#endif
2642#endif 2642#endif
2643 2643
2644 mMainWindow->showMaximized(); 2644 mMainWindow->showMaximized();
2645 mMainWindow-> raise(); 2645 mMainWindow-> raise();
2646 2646
2647 mViewManager->setSelected( "", false); 2647 mViewManager->setSelected( "", false);
2648 mViewManager->refreshView( "" ); 2648 mViewManager->refreshView( "" );
2649 mViewManager->setSelected( foundUid, true ); 2649 mViewManager->setSelected( foundUid, true );
2650 mViewManager->refreshView( foundUid ); 2650 mViewManager->refreshView( foundUid );
2651 2651
2652 if ( !mMultipleViewsAtOnce ) 2652 if ( !mMultipleViewsAtOnce )
2653 { 2653 {
2654 setDetailsVisible( true ); 2654 setDetailsVisible( true );
2655 mActionDetails->setChecked(true); 2655 mActionDetails->setChecked(true);
2656 } 2656 }
2657 } 2657 }
2658} 2658}
2659 2659
2660void KABCore::whatsnew() 2660void KABCore::whatsnew()
2661{ 2661{
2662 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 2662 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
2663} 2663}
2664void KABCore::synchowto() 2664void KABCore::synchowto()
2665{ 2665{
2666 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 2666 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
2667} 2667}
2668void KABCore::kdesynchowto() 2668void KABCore::kdesynchowto()
2669{ 2669{
2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
2671} 2671}
2672void KABCore::multisynchowto() 2672void KABCore::multisynchowto()
2673{ 2673{
2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
2675} 2675}
2676void KABCore::faq() 2676void KABCore::faq()
2677{ 2677{
2678 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2678 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2679} 2679}
2680 2680
2681#include <libkcal/syncdefines.h> 2681#include <libkcal/syncdefines.h>
2682 2682
2683KABC::Addressee KABCore::getLastSyncAddressee() 2683KABC::Addressee KABCore::getLastSyncAddressee()
2684{ 2684{
2685 Addressee lse; 2685 Addressee lse;
2686 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2686 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2687 2687
2688 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2688 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2689 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2689 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2690 if (lse.isEmpty()) { 2690 if (lse.isEmpty()) {
2691 qDebug("KA: Creating new last-syncAddressee "); 2691 qDebug("KA: Creating new last-syncAddressee ");
2692 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2692 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2693 QString sum = ""; 2693 QString sum = "";
2694 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2694 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2695 sum = "E: "; 2695 sum = "E: ";
2696 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2696 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2697 lse.setRevision( mLastAddressbookSync ); 2697 lse.setRevision( mLastAddressbookSync );
2698 lse.setCategories( i18n("SyncEvent") ); 2698 lse.setCategories( i18n("SyncEvent") );
2699 mAddressBook->insertAddressee( lse ); 2699 mAddressBook->insertAddressee( lse );
2700 } 2700 }
2701 return lse; 2701 return lse;
2702} 2702}
2703int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2703int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2704{ 2704{
2705 2705
2706 //void setZaurusId(int id); 2706 //void setZaurusId(int id);
2707 // int zaurusId() const; 2707 // int zaurusId() const;
2708 // void setZaurusUid(int id); 2708 // void setZaurusUid(int id);
2709 // int zaurusUid() const; 2709 // int zaurusUid() const;
2710 // void setZaurusStat(int id); 2710 // void setZaurusStat(int id);
2711 // int zaurusStat() const; 2711 // int zaurusStat() const;
2712 // 0 equal 2712 // 0 equal
2713 // 1 take local 2713 // 1 take local
2714 // 2 take remote 2714 // 2 take remote
2715 // 3 cancel 2715 // 3 cancel
2716 QDateTime lastSync = mLastAddressbookSync; 2716 QDateTime lastSync = mLastAddressbookSync;
2717 QDateTime localMod = local->revision(); 2717 QDateTime localMod = local->revision();
2718 QDateTime remoteMod = remote->revision(); 2718 QDateTime remoteMod = remote->revision();
2719 2719
2720 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2720 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2721 2721
2722 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2722 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2723 bool remCh, locCh; 2723 bool remCh, locCh;
2724 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2724 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2725 //if ( remCh ) 2725 //if ( remCh )
2726 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2726 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2727 locCh = ( localMod > mLastAddressbookSync ); 2727 locCh = ( localMod > mLastAddressbookSync );
2728 //qDebug("cahnged rem %d loc %d",remCh, locCh ); 2728 //qDebug("cahnged rem %d loc %d",remCh, locCh );
2729 if ( !remCh && ! locCh ) { 2729 if ( !remCh && ! locCh ) {
2730 //qDebug("both not changed "); 2730 //qDebug("both not changed ");
2731 lastSync = localMod.addDays(1); 2731 lastSync = localMod.addDays(1);
2732 if ( mode <= SYNC_PREF_ASK ) 2732 if ( mode <= SYNC_PREF_ASK )
2733 return 0; 2733 return 0;
2734 } else { 2734 } else {
2735 if ( locCh ) { 2735 if ( locCh ) {
2736 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2736 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2737 lastSync = localMod.addDays( -1 ); 2737 lastSync = localMod.addDays( -1 );
2738 if ( !remCh ) 2738 if ( !remCh )
2739 remoteMod =( lastSync.addDays( -1 ) ); 2739 remoteMod =( lastSync.addDays( -1 ) );
2740 } else { 2740 } else {
2741 //qDebug(" not loc changed "); 2741 //qDebug(" not loc changed ");
2742 lastSync = localMod.addDays( 1 ); 2742 lastSync = localMod.addDays( 1 );
2743 if ( remCh ) { 2743 if ( remCh ) {
2744 //qDebug("rem changed "); 2744 //qDebug("rem changed ");
2745 remoteMod =( lastSync.addDays( 1 ) ); 2745 remoteMod =( lastSync.addDays( 1 ) );
2746 } 2746 }
2747 2747
2748 } 2748 }
2749 } 2749 }
2750 full = true; 2750 full = true;
2751 if ( mode < SYNC_PREF_ASK ) 2751 if ( mode < SYNC_PREF_ASK )
2752 mode = SYNC_PREF_ASK; 2752 mode = SYNC_PREF_ASK;
2753 } else { 2753 } else {
2754 if ( localMod == remoteMod ) 2754 if ( localMod == remoteMod )
2755 return 0; 2755 return 0;
2756 2756
2757 } 2757 }
2758 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec()); 2758 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec());
2759 //qDebug("lastsync %s ", lastSync.toString().latin1() ); 2759 //qDebug("lastsync %s ", lastSync.toString().latin1() );
2760 //full = true; //debug only 2760 //full = true; //debug only
2761 if ( full ) { 2761 if ( full ) {
2762 bool equ = ( (*local) == (*remote) ); 2762 bool equ = ( (*local) == (*remote) );
2763 if ( equ ) { 2763 if ( equ ) {
2764 //qDebug("equal "); 2764 //qDebug("equal ");
2765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2766 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2766 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2767 } 2767 }
2768 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2768 if ( mode < SYNC_PREF_FORCE_LOCAL )
2769 return 0; 2769 return 0;
2770 2770
2771 }//else //debug only 2771 }//else //debug only
2772 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2772 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2773 } 2773 }
2774 int result; 2774 int result;
2775 bool localIsNew; 2775 bool localIsNew;
2776 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2776 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2777 2777
2778 if ( full && mode < SYNC_PREF_NEWEST ) 2778 if ( full && mode < SYNC_PREF_NEWEST )
2779 mode = SYNC_PREF_ASK; 2779 mode = SYNC_PREF_ASK;
2780 2780
2781 switch( mode ) { 2781 switch( mode ) {
2782 case SYNC_PREF_LOCAL: 2782 case SYNC_PREF_LOCAL:
2783 if ( lastSync > remoteMod ) 2783 if ( lastSync > remoteMod )
2784 return 1; 2784 return 1;
2785 if ( lastSync > localMod ) 2785 if ( lastSync > localMod )
2786 return 2; 2786 return 2;
2787 return 1; 2787 return 1;
2788 break; 2788 break;
2789 case SYNC_PREF_REMOTE: 2789 case SYNC_PREF_REMOTE:
2790 if ( lastSync > remoteMod ) 2790 if ( lastSync > remoteMod )
2791 return 1; 2791 return 1;
2792 if ( lastSync > localMod ) 2792 if ( lastSync > localMod )
2793 return 2; 2793 return 2;
2794 return 2; 2794 return 2;
2795 break; 2795 break;
2796 case SYNC_PREF_NEWEST: 2796 case SYNC_PREF_NEWEST:
2797 if ( localMod > remoteMod ) 2797 if ( localMod > remoteMod )
2798 return 1; 2798 return 1;
2799 else 2799 else
2800 return 2; 2800 return 2;
2801 break; 2801 break;
2802 case SYNC_PREF_ASK: 2802 case SYNC_PREF_ASK:
2803 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2803 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2804 if ( lastSync > remoteMod ) 2804 if ( lastSync > remoteMod )
2805 return 1; 2805 return 1;
2806 if ( lastSync > localMod ) { 2806 if ( lastSync > localMod ) {
2807 return 2; 2807 return 2;
2808 } 2808 }
2809 localIsNew = localMod >= remoteMod; 2809 localIsNew = localMod >= remoteMod;
2810 //qDebug("conflict! ************************************** "); 2810 //qDebug("conflict! ************************************** ");
2811 { 2811 {
2812 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2812 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2813 result = acd.executeD(localIsNew); 2813 result = acd.executeD(localIsNew);
2814 return result; 2814 return result;
2815 } 2815 }
2816 break; 2816 break;
2817 case SYNC_PREF_FORCE_LOCAL: 2817 case SYNC_PREF_FORCE_LOCAL:
2818 return 1; 2818 return 1;
2819 break; 2819 break;
2820 case SYNC_PREF_FORCE_REMOTE: 2820 case SYNC_PREF_FORCE_REMOTE:
2821 return 2; 2821 return 2;
2822 break; 2822 break;
2823 2823
2824 default: 2824 default:
2825 // SYNC_PREF_TAKE_BOTH not implemented 2825 // SYNC_PREF_TAKE_BOTH not implemented
2826 break; 2826 break;
2827 } 2827 }
2828 return 0; 2828 return 0;
2829} 2829}
2830 2830
2831 2831
2832bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2832bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2833{ 2833{
2834 bool syncOK = true; 2834 bool syncOK = true;
2835 int addedAddressee = 0; 2835 int addedAddressee = 0;
2836 int addedAddresseeR = 0; 2836 int addedAddresseeR = 0;
2837 int deletedAddresseeR = 0; 2837 int deletedAddresseeR = 0;
2838 int deletedAddresseeL = 0; 2838 int deletedAddresseeL = 0;
2839 int changedLocal = 0; 2839 int changedLocal = 0;
2840 int changedRemote = 0; 2840 int changedRemote = 0;
2841 int filteredIN = 0; 2841 int filteredIN = 0;
2842 int filteredOUT = 0; 2842 int filteredOUT = 0;
2843 2843
2844 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2844 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2845 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2845 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2846 2846
2847 //QPtrList<Addressee> el = local->rawAddressees(); 2847 //QPtrList<Addressee> el = local->rawAddressees();
2848 Addressee addresseeR; 2848 Addressee addresseeR;
2849 QString uid; 2849 QString uid;
2850 int take; 2850 int take;
2851 Addressee addresseeL; 2851 Addressee addresseeL;
2852 Addressee addresseeRSync; 2852 Addressee addresseeRSync;
2853 Addressee addresseeLSync; 2853 Addressee addresseeLSync;
2854 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2854 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2855 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2855 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2856 bool fullDateRange = false; 2856 bool fullDateRange = false;
2857 local->resetTempSyncStat(); 2857 local->resetTempSyncStat();
2858 mLastAddressbookSync = QDateTime::currentDateTime(); 2858 mLastAddressbookSync = QDateTime::currentDateTime();
2859 if ( syncManager->syncWithDesktop() ) { 2859 if ( syncManager->syncWithDesktop() ) {
2860 // remote->removeSyncInfo( QString());//remove all info 2860 // remote->removeSyncInfo( QString());//remove all info
2861 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2861 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2862 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2862 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2863 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2863 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2864 } else { 2864 } else {
2865 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime "); 2865 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime ");
2866 } 2866 }
2867 } 2867 }
2868 QDateTime modifiedCalendar = mLastAddressbookSync; 2868 QDateTime modifiedCalendar = mLastAddressbookSync;
2869 addresseeLSync = getLastSyncAddressee(); 2869 addresseeLSync = getLastSyncAddressee();
2870 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2870 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1());
2871 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2871 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2872 if ( !addresseeR.isEmpty() ) { 2872 if ( !addresseeR.isEmpty() ) {
2873 addresseeRSync = addresseeR; 2873 addresseeRSync = addresseeR;
2874 remote->removeAddressee(addresseeR ); 2874 remote->removeAddressee(addresseeR );
2875 2875
2876 } else { 2876 } else {
2877 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2877 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2878 addresseeRSync = addresseeLSync ; 2878 addresseeRSync = addresseeLSync ;
2879 } else { 2879 } else {
2880 //qDebug("FULLDATE 1"); 2880 //qDebug("FULLDATE 1");
2881 fullDateRange = true; 2881 fullDateRange = true;
2882 Addressee newAdd; 2882 Addressee newAdd;
2883 addresseeRSync = newAdd; 2883 addresseeRSync = newAdd;
2884 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2884 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2885 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2885 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2886 addresseeRSync.setRevision( mLastAddressbookSync ); 2886 addresseeRSync.setRevision( mLastAddressbookSync );
2887 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2887 addresseeRSync.setCategories( i18n("SyncAddressee") );
2888 } 2888 }
2889 } 2889 }
2890 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2890 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2891 // qDebug("FULLDATE 2"); 2891 // qDebug("FULLDATE 2");
2892 fullDateRange = true; 2892 fullDateRange = true;
2893 } 2893 }
2894 if ( ! fullDateRange ) { 2894 if ( ! fullDateRange ) {
2895 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2895 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2896 2896
2897 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2897 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2898 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2898 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2899 fullDateRange = true; 2899 fullDateRange = true;
2900 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2900 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2901 } 2901 }
2902 } 2902 }
2903 // fullDateRange = true; // debug only! 2903 // fullDateRange = true; // debug only!
2904 if ( fullDateRange ) 2904 if ( fullDateRange )
2905 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2905 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2906 else 2906 else
2907 mLastAddressbookSync = addresseeLSync.revision(); 2907 mLastAddressbookSync = addresseeLSync.revision();
2908 // for resyncing if own file has changed 2908 // for resyncing if own file has changed
2909 // PENDING fixme later when implemented 2909 // PENDING fixme later when implemented
2910#if 0 2910#if 0
2911 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2911 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2912 mLastAddressbookSync = loadedFileVersion; 2912 mLastAddressbookSync = loadedFileVersion;
2913 qDebug("setting mLastAddressbookSync "); 2913 qDebug("setting mLastAddressbookSync ");
2914 } 2914 }
2915#endif 2915#endif
2916 2916
2917 2917
2918 // ********** setting filters **************** 2918 // ********** setting filters ****************
2919 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB ); 2919 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB );
2920 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB ); 2920 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB );
2921 2921
2922 //qDebug("*************************** "); 2922 //qDebug("*************************** ");
2923 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2923 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2924 QStringList er = remote->uidList(); 2924 QStringList er = remote->uidList();
2925 Addressee inR ;//= er.first(); 2925 Addressee inR ;//= er.first();
2926 Addressee inL; 2926 Addressee inL;
2927 2927
2928 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 2928 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
2929 2929
2930 int modulo = (er.count()/10)+1; 2930 int modulo = (er.count()/10)+1;
2931 int incCounter = 0; 2931 int incCounter = 0;
2932 while ( incCounter < er.count()) { 2932 while ( incCounter < er.count()) {
2933 if (syncManager->isProgressBarCanceled()) 2933 if (syncManager->isProgressBarCanceled())
2934 return false; 2934 return false;
2935 if ( incCounter % modulo == 0 ) 2935 if ( incCounter % modulo == 0 )
2936 syncManager->showProgressBar(incCounter); 2936 syncManager->showProgressBar(incCounter);
2937 2937
2938 uid = er[ incCounter ]; 2938 uid = er[ incCounter ];
2939 bool skipIncidence = false; 2939 bool skipIncidence = false;
2940 if ( uid.left(19) == QString("last-syncAddressee-") ) 2940 if ( uid.left(19) == QString("last-syncAddressee-") )
2941 skipIncidence = true; 2941 skipIncidence = true;
2942 QString idS,OidS; 2942 QString idS,OidS;
2943 qApp->processEvents(); 2943 qApp->processEvents();
2944 if ( !skipIncidence ) { 2944 if ( !skipIncidence ) {
2945 inL = local->findByUid( uid ); 2945 inL = local->findByUid( uid );
2946 inR = remote->findByUid( uid ); 2946 inR = remote->findByUid( uid );
2947 //inL.setResource( 0 ); 2947 //inL.setResource( 0 );
2948 //inR.setResource( 0 ); 2948 //inR.setResource( 0 );
2949 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2949 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2950 if ( !inL.resource() || inL.resource()->includeInSync() ) { 2950 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2951 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) { 2951 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) {
2952 //qDebug("take %d %s ", take, inL.summary().latin1()); 2952 //qDebug("take %d %s ", take, inL.summary().latin1());
2953 if ( take == 3 ) 2953 if ( take == 3 )
2954 return false; 2954 return false;
2955 if ( take == 1 ) {// take local ********************** 2955 if ( take == 1 ) {// take local **********************
2956 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2956 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2957 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2957 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2958 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2958 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2959 local->insertAddressee( inL, false ); 2959 local->insertAddressee( inL, false );
2960 idS = inR.externalUID(); 2960 idS = inR.externalUID();
2961 OidS = inR.originalExternalUID(); 2961 OidS = inR.originalExternalUID();
2962 } 2962 }
2963 else 2963 else
2964 idS = inR.IDStr(); 2964 idS = inR.IDStr();
2965 remote->removeAddressee( inR ); 2965 remote->removeAddressee( inR );
2966 inR = inL; 2966 inR = inL;
2967 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2967 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2968 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2968 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2969 inR.setOriginalExternalUID( OidS ); 2969 inR.setOriginalExternalUID( OidS );
2970 inR.setExternalUID( idS ); 2970 inR.setExternalUID( idS );
2971 if ( syncManager->syncWithDesktop() ) { 2971 if ( syncManager->syncWithDesktop() ) {
2972 inR.setIDStr("changed" ); 2972 inR.setIDStr("changed" );
2973 } 2973 }
2974 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" ); 2974 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" );
2975 } else { 2975 } else {
2976 inR.setIDStr( idS ); 2976 inR.setIDStr( idS );
2977 } 2977 }
2978 inR.setResource( 0 ); 2978 inR.setResource( 0 );
2979 remote->insertAddressee( inR , false); 2979 remote->insertAddressee( inR , false);
2980 ++changedRemote; 2980 ++changedRemote;
2981 } else { // take == 2 take remote ********************** 2981 } else { // take == 2 take remote **********************
2982 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2982 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2983 if ( inR.revision().date().year() < 2004 ) 2983 if ( inR.revision().date().year() < 2004 )
2984 inR.setRevision( modifiedCalendar ); 2984 inR.setRevision( modifiedCalendar );
2985 } 2985 }
2986 idS = inL.IDStr(); 2986 idS = inL.IDStr();
2987 local->removeAddressee( inL ); 2987 local->removeAddressee( inL );
2988 inL = inR; 2988 inL = inR;
2989 inL.setIDStr( idS ); 2989 inL.setIDStr( idS );
2990 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2990 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2991 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2991 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2992 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2992 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2993 } 2993 }
2994 inL.setResource( 0 ); 2994 inL.setResource( 0 );
2995 local->insertAddressee( inL , false ); 2995 local->insertAddressee( inL , false );
2996 ++changedLocal; 2996 ++changedLocal;
2997 } 2997 }
2998 } 2998 }
2999 } 2999 }
3000 } else { // no conflict ********** add or delete remote 3000 } else { // no conflict ********** add or delete remote
3001 if ( filterIN.name().isEmpty() || filterIN.filterAddressee( inR ) ) { 3001 if ( filterIN.name().isEmpty() || filterIN.filterAddressee( inR ) ) {
3002 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 3002 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
3003 QString des = addresseeLSync.note(); 3003 QString des = addresseeLSync.note();
3004 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 3004 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
3005 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 3005 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
3006 remote->insertAddressee( inR, false ); 3006 remote->insertAddressee( inR, false );
3007 ++deletedAddresseeR; 3007 ++deletedAddresseeR;
3008 } else { 3008 } else {
3009 inR.setRevision( modifiedCalendar ); 3009 inR.setRevision( modifiedCalendar );
3010 remote->insertAddressee( inR, false ); 3010 remote->insertAddressee( inR, false );
3011 inL = inR; 3011 inL = inR;
3012 inL.setIDStr( ":" ); 3012 inL.setIDStr( ":" );
3013 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 3013 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
3014 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 3014 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
3015 inL.setResource( 0 ); 3015 inL.setResource( 0 );
3016 local->insertAddressee( inL , false); 3016 local->insertAddressee( inL , false);
3017 ++addedAddressee; 3017 ++addedAddressee;
3018 } 3018 }
3019 } else { 3019 } else {
3020 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 3020 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
3021 inR.setRevision( modifiedCalendar ); 3021 inR.setRevision( modifiedCalendar );
3022 remote->insertAddressee( inR, false ); 3022 remote->insertAddressee( inR, false );
3023 inR.setResource( 0 ); 3023 inR.setResource( 0 );
3024 local->insertAddressee( inR, false ); 3024 local->insertAddressee( inR, false );
3025 ++addedAddressee; 3025 ++addedAddressee;
3026 } else { 3026 } else {
3027 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 3027 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
3028 remote->removeAddressee( inR ); 3028 remote->removeAddressee( inR );
3029 ++deletedAddresseeR; 3029 ++deletedAddresseeR;
3030 } 3030 }
3031 } 3031 }
3032 } else { 3032 } else {
3033 ++filteredIN; 3033 ++filteredIN;
3034 } 3034 }
3035 } 3035 }
3036 } 3036 }
3037 ++incCounter; 3037 ++incCounter;
3038 } 3038 }
3039 er.clear(); 3039 er.clear();
3040 QStringList el = local->uidList(); 3040 QStringList el = local->uidList();
3041 modulo = (el.count()/10)+1; 3041 modulo = (el.count()/10)+1;
3042 3042
3043 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); 3043 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count());
3044 incCounter = 0; 3044 incCounter = 0;
3045 while ( incCounter < el.count()) { 3045 while ( incCounter < el.count()) {
3046 qApp->processEvents(); 3046 qApp->processEvents();
3047 if (syncManager->isProgressBarCanceled()) 3047 if (syncManager->isProgressBarCanceled())
3048 return false; 3048 return false;
3049 if ( incCounter % modulo == 0 ) 3049 if ( incCounter % modulo == 0 )
3050 syncManager->showProgressBar(incCounter); 3050 syncManager->showProgressBar(incCounter);
3051 uid = el[ incCounter ]; 3051 uid = el[ incCounter ];
3052 bool skipIncidence = false; 3052 bool skipIncidence = false;
3053 if ( uid.left(19) == QString("last-syncAddressee-") ) 3053 if ( uid.left(19) == QString("last-syncAddressee-") )
3054 skipIncidence = true; 3054 skipIncidence = true;
3055 if ( !skipIncidence ) { 3055 if ( !skipIncidence ) {
3056 inL = local->findByUid( uid ); 3056 inL = local->findByUid( uid );
3057 if ( !inL.resource() || inL.resource()->includeInSync() ) { 3057 if ( !inL.resource() || inL.resource()->includeInSync() ) {
3058 inR = remote->findByUid( uid ); 3058 inR = remote->findByUid( uid );
3059 if ( inR.isEmpty() ){ 3059 if ( inR.isEmpty() ){
3060 if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) { 3060 if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) {
3061 // no conflict ********** add or delete local 3061 // no conflict ********** add or delete local
3062 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 3062 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
3063 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 3063 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
3064 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3064 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3065 local->removeAddressee( inL ); 3065 local->removeAddressee( inL );
3066 ++deletedAddresseeL; 3066 ++deletedAddresseeL;
3067 } else { 3067 } else {
3068 if ( ! syncManager->mWriteBackExistingOnly ) { 3068 if ( ! syncManager->mWriteBackExistingOnly ) {
3069 inL.removeID(mCurrentSyncDevice ); 3069 inL.removeID(mCurrentSyncDevice );
3070 ++addedAddresseeR; 3070 ++addedAddresseeR;
3071 inL.setRevision( modifiedCalendar ); 3071 inL.setRevision( modifiedCalendar );
3072 local->insertAddressee( inL, false ); 3072 local->insertAddressee( inL, false );
3073 inR = inL; 3073 inR = inL;
3074 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); 3074 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL );
3075 inR.setResource( 0 ); 3075 inR.setResource( 0 );
3076 remote->insertAddressee( inR, false ); 3076 remote->insertAddressee( inR, false );
3077 } 3077 }
3078 } 3078 }
3079 } else { 3079 } else {
3080 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 3080 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
3081 //qDebug("data %s ", inL.revision().toString().latin1()); 3081 //qDebug("data %s ", inL.revision().toString().latin1());
3082 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3082 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3083 local->removeAddressee( inL ); 3083 local->removeAddressee( inL );
3084 ++deletedAddresseeL; 3084 ++deletedAddresseeL;
3085 } else { 3085 } else {
3086 if ( ! syncManager->mWriteBackExistingOnly ) { 3086 if ( ! syncManager->mWriteBackExistingOnly ) {
3087 ++addedAddresseeR; 3087 ++addedAddresseeR;
3088 inL.setRevision( modifiedCalendar ); 3088 inL.setRevision( modifiedCalendar );
3089 local->insertAddressee( inL, false ); 3089 local->insertAddressee( inL, false );
3090 inR = inL; 3090 inR = inL;
3091 inR.setIDStr( ":" ); 3091 inR.setIDStr( ":" );
3092 inR.setResource( 0 ); 3092 inR.setResource( 0 );
3093 remote->insertAddressee( inR, false ); 3093 remote->insertAddressee( inR, false );
3094 } 3094 }
3095 } 3095 }
3096 } 3096 }
3097 } else { 3097 } else {
3098 ++filteredOUT; 3098 ++filteredOUT;
3099 } 3099 }
3100 } 3100 }
3101 } 3101 }
3102 } 3102 }
3103 ++incCounter; 3103 ++incCounter;
3104 } 3104 }
3105 el.clear(); 3105 el.clear();
3106 syncManager->hideProgressBar(); 3106 syncManager->hideProgressBar();
3107 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 3107 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
3108 // get rid of micro seconds 3108 // get rid of micro seconds
3109 QTime t = mLastAddressbookSync.time(); 3109 QTime t = mLastAddressbookSync.time();
3110 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 3110 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
3111 addresseeLSync.setRevision( mLastAddressbookSync ); 3111 addresseeLSync.setRevision( mLastAddressbookSync );
3112 addresseeRSync.setRevision( mLastAddressbookSync ); 3112 addresseeRSync.setRevision( mLastAddressbookSync );
3113 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; 3113 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
3114 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); 3114 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
3115 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; 3115 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
3116 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); 3116 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
3117 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; 3117 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
3118 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 3118 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
3119 addresseeRSync.setNote( "" ) ; 3119 addresseeRSync.setNote( "" ) ;
3120 addresseeLSync.setNote( "" ); 3120 addresseeLSync.setNote( "" );
3121 3121
3122 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 3122 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
3123 remote->insertAddressee( addresseeRSync, false ); 3123 remote->insertAddressee( addresseeRSync, false );
3124 local->insertAddressee( addresseeLSync, false ); 3124 local->insertAddressee( addresseeLSync, false );
3125 QString mes; 3125 QString mes;
3126 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 %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT ); 3126 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 %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT );
3127 qDebug( mes ); 3127 qDebug( mes );
3128 mes = i18n("Local addressbook changed!\n") +mes; 3128 mes = i18n("Local addressbook changed!\n") +mes;
3129 if ( syncManager->mShowSyncSummary ) { 3129 if ( syncManager->mShowSyncSummary ) {
3130 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 3130 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
3131 i18n("KA/Pi Synchronization"),i18n("Write back"))) { 3131 i18n("KA/Pi Synchronization"),i18n("Write back"))) {
3132 qDebug("KA: WB cancelled "); 3132 qDebug("KA: WB cancelled ");
3133 return false; 3133 return false;
3134 } 3134 }
3135 } 3135 }
3136 return syncOK; 3136 return syncOK;
3137} 3137}
3138 3138
3139 3139
3140//this is a overwritten callbackmethods from the syncinterface 3140//this is a overwritten callbackmethods from the syncinterface
3141bool KABCore::sync(KSyncManager* manager, QString filename, int mode) 3141bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
3142{ 3142{
3143 3143
3144 //pending prepare addresseeview for output 3144 //pending prepare addresseeview for output
3145 //pending detect, if remote file has REV field. if not switch to external sync 3145 //pending detect, if remote file has REV field. if not switch to external sync
3146 mGlobalSyncMode = SYNC_MODE_NORMAL; 3146 mGlobalSyncMode = SYNC_MODE_NORMAL;
3147 if ( manager != syncManager ) 3147 if ( manager != syncManager )
3148 qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); 3148 qDebug("KABCore::sync:: ERROR! :: manager != syncManager ");
3149 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3149 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3150 3150
3151 AddressBook abLocal(filename,"syncContact"); 3151 AddressBook abLocal(filename,"syncContact");
3152 bool syncOK = false; 3152 bool syncOK = false;
3153 if ( abLocal.load() ) { 3153 if ( abLocal.load() ) {
3154 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); 3154 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode );
3155 bool external = false; 3155 bool external = false;
3156 bool isXML = false; 3156 bool isXML = false;
3157 if ( filename.right(4) == ".xml") { 3157 if ( filename.right(4) == ".xml") {
3158 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3158 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3159 isXML = true; 3159 isXML = true;
3160 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3160 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3161 } else { 3161 } else {
3162 external = !manager->mIsKapiFile; 3162 external = !manager->mIsKapiFile;
3163 if ( external ) { 3163 if ( external ) {
3164 qDebug("KA: Sync::Setting vcf mode to external "); 3164 qDebug("KA: Sync::Setting vcf mode to external ");
3165 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3165 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3166 AddressBook::Iterator it; 3166 AddressBook::Iterator it;
3167 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3167 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3168 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 3168 (*it).setID( mCurrentSyncDevice, (*it).uid() );
3169 (*it).computeCsum( mCurrentSyncDevice ); 3169 (*it).computeCsum( mCurrentSyncDevice );
3170 } 3170 }
3171 } 3171 }
3172 } 3172 }
3173 //AddressBook::Iterator it; 3173 //AddressBook::Iterator it;
3174 //QStringList vcards; 3174 //QStringList vcards;
3175 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3175 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3176 // qDebug("Name %s ", (*it).familyName().latin1()); 3176 // qDebug("Name %s ", (*it).familyName().latin1());
3177 //} 3177 //}
3178 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 3178 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
3179 if ( syncOK ) { 3179 if ( syncOK ) {
3180 if ( syncManager->mWriteBackFile ) 3180 if ( syncManager->mWriteBackFile )
3181 { 3181 {
3182 if ( external ) 3182 if ( external )
3183 abLocal.removeSyncAddressees( !isXML); 3183 abLocal.removeSyncAddressees( !isXML);
3184 qDebug("KA: Sync::Saving remote AB "); 3184 qDebug("KA: Sync::Saving remote AB ");
3185 if ( ! abLocal.saveAB()) 3185 if ( ! abLocal.saveAB())
3186 qDebug("KA: sync::Error writing back AB to file "); 3186 qDebug("KA: sync::Error writing back AB to file ");
3187 if ( external ) { 3187 if ( external ) {
3188 // afterwrite processing 3188 // afterwrite processing
3189 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); 3189 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
3190 } 3190 }
3191 } 3191 }
3192 } 3192 }
3193 setModified(); 3193 setModified();
3194 3194
3195 } 3195 }
3196 abLocal.removeResources(); 3196 abLocal.removeResources();
3197 if ( syncOK ) 3197 if ( syncOK )
3198 mViewManager->refreshView(); 3198 mViewManager->refreshView();
3199 return syncOK; 3199 return syncOK;
3200 3200
3201} 3201}
3202void KABCore::removeSyncInfo( QString syncProfile) 3202void KABCore::removeSyncInfo( QString syncProfile)
3203{ 3203{
3204 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 3204 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1());
3205 mAddressBook->removeSyncInfo( syncProfile ); 3205 mAddressBook->removeSyncInfo( syncProfile );
3206 setModified(); 3206 setModified();
3207} 3207}
3208 3208
3209 3209
3210//this is a overwritten callbackmethods from the syncinterface 3210//this is a overwritten callbackmethods from the syncinterface
3211bool KABCore::syncExternal(KSyncManager* manager, QString resource) 3211bool KABCore::syncExternal(KSyncManager* manager, QString resource)
3212{ 3212{
3213 if ( resource == "phone" ) 3213 if ( resource == "phone" )
3214 return syncPhone(); 3214 return syncPhone();
3215 disableBR( true ); 3215 disableBR( true );
3216 if ( manager != syncManager ) 3216 if ( manager != syncManager )
3217 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); 3217 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager ");
3218 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3218 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3219 3219
3220 AddressBook abLocal( resource,"syncContact"); 3220 AddressBook abLocal( resource,"syncContact");
3221 bool syncOK = false; 3221 bool syncOK = false;
3222 message(i18n("Loading DTM address data..."), false); 3222 message(i18n("Loading DTM address data..."), false);
3223 if ( abLocal.load() ) { 3223 if ( abLocal.load() ) {
3224 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3224 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
3225 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3225 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3226 message(i18n("Sync preprocessing..."),false); 3226 message(i18n("Sync preprocessing..."),false);
3227 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 3227 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
3228 message(i18n("Synchronizing..."),false); 3228 message(i18n("Synchronizing..."),false);
3229 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3229 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3230 if ( syncOK ) { 3230 if ( syncOK ) {
3231 if ( syncManager->mWriteBackFile ) { 3231 if ( syncManager->mWriteBackFile ) {
3232 abLocal.removeSyncAddressees( false ); 3232 abLocal.removeSyncAddressees( false );
3233 message(i18n("Saving DTM address data..."),false); 3233 message(i18n("Saving DTM address data..."),false);
3234 abLocal.saveAB(); 3234 abLocal.saveAB();
3235 message(i18n("Sync postprocessing..."),false); 3235 message(i18n("Sync postprocessing..."),false);
3236 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3236 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3237 } 3237 }
3238 } else 3238 } else
3239 message( i18n("Sync cancelled or failed.") ); 3239 message( i18n("Sync cancelled or failed.") );
3240 setModified(); 3240 setModified();
3241 } 3241 }
3242 abLocal.removeResources(); 3242 abLocal.removeResources();
3243 if ( syncOK ) { 3243 if ( syncOK ) {
3244 mViewManager->refreshView(); 3244 mViewManager->refreshView();
3245 message(i18n("DTM syncing finished.")); 3245 message(i18n("DTM syncing finished."));
3246 } 3246 }
3247 disableBR( false ); 3247 disableBR( false );
3248 return syncOK; 3248 return syncOK;
3249 3249
3250} 3250}
3251void KABCore::message( QString m, bool startTimer) 3251void KABCore::message( QString m, bool startTimer)
3252{ 3252{
3253 topLevelWidget()->setCaption( m ); 3253 topLevelWidget()->setCaption( m );
3254 qApp->processEvents(); 3254 qApp->processEvents();
3255 if ( startTimer ) 3255 if ( startTimer )
3256 mMessageTimer->start( 15000, true ); 3256 mMessageTimer->start( 15000, true );
3257 else 3257 else
3258 mMessageTimer->stop(); 3258 mMessageTimer->stop();
3259} 3259}
3260bool KABCore::syncPhone() 3260bool KABCore::syncPhone()
3261{ 3261{
3262 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 3262 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
3263 QString fileName = getPhoneFile(); 3263 QString fileName = getPhoneFile();
3264 if ( !PhoneAccess::readFromPhone( fileName) ) { 3264 if ( !PhoneAccess::readFromPhone( fileName) ) {
3265 message(i18n("Phone access failed!")); 3265 message(i18n("Phone access failed!"));
3266 return false; 3266 return false;
3267 } 3267 }
3268 AddressBook abLocal( fileName,"syncContact"); 3268 AddressBook abLocal( fileName,"syncContact");
3269 bool syncOK = false; 3269 bool syncOK = false;
3270 { 3270 {
3271 abLocal.importFromFile( fileName ); 3271 abLocal.importFromFile( fileName );
3272 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3272 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
3273 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3273 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3274 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 3274 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
3275 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3275 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3276 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3276 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3277 if ( syncOK ) { 3277 if ( syncOK ) {
3278 if ( syncManager->mWriteBackFile ) { 3278 if ( syncManager->mWriteBackFile ) {
3279 abLocal.removeSyncAddressees( true ); 3279 abLocal.removeSyncAddressees( true );
3280 abLocal.saveABphone( fileName ); 3280 abLocal.saveABphone( fileName );
3281 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 3281 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
3282 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 3282 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
3283 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3283 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3284 } 3284 }
3285 } 3285 }
3286 setModified(); 3286 setModified();
3287 } 3287 }
3288 abLocal.removeResources(); 3288 abLocal.removeResources();
3289 if ( syncOK ) 3289 if ( syncOK )
3290 mViewManager->refreshView(); 3290 mViewManager->refreshView();
3291 return syncOK; 3291 return syncOK;
3292} 3292}
3293void KABCore::getFile( bool success ) 3293void KABCore::getFile( bool success )
3294{ 3294{
3295 if ( ! success ) { 3295 if ( ! success ) {
3296 message( i18n("Error receiving file. Nothing changed!") ); 3296 message( i18n("Error receiving file. Nothing changed!") );
3297 return; 3297 return;
3298 } 3298 }
3299 int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); 3299 int count = mAddressBook->importFromFile( sentSyncFile() , false, true );
3300 if ( count ) 3300 if ( count )
3301 setModified( true ); 3301 setModified( true );
3302 message( i18n("Pi-Sync successful!") ); 3302 message( i18n("Pi-Sync successful!") );
3303 mViewManager->refreshView(); 3303 mViewManager->refreshView();
3304} 3304}
3305void KABCore::syncFileRequest() 3305void KABCore::syncFileRequest()
3306{ 3306{
3307 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { 3307 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) {
3308 syncManager->slotSyncMenu( 999 ); 3308 syncManager->slotSyncMenu( 999 );
3309 } 3309 }
3310 mAddressBook->export2File( sentSyncFile() ); 3310 mAddressBook->export2File( sentSyncFile() );
3311} 3311}
3312QString KABCore::sentSyncFile() 3312QString KABCore::sentSyncFile()
3313{ 3313{
3314#ifdef DESKTOP_VERSION 3314#ifdef DESKTOP_VERSION
3315 return locateLocal( "tmp", "copysyncab.vcf" ); 3315 return locateLocal( "tmp", "copysyncab.vcf" );
3316#else 3316#else
3317 return QString( "/tmp/copysyncab.vcf" ); 3317 return QString( "/tmp/copysyncab.vcf" );
3318#endif 3318#endif
3319} 3319}
3320 3320
3321void KABCore::setCaptionBack() 3321void KABCore::setCaptionBack()
3322{ 3322{
3323 mMessageTimer->stop(); 3323 mMessageTimer->stop();
3324 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") ); 3324 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") );
3325} 3325}