summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-14 07:24:50 (UTC)
committer zautrix <zautrix>2004-10-14 07:24:50 (UTC)
commit57bd80b04dddd40a897dce8b6902d1046d71c631 (patch) (unidiff)
treec51cb1985344173951109f4bffb12bb6a68ea7f7
parenta6dff815a9c6d3a91094573d23c28a8553fc7cc2 (diff)
downloadkdepimpi-57bd80b04dddd40a897dce8b6902d1046d71c631.zip
kdepimpi-57bd80b04dddd40a897dce8b6902d1046d71c631.tar.gz
kdepimpi-57bd80b04dddd40a897dce8b6902d1046d71c631.tar.bz2
phone fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressee.cpp22
-rw-r--r--kaddressbook/kabcore.cpp45
-rw-r--r--kaddressbook/kabcore.h2
3 files changed, 41 insertions, 28 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 295ee4f..2564894 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -402,103 +402,121 @@ bool Addressee::removeVoice()
402 PhoneNumber::List phoneN = phoneNumbers(); 402 PhoneNumber::List phoneN = phoneNumbers();
403 PhoneNumber::List::Iterator phoneIt; 403 PhoneNumber::List::Iterator phoneIt;
404 bool found = false; 404 bool found = false;
405 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) { 405 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) {
406 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 406 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
407 if ((*phoneIt).type() - PhoneNumber::Voice ) { 407 if ((*phoneIt).type() - PhoneNumber::Voice ) {
408 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 408 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
409 insertPhoneNumber( (*phoneIt) ); 409 insertPhoneNumber( (*phoneIt) );
410 found = true; 410 found = true;
411 } 411 }
412 } 412 }
413 413
414 } 414 }
415 return found; 415 return found;
416} 416}
417 417
418bool Addressee::containsAdr(const Addressee& ad ) 418bool Addressee::containsAdr(const Addressee& ad )
419{ 419{
420 if ( ! ad.mData->familyName.isEmpty() ) if ( mData->familyName != ad.mData->familyName) return false; 420 if ( ! ad.mData->familyName.isEmpty() ) if ( mData->familyName != ad.mData->familyName) return false;
421 if ( ! ad.mData->givenName.isEmpty() )if ( mData->givenName != ad.mData->givenName ) return false; 421 if ( ! ad.mData->givenName.isEmpty() )if ( mData->givenName != ad.mData->givenName ) return false;
422 if ( ad.mData->url.isValid() ) if (mData->url != ad.mData->url) return false ; 422 if ( ad.mData->url.isValid() ) if (mData->url != ad.mData->url) return false ;
423 if ( ! ad.mData->role.isEmpty() ) if (mData->role != ad.mData->role) return false ; 423 if ( ! ad.mData->role.isEmpty() ) if (mData->role != ad.mData->role) return false ;
424 if ( ! ad.mData->organization.isEmpty() ) if (mData->organization != ad.mData->organization) return false ; 424 if ( ! ad.mData->organization.isEmpty() ) if (mData->organization != ad.mData->organization) return false ;
425 if ( ! ad.mData->note.isEmpty() ) if (mData->note != ad.mData->note) return false ; 425 if ( ! ad.mData->note.isEmpty() ) if (mData->note != ad.mData->note) return false ;
426 if ( ! ad.mData->title .isEmpty() ) if (mData->title != ad.mData->title ) return false ; 426 if ( ! ad.mData->title .isEmpty() ) if (mData->title != ad.mData->title ) return false ;
427 427
428 // compare phone numbers 428 // compare phone numbers
429 PhoneNumber::List phoneN = ad.phoneNumbers(); 429 PhoneNumber::List phoneN = ad.phoneNumbers();
430 PhoneNumber::List::Iterator phoneIt; 430 PhoneNumber::List::Iterator phoneIt;
431 bool found = false; 431 bool found = false;
432 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) { 432 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) {
433 bool found = false; 433 bool found = false;
434 PhoneNumber::List phoneL = ad.phoneNumbers(); 434 PhoneNumber::List phoneL = ad.phoneNumbers();
435 PhoneNumber::List::Iterator phoneItL; 435 PhoneNumber::List::Iterator phoneItL;
436 for ( phoneItL = phoneL.begin(); phoneItL != phoneL.end(); ++phoneItL ) { 436 for ( phoneItL = phoneL.begin(); phoneItL != phoneL.end(); ++phoneItL ) {
437 if ( ( *phoneItL ).number() == ( *phoneIt ).number() ) { 437 if ( ( *phoneItL ).number() == ( *phoneIt ).number() ) {
438 found = true; 438 found = true;
439 break; 439 break;
440 } 440 }
441 } 441 }
442 if ( ! found ) 442 if ( ! found )
443 return false; 443 return false;
444 } 444 }
445 return true; 445 return true;
446 446
447} 447}
448void Addressee::simplifyAddresses() 448void Addressee::simplifyAddresses()
449{ 449{
450
451
452 Address::List list;
453 Address::List::Iterator it;
454 Address::List::Iterator it2;
455 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
456 it2 = it;
457 ++it2;
458 for( ; it2 != mData->addresses.end(); ++it2 ) {
459 if ( (*it) == (*it2) ) {
460 list.append( *it );
461 break;
462 }
463 }
464 }
465 for( it = list.begin(); it != list.end(); ++it ) {
466 removeAddress( (*it) );
467 }
468
469 list.clear();
450 int max = 2; 470 int max = 2;
451 if ( mData->url.isValid() ) 471 if ( mData->url.isValid() )
452 max = 1; 472 max = 1;
453 if ( mData->addresses.count() <= max ) return ; 473 if ( mData->addresses.count() <= max ) return ;
454 int count = 0; 474 int count = 0;
455 Address::List list;
456 Address::List::Iterator it;
457 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 475 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
458 if ( count >= max ) 476 if ( count >= max )
459 list.append( *it ); 477 list.append( *it );
460 ++count; 478 ++count;
461 } 479 }
462 for( it = list.begin(); it != list.end(); ++it ) { 480 for( it = list.begin(); it != list.end(); ++it ) {
463 removeAddress( (*it) ); 481 removeAddress( (*it) );
464 } 482 }
465} 483}
466 484
467// removes all emails but the first 485// removes all emails but the first
468// needed by phone sync 486// needed by phone sync
469void Addressee::simplifyEmails() 487void Addressee::simplifyEmails()
470{ 488{
471 if ( mData->emails.count() == 0 ) return ; 489 if ( mData->emails.count() == 0 ) return ;
472 QString email = mData->emails.first(); 490 QString email = mData->emails.first();
473 detach(); 491 detach();
474 mData->emails.clear(); 492 mData->emails.clear();
475 mData->emails.append( email ); 493 mData->emails.append( email );
476} 494}
477 495
478void Addressee::simplifyPhoneNumbers() 496void Addressee::simplifyPhoneNumbers()
479{ 497{
480 int max = 4; 498 int max = 4;
481 int inList = mData->phoneNumbers.count(); 499 int inList = mData->phoneNumbers.count();
482 KABC::PhoneNumber::List removeNumbers; 500 KABC::PhoneNumber::List removeNumbers;
483 KABC::PhoneNumber::List::Iterator phoneIter; 501 KABC::PhoneNumber::List::Iterator phoneIter;
484 if ( inList > max ) { 502 if ( inList > max ) {
485 // delete non-preferred numbers 503 // delete non-preferred numbers
486 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 504 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
487 ++phoneIter ) { 505 ++phoneIter ) {
488 if ( inList > max ) { 506 if ( inList > max ) {
489 if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) { 507 if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) {
490 removeNumbers.append( ( *phoneIter ) ); 508 removeNumbers.append( ( *phoneIter ) );
491 --inList; 509 --inList;
492 } 510 }
493 } else 511 } else
494 break; 512 break;
495 } 513 }
496 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); 514 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
497 ++phoneIter ) { 515 ++phoneIter ) {
498 removePhoneNumber(( *phoneIter )); 516 removePhoneNumber(( *phoneIter ));
499 } 517 }
500 // delete preferred numbers 518 // delete preferred numbers
501 if ( inList > max ) { 519 if ( inList > max ) {
502 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 520 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
503 ++phoneIter ) { 521 ++phoneIter ) {
504 if ( inList > max ) { 522 if ( inList > max ) {
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index dae9cd2..087e9e3 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -648,121 +648,118 @@ void KABCore::mailVCard( const QStringList& uids )
648 urls ); // attachments 648 urls ); // attachments
649*/ 649*/
650 650
651} 651}
652 652
653/** 653/**
654 Beams the "WhoAmI contact. 654 Beams the "WhoAmI contact.
655*/ 655*/
656void KABCore::beamMySelf() 656void KABCore::beamMySelf()
657{ 657{
658 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 658 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
659 if (!a.isEmpty()) 659 if (!a.isEmpty())
660 { 660 {
661 QStringList uids; 661 QStringList uids;
662 uids << a.uid(); 662 uids << a.uid();
663 663
664 beamVCard(uids); 664 beamVCard(uids);
665 } else { 665 } else {
666 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 666 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
667 667
668 668
669 } 669 }
670} 670}
671 671
672void KABCore::export2phone() 672void KABCore::export2phone()
673{ 673{
674 674
675 KAex2phonePrefs ex2phone; 675 KAex2phonePrefs ex2phone;
676 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 676 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
677 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 677 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
678 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 678 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
679 679
680 if ( !ex2phone.exec() ) { 680 if ( !ex2phone.exec() ) {
681 return; 681 return;
682 } 682 }
683 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 683 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
684 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 684 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
685 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 685 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
686 686
687 687
688 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 688 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
689 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 689 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
690 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 690 KPimGlobalPrefs::instance()->mEx2PhoneModel );
691 691
692 QStringList uids = mViewManager->selectedUids(); 692 QStringList uids = mViewManager->selectedUids();
693 if ( uids.isEmpty() ) 693 if ( uids.isEmpty() )
694 return; 694 return;
695 695
696 QString fileName = getPhoneFile();
697 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) )
698 return;
699
700 QTimer::singleShot( 1, this , SLOT ( writeToPhone()));
701
702}
703QString KABCore::getPhoneFile()
704{
696#ifdef _WIN32_ 705#ifdef _WIN32_
697 QString fileName = locateLocal("tmp", "phonefile.vcf"); 706 return locateLocal("tmp", "phonefile.vcf");
698#else 707#else
699 QString fileName = "/tmp/phonefile.vcf"; 708 return "/tmp/phonefile.vcf";
700#endif 709#endif
701 710
702 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) ) 711}
703 return; 712void KABCore::writeToPhone( )
704 713{
705 if ( PhoneAccess::writeToPhone( fileName ) ) 714 if ( PhoneAccess::writeToPhone( getPhoneFile() ) )
706 qDebug("Export okay "); 715 qDebug("Export okay ");
707 else
708 qDebug("Error export contacts ");
709
710
711#if 0
712
713 setCaption( i18n("Writing to phone..."));
714 if ( PhoneFormat::writeToPhone( cal ) )
715 setCaption( i18n("Export to phone successful!"));
716 else 716 else
717 setCaption( i18n("Error exporting to phone!")); 717 qDebug("Error export contacts ");
718#endif
719
720
721} 718}
722void KABCore::beamVCard() 719void KABCore::beamVCard()
723{ 720{
724 QStringList uids = mViewManager->selectedUids(); 721 QStringList uids = mViewManager->selectedUids();
725 if ( !uids.isEmpty() ) 722 if ( !uids.isEmpty() )
726 beamVCard( uids ); 723 beamVCard( uids );
727} 724}
728 725
729 726
730void KABCore::beamVCard(const QStringList& uids) 727void KABCore::beamVCard(const QStringList& uids)
731{ 728{
732/*US 729/*US
733 QString beamFilename; 730 QString beamFilename;
734 Opie::OPimContact c; 731 Opie::OPimContact c;
735 if ( actionPersonal->isOn() ) { 732 if ( actionPersonal->isOn() ) {
736 beamFilename = addressbookPersonalVCardName(); 733 beamFilename = addressbookPersonalVCardName();
737 if ( !QFile::exists( beamFilename ) ) 734 if ( !QFile::exists( beamFilename ) )
738 return; // can't beam a non-existent file 735 return; // can't beam a non-existent file
739 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 736 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
740 beamFilename ); 737 beamFilename );
741 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 738 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
742 Opie::OPimContactAccess::List allList = access->allRecords(); 739 Opie::OPimContactAccess::List allList = access->allRecords();
743 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 740 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
744 c = *it; 741 c = *it;
745 742
746 delete access; 743 delete access;
747 } else { 744 } else {
748 unlink( beamfile ); // delete if exists 745 unlink( beamfile ); // delete if exists
749 mkdir("/tmp/obex/", 0755); 746 mkdir("/tmp/obex/", 0755);
750 c = m_abView -> currentEntry(); 747 c = m_abView -> currentEntry();
751 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 748 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
752 beamfile ); 749 beamfile );
753 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 750 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
754 access->add( c ); 751 access->add( c );
755 access->save(); 752 access->save();
756 delete access; 753 delete access;
757 754
758 beamFilename = beamfile; 755 beamFilename = beamfile;
759 } 756 }
760 757
761 owarn << "Beaming: " << beamFilename << oendl; 758 owarn << "Beaming: " << beamFilename << oendl;
762*/ 759*/
763 760
764#if 0 761#if 0
765 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 762 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
766 763
767 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 764 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
768 765
@@ -789,96 +786,97 @@ void KABCore::beamVCard(const QStringList& uids)
789 786
790 if (description.isEmpty()) 787 if (description.isEmpty())
791 description = a.formattedName(); 788 description = a.formattedName();
792 789
793 QString vcard; 790 QString vcard;
794 converter.addresseeToVCard( a, vcard ); 791 converter.addresseeToVCard( a, vcard );
795 int start = 0; 792 int start = 0;
796 int next; 793 int next;
797 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 794 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
798 int semi = vcard.find(";", next); 795 int semi = vcard.find(";", next);
799 int dopp = vcard.find(":", next); 796 int dopp = vcard.find(":", next);
800 int sep; 797 int sep;
801 if ( semi < dopp && semi >= 0 ) 798 if ( semi < dopp && semi >= 0 )
802 sep = semi ; 799 sep = semi ;
803 else 800 else
804 sep = dopp; 801 sep = dopp;
805 datastream +=vcard.mid( start, next - start); 802 datastream +=vcard.mid( start, next - start);
806 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 803 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
807 start = sep; 804 start = sep;
808 } 805 }
809 datastream += vcard.mid( start,vcard.length() ); 806 datastream += vcard.mid( start,vcard.length() );
810 } 807 }
811#ifndef DESKTOP_VERSION 808#ifndef DESKTOP_VERSION
812 QFile outFile(fileName); 809 QFile outFile(fileName);
813 if ( outFile.open(IO_WriteOnly) ) { 810 if ( outFile.open(IO_WriteOnly) ) {
814 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 811 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
815 QTextStream t( &outFile ); // use a text stream 812 QTextStream t( &outFile ); // use a text stream
816 //t.setEncoding( QTextStream::UnicodeUTF8 ); 813 //t.setEncoding( QTextStream::UnicodeUTF8 );
817 t.setEncoding( QTextStream::Latin1 ); 814 t.setEncoding( QTextStream::Latin1 );
818 t <<datastream.latin1(); 815 t <<datastream.latin1();
819 outFile.close(); 816 outFile.close();
820 Ir *ir = new Ir( this ); 817 Ir *ir = new Ir( this );
821 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 818 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
822 ir->send( fileName, description, "text/x-vCard" ); 819 ir->send( fileName, description, "text/x-vCard" );
823 } else { 820 } else {
824 qDebug("Error open temp beam file "); 821 qDebug("Error open temp beam file ");
825 return; 822 return;
826 } 823 }
827#endif 824#endif
828 825
829} 826}
830 827
831void KABCore::beamDone( Ir *ir ) 828void KABCore::beamDone( Ir *ir )
832{ 829{
833#ifndef DESKTOP_VERSION 830#ifndef DESKTOP_VERSION
834 delete ir; 831 delete ir;
835#endif 832#endif
836 topLevelWidget()->raise(); 833 topLevelWidget()->raise();
834 message( i18n("Beaming successful!") );
837} 835}
838 836
839 837
840void KABCore::browse( const QString& url ) 838void KABCore::browse( const QString& url )
841{ 839{
842#ifndef KAB_EMBEDDED 840#ifndef KAB_EMBEDDED
843 kapp->invokeBrowser( url ); 841 kapp->invokeBrowser( url );
844#else //KAB_EMBEDDED 842#else //KAB_EMBEDDED
845 qDebug("KABCore::browse must be fixed"); 843 qDebug("KABCore::browse must be fixed");
846#endif //KAB_EMBEDDED 844#endif //KAB_EMBEDDED
847} 845}
848 846
849void KABCore::selectAllContacts() 847void KABCore::selectAllContacts()
850{ 848{
851 mViewManager->setSelected( QString::null, true ); 849 mViewManager->setSelected( QString::null, true );
852} 850}
853 851
854void KABCore::deleteContacts() 852void KABCore::deleteContacts()
855{ 853{
856 QStringList uidList = mViewManager->selectedUids(); 854 QStringList uidList = mViewManager->selectedUids();
857 deleteContacts( uidList ); 855 deleteContacts( uidList );
858} 856}
859 857
860void KABCore::deleteContacts( const QStringList &uids ) 858void KABCore::deleteContacts( const QStringList &uids )
861{ 859{
862 if ( uids.count() > 0 ) { 860 if ( uids.count() > 0 ) {
863 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 861 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
864 UndoStack::instance()->push( command ); 862 UndoStack::instance()->push( command );
865 RedoStack::instance()->clear(); 863 RedoStack::instance()->clear();
866 864
867 // now if we deleted anything, refresh 865 // now if we deleted anything, refresh
868 setContactSelected( QString::null ); 866 setContactSelected( QString::null );
869 setModified( true ); 867 setModified( true );
870 } 868 }
871} 869}
872 870
873void KABCore::copyContacts() 871void KABCore::copyContacts()
874{ 872{
875 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 873 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
876 874
877 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 875 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
878 876
879 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 877 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
880 878
881 QClipboard *cb = QApplication::clipboard(); 879 QClipboard *cb = QApplication::clipboard();
882 cb->setText( clipText ); 880 cb->setText( clipText );
883} 881}
884 882
@@ -2773,102 +2771,97 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
2773 } 2771 }
2774 setModified(); 2772 setModified();
2775 2773
2776 } 2774 }
2777 if ( syncOK ) 2775 if ( syncOK )
2778 mViewManager->refreshView(); 2776 mViewManager->refreshView();
2779 return syncOK; 2777 return syncOK;
2780 2778
2781} 2779}
2782 2780
2783 2781
2784//this is a overwritten callbackmethods from the syncinterface 2782//this is a overwritten callbackmethods from the syncinterface
2785bool KABCore::syncExternal(KSyncManager* manager, QString resource) 2783bool KABCore::syncExternal(KSyncManager* manager, QString resource)
2786{ 2784{
2787 if ( resource == "phone" ) 2785 if ( resource == "phone" )
2788 return syncPhone(); 2786 return syncPhone();
2789 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 2787 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
2790 2788
2791 AddressBook abLocal( resource,"syncContact"); 2789 AddressBook abLocal( resource,"syncContact");
2792 bool syncOK = false; 2790 bool syncOK = false;
2793 if ( abLocal.load() ) { 2791 if ( abLocal.load() ) {
2794 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 2792 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
2795 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2793 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2796 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 2794 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
2797 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2795 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
2798 if ( syncOK ) { 2796 if ( syncOK ) {
2799 if ( syncManager->mWriteBackFile ) { 2797 if ( syncManager->mWriteBackFile ) {
2800 abLocal.removeSyncAddressees( false ); 2798 abLocal.removeSyncAddressees( false );
2801 abLocal.saveAB(); 2799 abLocal.saveAB();
2802 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2800 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice );
2803 } 2801 }
2804 } 2802 }
2805 setModified(); 2803 setModified();
2806 } 2804 }
2807 if ( syncOK ) 2805 if ( syncOK )
2808 mViewManager->refreshView(); 2806 mViewManager->refreshView();
2809 return syncOK; 2807 return syncOK;
2810 2808
2811} 2809}
2812void KABCore::message( QString m ) 2810void KABCore::message( QString m )
2813{ 2811{
2814 2812
2815 topLevelWidget()->setCaption( m ); 2813 topLevelWidget()->setCaption( m );
2816 QTimer::singleShot( 15000, this , SLOT ( setCaptionBack())); 2814 QTimer::singleShot( 15000, this , SLOT ( setCaptionBack()));
2817} 2815}
2818bool KABCore::syncPhone() 2816bool KABCore::syncPhone()
2819{ 2817{
2820 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2818 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2821 QString fileName; 2819 QString fileName = getPhoneFile();
2822#ifdef _WIN32_
2823 fileName = locateLocal("tmp", "phonefile.vcf");
2824#else
2825 fileName = "/tmp/phonefile.vcf";
2826#endif
2827 if ( !PhoneAccess::readFromPhone( fileName) ) { 2820 if ( !PhoneAccess::readFromPhone( fileName) ) {
2828 message(i18n("Phone access failed!")); 2821 message(i18n("Phone access failed!"));
2829 return false; 2822 return false;
2830 } 2823 }
2831 AddressBook abLocal( fileName,"syncContact"); 2824 AddressBook abLocal( fileName,"syncContact");
2832 bool syncOK = false; 2825 bool syncOK = false;
2833 { 2826 {
2834 abLocal.importFromFile( fileName ); 2827 abLocal.importFromFile( fileName );
2835 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 2828 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
2836 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2829 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2837 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 2830 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
2838 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 2831 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
2839 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2832 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
2840 if ( syncOK ) { 2833 if ( syncOK ) {
2841 if ( syncManager->mWriteBackFile ) { 2834 if ( syncManager->mWriteBackFile ) {
2842 abLocal.removeSyncAddressees( true ); 2835 abLocal.removeSyncAddressees( true );
2843 abLocal.saveABphone( fileName ); 2836 abLocal.saveABphone( fileName );
2844 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 2837 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
2845 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 2838 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
2846 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2839 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice );
2847 } 2840 }
2848 } 2841 }
2849 setModified(); 2842 setModified();
2850 } 2843 }
2851 if ( syncOK ) 2844 if ( syncOK )
2852 mViewManager->refreshView(); 2845 mViewManager->refreshView();
2853 return syncOK; 2846 return syncOK;
2854} 2847}
2855void KABCore::getFile( bool success ) 2848void KABCore::getFile( bool success )
2856{ 2849{
2857 if ( ! success ) { 2850 if ( ! success ) {
2858 message( i18n("Error receiving file. Nothing changed!") ); 2851 message( i18n("Error receiving file. Nothing changed!") );
2859 return; 2852 return;
2860 } 2853 }
2861 mAddressBook->importFromFile( sentSyncFile() , false, true ); 2854 mAddressBook->importFromFile( sentSyncFile() , false, true );
2862 message( i18n("Pi-Sync successful!") ); 2855 message( i18n("Pi-Sync successful!") );
2863 mViewManager->refreshView(); 2856 mViewManager->refreshView();
2864} 2857}
2865void KABCore::syncFileRequest() 2858void KABCore::syncFileRequest()
2866{ 2859{
2867 mAddressBook->export2File( sentSyncFile() ); 2860 mAddressBook->export2File( sentSyncFile() );
2868} 2861}
2869QString KABCore::sentSyncFile() 2862QString KABCore::sentSyncFile()
2870{ 2863{
2871#ifdef _WIN32_ 2864#ifdef _WIN32_
2872 return locateLocal( "tmp", "copysyncab.vcf" ); 2865 return locateLocal( "tmp", "copysyncab.vcf" );
2873#else 2866#else
2874 return QString( "/tmp/copysyncab.vcf" ); 2867 return QString( "/tmp/copysyncab.vcf" );
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 3c33923..5871d39 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -103,96 +103,97 @@ class KABCore : public QWidget, public KSyncInterface
103 103
104 /** 104 /**
105 Returns a pointer to the KConfig object of the application. 105 Returns a pointer to the KConfig object of the application.
106 */ 106 */
107 static KConfig *config(); 107 static KConfig *config();
108 108
109 /** 109 /**
110 Returns a pointer to the global KActionCollection object. So 110 Returns a pointer to the global KActionCollection object. So
111 other classes can register their actions easily. 111 other classes can register their actions easily.
112 */ 112 */
113 KActionCollection *actionCollection() const; 113 KActionCollection *actionCollection() const;
114 114
115 /** 115 /**
116 Returns the current search field of the Incremental Search Widget. 116 Returns the current search field of the Incremental Search Widget.
117 */ 117 */
118 KABC::Field *currentSearchField() const; 118 KABC::Field *currentSearchField() const;
119 119
120 /** 120 /**
121 Returns the uid list of the currently selected contacts. 121 Returns the uid list of the currently selected contacts.
122 */ 122 */
123 QStringList selectedUIDs() const; 123 QStringList selectedUIDs() const;
124 124
125 /** 125 /**
126 Displays the ResourceSelectDialog and returns the selected 126 Displays the ResourceSelectDialog and returns the selected
127 resource or a null pointer if no resource was selected by 127 resource or a null pointer if no resource was selected by
128 the user. 128 the user.
129 */ 129 */
130 KABC::Resource *requestResource( QWidget *parent ); 130 KABC::Resource *requestResource( QWidget *parent );
131 131
132#ifndef KAB_EMBEDDED 132#ifndef KAB_EMBEDDED
133 static KAboutData *createAboutData(); 133 static KAboutData *createAboutData();
134#endif //KAB_EMBEDDED 134#endif //KAB_EMBEDDED
135 135
136#ifdef KAB_EMBEDDED 136#ifdef KAB_EMBEDDED
137 inline QPopupMenu* getImportMenu() { return ImportMenu;} 137 inline QPopupMenu* getImportMenu() { return ImportMenu;}
138 inline QPopupMenu* getExportMenu() { return ExportMenu;} 138 inline QPopupMenu* getExportMenu() { return ExportMenu;}
139#endif //KAB_EMBEDDED 139#endif //KAB_EMBEDDED
140 140
141 public slots: 141 public slots:
142#ifdef KAB_EMBEDDED 142#ifdef KAB_EMBEDDED
143 void createAboutData(); 143 void createAboutData();
144#endif //KAB_EMBEDDED 144#endif //KAB_EMBEDDED
145 145
146 void statusMessage(QString, int time = 0 ); 146 void statusMessage(QString, int time = 0 );
147 void showLicence(); 147 void showLicence();
148 void faq(); 148 void faq();
149 void whatsnew() ; 149 void whatsnew() ;
150 void synchowto() ; 150 void synchowto() ;
151 void writeToPhone();
151 152
152 /** 153 /**
153 Is called whenever a contact is selected in the view. 154 Is called whenever a contact is selected in the view.
154 */ 155 */
155 void setContactSelected( const QString &uid ); 156 void setContactSelected( const QString &uid );
156 157
157 /** 158 /**
158 Opens the preferred mail composer with all selected contacts as 159 Opens the preferred mail composer with all selected contacts as
159 arguments. 160 arguments.
160 */ 161 */
161 void sendMail(); 162 void sendMail();
162 163
163 /** 164 /**
164 Opens the preferred mail composer with the given contacts as 165 Opens the preferred mail composer with the given contacts as
165 arguments. 166 arguments.
166 */ 167 */
167 void sendMail( const QString& email ); 168 void sendMail( const QString& email );
168 169
169 170
170 void mailVCard(); 171 void mailVCard();
171 void mailVCard(const QStringList& uids); 172 void mailVCard(const QStringList& uids);
172 173
173 /** 174 /**
174 Beams the "WhoAmI contact. 175 Beams the "WhoAmI contact.
175 */ 176 */
176 void beamMySelf(); 177 void beamMySelf();
177 178
178 void beamVCard(); 179 void beamVCard();
179 void export2phone(); 180 void export2phone();
180 void beamVCard(const QStringList& uids); 181 void beamVCard(const QStringList& uids);
181 void beamDone( Ir *ir ); 182 void beamDone( Ir *ir );
182 183
183 184
184 /** 185 /**
185 Starts the preferred web browser with the given URL as argument. 186 Starts the preferred web browser with the given URL as argument.
186 */ 187 */
187 void browse( const QString& url ); 188 void browse( const QString& url );
188 189
189 /** 190 /**
190 Select all contacts in the view. 191 Select all contacts in the view.
191 */ 192 */
192 void selectAllContacts(); 193 void selectAllContacts();
193 194
194 /** 195 /**
195 Deletes all selected contacts from the address book. 196 Deletes all selected contacts from the address book.
196 */ 197 */
197 void deleteContacts(); 198 void deleteContacts();
198 199
@@ -326,96 +327,97 @@ class KABCore : public QWidget, public KSyncInterface
326 327
327 /** 328 /**
328 Creates a KAddressBookPrinter, which will display the print 329 Creates a KAddressBookPrinter, which will display the print
329 dialog and do the printing. 330 dialog and do the printing.
330 */ 331 */
331 void print(); 332 void print();
332 333
333 /** 334 /**
334 Registers a new GUI client, so plugins can register its actions. 335 Registers a new GUI client, so plugins can register its actions.
335 */ 336 */
336 void addGUIClient( KXMLGUIClient *client ); 337 void addGUIClient( KXMLGUIClient *client );
337 338
338 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid); 339 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid);
339 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid); 340 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid);
340 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid); 341 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid);
341 342
342 343
343 signals: 344 signals:
344 void contactSelected( const QString &name ); 345 void contactSelected( const QString &name );
345 void contactSelected( const QPixmap &pixmap ); 346 void contactSelected( const QPixmap &pixmap );
346 public slots: 347 public slots:
347 void recieve(QString cmsg ); 348 void recieve(QString cmsg );
348 void getFile( bool success ); 349 void getFile( bool success );
349 void syncFileRequest(); 350 void syncFileRequest();
350 void setDetailsVisible( bool visible ); 351 void setDetailsVisible( bool visible );
351 void setDetailsToState(); 352 void setDetailsToState();
352 // void slotSyncMenu( int ); 353 // void slotSyncMenu( int );
353 private slots: 354 private slots:
354 void setJumpButtonBarVisible( bool visible ); 355 void setJumpButtonBarVisible( bool visible );
355 void setCaptionBack(); 356 void setCaptionBack();
356 void importFromOL(); 357 void importFromOL();
357 void extensionModified( const KABC::Addressee::List &list ); 358 void extensionModified( const KABC::Addressee::List &list );
358 void extensionChanged( int id ); 359 void extensionChanged( int id );
359 void clipboardDataChanged(); 360 void clipboardDataChanged();
360 void updateActionMenu(); 361 void updateActionMenu();
361 void configureKeyBindings(); 362 void configureKeyBindings();
362 void removeVoice(); 363 void removeVoice();
363#ifdef KAB_EMBEDDED 364#ifdef KAB_EMBEDDED
364 void configureResources(); 365 void configureResources();
365#endif //KAB_EMBEDDED 366#endif //KAB_EMBEDDED
366 367
367 void slotEditorDestroyed( const QString &uid ); 368 void slotEditorDestroyed( const QString &uid );
368 void configurationChanged(); 369 void configurationChanged();
369 void addressBookChanged(); 370 void addressBookChanged();
370 371
371 private: 372 private:
372 void initGUI(); 373 void initGUI();
373 void initActions(); 374 void initActions();
375 QString getPhoneFile();
374 376
375 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, 377 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent,
376 const char *name = 0 ); 378 const char *name = 0 );
377 379
378 KXMLGUIClient *mGUIClient; 380 KXMLGUIClient *mGUIClient;
379 381
380 KABC::AddressBook *mAddressBook; 382 KABC::AddressBook *mAddressBook;
381 383
382 ViewManager *mViewManager; 384 ViewManager *mViewManager;
383 // QSplitter *mDetailsSplitter; 385 // QSplitter *mDetailsSplitter;
384 KDGanttMinimizeSplitter *mExtensionBarSplitter; 386 KDGanttMinimizeSplitter *mExtensionBarSplitter;
385 ViewContainer *mDetails; 387 ViewContainer *mDetails;
386 KDGanttMinimizeSplitter* mMiniSplitter; 388 KDGanttMinimizeSplitter* mMiniSplitter;
387 XXPortManager *mXXPortManager; 389 XXPortManager *mXXPortManager;
388 JumpButtonBar *mJumpButtonBar; 390 JumpButtonBar *mJumpButtonBar;
389 IncSearchWidget *mIncSearchWidget; 391 IncSearchWidget *mIncSearchWidget;
390 ExtensionManager *mExtensionManager; 392 ExtensionManager *mExtensionManager;
391 393
392 KCMultiDialog *mConfigureDialog; 394 KCMultiDialog *mConfigureDialog;
393 395
394#ifndef KAB_EMBEDDED 396#ifndef KAB_EMBEDDED
395 LDAPSearchDialog *mLdapSearchDialog; 397 LDAPSearchDialog *mLdapSearchDialog;
396#endif //KAB_EMBEDDED 398#endif //KAB_EMBEDDED
397 // QDict<AddresseeEditorDialog> mEditorDict; 399 // QDict<AddresseeEditorDialog> mEditorDict;
398 AddresseeEditorDialog *mEditorDialog; 400 AddresseeEditorDialog *mEditorDialog;
399 bool mReadWrite; 401 bool mReadWrite;
400 bool mModified; 402 bool mModified;
401 bool mIsPart; 403 bool mIsPart;
402 bool mMultipleViewsAtOnce; 404 bool mMultipleViewsAtOnce;
403 405
404 406
405 //US file menu 407 //US file menu
406 KAction *mActionMail; 408 KAction *mActionMail;
407 KAction *mActionBeam; 409 KAction *mActionBeam;
408 KAction *mActionExport2phone; 410 KAction *mActionExport2phone;
409 KAction* mActionPrint; 411 KAction* mActionPrint;
410 KAction* mActionNewContact; 412 KAction* mActionNewContact;
411 KAction *mActionSave; 413 KAction *mActionSave;
412 KAction *mActionEditAddressee; 414 KAction *mActionEditAddressee;
413 KAction *mActionMailVCard; 415 KAction *mActionMailVCard;
414 KAction *mActionBeamVCard; 416 KAction *mActionBeamVCard;
415 417
416 KAction *mActionQuit; 418 KAction *mActionQuit;
417 419
418 //US edit menu 420 //US edit menu
419 KAction *mActionCopy; 421 KAction *mActionCopy;
420 KAction *mActionCut; 422 KAction *mActionCut;
421 KAction *mActionPaste; 423 KAction *mActionPaste;