williamr@4: /* williamr@4: * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: Virtual Phonebook base interface for contact fields. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef MVPBKBASECONTACTFIELD_H williamr@4: #define MVPBKBASECONTACTFIELD_H williamr@4: williamr@4: // INCLUDES williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: class MVPbkBaseContact; williamr@4: class MVPbkFieldType; williamr@4: class MVPbkFieldTypeList; williamr@4: class MVPbkContactFieldData; williamr@4: williamr@4: // CLASS DECLARATIONS williamr@4: williamr@4: /** williamr@4: * Virtual Phonebook Base contact field interface. williamr@4: * An abstract interface Virtual Phonebook read-only contact fields. williamr@4: */ williamr@4: class MVPbkBaseContactField williamr@4: { williamr@4: public: // Destructor williamr@4: /** williamr@4: * Destructor. williamr@4: */ williamr@4: virtual ~MVPbkBaseContactField() { } williamr@4: williamr@4: public: // Interface williamr@4: /** williamr@4: * Returns the parent contact where this field is from. williamr@4: * williamr@4: * @return The parent contact where this field is from. williamr@4: */ williamr@4: virtual MVPbkBaseContact& ParentContact() const = 0; williamr@4: williamr@4: /** williamr@4: * Returns this field's type or NULL if no mapping exists williamr@4: * between the native type and virtual phonebook type. williamr@4: * williamr@4: * @param aMatchPriority matching priority to use. williamr@4: * @return The field type or NULL williamr@4: * @postcond !FieldType(list) || list.ContainsSame(*FieldType(list)) williamr@4: */ williamr@4: virtual const MVPbkFieldType* MatchFieldType( williamr@4: TInt aMatchPriority) const =0; williamr@4: williamr@4: /** williamr@4: * Returns the best matching type of the field or NULL williamr@4: * if no mapping exists between the native type and williamr@4: * virtual phonebook type. This is the same as looping williamr@4: * MatchFieldType from priority 0 and getting the first williamr@4: * matched type. williamr@4: * williamr@4: * @return The field type or NULL williamr@4: * @postcond !FieldType(list) || list.ContainsSame(*FieldType(list)) williamr@4: */ williamr@4: virtual const MVPbkFieldType* BestMatchingFieldType() const = 0; williamr@4: williamr@4: /** williamr@4: * Returns this field's data storage (read-only). The actual williamr@4: * data type can be get using the static Cast functions in actual williamr@4: * classes. williamr@4: * williamr@4: * @see MVPbkContactFieldTextData williamr@4: * @see MVPbkContactFieldBinaryData williamr@4: * @see MVPbkContactFieldDateTimeData williamr@4: * @return This field's data storage (read-only). williamr@4: */ williamr@4: virtual const MVPbkContactFieldData& FieldData() const = 0; williamr@4: williamr@4: /** williamr@4: * Returns true if this field is the same as another field in the williamr@4: * contact instance. williamr@4: * Doesn't work for fields from different contact instances. williamr@4: * Always use this method instead of direct pointer comparison. williamr@4: * williamr@4: * @param aOther another field inside the contact williamr@4: * @return ETrue if contact is same williamr@4: */ williamr@4: virtual TBool IsSame(const MVPbkBaseContactField& aOther) const = 0; williamr@4: williamr@4: /** williamr@4: * Returns an extension point for this interface or NULL. williamr@4: * @param aExtensionUid Uid of extension williamr@4: * @return Extension point or NULL williamr@4: */ williamr@4: virtual TAny* BaseContactFieldExtension( williamr@4: TUid /*aExtensionUid*/) { return NULL; } williamr@4: williamr@4: }; williamr@4: williamr@4: #endif // MVPBKBASECONTACTFIELD_H williamr@4: williamr@4: // End of file