diff -r 6ca72c0fe49a -r a941bc465d9f PECengine/ListLibrary2/AttrListSrc/CPEngAttributeListItem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/AttrListSrc/CPEngAttributeListItem.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,389 @@ +/* +* Copyright (c) 2005 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: Container of one attribute list item. +* +*/ + +#ifndef __CPENGATTRIBUTELISTITEM_H__ +#define __CPENGATTRIBUTELISTITEM_H__ + +// INCLUDES +#include +#include + + +// FORWARD DECLARATIONS +class RWriteStream; +class RReadStream; + + +// CLASS DECLARATION + +/** + * Container of the one attribute list item + * + * It includes: + * - lists of presence attributes. + * - list of contacts (contact lists, contact ids), + * - list of new and to delete contacts + * - flag of default lists, for current state and future + * + * @lib PEngListLib2 + * @since 3.0 + */ +NONSHARABLE_CLASS ( CPEngAttributeListItem ) : public CBase + { +public: // Enumerations + + /** + * Enumeration to access contact of the attribute list. + * Need to be in order, first new, then currect of each kind + * + * @since 3.0 + */ + enum TPEngAttrListItemArrays + { + ENewContactLists = 0, + ECurrentContactLists = 1, + ENewContactIDs = 2, + ECurrentContactIDs = 3 + }; + +public: + + /** + * Two-phased constructor. + */ + static CPEngAttributeListItem* NewL( RReadStream& aStream ); + static CPEngAttributeListItem* NewLC( RReadStream& aStream ); + + /** + * Two-phased constructor. + */ + static CPEngAttributeListItem* NewL( + const RArray& aAttributes ); + static CPEngAttributeListItem* NewLC( + const RArray& aAttributes ); + + /** + * Two-phased copy constructor. + */ + static CPEngAttributeListItem* NewL( + const CPEngAttributeListItem& aAttributeList ); + + /** + * Destructor. + */ + ~CPEngAttributeListItem(); + + + +public: // Functions of base class + + /** + * Add contact to the defined Contacts array + * + * @since 3.0 + * @param aContact contact to be added to the new contact lists + * @param aArray array to be used for the operation + * @return KErrNone of OK, otherwise system wide error code + */ + TInt AddContactToListL( const TDesC& aContact, + TPEngAttrListItemArrays aArray ); + + + /** + * Delete contact from contact array + * + * @since 3.0 + * @param aContact contact to be deleted from the new contact lists + * @param aArray array to be used for the operation + * @return KErrNone of OK, otherwise system wide error code + */ + TInt DeleteContactFromList( const TDesC& aContact, + TPEngAttrListItemArrays aArray ); + + + /** + * Return array of contact based on the passed enumeration + * + * @since 3.0 + * @param aArray array to get + * @return des array of contacts + */ + const CDesCArray& ArrayOfContacts( + TPEngAttrListItemArrays aArray ) const; + + + /** + * Return array of Presence attributes of the attribute list + * + * @since 3.0 + * @return presence attributes of the attribute list + */ + const RArray& PresenceAttributes() const; + + + /** + * Update set of presence attribute of the attribute list + * + * @since 3.0 + * @param aNewPresenceAttributes new presence attributes + */ + void UpdatePresenceAttributesL( + const RArray& aNewPresenceAttributes ); + + + /** + * Commit contact list in the attribute list + * + * @since 3.0 + * @param aContact contact list to be commited + */ + void CommitContactListL( const TDesC& aContact ); + + + /** + * Commit contact id in the attribute list + * + * @since 3.0 + * @param aContact contact ID to be commited + */ + void CommitContactIdL( const TDesC& aContact ); + + + /** + * Return if attribute list is currently default + * + * @since 3.0 + * @return ETrue if attribute list is set as current default + */ + TBool CurrentlyDefault() const; + + + /** + * Return if attribute list is new default + * + * @since 3.0 + * @return ETrue if attribute list is set as new default + */ + TBool NewDefault() const; + + + /** + * Set new default value to the attribute list + * + * @since 3.0 + * @param aNewDefault new default value + * @return contacts count + */ + TInt SetNewDefault( TBool aNewDefault ); + + + /** + * Commit default attribute list settings + * + * @since 3.0 + */ + void CommitDefault(); + + + /** + * Returns sync state of the attribute list + * + * @since 3.0 + * @return Sync state + */ + TBool Synchronized() const; + + + /** + * Returns sync state of the attribute list + * + * @since 3.0 + * @param aSync new sync state + */ + void SetSynchronization( TBool aSync ); + + + /** + * Externalize attribute list to the stream + * + * @since 3.0 + * @param aStream stream to externalize to + */ + void ExternalizeL( RWriteStream& aStream ); + + + /** + * Internalize attribute list from the stream + * + * @since 3.0 + * @param stream to internalize from + */ + void InternalizeL( RReadStream& aStream ); + + + /** + * Get size of the entry of the attribute list + * + * @since 3.0 + * @return size of the attribute list entry for storing + */ + TInt SizeOfEntry() const; + + + /** + * Get count of all contacts of the attributelist + * + * @since 3.0 + * @return contacts count + */ + TInt ContactsCount() const; + + + +private: // Function of the base class + + /** + * Get desired array + * + * @since 3.0 + * @param aArray enumeration of array + * @return reference to the array + */ + CDesCArray& Array( TPEngAttrListItemArrays aArray ); + + + /** + * Commit contact id in the attribute list + * + * @since 3.0 + * @param aCurrentArray array of current IDs + * @param aNewArray array of new IDs + * @param aContact contact ID to be commited + */ + void CommitContactL( CDesCArray& aCurrentArray, + CDesCArray& aNewArray, + const TDesC& aContact ); + + + /** + * Delete item from the Des Array + * + * @since 3.0 + * @param aArray array to be deleted from + * @param aItem item to be deleted from array + * @return KErrNone if it went fine + */ + TInt DeleteItemFromArray( CDesCArray& aArray, + const TDesC& aItem ); + + + /** + * Copy des array + * + * @since 3.0 + * @param aArrayTarget targer array + * @param aArraySource source array + */ + static void CopyDesArrayL( CDesCArray& aArrayTarget, + const CDesCArray& aArraySource ); + + /** + * Copy TInt array + * + * @since 3.0 + * @param aArrayTarget targer array + * @param aArraySource source array + */ + static void CopyTIntArrayL( RArray& aArrayTarget, + const RArray& aArraySource ); + + + /** + * Externalize des array to the stream + * + * @since 3.0 + * @param aArray array to be externalized + * @param aStream stream to externalize to + */ + static void ExternalizeDesArrayToStreamL( CDesCArray& aArray, + RWriteStream& aStream ); + + /** + * Internalize des array from stream + * + * @since 3.0 + * @param aArray array to be internlized + * @param aStream stream to internalized from + */ + static TInt InternalizeDesArrayFromStreamL( CDesCArray& aArray, + RReadStream& aStream ); + + +private: // constructors + + /** + * Symbian constructor. + */ + void ConstructL( const RArray& aAttributes ); + + /** + * Symbian constructor. + */ + void ConstructL( + const CPEngAttributeListItem& aAttributeList ); + + /** + * C++ constructor. + */ + CPEngAttributeListItem(); + + +private: // Data + + /// OWN: Attribute list is currently default + TBool iCurrentlyDefault; + + /// OWN: Attribute list is to be set as default + TBool iNewDefault; + + /// OWN: Attribute list has been already synchronized + TBool iSynchronized; + + /// OWN: List of attributes of the Attribute list + RArray iListOfAttributes; + + /// OWN: List of contacts lists attached to attribute list + CDesCArraySeg iListOfContactLists; + + /// OWN: List of new contacts lists to be attached to attribute list + CDesCArrayFlat iListOfNewContactLists; + + /// OWN: List of contacts attached to attribute list + CDesCArraySeg iListOfContactIDs; + + /// OWN: List of new contacts to be attached to attribute list + CDesCArrayFlat iListOfNewContactIDs; + + /// OWN: Store size + TInt iSizeOfEntry; + + }; + +#endif // __CPENGATTRIBUTELISTITEM_H__ + +// End of File +