From 848c77f86b7105095b27a6034a0fefac8a7a0891 Mon Sep 17 00:00:00 2001 From: zautrix Date: Wed, 08 Sep 2004 09:57:16 +0000 Subject: Beam vcard fix --- (limited to 'kaddressbook') diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 6538295..d1d385c 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp @@ -642,40 +642,52 @@ void KABCore::beamVCard(const QStringList& uids) //QDir().mkdir( dirName, true ); - QFile outFile(fileName); + KABC::VCardConverter converter; QString description; - - if ( outFile.open(IO_WriteOnly) ) { // file opened successfully - - QTextStream t( &outFile ); // use a text stream - t.setEncoding( QTextStream::UnicodeUTF8 ); - - for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { + QString datastream; + for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { KABC::Addressee a = mAddressBook->findByUid( *it ); if ( a.isEmpty() ) - continue; + continue; if (description.isEmpty()) - description = a.formattedName(); + description = a.formattedName(); QString vcard; converter.addresseeToVCard( a, vcard ); - t << vcard; - - } + int start = 0; + int next; + while ( (next = vcard.find("TYPE=", start) )>= 0 ) { + int semi = vcard.find(";", next); + int dopp = vcard.find(":", next); + int sep; + if ( semi < dopp && semi >= 0 ) + sep = semi ; + else + sep = dopp; + datastream +=vcard.mid( start, next - start); + datastream +=vcard.mid( next+5,sep -next -5 ).upper(); + start = sep; + } + datastream += vcard.mid( start,vcard.length() ); + } +#ifndef DESKTOP_VERSION + QFile outFile(fileName); + if ( outFile.open(IO_WriteOnly) ) { + datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); + QTextStream t( &outFile ); // use a text stream + t.setEncoding( QTextStream::UnicodeUTF8 ); + t <send( fileName, description, "text/x-vCard" ); } else { qDebug("Error open temp beam file "); return; } - - outFile.close(); - -#ifndef DESKTOP_VERSION - Ir *ir = new Ir( this ); - connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); - ir->send( fileName, description, "text/x-vCard" ); #endif } -- cgit v0.9.0.2