From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ktnef/lib/ktnefpropertyset.cpp | 155 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 ktnef/lib/ktnefpropertyset.cpp (limited to 'ktnef/lib/ktnefpropertyset.cpp') diff --git a/ktnef/lib/ktnefpropertyset.cpp b/ktnef/lib/ktnefpropertyset.cpp new file mode 100644 index 000000000..cf35362fe --- /dev/null +++ b/ktnef/lib/ktnefpropertyset.cpp @@ -0,0 +1,155 @@ +/* + ktnefpropertyset.cpp + + Copyright (C) 2002 Michael Goffioul + + This file is part of KTNEF, the KDE TNEF support library/program. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "ktnef/ktnefpropertyset.h" +#include "ktnef/ktnefproperty.h" +#include + +KTNEFPropertySet::KTNEFPropertySet() +{ +} + +KTNEFPropertySet::~KTNEFPropertySet() +{ + clear( true ); +} + +void KTNEFPropertySet::addProperty( int key, int type, const QVariant& value, const QVariant& name, bool overwrite ) +{ + QMap::ConstIterator it = properties_.find( key ); + if ( it != properties_.end() ) + { + if ( overwrite ) + delete ( *it ); + else + return; + } + KTNEFProperty *p = new KTNEFProperty( key, type, value, name ); + properties_[ p->key() ] = p; +} + + +QString KTNEFPropertySet::findProp(int key, const QString& fallback, bool upper) +{ + QMap::Iterator it = properties_.find( key ); + if( properties_.end() != it ) + return upper ? KTNEFProperty::formatValue( (*it)->value(), false ).upper() + : KTNEFProperty::formatValue( (*it)->value(), false ); + else + return fallback; +} + + +QString KTNEFPropertySet::findNamedProp(const QString& name, const QString& fallback, bool upper) +{ + for ( QMap::Iterator it = properties_.begin(); + it != properties_.end(); + ++it ){ + if ( (*it)->name().isValid() ){ + QString s; + if ( (*it)->name().type() == QVariant::String ) + s = (*it)->name().asString(); + else + s = QString().sprintf( "0X%04X", (*it)->name().asUInt() ); + + if( s.upper() == name.upper() ){ + QVariant value = ( *it )->value(); + if( value.type() == QVariant::List ){ + s = ""; + for ( QValueList::ConstIterator lit = value.listBegin(); + lit != value.listEnd(); + ++lit ){ + if( !s.isEmpty() ) + s += ','; + s += KTNEFProperty::formatValue( *lit, false ); + } + }else{ + s = KTNEFProperty::formatValue( value, false ); + } + return upper ? s.upper() : s; + } + } + } + return fallback; +} + + +QMap& KTNEFPropertySet::properties() +{ + return properties_; +} + +const QMap& KTNEFPropertySet::properties() const +{ + return properties_; +} + +QVariant KTNEFPropertySet::property( int key ) const +{ + QMap::ConstIterator it = properties_.find( key ); + if ( it == properties_.end() ) + return QVariant(); + else + return ( *it )->value(); +} + +void KTNEFPropertySet::clear( bool deleteAll ) +{ + if ( deleteAll ) + { + for ( QMap::ConstIterator it=properties_.begin(); it!=properties_.end(); ++it ) + delete ( *it ); + for ( QMap::ConstIterator it=attributes_.begin(); it!=attributes_.end(); ++it ) + delete ( *it ); + } + properties_.clear(); + attributes_.clear(); +} + +void KTNEFPropertySet::addAttribute( int key, int type, const QVariant& value, bool overwrite ) +{ + QMap::ConstIterator it = attributes_.find( key ); + if ( it != attributes_.end() ) + { + if ( overwrite ) + delete ( *it ); + else + return; + } + KTNEFProperty *p = new KTNEFProperty( key, type, value, QVariant() ); + attributes_[ p->key() ] = p; +} + +QMap& KTNEFPropertySet::attributes() +{ + return attributes_; +} + +const QMap& KTNEFPropertySet::attributes() const +{ + return attributes_; +} + +QVariant KTNEFPropertySet::attribute( int key ) const +{ + QMap::ConstIterator it = attributes_.find( key ); + if ( it == attributes_.end() ) + return QVariant(); + else + return ( *it )->value(); +} + -- cgit v1.2.1