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 | |||
@@ -633,58 +633,70 @@ void KABCore::beamVCard(const QStringList& uids) | |||
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 | ||