diff -r 5b6f26637ad3 -r f4a778e096c2 phonebookui/Phonebook2/inc/CPbk2PresentationContactFieldCollection.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/inc/CPbk2PresentationContactFieldCollection.h Wed Sep 01 12:29:52 2010 +0100 @@ -0,0 +1,196 @@ +/* +* Copyright (c) 2005-2007 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: Phonebook 2 presentation level contact field collection. +* +*/ + + + +#ifndef CPBK2PRESENTATIONCONTACTFIELDCOLLECTION_H +#define CPBK2PRESENTATIONCONTACTFIELDCOLLECTION_H + +// INCLUDES +#include +#include + +// FORWARD DECLARATIONS +class CPbk2PresentationContactField; +class MPbk2FieldPropertyArray; +class MPbk2FieldProperty; +class CPbk2FieldPropertyGroup; +class MVPbkStoreContactField; + +// CLASS DECLARATION + +/** + * Phonebook 2 presentation level contact field collection. + */ +class CPbk2PresentationContactFieldCollection : public CBase, + public MVPbkStoreContactFieldCollection + { + public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @param aFieldProperties An array of field properties. + * @param aFieldCollection A collection of store fields. + * @param aParentContact The contact that owns this collection. + * @return A new instance of this class. + */ + IMPORT_C static CPbk2PresentationContactFieldCollection* NewL( + const MPbk2FieldPropertyArray& aFieldProperties, + MVPbkStoreContactFieldCollection& aFieldCollection, + MVPbkStoreContact& aParentContact ); + + /** + * Destructor. + */ + virtual ~CPbk2PresentationContactFieldCollection(); + + public: // Interface + + /** + * Returns the presentation level field. + * + * @param aIndex The index of the field in the array. + * @return Presentation level field. + */ + IMPORT_C CPbk2PresentationContactField& At( + TInt aIndex ) const; + + /** + * Checks if there is a field with given property in the collection. + * + * @param aProperty The property to search for. + * @return The index of the field or KErrNotFound. + */ + IMPORT_C TInt ContainsField( + const MPbk2FieldProperty& aProperty ) const; + + /** + * Checks if the collection contains a field from the group of + * properties. + * + * @param aPropertyGroup A group of field properties. + * @return ETrue if the collection has at least one field + * with the property in the group. + */ + IMPORT_C TBool ContainsFieldFromGroup( + const CPbk2FieldPropertyGroup& aPropertyGroup ) const; + + /** + * Returns the index of the given field or + * KErrNotFound if not found. + * + * @param aField The field that is searched for. + * @return The index of the field in this collection. + */ + IMPORT_C TInt FindFieldIndex( + const MVPbkStoreContactField& aField ) const; + + /** + * Gets the index of the field in the store contact. + * + * @param aFieldIndex The index of the field in this collection. + * @return The index of the field in the + * store contact field collection. + */ + IMPORT_C TInt StoreIndexOfField( + TInt aFieldIndex ) const; + + /** + * get index if field by store field index + * + * @param aStoreFieldIndex, a store field's index + * @return the index of the field. + */ + IMPORT_C TInt FieldIndexOfStoreField( TInt aStoreFieldIndex ) const; + + /** + * Returns the field properties. + * + * @return Field properties. + */ + inline const MPbk2FieldPropertyArray& FieldProperties() const; + + /** + * Adds a new field mapping. The field must belong to + * the same contact as this field collection. + * + * @param aField A new store contact field for the mapping. + * @param aName A new store contact field property name for the mapping. + */ + void AddFieldMappingL(const MVPbkStoreContactField& aField, + const TDesC& aName); + + /** + * Deletes the field mapping from the given index. + * + * @param aIndex The index from where to remove mapping. + */ + void RemoveFieldMapping( + TInt aIndex ); + + /** + * Destroys all the field mappings. + */ + void ResetFieldMappings(); + + public: // From MVPbkStoreContactFieldCollection + MVPbkBaseContact& ParentContact() const; + TInt FieldCount() const; + const MVPbkStoreContactField& FieldAt( + TInt aIndex ) const; + MVPbkStoreContactField& FieldAt( + TInt aIndex ); + MVPbkStoreContactField* FieldAtLC( + TInt aIndex ) const; + MVPbkStoreContact& ParentStoreContact() const; + MVPbkStoreContactField* RetrieveField( + const MVPbkContactLink& aContactLink ) const; + + private: // Implementation + CPbk2PresentationContactFieldCollection( + const MPbk2FieldPropertyArray& aFieldProperties, + MVPbkStoreContactFieldCollection& aFieldCollection, + MVPbkStoreContact& aParentContact ); + void ConstructL(); + + private: // Data + /// Ref: An array of field properties + const MPbk2FieldPropertyArray& iFieldProperties; + /// Ref: A collection of store fields + MVPbkStoreContactFieldCollection& iFieldCollection; + /// Ref: The parent contact of the collection + MVPbkStoreContact& iParentContact; + /// Own: Phonebook 2 presentation contact fields + RPointerArray iFields; + }; + +// INLINE IMPLEMENTATION + +// -------------------------------------------------------------------------- +// CPbk2PresentationContactFieldCollection::FieldProperties +// -------------------------------------------------------------------------- +// +inline const MPbk2FieldPropertyArray& + CPbk2PresentationContactFieldCollection::FieldProperties() const + { + return iFieldProperties; + } + +#endif // CPBK2PRESENTATIONCONTACTFIELDCOLLECTION_H + +// End of File