/** Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved.* This component and the accompanying materials are made available* under the terms of "Eclipse Public License v1.0"* which accompanies this distribution, and is available* at the URL "http://www.eclipse.org/legal/epl-v10.html".** Initial Contributors:* Nokia Corporation - initial contribution.** Contributors:** Description: Contact item interface.**/#ifndef __MPENGCONTACTITEM_H#define __MPENGCONTACTITEM_H// INCLUDES#include <E32Std.h>// FORWARD DECLARATIONSclass MPEngContactItemExt;// CONSTANTS/********************************************************//* Contact Item property levels. *//* @since 3.0 *//********************************************************//** * Presence Engine contact Item native permanent properties. * Those properties are permanent over the sessions. */const TUint KPEngCntItemPropertyNativePermanent = 0x00000010;/** * Presence Engine contact Item native cached properties. * These property values are discarded on the session close. */const TUint KPEngCntItemPropertyNativeCached = 0x00000020;/** * External permanent contact Item properties. * * These properties are not used by the Presence Engine but * the clients can use this level to store external * settings that must be permanent over the sessions. */const TUint KPEngCntItemPropertyExternalPermanent = 0x00000030;/** * External cached contact Item properties. * * These properties are not used by the Presence Engine but * the clients can use this level to store external settings * that needs to be cleared when the session is closed. */const TUint KPEngCntItemPropertyExternalCached = 0x00000040;// CLASS DECLARATION/** * Interface for one contact item in the contact list. * * @since 3.0 */class MPEngContactItem { public: // Contact item values /** * Contact Id of the contact Item * * @since 3.0 * @return Contact Id of the contact item. */ virtual const TDesC& Id() const = 0; /** * Nick name of the contact Item * * If the contact doesn't have nick defined, * returns KNullDesC. * * @since 3.0 * @return Nick name of the contact item. */ virtual const TDesC& NickName() const = 0; /** * Update nick name of the contact item * * New nick name is assigned to the contact item. Old nick name * will be replaced once contact list is updated to the server. * * @since 3.0 * @param aNickName New nick name. */ virtual void UpdateNickNameL( const TDesC& aNickName ) = 0; public: // Property getters /** * Gets a property. * * Gets value of property. * Overloaded version for different data types. * * @since 3.0 * @param aName Name of the property. * @param aLevel Level of the property to look for. * @param aValue Where value is be stored. * @return KErrNone if property was found. Else KErrNotFound. */ virtual TInt GetProperty( TUint aName, TUint aLevel, TInt& aValue ) const = 0; virtual TInt GetProperty( TUint aName, TUint aLevel, TPtrC8& aValue ) const = 0; virtual TInt GetProperty( TUint aName, TUint aLevel, TPtrC16& aValue ) const = 0; /** * Gets a property. * * @since 3.0 * @param aName Name of the property. * @param aLevel Level of the property to look for. * @return if property is found, its value, if not found * zero is returned as default value */ virtual TInt Property( TUint aName, TUint aLevel ) const = 0; public: // Property setters /** * Sets a property. * * Sets value of property. * Overloaded version for different data types. * * @since 3.0 * @param aName Name of the property * Predefined Property names are specified above * Client can also use own property names * @param aLevel Level of the property to set. * Predefined levels are specified above. * @param aValue Value to be set. */ virtual void SetPropertyL( TUint aName, TUint aLevel, TInt aValue ) = 0; virtual void SetPropertyL( TUint aName, TUint aLevel, const TDesC8& aValue ) = 0; virtual void SetPropertyL( TUint aName, TUint aLevel, const TDesC16& aValue ) = 0; /** * Delete a property * * Deletes property out of the contact list preferences * Property defined by the PEC engine cannot be deleted * if defined property is not found, function will do nothing * * @since 3.0 * @param aName name of the property to delete * @param aLevel level of the property to delete */ virtual void DeletePropertyL( TUint aName, TUint aLevel ) = 0; public: // Those functions won't any longer supported // Opaque value extensions /** * Gets opaque values. */ virtual TInt GetPermanentValue( const TDesC& aKey, TPtrC8& aValue ) const = 0; virtual TInt GetCachedValue( const TDesC& aKey, TPtrC8& aValue ) const = 0; /** * Sets opaque values. */ virtual void SetPermanentValueL( const TDesC& aKey, const TDesC8& aValue ) = 0; virtual void SetCachedValueL( const TDesC& aKey, const TDesC8& aValue ) = 0; /** * Delete opaque values. */ virtual void DeletePermanentValueL( const TDesC& aKey ) = 0; virtual void DeleteCachedValueL( const TDesC& aKey ) = 0; private: //Extensions interfaces /** * Contact item extension interface. * * @since 3.0 * @return Contact item extension. */ virtual MPEngContactItemExt* Extension() = 0; virtual const MPEngContactItemExt* Extension() const = 0; protected: //Destructor /** * Virtual inline destructor. * Protected destructor to prohibits deletion * through the interface. */ virtual ~MPEngContactItem() {}; };#endif // __MPENGCONTACTITEM_H// End of File