Diffstat (limited to 'kabc/vcardparser/vcardline.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/vcardparser/vcardline.cpp | 115 |
1 files changed, 69 insertions, 46 deletions
diff --git a/kabc/vcardparser/vcardline.cpp b/kabc/vcardparser/vcardline.cpp index 84638f8..0972a35 100644 --- a/kabc/vcardparser/vcardline.cpp +++ b/kabc/vcardparser/vcardline.cpp @@ -24,4 +24,10 @@ using namespace KABC; +class VCardLine::VCardLinePrivate +{ + public: + QString mGroup; +}; + VCardLine::VCardLine() - : mParamMap( 0 ) + : d( 0 ) { @@ -30,3 +36,3 @@ VCardLine::VCardLine() VCardLine::VCardLine( const QString &identifier ) - : mParamMap( 0 ) + : d( 0 ) { @@ -35,7 +41,7 @@ VCardLine::VCardLine( const QString &identifier ) -VCardLine::VCardLine( const QString &identifier, const QVariant &value ) - : mParamMap( 0 ) +VCardLine::VCardLine( const QString &identifier, const QString &value ) + : d( 0 ) { mIdentifier = identifier; - mValue = value; + mValue.assign( value.data(), value.length() ); } @@ -43,14 +49,5 @@ VCardLine::VCardLine( const QString &identifier, const QVariant &value ) VCardLine::VCardLine( const VCardLine& line ) - : mParamMap( 0 ) + : d( 0 ) { - if ( line.mParamMap ) { - if ( !mParamMap ) - mParamMap = new QMap<QString, QStringList>; - - *mParamMap = *(line.mParamMap); - } else { - delete mParamMap; - mParamMap = 0; - } - + mParamMap = line.mParamMap; mValue = line.mValue; @@ -61,4 +58,4 @@ VCardLine::~VCardLine() { - delete mParamMap; - mParamMap = 0; + delete d; + d = 0; } @@ -70,12 +67,3 @@ VCardLine& VCardLine::operator=( const VCardLine& line ) - if ( line.mParamMap ) { - if ( !mParamMap ) - mParamMap = new QMap<QString, QStringList>; - - *mParamMap = *(line.mParamMap); - } else { - delete mParamMap; - mParamMap = 0; - } - + mParamMap = line.mParamMap; mValue = line.mValue; @@ -95,3 +83,9 @@ QString VCardLine::identifier() const } -void VCardLine::setValue( const QVariant& value ) + +void VCardLine::setValue( const QString& value ) +{ + mValue.duplicate( value.data(), value.length() ); +} + +void VCardLine::setValue( const QByteArray& value ) { @@ -102,2 +96,7 @@ QVariant VCardLine::value() const { + return QVariant( QCString( mValue.data(), mValue.size()+1 ) ); +} + +QByteArray VCardLine::valueBytes() const +{ return mValue; @@ -105,14 +104,36 @@ QVariant VCardLine::value() const +void VCardLine::setGroup( const QString& group ) +{ + if ( !d ) + d = new VCardLinePrivate(); + + d->mGroup = group; +} + +QString VCardLine::group() const +{ + if ( d ) + return d->mGroup; + else + return QString(); +} + +bool VCardLine::hasGroup() const +{ + if ( !d ) + return false; + else + return d->mGroup.isEmpty(); +} + QStringList VCardLine::parameterList() const { - if ( !mParamMap ) - return QStringList(); - else { + //return mParamMap.keys(); //US method QMap::keys() not available yet. SO collect the data manually //US return mParamMap->keys(); - + QStringList result; - + QMap<QString, QStringList>::ConstIterator it; - for( it = mParamMap->begin(); it != mParamMap->end(); ++it ) { + for( it = mParamMap.begin(); it != mParamMap.end(); ++it ) { result << it.key().latin1(); @@ -120,3 +141,2 @@ QStringList VCardLine::parameterList() const return result; - } } @@ -125,7 +145,4 @@ void VCardLine::addParameter( const QString& param, const QString& value ) { - if ( !mParamMap ) - mParamMap = new QMap<QString, QStringList>; - - QStringList &list = (*mParamMap)[ param ]; - if ( list.find( value ) == list.end() ) // not included yet + QStringList &list = mParamMap[ param ]; + if ( list.findIndex( value ) == -1 ) // not included yet list.append( value ); @@ -135,6 +152,7 @@ QStringList VCardLine::parameters( const QString& param ) const { - if ( !mParamMap ) + ParamMap::ConstIterator it = mParamMap.find( param ); + if ( it == mParamMap.end() ) return QStringList(); else - return (*mParamMap)[ param ]; + return *it; } @@ -143,6 +161,11 @@ QString VCardLine::parameter( const QString& param ) const { - if ( !mParamMap ) + ParamMap::ConstIterator it = mParamMap.find( param ); + if ( it == mParamMap.end() ) return QString::null; - else - return (*mParamMap)[ param ][ 0 ]; + else { + if ( (*it).isEmpty() ) + return QString::null; + else + return (*it).first(); + } } |