phonebookui/Phonebook2/inc/CPbk2PresentationContactFieldCollection.h
branchRCL_3
changeset 20 f4a778e096c2
--- /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 <e32base.h>
+#include <MVPbkStoreContactFieldCollection.h>
+
+// 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<CPbk2PresentationContactField> iFields;
+    };
+
+// INLINE IMPLEMENTATION
+
+// --------------------------------------------------------------------------
+// CPbk2PresentationContactFieldCollection::FieldProperties
+// --------------------------------------------------------------------------
+//
+inline const MPbk2FieldPropertyArray&
+        CPbk2PresentationContactFieldCollection::FieldProperties() const
+    {
+    return iFieldProperties;
+    }
+
+#endif // CPBK2PRESENTATIONCONTACTFIELDCOLLECTION_H
+
+// End of File