williamr@4: /* williamr@4: * Copyright (c) 2005-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: VPbk store contact analyzer. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef TVPBKStORECONTACTANALYZER_H williamr@4: #define TVPBKStORECONTACTANALYZER_H williamr@4: williamr@4: // INCLUDES williamr@4: #include williamr@4: williamr@4: // VPbk includes williamr@4: #include williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: class CVPbkContactManager; williamr@4: class MVPbkStoreContact; williamr@4: class MVPbkContactFieldSelector; williamr@4: class MVPbkFieldTypeList; williamr@4: class MVPbkBaseContactFieldCollection; williamr@4: class MVPbkBaseContactField; williamr@4: class CVPbkFieldTypeSelector; williamr@4: class MVPbkFieldTypeSelector; williamr@4: class MVPbkFieldType; williamr@4: class TVPbkFieldTypeSelector; williamr@4: williamr@4: // CLASS DECLARATION williamr@4: williamr@4: /** williamr@4: * VPbk store contact analyzer. williamr@4: */ williamr@4: class TVPbkStoreContactAnalyzer williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Constructor. williamr@4: * williamr@4: * @param aContactManager Virtual Phonebook contact manager. williamr@4: * @param aContact Store contact. williamr@4: */ williamr@4: IMPORT_C TVPbkStoreContactAnalyzer( williamr@4: const CVPbkContactManager& aContactManager, williamr@4: const MVPbkStoreContact* aContact ); williamr@4: williamr@4: public: // Interface williamr@4: williamr@4: /** williamr@4: * Analyses if the contact has a field with type specified williamr@4: * in aFieldTypeSelector. williamr@4: * williamr@4: * @param aFieldTypeSelector Predefined field type selector. williamr@4: * @param aStartIndex Starts looking up the specified field from williamr@4: * this field index. williamr@4: * @param aContact The contact to analyze. If NULL the contact williamr@4: * got from the constructor is used. williamr@4: * @return Field index if contact has field specified in aResId, williamr@4: * otherwise KErrNotFound. williamr@4: */ williamr@4: IMPORT_C TInt HasFieldL( williamr@4: VPbkFieldTypeSelectorFactory::TVPbkFieldTypeSelector aFieldTypeSelector, williamr@4: TInt aStartIndex = 0, williamr@4: const MVPbkStoreContact* aContact = NULL ) const; williamr@4: williamr@4: /** williamr@4: * Analyses if the contact has a action type with type specified williamr@4: * in aActionTypeSelector. williamr@4: * williamr@4: * @param aActionTypeSelector Predefined contact action type selector. williamr@4: * @param aStartIndex Starts looking up the specified field from williamr@4: * this field index. williamr@4: * @param aContact The contact to analyze. If NULL the contact williamr@4: * got from the constructor is used. williamr@4: * @return Field index if contact has field specified in aResId, williamr@4: * otherwise KErrNotFound. williamr@4: */ williamr@4: IMPORT_C TInt HasFieldL( williamr@4: VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aActionTypeSelector, williamr@4: TInt aStartIndex = 0, williamr@4: const MVPbkStoreContact* aContact = NULL ) const; williamr@4: williamr@4: /** williamr@4: * Analyses if the contact supports field with type specified williamr@4: * in aFieldTypeSelector. williamr@4: * williamr@4: * @param aFieldTypeSelector Predefined field type selector. williamr@4: * @param aContact The contact to analyze. If NULL the williamr@4: * contact got from constructor is used. williamr@4: * @return ETrue if the field type is supported by the contact, williamr@4: * otherwise EFalse. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeSupportedL( williamr@4: VPbkFieldTypeSelectorFactory::TVPbkFieldTypeSelector aFieldTypeSelector, williamr@4: const MVPbkStoreContact* aContact = NULL ) const; williamr@4: williamr@4: /** williamr@4: * Analyses if the contact supports action types with type specified williamr@4: * in aActionTypeSelector. williamr@4: * williamr@4: * @param aActionTypeSelector Predefined contact action type selector. williamr@4: * @param aContact The contact to analyze. If NULL the williamr@4: * contact got from constructor is used. williamr@4: * @return ETrue if the action type is supported by the contact, williamr@4: * otherwise EFalse. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeSupportedL( williamr@4: VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aActionTypeSelector, williamr@4: const MVPbkStoreContact* aContact = NULL ) const; williamr@4: williamr@4: /** williamr@4: * Checks if the aFieldType is same as specified in aFieldTypeSelector. williamr@4: * Returns ETrue is same, otherwise EFalse. williamr@4: * williamr@4: * @param aFieldType The field type to check. williamr@4: * @param aFieldTypeSelector Predefined field type selector. williamr@4: * @return ETrue if the field type is included. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeIncludedL( williamr@4: const MVPbkFieldType& aFieldType, williamr@4: VPbkFieldTypeSelectorFactory::TVPbkFieldTypeSelector aFieldTypeSelector ) const; williamr@4: williamr@4: /** williamr@4: * Checks if the aFieldType is same as specified in aActionTypeSelector. williamr@4: * Returns ETrue is same, otherwise EFalse. williamr@4: * williamr@4: * @param aFieldType The field type to check. williamr@4: * @param aActionTypeSelector Predefined field type selector. williamr@4: * @return ETrue if the field type is included. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeIncludedL( williamr@4: const MVPbkFieldType& aFieldType, williamr@4: VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aActionTypeSelector ) const; williamr@4: williamr@4: /** williamr@4: * Checks if the aField's field type is same as specified in williamr@4: * aFieldTypeSelector. Returns ETrue is same, otherwise EFalse. williamr@4: * williamr@4: * @param aField The field whose type to check. williamr@4: * @param aFieldTypeSelector Selector's resource id. williamr@4: * @return ETrue if the field type is included. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeIncludedL( williamr@4: const MVPbkBaseContactField& aField, williamr@4: VPbkFieldTypeSelectorFactory::TVPbkFieldTypeSelector aFieldTypeSelector ) const; williamr@4: williamr@4: /** williamr@4: * Checks if the aField's field type is same as specified in williamr@4: * aActionTypeSelector. Returns ETrue is same, otherwise EFalse. williamr@4: * williamr@4: * @param aField The field whose type to check. williamr@4: * @param aActionTypeSelector Selector's resource id. williamr@4: * @return ETrue if the field type is included. williamr@4: */ williamr@4: IMPORT_C TBool IsFieldTypeIncludedL( williamr@4: const MVPbkBaseContactField& aField, williamr@4: VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aActionTypeSelector ) const; williamr@4: williamr@4: private: // Implementation williamr@4: TVPbkStoreContactAnalyzer(); williamr@4: williamr@4: private: // Data williamr@4: /// Ref: Virtual Phonebook contact manager williamr@4: const CVPbkContactManager& iContactManager; williamr@4: /// Ref: The contact to analyze williamr@4: const MVPbkStoreContact* iContact; williamr@4: }; williamr@4: williamr@4: #endif // TVPBKStORECONTACTANALYZER_H williamr@4: williamr@4: // End of File