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