author | zautrix <zautrix> | 2004-09-08 09:57:16 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-08 09:57:16 (UTC) |
commit | 848c77f86b7105095b27a6034a0fefac8a7a0891 (patch) (unidiff) | |
tree | 2816ee9a05000ccabc43d3c9be4558053bfc8c0b | |
parent | 6650dd66dd13498a6d28844770d9d8c291335ad4 (diff) | |
download | kdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.zip kdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.tar.gz kdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.tar.bz2 |
Beam vcard fix
-rw-r--r-- | kaddressbook/kabcore.cpp | 52 |
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 | |||
@@ -613,98 +613,110 @@ void KABCore::beamVCard(const QStringList& uids) | |||
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 | ||
683 | void KABCore::beamDone( Ir *ir ) | 695 | void 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 | ||
691 | void KABCore::browse( const QString& url ) | 703 | void 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 | ||
700 | void KABCore::selectAllContacts() | 712 | void KABCore::selectAllContacts() |
701 | { | 713 | { |
702 | mViewManager->setSelected( QString::null, true ); | 714 | mViewManager->setSelected( QString::null, true ); |
703 | } | 715 | } |
704 | 716 | ||
705 | void KABCore::deleteContacts() | 717 | void KABCore::deleteContacts() |
706 | { | 718 | { |
707 | QStringList uidList = mViewManager->selectedUids(); | 719 | QStringList uidList = mViewManager->selectedUids(); |
708 | deleteContacts( uidList ); | 720 | deleteContacts( uidList ); |
709 | } | 721 | } |
710 | 722 | ||