summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp52
1 files changed, 32 insertions, 20 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6538295..d1d385c 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -597,130 +597,142 @@ void KABCore::beamVCard(const QStringList& uids)
597/*US 597/*US
598 QString beamFilename; 598 QString beamFilename;
599 Opie::OPimContact c; 599 Opie::OPimContact c;
600 if ( actionPersonal->isOn() ) { 600 if ( actionPersonal->isOn() ) {
601 beamFilename = addressbookPersonalVCardName(); 601 beamFilename = addressbookPersonalVCardName();
602 if ( !QFile::exists( beamFilename ) ) 602 if ( !QFile::exists( beamFilename ) )
603 return; // can't beam a non-existent file 603 return; // can't beam a non-existent file
604 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 604 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
605 beamFilename ); 605 beamFilename );
606 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 606 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
607 Opie::OPimContactAccess::List allList = access->allRecords(); 607 Opie::OPimContactAccess::List allList = access->allRecords();
608 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 608 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
609 c = *it; 609 c = *it;
610 610
611 delete access; 611 delete access;
612 } else { 612 } else {
613 unlink( beamfile ); // delete if exists 613 unlink( beamfile ); // delete if exists
614 mkdir("/tmp/obex/", 0755); 614 mkdir("/tmp/obex/", 0755);
615 c = m_abView -> currentEntry(); 615 c = m_abView -> currentEntry();
616 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 616 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
617 beamfile ); 617 beamfile );
618 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 618 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
619 access->add( c ); 619 access->add( c );
620 access->save(); 620 access->save();
621 delete access; 621 delete access;
622 622
623 beamFilename = beamfile; 623 beamFilename = beamfile;
624 } 624 }
625 625
626 owarn << "Beaming: " << beamFilename << oendl; 626 owarn << "Beaming: " << beamFilename << oendl;
627*/ 627*/
628 628
629#if 0 629#if 0
630 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 630 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
631 631
632 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 632 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
633 633
634 QString name = "contact.vcf"; 634 QString name = "contact.vcf";
635 635
636 QString fileName = dirName + "/" + name; 636 QString fileName = dirName + "/" + name;
637#endif 637#endif
638 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory 638 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory
639 // 639 //
640 QString fileName = "/tmp/kapibeamfile.vcf"; 640 QString fileName = "/tmp/kapibeamfile.vcf";
641 641
642 642
643 //QDir().mkdir( dirName, true ); 643 //QDir().mkdir( dirName, true );
644 644
645 QFile outFile(fileName); 645
646 KABC::VCardConverter converter; 646 KABC::VCardConverter converter;
647 QString description; 647 QString description;
648 648 QString datastream;
649 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 649 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
650
651 QTextStream t( &outFile ); // use a text stream
652 t.setEncoding( QTextStream::UnicodeUTF8 );
653
654 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
655 KABC::Addressee a = mAddressBook->findByUid( *it ); 650 KABC::Addressee a = mAddressBook->findByUid( *it );
656 651
657 if ( a.isEmpty() ) 652 if ( a.isEmpty() )
658 continue; 653 continue;
659 654
660 if (description.isEmpty()) 655 if (description.isEmpty())
661 description = a.formattedName(); 656 description = a.formattedName();
662 657
663 QString vcard; 658 QString vcard;
664 converter.addresseeToVCard( a, vcard ); 659 converter.addresseeToVCard( a, vcard );
665 t << vcard; 660 int start = 0;
666 661 int next;
667 } 662 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
663 int semi = vcard.find(";", next);
664 int dopp = vcard.find(":", next);
665 int sep;
666 if ( semi < dopp && semi >= 0 )
667 sep = semi ;
668 else
669 sep = dopp;
670 datastream +=vcard.mid( start, next - start);
671 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
672 start = sep;
673 }
674 datastream += vcard.mid( start,vcard.length() );
675 }
676#ifndef DESKTOP_VERSION
677 QFile outFile(fileName);
678 if ( outFile.open(IO_WriteOnly) ) {
679 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
680 QTextStream t( &outFile ); // use a text stream
681 t.setEncoding( QTextStream::UnicodeUTF8 );
682 t <<datastream;
683 outFile.close();
684 Ir *ir = new Ir( this );
685 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
686 ir->send( fileName, description, "text/x-vCard" );
668 } else { 687 } else {
669 qDebug("Error open temp beam file "); 688 qDebug("Error open temp beam file ");
670 return; 689 return;
671 } 690 }
672
673 outFile.close();
674
675#ifndef DESKTOP_VERSION
676 Ir *ir = new Ir( this );
677 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
678 ir->send( fileName, description, "text/x-vCard" );
679#endif 691#endif
680 692
681} 693}
682 694
683void KABCore::beamDone( Ir *ir ) 695void KABCore::beamDone( Ir *ir )
684{ 696{
685#ifndef DESKTOP_VERSION 697#ifndef DESKTOP_VERSION
686 delete ir; 698 delete ir;
687#endif 699#endif
688} 700}
689 701
690 702
691void KABCore::browse( const QString& url ) 703void KABCore::browse( const QString& url )
692{ 704{
693#ifndef KAB_EMBEDDED 705#ifndef KAB_EMBEDDED
694 kapp->invokeBrowser( url ); 706 kapp->invokeBrowser( url );
695#else //KAB_EMBEDDED 707#else //KAB_EMBEDDED
696 qDebug("KABCore::browse must be fixed"); 708 qDebug("KABCore::browse must be fixed");
697#endif //KAB_EMBEDDED 709#endif //KAB_EMBEDDED
698} 710}
699 711
700void KABCore::selectAllContacts() 712void KABCore::selectAllContacts()
701{ 713{
702 mViewManager->setSelected( QString::null, true ); 714 mViewManager->setSelected( QString::null, true );
703} 715}
704 716
705void KABCore::deleteContacts() 717void KABCore::deleteContacts()
706{ 718{
707 QStringList uidList = mViewManager->selectedUids(); 719 QStringList uidList = mViewManager->selectedUids();
708 deleteContacts( uidList ); 720 deleteContacts( uidList );
709} 721}
710 722
711void KABCore::deleteContacts( const QStringList &uids ) 723void KABCore::deleteContacts( const QStringList &uids )
712{ 724{
713 if ( uids.count() > 0 ) { 725 if ( uids.count() > 0 ) {
714 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 726 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
715 UndoStack::instance()->push( command ); 727 UndoStack::instance()->push( command );
716 RedoStack::instance()->clear(); 728 RedoStack::instance()->clear();
717 729
718 // now if we deleted anything, refresh 730 // now if we deleted anything, refresh
719 setContactSelected( QString::null ); 731 setContactSelected( QString::null );
720 setModified( true ); 732 setModified( true );
721 } 733 }
722} 734}
723 735
724void KABCore::copyContacts() 736void KABCore::copyContacts()
725{ 737{
726 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 738 KABC::Addressee::List addrList = mViewManager->selectedAddressees();