diff -r 000000000000 -r 094583676ce7 PECengine/IncPresenceModel/MPEngContactListProperties.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/IncPresenceModel/MPEngContactListProperties.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,443 @@ +/* +* 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 list properties. +* +*/ + +#ifndef __MPENGCONTACTLISTPROPERTIES_H +#define __MPENGCONTACTLISTPROPERTIES_H + + +// INCLUDES +#include + + +// FORWARD DECLARATIONS +class MPEngContactListPropertiesExt; +class MPEngAttributeList2; +class TPEngContactListBaseSettings; + + + +// CONSTANTS +/********************************************************/ +/* Contact list property levels. */ +/* @since 3.0 */ +/********************************************************/ + + +/** + * Presence Engine contact list native permanent properties. + * Those properties are permanent over the sessions. + */ +const TUint KPEngCntLstPropertyNativePermanent = 0x00000010; + + +/** + * Presence Engine contact list native cached properties. + * These property values are discarded on the session close. + */ +const TUint KPEngCntLstPropertyNativeCached = 0x00000020; + + +/** + * External permanent contact list 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 KPEngCntLstPropertyExternalPermanent = 0x00000030; + +/** + * External cached contact list 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 KPEngCntLstPropertyExternalCached = 0x00000040; + + + + + + + +/********************************************************/ +/* Contact list properties. */ +/* These properties should be defined by the client */ +/* once contact list is created. If clients do not */ +/* define these, default values are used instead. */ +/* */ +/* @since 3.0 */ +/********************************************************/ + + +/** + * Contact list TInt property name. + * Property level: KPEngCntLstPropertyNativePermanent + * + * Flag if the contact lists must exist on the network server. + * + * Possible property values: + * - 0: (Default) Contact list is lazy initializated + * on the Network server when needed. + * - 1: Contact list is created on the Network server, even + * there is no content for such contact list. + */ +const TUint KPEngCntLstMustExistOnServer = 0x0001001; + + + +/** + * Contact list TInt property name. + * Property level: KPEngCntLstPropertyNativePermanent + * + * Flag if contact list is master on the terminal or + * on the network server. This rule is used when local copy + * of the contact list is synchronized with the network server. + * + * Possible property values: + * - 0: (Default) Network version of the contact list + * is the master. + * - 1: Terminal version of the lists is master. + */ +const TUint KPEngCntLstSyncMaster = 0x0001002; + + + +// Following Contact list properties will will be hiden and not +// used as public + +/** + * Contact list TInt property name. + * Property level: KPEngCntLstPropertyNativePermanent + * + * Flag if the contact list needs to be subscribed or not. + * + * Possible property values: + * - 0: (Default) Contact list isn't subscribed. + * - 1: Contact list will is subscribed. + */ +const TUint KPEngCntLstSubscribe = 0x0001003; + + +/** + * Contact list TInt property name. + * Property level: KPEngCntLstPropertyNativePermanent + * + * Flag if the contact list is default contact list + * + * Possible property values: + * - 0: (Default) Contact list isn't default contact list. + * - 1: Contact is default. + */ +const TUint KPEngCntLstDefault = 0x0001004; + + + + +// CLASS DECLARATION + +/** + * Contact list settings. + * + * Interface to access all properties of the contact list + * + * @since 3.0 + */ +class MPEngContactListProperties + { + public: // New functions + + /** + * Is contact list synchronized? + * + * ETrue if local contact list has been synchronized + * with network server. Else EFalse. + * + * @since 3.0 + * @return ETrue if contact list is synchronized. + * Else EFalse. + */ + virtual TBool Synchronized() const = 0 ; + + + /** + * Contact list local name. + * + * Unique name of the contact list how it it is addressed locally. + * + * This name can vary from the how contact list is represented + * on the server side, since in some cases contact list name + * on the server side also includes user name of logged client. + * + * @since 3.0 + * @return Contact list local name. + */ + virtual const TDesC& Name() const = 0; + + + /** + * Contact list server name. + * + * Name how contact list is addressed on the network server + * This name is not intended to be used for local addressing + * of the contact list. For that client should used Name() instead. + * + * @since 3.0 + * @return Contact list server name. + */ + virtual const TDesC& ServerName() const = 0; + + + /** + * Contact list display name. + * + * Gets the contact list display name. + * + * For contact lists that are unknown to Presence Engine, + * there doesn't exist diplay name for the list before + * the list is synchronized with network server. + * + * @since 3.0 + * @param aDispName On the return points to display name. + * @return KErrNone If there is a display name for the list. + * Else KErrNotFound. + */ + virtual TInt DisplayName( TPtrC& aDispName ) const = 0; + + + /** + * Sets a new display name for the contact list. + * + * To make the name change active, contact list has to + * be updated to network. + * + * @since 3.0 + * @param aDisplayName New display name for the contact list. + */ + virtual void SetDisplayNameL( const TDesC& aDisplayName ) = 0; + + + /** + * Is the contact list the default list? + * + * @since 3.0 + * @return ETrue if contact list is the default + * contact list. Else EFalse. + */ + virtual TBool IsDefault() const = 0; + + + public: //Subscription attributes + + + /** + * Gets presence attributes used for subscription. + * + * When Contact list is not subscribed or presence + * attributes are not defined for subscription, + * returned array is empty + * + * @since 3.0 + * @return Assigned attributes for subscription. + * NULL if no attributes assigned. + */ + virtual const RArray& SubscriptionAttributes() const = 0; + + + /** + * Sets used presence attributes for subscription. + * + * Sets a new set of presence attributes to be used + * for subscription of the contact list. Sets also the + * contact list as subscribed contact list. -ActivateSubscriptionL() + * + * In order to subscrive all presence attributes known to the + * Presence Server, array should be left empty. + * + * To make new subscription active, contact list has to + * be updated to network with the contact list transaction + * manager + * + * @since 3.0 + * @param aAttributelist The attribute list to be used + * in subscription. + * @return ETrue if subscription settings were updated in any + * way and contact list needs to be Published/Synchronized + */ + virtual TBool SetSubscriptionAttributesL( + const MPEngAttributeList2& aAttributelist ) = 0; + + virtual TBool SetSubscriptionAttributesL( + const TArray& aAttributelist ) = 0; + + /** + * Activates subscription for the contact list + * + * Contact list is set as to be subscribed, set off attributes to + * be used for subscription is empty if not defined previously. + * + * Contact list is marked to update its subscription at next + * contact list update transaction + * + * @since 3.0 + * @return ETrue if subscription settings were updated in any + * way and contact list needs to be Published/Synchronized + */ + virtual TBool ActivateSubscriptionL() = 0; + + /** + * De Activates subscription for the contact list + * + * Contact list is set as NOT to be subscribed. + * + * Contact list is marked to update its subscription at next + * contact list update transaction + * + * @since 3.0 + * @return ETrue if subscription settings were updated in any + * way and contact list needs to be Published/Synchronized + */ + virtual TBool DeActivateSubscriptionL() = 0; + + public: // Base settings getters + + + /** + * Gets contact list base settings. + * + * Base settings are given when the contact list is + * first time created and those cannot be modified later. + * + * @since 3.0 + * @param Gets contact list base settings. + */ + virtual const TPEngContactListBaseSettings& BaseSettings() const = 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; + + private: //Extensions interfaces + + + /** + * Contact list properties extension interface. + * + * @since 3.0 + * @return Contact list properties extension. + */ + virtual MPEngContactListPropertiesExt* Extension() = 0; + virtual const MPEngContactListPropertiesExt* Extension() const = 0; + + + + + protected: //Destructor + + /** + * Inline virtual destructor. + * + * Concrete contact list property objects + * can't be destroyed using this interface. + */ + virtual ~MPEngContactListProperties() {}; + }; + + +#endif // __MPENGCONTACTLISTPROPERTIES_H + +// End of File +