diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/app/MVPbkContactAttributeManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/app/MVPbkContactAttributeManager.h Wed Mar 31 12:33:34 2010 +0100 @@ -0,0 +1,460 @@ +/* +* Copyright (c) 2002-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: Virtual Phonebook manager class for contact attributes. +* +*/ + + +#ifndef MVPBKCONTACTATTRIBUTEMANAGER_H +#define MVPBKCONTACTATTRIBUTEMANAGER_H + +// INCLUDE FILES +#include +#include + +// FORWARD DECLARATIONS +class MVPbkContactOperationBase; +class MVPbkContactLink; +class MVPbkContactFindObserver; +class MVPbkStoreContact; +class MVPbkStoreContactField; +class MVPbkContactAttribute; +class MVPbkStoreContactFieldCollection; + +/** + * Virtual Phonebook single attribute presense observer interface. + */ +class MVPbkSingleAttributePresenceObserver + { + public: + /** + * Attribute presence query operation completed. + * @param aOperation Contact operation that was completed. + * @param aResult Result of the query. + */ + virtual void AttributePresenceOperationComplete( + MVPbkContactOperationBase& aOperation, TBool aResult ) = 0; + + /** + * Attribute presence query operation failed. + * @param aOperation Contact operation that failed. + * @param aError Error code. + */ + virtual void AttributePresenceOperationFailed( + MVPbkContactOperationBase& aOperation, TInt aError) = 0; + + /** + * Returns an extension point for this interface or NULL. + * @param aExtensionUid Extension identifier. + * @return Extension object. + */ + virtual TAny* AttributeSinglePresenceOperationExtension( + TUid /*aExtensionUid*/) { return NULL; } + + protected: // Destructor + /** + * Destructor. + */ + virtual ~MVPbkSingleAttributePresenceObserver() { } + }; + +/** + * Virtual Phonebook multiple attribute presense observer interface. + */ +class MVPbkMultiAttributePresenceObserver + { + public: + /** + * Attribute presence query operation completed. + * @param aOperation Contact operation that was completed. + * @param aResult Fields with attribute aAttribute, + * or NULL if there is no fields with that + * attribute in this contact. + */ + virtual void AttributePresenceOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContactFieldCollection* aResult) = 0; + + /** + * Attribute presence query operation failed. + * @param aOperation Contact operation that failed. + * @param aError Error code. + */ + virtual void AttributePresenceOperationFailed( + MVPbkContactOperationBase& aOperation, TInt aError) = 0; + + /** + * Returns an extension point for this interface or NULL. + * @param aExtensionUid Extension identifier. + * @return Extension object. + */ + virtual TAny* AttributeMultiPresenceOperationExtension( + TUid /*aExtensionUid*/) { return NULL; } + + protected: // Destructor + /** + * Destructor. + */ + virtual ~MVPbkMultiAttributePresenceObserver() { } + }; + + +/** + * Virtual Phonebook Set attribute observer interface. + */ +class MVPbkSetAttributeObserver + { + public: + /** + * Attribute operation completed. + * @param aOperation Contact operation that was completed. + */ + virtual void AttributeOperationComplete( + MVPbkContactOperationBase& aOperation) = 0; + + /** + * Attribute operation failed. + * @param aOperation Contact operation that failed. + * @param aError Error code. + */ + virtual void AttributeOperationFailed( + MVPbkContactOperationBase& aOperation, TInt aError) = 0; + + /** + * Returns an extension point for this interface or NULL. + * @param aExtensionUid Extension identifier. + * @return Extension object. + */ + virtual TAny* SetAttributeObserverExtension( + TUid /*aExtensionUid*/) { return NULL; } + + protected: // Destructor + /** + * Destructor. + */ + ~MVPbkSetAttributeObserver() { } + }; + +/** + * Abstract interface for contact attribute manager. + * + * Contact attribute manager can be used to set global attributes such as speed dials + * for contacts or fields of contacts. The attributes can be stored in external + * databases so that some kind of mapping is maintained between contacts and + * attributes. This interface provides unified access to all global attributes. + */ +class MVPbkContactAttributeManager + { + public: + /** + * Destructor. + */ + virtual ~MVPbkContactAttributeManager() { } + + /** + * Lists all contacts having the requested type of + * attribute asynchronously. + * + * @param aAttributeType Type of the attribute to search for. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the process. + */ + virtual MVPbkContactOperationBase* ListContactsL( + TUid aAttributeType, + MVPbkContactFindObserver& aObserver) = 0; + + /** + * Lists all contacts matching the given attribute asynchronously. + * + * @param aAttribute Attribute prototype to match against. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the process. + */ + virtual MVPbkContactOperationBase* ListContactsL( + const MVPbkContactAttribute& aAttribute, + MVPbkContactFindObserver& aObserver) = 0; + + /** + * Checks if the given contact has the given attribute. + * + * @param aAttributeType Type of the attribute to check for. + * @param aContact Contact whose attributes are checked. + * @return ETrue if aContact has an attribute of aAttributeType, + * EFalse otherwise. + */ + virtual TBool HasContactAttributeL( + TUid aAttributeType, + const MVPbkStoreContact& aContact) const = 0; + + /** + * Checks if the given contact has an attribute matching the + * given attribute. + * + * @param aAttribute Attribute prototype to match against. + * @param aContact Contact whose attributes are checked. + * @return ETrue if aContact has an attribute matching the aAttribute, + * EFalse otherwise. + */ + virtual TBool HasContactAttributeL( + const MVPbkContactAttribute& aAttribute, + const MVPbkStoreContact& aContact) const = 0; + + /** + * Checks if the given contact field has the given attribute. + * + * @param aAttributeType Type of the attribute to check for. + * @param aField Field whose attributes are checked. + * @return ETrue if aField has an attribute of aAttributeType, + * EFalse otherwise. + */ + virtual TBool HasFieldAttributeL( + TUid aAttributeType, + const MVPbkStoreContactField& aField) const = 0; + + /** + * Checks if the given contact field has an attribute matching + * the given attribute. + * + * @param aAttribute Attribute prototype to match against. + * @param aField Contact field whose attribute is checked. + * @return ETrue if aField has an attribute matching the aAttribute, + * EFalse otherwise. + */ + virtual TBool HasFieldAttributeL( + const MVPbkContactAttribute& aAttribute, + const MVPbkStoreContactField& aField) const = 0; + + /** + * Returns fields with attribute type aAttributeType, or + * NULL if there is no fields with that attribute in this + * contact. + * + * @param aAttributeType Type of the attribute to find for. + * @param aContact Contact whose attributes are checked. + */ + virtual MVPbkStoreContactFieldCollection* FindFieldsWithAttributeLC( + TUid aAttributeType, + MVPbkStoreContact& aContact) const = 0; + + /** + * Returns fields with attribute aAttribute, or NULL if there is no + * fields with that attribute in this contact. + * + * @param aAttribute Attribute prototype to match against. + * @param aContact Contact whose attributes are checked. + */ + virtual MVPbkStoreContactFieldCollection* FindFieldsWithAttributeLC( + const MVPbkContactAttribute& aAttribute, + MVPbkStoreContact& aContact) const = 0; + + /** + * Finds the first field that has the aAttr and returns + * a reference to the field or NULL if not found. + * + * Note: the returned reference will become invalid if + * MVPbkStoreContactFieldCollection::FieldAt is called for + * different field. If this is a problem then use + * MVPbkStoreContactField::CloneLC for permanent copy of + * the field. + * + * @param aAttr The attribute that is looked for. + * @param aContact Contact whose fields are iterated. + * @return Returns a reference to the field or NULL if not found. + */ + virtual MVPbkStoreContactField* FindFieldWithAttributeL( + const MVPbkContactAttribute& aAttr, + MVPbkStoreContact& aContact) const = 0; + + /** + * Asynchronously sets the contact attribute for the contact referred + * by the given contact link. + * + * @param aContactLink Link to contact whose attribute to set. + * @param aAttribute Attribute to set for the contact. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* SetContactAttributeL( + const MVPbkContactLink& aContactLink, + const MVPbkContactAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver) = 0; + /** + * Asynchronously sets the contact field attribute for the + * give contact field. + * + * @param aField Contact field whose attribute to set. + * @param aAttribute Attribute to set for the contact field. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* SetFieldAttributeL( + MVPbkStoreContactField& aField, + const MVPbkContactAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver) = 0; + + /** + * asynchronously removes the given attribute from the contact + * referred by the aContactLink. + * + * @param aContactLink Link to the contact whose attribute + * to remove. + * @param aAttribute Attribute to remove from the contact. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* RemoveContactAttributeL( + const MVPbkContactLink& aContactLink, + const MVPbkContactAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver) = 0; + + /** + * asynchronously removes all attributes having the attribute + * type aAttributeType from the contact. + * + * @param aContactLink Link to the contact whose attribute + * to remove. + * @param aAttributeType Type of the attributes to remove + * from the contact. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* RemoveContactAttributeL( + const MVPbkContactLink& aContactLink, + TUid aAttributeType, + MVPbkSetAttributeObserver& aObserver) = 0; + + /** + * Asynchronously removes the given attribute from the + * given contact field. + * + * @param aField Field whose attribute to remove. + * @param aAttribute Attribute to remove from the contact field. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* RemoveFieldAttributeL( + MVPbkStoreContactField& aField, + const MVPbkContactAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver) = 0; + + /** + * Asynchronously removes all attributes having the attribute + * type aAttributeType from the contact field. + * + * @param aField Field whose attribute to remove. + * @param aAttributeType Type of the attributes to remove + * from the contact field. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* RemoveFieldAttributeL( + MVPbkStoreContactField& aField, + TUid aAttributeType, + MVPbkSetAttributeObserver& aObserver) = 0; + + /** + * Checks if the given contact has the given attribute asynchronously. + * + * @param aAttributeType Type of the attribute to check for. + * @param aContact Contact whose attributes are checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* HasContactAttributeL( + TUid aAttributeType, + const MVPbkStoreContact& aContact, + MVPbkSingleAttributePresenceObserver& aObserver) const = 0; + + /** + * Checks if the given contact has an attribute matching the + * given attribute asynchronously. + * + * @param aAttribute Attribute prototype to match against. + * @param aContact Contact whose attributes are checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* HasContactAttributeL( + const MVPbkContactAttribute& aAttribute, + const MVPbkStoreContact& aContact, + MVPbkSingleAttributePresenceObserver& aObserver) const = 0; + + /** + * Checks if the given contact field has the given attribute + * asynchronously. + * + * @param aAttributeType Type of the attribute to check for. + * @param aField Field whose attributes are checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* HasFieldAttributeL( + TUid aAttributeType, + const MVPbkStoreContactField& aField, + MVPbkSingleAttributePresenceObserver& aObserver) const = 0; + + /** + * Checks if the given contact field has an attribute matching + * the given attribute asynchronously. + * + * @param aAttribute Attribute prototype to match against. + * @param aField Contact field whose attribute is checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* HasFieldAttributeL( + const MVPbkContactAttribute& aAttribute, + const MVPbkStoreContactField& aField, + MVPbkSingleAttributePresenceObserver& aObserver) const = 0; + + /** + * Initiates an asynchronous operation, which finds the aAttribute type + * attributed fields from the contact. + * + * @param aAttributeType Type of the attribute to find for. + * @param aContact Contact whose attributes are checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* FindFieldsWithAttributeL( + TUid aAttributeType, + MVPbkStoreContact& aContact, + MVPbkMultiAttributePresenceObserver& aObserver) const = 0; + + /** + * Initiates an asynchronous operation, which finds the aAttribute type + * attributed fields from the contact. + * + * @param aAttribute Attribute prototype to match against. + * @param aContact Contact whose attributes are checked. + * @param aObserver Observer for the asynchronous process. + * @return Newly created handle to the operation. + */ + virtual MVPbkContactOperationBase* FindFieldsWithAttributeL( + const MVPbkContactAttribute& aAttribute, + MVPbkStoreContact& aContact, + MVPbkMultiAttributePresenceObserver& aObserver) const = 0; + + /** + * Returns an extension point for this interface or NULL. + * @param aExtensionUid Extension identifier. + * @return Extension point or NULL + */ + virtual TAny* ContactAttributeManagerExtension( + TUid /*aExtensionUid*/) { return NULL; } + }; + +#endif // MVPBKCONTACTATTRIBUTEMANAGER_H + +// End of File