/*
* Copyright (c) 2002-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:  Abstact match result. 
*
*/


#ifndef MPHCNTMATCH_H
#define MPHCNTMATCH_H

//  INCLUDES
#include <cntdef.h>     // TContactItemId
#include <badesca.h>

class MVPbkContactLink;
class CPhCntContactId;

// CLASS DECLARATION

/**
*  Abstact match result. 
*
*  @lib PhoneCntFinder
*  @since 1.0
*/
class MPhCntMatch
    {
    public:
        
        /**
        * Enumerates CLI types.
        *
        * ECliEmpty - not set/found.
        * ECliNumber - phone number from contact.
        * ECliName - name from contact.
        * ECliCompany - company name from contact.
        */
        enum TCliType
            {
            ECliEmpty,  
            ECliNumber,
            ECliName,
            ECliCompany
            };
            
        enum TNumberType
            {
            ENone = 0,
            EMobileNumber,
            EStandardNumber,
            EFaxNumber,
            EPagerNumber,
            EVoipNumber,
            EVideoNumber,
            EAssistantNumber,
            ECarNumber,
            EHomeNumber,
            EWorkNumber            
            }; 

        /**
        * To destroy the item. Must be called when item is not needed
        * any more.
        */
        virtual void Release() = 0;

        /**
         * Contact id.
         * @return Contact finder contact id.
         */
        virtual CPhCntContactId* ContactId() const = 0;
        
        /**
        * Get the number type.
        * @return Phonebook number type.
        */
        virtual TNumberType NumberType() const = 0;

        /**
        * Get CLI value.
        * @param aCliText CLI is copied here. User must delete after usage.
        * @return CLI type.
        */
        virtual TCliType Cli( HBufC*& aCliText ) const = 0;

        /**
        * First name field from contact.
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC FirstName() const = 0;

        /**
        * Last name field from contact.
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC LastName() const = 0;

        /**
        * Company name field from contact.
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC CompanyName() const = 0;

        /**
        * Number field from contact (from matched field).
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC Number() const = 0;

        /**
        * Ringing tone field from contact.
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC PersonalRingingTone() const = 0;

        /**
        * Find if contact belong to any contact groups given.
        * @param aGroupArray Compared contact groups.
        * @return ETrue is belogns at least one group from parameter.
        */
        virtual TBool BelongsToGroups( 
            const CArrayFix<TContactItemId>& aGroupArray ) const = 0;

        /**
        * Returns text to speech text for this contact. Used in
        * text to speech ringing tone.
        * @since Series 60 3.0
        * @return descriptor, ownership passed.
        */
        virtual HBufC* TextToSpeechTextL() const = 0;
        
        /**
        * Call text field from contact.
        * @since Series 60 3.1
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC CallText() const = 0;

        /**
        * Call image field from contact.
        * @since Series 60 3.1
        * @return Field text. Empty if there isn't one specified.
        */
        virtual TPtrC CallImage() const = 0;
        
        /**
        * Can used to check if contact has a thumbnail image.
        * @since Series 60 3.1
        * @return ETrue if has thumbnail, otherwise EFalse.
        */
        virtual TBool HasThumbnailImage() const = 0;      
        
        /**
        * Returns all dtmf numbers which are found from
        * a single contact
        * @Since Series S60 3.2
        * @return array of DTMF numbers.
        */
        virtual CDesCArray& AllDtmfNumbers() const = 0;    

    };

#endif      // MPHCNTMATCH_H   
            
// End of File
