00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "contactmetadata_p.h"
00023
00024 #include "contactmetadataattribute_p.h"
00025
00026 #include <akonadi/item.h>
00027
00028 using namespace Akonadi;
00029
00030 class ContactMetaData::Private
00031 {
00032 public:
00033 Private()
00034 : mDisplayNameMode( -1 )
00035 {
00036 }
00037
00038 int mDisplayNameMode;
00039 QVariantList mCustomFieldDescriptions;
00040 };
00041
00042 ContactMetaData::ContactMetaData()
00043 : d( new Private )
00044 {
00045 }
00046
00047 ContactMetaData::~ContactMetaData()
00048 {
00049 delete d;
00050 }
00051
00052 void ContactMetaData::load( const Akonadi::Item &contact )
00053 {
00054 if ( !contact.hasAttribute( "contactmetadata" ) )
00055 return;
00056
00057 ContactMetaDataAttribute *attribute = contact.attribute<ContactMetaDataAttribute>();
00058 const QVariantMap metaData = attribute->metaData();
00059
00060 if ( metaData.contains( QLatin1String( "DisplayNameMode" ) ) )
00061 d->mDisplayNameMode = metaData.value( QLatin1String( "DisplayNameMode" ) ).toInt();
00062 else
00063 d->mDisplayNameMode = -1;
00064
00065 d->mCustomFieldDescriptions = metaData.value( QLatin1String( "CustomFieldDescriptions" ) ).toList();
00066 }
00067
00068 void ContactMetaData::store( Akonadi::Item &contact )
00069 {
00070 ContactMetaDataAttribute *attribute = contact.attribute<ContactMetaDataAttribute>( Item::AddIfMissing );
00071
00072 QVariantMap metaData;
00073 if ( d->mDisplayNameMode != -1 )
00074 metaData.insert( QLatin1String( "DisplayNameMode" ), QVariant( d->mDisplayNameMode ) );
00075
00076 if ( !d->mCustomFieldDescriptions.isEmpty() )
00077 metaData.insert( QLatin1String( "CustomFieldDescriptions" ), d->mCustomFieldDescriptions );
00078
00079 attribute->setMetaData( metaData );
00080 }
00081
00082 void ContactMetaData::setDisplayNameMode( int mode )
00083 {
00084 d->mDisplayNameMode = mode;
00085 }
00086
00087 int ContactMetaData::displayNameMode() const
00088 {
00089 return d->mDisplayNameMode;
00090 }
00091
00092 void ContactMetaData::setCustomFieldDescriptions( const QVariantList &descriptions )
00093 {
00094 d->mCustomFieldDescriptions = descriptions;
00095 }
00096
00097 QVariantList ContactMetaData::customFieldDescriptions() const
00098 {
00099 return d->mCustomFieldDescriptions;
00100 }