diff -r 6ca72c0fe49a -r a941bc465d9f inc/ImpsGroupProps.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/ImpsGroupProps.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,459 @@ +/* +* Copyright (c) 2002 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: +* WV group properties. +* WV CSP 1.1 recommends some properties and the classes here provide support +* for them. Additionally is is possible to create and read extra properties +* not mentioned in CSP 1.1. +* Because of any of the predefined properties may be missing, we use +* the value -1 to denote undefined value. +* +* Notice that the mutators do not change the values immediately in a remote +* service, but only after the properties have been assigned to the service +* through SetGroupPropertiesL method in RImpsGroupClient interface. +* +* +*/ + + +#ifndef CImpsGroupProps_H +#define CImpsGroupProps_H + +// INCLUDES +#include + +// Values for user types +enum TImpsGroupUsers + { + EImpsUserUndef = 0, + EImpsAdmin, + EImpsModerator, + EImpsOrdinary + }; + +// Property set type +enum TImpsPropertyType + { + EImpsPropPrivate = 1, + EImpsPropCommon + }; + +// Property values +enum TImpsPropertyBool + { + EImpsPropUndef = -1, // undefined + EImpsPropNo = 0, // false, no, ... + EImpsPropYes = 1 // true, yes + }; + + +// CLASS DECLARATION + +/** +* CImpsGroupProp +* +* A single property. used for external properties not mentioned in CSP. +* +*/ + +class CImpsGroupProp :public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aKey property key + * @param aValue property value + */ + IMPORT_C static CImpsGroupProp* NewL( + const TDesC& aKey, + const TDesC& aValue ); + + /** + * Destructor. + */ + virtual ~CImpsGroupProp(); + + public: // New functions + + /** + * Key accessor + * @return key + */ + IMPORT_C TPtrC Key() const; + + /** + * Value accessor + * @return value + */ + IMPORT_C TPtrC Value() const; + + protected: + + + /** + * C++ constructor. + */ + CImpsGroupProp( ); + + private: + + /** + * Actual construction. + * @param aKey property key + * @param aValue property value + */ + void ConstructL( + const TDesC& aKey, + const TDesC& aValue ); + + public: // Data + + TDblQueLink iLink; + + private: // Data + + HBufC* iKey; + HBufC* iValue; + + public: // Friend classes + + friend class CImpsGroupProps; + + }; + +/** +* CImpsGroupProps +* +* WV Group properties base class. +*/ +class CImpsGroupProps :public CBase + { + public: // Constructors and destructor + + /** + * Destructor. + */ + IMPORT_C virtual ~CImpsGroupProps(); + + /** + * Initialize member data + */ + IMPORT_C virtual void Reset() = 0; + + /** + * Returns the type of the properties + */ + IMPORT_C virtual TImpsPropertyType Type() const = 0; + + public: // New functions + + /** + * Get current number of extra properties + */ + IMPORT_C TInt Count(); + + /** + * Add new extra property + * @param aProperty new property. + * The data is copied to internal structures. + */ + IMPORT_C void AddL( const CImpsGroupProp& aProperty ); + + /** + * Access first extra property + * Leaves with KErrEof if no data + * @return first property + */ + IMPORT_C const CImpsGroupProp& FirstL(); + + /** + * Access next property + * Leaves with KErrEof if no data + * @return next property + */ + IMPORT_C const CImpsGroupProp& NextL(); + + protected: + + /** + * C++ constructor + */ + IMPORT_C CImpsGroupProps(); + + /** + * Is private messages allowed + * @return EImpsPropYes if allowed + */ + TImpsPropertyBool IsPrivateAllowed() const; + + /** + * Mutator for private messaging flag + * @param aValue EImpsPropYes if private messaging allowed + */ + void SetPrivateAllowed( TImpsPropertyBool aValue ); + + private: + + /** + * Actual construction. + */ + void ConstructL(); + + private: + TBool iReset; // Is reset called + + public: // Data + // Linked list for extra properties + TDblQue iPropertyList; + + // Pointer to the current value + TDblQueIter iIter; + + protected: // Data + TImpsPropertyBool iPrivateMessages; // private messaging allowed + + }; + +class CImpsPrivateGroupProps :public CImpsGroupProps + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CImpsPrivateGroupProps* NewL(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CImpsPrivateGroupProps(); + + /** + * Initialize member data + */ + IMPORT_C void Reset(); + + /** + * Returns the type of the properties + */ + IMPORT_C virtual TImpsPropertyType Type() const; + + /** + * Is private messages allowed + * @return EImpsPropYes if allowed + */ + IMPORT_C TImpsPropertyBool IsPrivateAllowed() const; + + /** + * Mutator for private messaging flag + * @param aValue EImpsPropYes if private messaging allowed + */ + IMPORT_C void SetPrivateAllowed( TImpsPropertyBool aValue ); + + /** + * Is the user a member + * @return EImpsPropYes if user is a member + */ + IMPORT_C TImpsPropertyBool IsMember() const; + + /** + * Privilege accessor + * @return user privileges (role) in the group + */ + IMPORT_C TImpsGroupUsers Privileges() const; + + + + + protected: + /** + * C++ constructor. + */ + IMPORT_C CImpsPrivateGroupProps(); + + /** + * Actual construction + */ + void ConstructL(); + + protected: + + TImpsPropertyBool iMember; // Am i member + TImpsGroupUsers iPrivilege; // privilege level + + }; + + +class CImpsCommonGroupProps :public CImpsGroupProps + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CImpsCommonGroupProps* NewL(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CImpsCommonGroupProps(); + + /** + * Initialize member data + */ + IMPORT_C void Reset(); + + /** + * Returns the type of the properties + */ + IMPORT_C virtual TImpsPropertyType Type() const; + + /** + * Is private messages allowed + * @return EImpsPropYes if allowed + */ + IMPORT_C TImpsPropertyBool IsPrivateAllowed() const; + + /** + * Mutator for private messaging flag + * @param aValue EImpsPropYes if private messaging allowed + */ + IMPORT_C void SetPrivateAllowed( TImpsPropertyBool aValue ); + + /** + * Is group open or closed + * @return EImpsPropYes if open + */ + IMPORT_C TImpsPropertyBool IsOpen() const; + + /** + * Access type mutator + * @param aType EImpsPropYes if open + */ + IMPORT_C void SetOpen( TImpsPropertyBool aType ); + + /** + * Is group public or private + * @return EImpsPropYes if public + */ + IMPORT_C TImpsPropertyBool IsPublic() const; + + /** + * Is group searchable + * @return EImpsPropYes if searchable + */ + IMPORT_C TImpsPropertyBool IsSearchable() const; + + /** + * Access type mutator + * @param aType EImpsPropYes if searchable + */ + IMPORT_C void SetSearchable( TImpsPropertyBool aType ); + + /** + * Number of current joined active users + * @return number of users, -1 if not specified + */ + IMPORT_C TInt NbrOfUsers() const; + + /** + * Maximum number of active users + * @return number of users, -1 if not specified + */ + IMPORT_C TInt MaxNbrOfUsers() const; + + /** + * Mutator for maximum number of users + * @param aNbr new maximum number of users. -1 means undefined + */ + IMPORT_C void SetMaxNbrOfUsers( TInt aNbr ); + + /** + * Name of the group + * @return name of the group + */ + IMPORT_C TPtrC GroupName() const; + + /** + * Group name mutator + * @param aName new grop name + */ + IMPORT_C void SetGroupNameL( const TDesC& aName ); + + /** + * Topic of the group + * @return name of the group + */ + IMPORT_C TPtrC Topic() const; + + /** + * Topic mutator + * @param aTopic new grop topic description + */ + IMPORT_C void SetTopicL( const TDesC& aTopic ); + + /** + * Welcome text of the group + * @return text + */ + IMPORT_C TPtrC Welcome() const; + + /** + * Topic mutator + * @param aText new group wellcome test + */ + IMPORT_C void SetWelcomeL( const TDesC& aText ); + + /** + * AutoDelete for CSP 1.2 + * @return EImpsPropYes if used + */ + IMPORT_C TImpsPropertyBool AutoDelete() const; + + /** + * Mutator for auto delete flag in CSP 1.2 + * @param aValue EImpsPropYes if used + */ + IMPORT_C void SetAutoDelete( TImpsPropertyBool aValue ); + + + protected: + /** + * C++ constructor + */ + IMPORT_C CImpsCommonGroupProps(); + + private: + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + + protected: + + TImpsPropertyBool iAccessOpen; // access type open/closed + TImpsPropertyBool iTypePublic; // type public/private + TImpsPropertyBool iSearchable; // is searchable + TInt iNbrActive; // nbr of active users + TInt iMaxUsers; // max nbr of users + HBufC* iName; // name + HBufC* iTopic; + HBufC* iWelcome; // welcome note + TImpsPropertyBool iAutoDelete; // auto delete for CSP 1.2 + }; + + +#endif +