/*
* Copyright (c) 2006 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: Resolves contact fields.
*
*/
#ifndef CPHCNTCONTACTFIELDSRESOLVER_H
#define CPHCNTCONTACTFIELDSRESOLVER_H
#include <e32base.h>
#include "tphcntcontactfield.h"
#include "mphcntmatch.h"
#include "mphcntcontactfields.h"
class MVPbkContactLink;
class MVPbkStoreContact;
class MPbk2ContactNameFormatter;
class MVPbkStoreContactField;
class MPhCntContactManager;
/**
* Resolves contact's fields.
*
* @lib PhoneCntFinder
* @since S60 ?S60_version *** for example, S60 v3.0
*/
NONSHARABLE_CLASS( CPhCntContactFieldsResolver ) :
public CBase, public MPhCntContactFields
{
public:
/**
* Static constructor.
*
* @since S60 v3.1
* @param aContactLink Link pointing to the contact, which fields are resolved.
* @param aContact Contact which fields are resolved.
* @param aNameFormatter Contact title formatter.
* @return New instance
*/
static CPhCntContactFieldsResolver* NewL(
MVPbkContactLink* aContactLink,
MVPbkStoreContact* aContact,
MPhCntContactManager& aContactManager );
/**
* Static constructor.
*
* @since S60 v3.1
* @param aContactLink Link pointing to the contact, which fields are resolved.
* @param aContact Contact which fields are resolved.
* @param aNameFormatter Contact title formatter.
* @return New instance
*/
static CPhCntContactFieldsResolver* NewLC(
MVPbkContactLink* aContactLink,
MVPbkStoreContact* aContact,
MPhCntContactManager& aContactManager );
/**
* Destructor.
*/
virtual ~CPhCntContactFieldsResolver();
// from base class MPhCntContactFields
/**
* From base class MPhCntContactFields
* Get the number type.
* @since S60 v3.1
* @return Phonebook number type.
*/
MPhCntMatch::TNumberType NumberType() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Contact link, ownership is not given.
*/
MVPbkContactLink* ContactLink() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return First name. Empty if there isn't one specified.
*/
TPtrC FirstName() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Last name. Empty if there isn't one specified.
*/
TPtrC LastName() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Company name. Empty if there isn't one specified.
*/
TPtrC CompanyName() const;
/**
* From base class MPhCntContactFields
* Returns the matched number.
* @since S60 v3.1
* @return Phone number. Empty if there isn't one specified.
*/
TPtrC Number() const;
/**
* From base class MPhCntContactFields
*
* @since S60 v3.2
* @see MPhCntContactFields
*/
TPtrC Dtmf() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Ringing tone. Empty if there isn't one specified.
*/
TPtrC PersonalRingingTone() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Second name. Empty if there isn't one specified.
*/
TPtrC SecondName() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return First name's pronunction. May be zero length.
*/
TPtrC FirstNamePronunciation() const;
/**
* From base class MPhCntContactFields
* Last name pronunciation.
*
* @since S60 v3.1
* @return Last name's pronunction. May be zero length.
*/
TPtrC LastNamePronunciation() const;
/**
* From base class MPhCntContactFields
* Company name pronunciation.
*
* @since S60 v3.1
* @return Company name's pronunction. May be zero length.
*/
TPtrC CompanyNamePronunciation() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Contact title. Ownership given.
*/
HBufC* GetContactTitleL();
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Array of contact links to groups, where this contact belongs
*/
MVPbkContactLinkArray* ContactGroupsLC() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Contact store, where this contacts information is stored.
*/
MVPbkStoreContact& StoreContact() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Thumbnail field. Null if no thumbnail field defined.
*/
const MVPbkFieldType* ThumbnailField() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Call image. Empty if there isn't one specified.
*/
TPtrC CallImage() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return Call text. Empty if there isn't one specified.
*/
TPtrC CallText() const;
/**
* From base class MPhCntContactFields
* @since S60 v3.1
* @return ETrue if contact has thumbnail field.
*/
TBool HasThumbnail() const;
/**
* From base class MPhCntContactFields
*
* @since S60 v3.2.
* @return Array of phone numbers.
*/
const RArray<TPhCntNumber>& AllNumbers() const;
/**
* From base class MPhCntContactFields
*
* @since S60 v3.2.
* @return Array of predefined DTMF strings.
*/
CDesCArray* AllDtmfNumbers() const;
private:
CPhCntContactFieldsResolver(
MVPbkContactLink* aContactLink,
MVPbkStoreContact* aContact,
MPhCntContactManager& aContactManager );
void ConstructL();
void ResolveFieldL(
MVPbkStoreContactField& aContactField,
TBool aFieldPointedByContactLink );
void ResolveFieldDataL(
MVPbkStoreContactField& aContactField,
const TPtrC aFieldTextData,
TBool aFieldPointedByContactLink );
private: // data
/**
* Resolvers for single fields
*/
TPhCntPhoneNumber iPhoneNumberResolver;
TPhCntContactField iFirstNameResolver;
TPhCntContactField iLastNameResolver;
TPhCntContactField iCompanyNameResolver;
TPhCntContactField iSecondNameResolver;
TPhCntContactField iRingingToneResolver;
TPhCntContactField iFirstNamePronunciationResolver;
TPhCntContactField iLastNamePronunciationResolver;
TPhCntContactField iCompanyNamePronunciationResolver;
TPhCntContactField iCallImageResolver;
TPhCntContactField iCallTextResolver;
TPhCntContactField iDtmfResolver;
/**
* Link to the contact.
* Own.
*/
MVPbkContactLink* iContactLink;
/**
* Contact
* Own.
*/
MVPbkStoreContact* iContact;
/**
* Handle to virtual phonebook.
* Not Own.
*/
MPhCntContactManager& iContactManager;
/**
* Contact title formatter.
* Not own.
*/
MPbk2ContactNameFormatter& iNameFormatter;
/**
* Thumbnails field, if any
* Not own.
*/
const MVPbkFieldType* iThumbnailField;
/**
* All DTMF numbers in array. Owned.
*/
CDesCArray* iAllDtmfNumbers;
};
#endif // CPHCNTCONTACTFIELDSRESOLVER_H