summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-20 00:36:50 (UTC)
committer ulf69 <ulf69>2004-08-20 00:36:50 (UTC)
commitd39b363278224b969d4c2945d32968c980b5d842 (patch) (side-by-side diff)
tree418087aff444216ddb08fcd94fa7fdbfa6d46947
parentf4149cef5f3be19d64c9c53130a62de0ec28ee44 (diff)
downloadkdepimpi-d39b363278224b969d4c2945d32968c980b5d842.zip
kdepimpi-d39b363278224b969d4c2945d32968c980b5d842.tar.gz
kdepimpi-d39b363278224b969d4c2945d32968c980b5d842.tar.bz2
performance optimization during vCard loading
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcardformatimpl.cpp51
-rw-r--r--kabc/vcardformatimpl.h4
2 files changed, 29 insertions, 26 deletions
diff --git a/kabc/vcardformatimpl.cpp b/kabc/vcardformatimpl.cpp
index 3fcaf94..bd9a57b 100644
--- a/kabc/vcardformatimpl.cpp
+++ b/kabc/vcardformatimpl.cpp
@@ -50,14 +50,15 @@ bool VCardFormatImpl::load( Addressee &addressee, QFile *file )
VCardEntity e( data );
VCardListIterator it( e.cardList() );
if ( it.current() ) {
- VCard v(*it.current());
- loadAddressee( addressee, v );
+//US VCard v(*it.current());
+//US loadAddressee( addressee, v );
+ loadAddressee( addressee, it.current() );
return true;
}
return false;
}
@@ -70,15 +71,16 @@ bool VCardFormatImpl::loadAll( AddressBook *addressBook, Resource *resource, QFi
VCardEntity e( data );
VCardListIterator it( e.cardList() );
for (; it.current(); ++it) {
- VCard v(*it.current());
+//US VCard v(*it.current());
Addressee addressee;
- loadAddressee( addressee, v );
+//US loadAddressee( addressee, v );
+ loadAddressee( addressee, it.current() );
addressee.setResource( resource );
addressBook->insertAddressee( addressee );
}
return true;
}
@@ -119,15 +121,15 @@ void VCardFormatImpl::saveAll( AddressBook *ab, Resource *resource, QFile *file
vcards.setCardList( vcardlist );
QCString vcardData = vcards.asString();
file->writeBlock( (const char*)vcardData, vcardData.length() );
}
-bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard &v )
+bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v )
{
- QPtrList<ContentLine> contentLines = v.contentLineList();
+ QPtrList<ContentLine> contentLines = v->contentLineList();
ContentLine *cl;
for( cl = contentLines.first(); cl; cl = contentLines.next() ) {
QCString n = cl->name();
if ( n.left( 2 ) == "X-" ) {
n = n.mid( 2 );
@@ -781,25 +783,25 @@ void VCardFormatImpl::addAgentValue( VCARD::VCard *vcard, const Agent &agent )
ParamList params;
if ( agent.isIntern() ) {
QString vstr;
Addressee *addr = agent.addressee();
if ( addr ) {
writeToString( (*addr), vstr );
-
+
qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct");
-/*US
+/*US
vstr.replace( ":", "\\:" );
vstr.replace( ",", "\\," );
vstr.replace( ";", "\\;" );
vstr.replace( "\r\n", "\\n" );
-*/
- vstr.replace( QRegExp(":"), "\\:" );
- vstr.replace( QRegExp(","), "\\," );
- vstr.replace( QRegExp(";"), "\\;" );
- vstr.replace( QRegExp("\r\n"), "\\n" );
-
+*/
+ vstr.replace( QRegExp(":"), "\\:" );
+ vstr.replace( QRegExp(","), "\\," );
+ vstr.replace( QRegExp(";"), "\\;" );
+ vstr.replace( QRegExp("\r\n"), "\\n" );
+
cl.setValue( new TextValue( vstr.utf8() ) );
} else
return;
} else {
cl.setValue( new TextValue( agent.url().utf8() ) );
params.append( new Param( "VALUE", "uri" ) );
@@ -822,23 +824,23 @@ Agent VCardFormatImpl::readAgentValue( VCARD::ContentLine *cl )
isIntern = false;
}
if ( isIntern ) {
QString vstr = QString::fromUtf8( v->asString() );
qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct");
-/*US
+/*US
vstr.replace( "\\n", "\r\n" );
vstr.replace( "\\:", ":" );
vstr.replace( "\\,", "," );
vstr.replace( "\\;", ";" );
*/
- vstr.replace( QRegExp("\\n"), "\r\n" );
- vstr.replace( QRegExp("\\:"), ":" );
- vstr.replace( QRegExp("\\,"), "," );
- vstr.replace( QRegExp("\\;"), ";" );
-
+ vstr.replace( QRegExp("\\n"), "\r\n" );
+ vstr.replace( QRegExp("\\:"), ":" );
+ vstr.replace( QRegExp("\\,"), "," );
+ vstr.replace( QRegExp("\\;"), ";" );
+
Addressee *addr = new Addressee;
readFromString( vstr, *addr );
agent.setAddressee( addr );
} else {
agent.setUrl( QString::fromUtf8( v->asString() ) );
}
@@ -863,13 +865,13 @@ void VCardFormatImpl::addPictureValue( VCARD::VCard *vcard, VCARD::EntityType ty
if ( intern ) { // only for vCard export we really write the data inline
QByteArray data;
QDataStream s( data, IO_WriteOnly );
s.setVersion( 4 ); // to produce valid png files
s << img;
cl.setValue( new TextValue( KCodecs::base64Encode( data ) ) );
-
+
} else { // save picture in cache
QString dir;
if ( type == EntityPhoto )
dir = "photos";
if ( type == EntityLogo )
dir = "logos";
@@ -878,13 +880,13 @@ void VCardFormatImpl::addPictureValue( VCARD::VCard *vcard, VCARD::EntityType ty
cl.setValue( new TextValue( "<dummy>" ) );
}
params.append( new Param( "ENCODING", "b" ) );
if ( !pic.type().isEmpty() )
params.append( new Param( "TYPE", pic.type().utf8() ) );
} else {
-
+
cl.setValue( new TextValue( pic.url().utf8() ) );
params.append( new Param( "VALUE", "uri" ) );
}
cl.setParamList( params );
vcard->add( cl );
@@ -998,14 +1000,15 @@ Sound VCardFormatImpl::readSoundValue( VCARD::ContentLine *cl, const Addressee &
bool VCardFormatImpl::readFromString( const QString &vcard, Addressee &addressee )
{
VCardEntity e( vcard.utf8() );
VCardListIterator it( e.cardList() );
if ( it.current() ) {
- VCard v(*it.current());
- loadAddressee( addressee, v );
+//US VCard v(*it.current());
+//US loadAddressee( addressee, v );
+ loadAddressee( addressee, it.current() );
return true;
}
return false;
}
diff --git a/kabc/vcardformatimpl.h b/kabc/vcardformatimpl.h
index 2dd68d9..fa3d55f 100644
--- a/kabc/vcardformatimpl.h
+++ b/kabc/vcardformatimpl.h
@@ -39,13 +39,13 @@ $Id$
namespace KABC {
class AddressBook;
/**
@short Implementation of vCard backend for address book.
-
+
This class implements reading and writing of address book information using
the vCard format. It requires the vCard lib from kdepim.
*/
class VCardFormatImpl
{
public:
@@ -55,13 +55,13 @@ class VCardFormatImpl
void saveAll( AddressBook *, Resource *, QFile *file );
bool readFromString( const QString &vcard, Addressee &addr );
bool writeToString( const Addressee &addressee, QString &vcard );
protected:
- bool loadAddressee( Addressee &, VCARD::VCard & );
+ bool loadAddressee( Addressee &, VCARD::VCard * );
void saveAddressee( const Addressee &, VCARD::VCard *, bool intern );
void addTextValue (VCARD::VCard *, VCARD::EntityType, const QString & );
QString readTextValue( VCARD::ContentLine * );
void addDateValue( VCARD::VCard *, VCARD::EntityType, const QDate & );