diff -r 41a7f70b3818 -r 5266b1f337bd phoneengine/PhoneCntFinder/inc/CPhCntMatchItem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneengine/PhoneCntFinder/inc/CPhCntMatchItem.h Wed Sep 01 12:30:10 2010 +0100 @@ -0,0 +1,298 @@ +/* +* Copyright (c) 2002-2005 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: Holds data for one match result. +* +*/ + + +#ifndef CPHCNTMATCHITEM_H +#define CPHCNTMATCHITEM_H + +// INCLUDES +#include +#include // TContactItemId + +#include "CPhCntMatcher.h" // TFieldId +#include "mphcntmatch.h" // TPhCCliType + +// CONSTANTS + +// Panic literal for maching related panics. +_LIT( KPhCntMatchPanic, "PhCntMatch" ); + +/** +* Enumerates panic reasons. +* +* EPhCntMatchReferenceCountPanic +* - reference count is invalid +* EPhCntMatchNeededObjectNotPresentPanic +* - instance is not present even if it is required to be. +* EPhCntMatchPhonebookNotReleasedPanic +* - phonebook has been released but still request of +* phonebook to be released is given. +*/ +enum TPhCntMatchPanicReason + { + EPhCntMatchReferenceCountPanic, + EPhCntMatchNeededObjectNotPresentPanic, + EPhCntMatchPhonebookNotReleasedPanic + }; + +// FORWARD DECLARATIONS +class CPbkContactItem; +class MPhCntMatchItemOwner; +class CContactIdArray; +class CPhCntPbkContactId; + +// CLASS DECLARATION + +/** +* Holds data for one match result. +* Many CPhCntMatch objects may use this. +* +* @lib PhoneCntFinder +* @since 1.0 +*/ +NONSHARABLE_CLASS( CPhCntMatchItem ) :public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aTelNumber Original phone number + * @param aContact Matched contact item + * @param aFieldId Matched field from the contact item + * @param aOwner Own this i.e. handles delete + * @return New instance + */ + static CPhCntMatchItem* NewL( + const TDesC& aTelNumber, + CPbkContactItem& aContact, + const TFieldId aFieldId, + MPhCntMatchItemOwner& aOwner ); + + /** + * Destructor. + */ + virtual ~CPhCntMatchItem(); + + public: // New functions + + /** + * Get the compared phone number + * @return The original phonenumber + */ + inline const TDesC& OriginalNumber() const; + + /** + * Add reference to this match item. + */ + inline void AddReference(); + + /** + * Removes reference to this match item. If reference count + * gets to zero the object is deleted. + */ + void RemoveReference(); + + /** + * Returns reference count. + * @return The count. + */ + inline TInt ReferenceCount() const; + + /** + * Get contact ID. + * @return The ID. + */ + inline CPhCntPbkContactId* ContactId() const; + + /** + * Get number type + * @return Phonebook number type + */ + inline TInt NumberType() const; + + /** + * Get contact's CLI + * @param aCliText CLI is saved here. User deletes the object. + * @return CLI type + */ + MPhCntMatch::TCliType Cli( HBufC*& aCliText ) const; + + /** + * First name field content. + * @return The field. Empty if not specified. + */ + TPtrC FirstName() const; + + /** + * Last name field content. + * @return The field. Empty if not specified. + */ + TPtrC LastName() const; + + /** + * Company name field content. + * @return The field. Empty if not specified. + */ + TPtrC CompanyName() const; + + /** + * Number field content (matched field). + * @return The field. Empty if not specified. + */ + TPtrC Number() const; + + /** + * Ringing tone field content. + * @return The field. Empty if not specified. + */ + TPtrC PersonalRingingTone() const; + + /** + * Find if contact belongs to any contact groups given. + * @param aGroupArray Compared contact groups. + * @return ETrue is belongs at least one group from parameter. + */ + TBool BelongsToGroups( const CArrayFix& aGroupArray ) const; + + /** + * Returns text to speech text for this contact. Used in + * text to speech ringing tone. + * @since Series 60 3.0 + * @return descriptor, ownership passed. + */ + HBufC* TextToSpeechTextL() const; + + /** + * Call text field content. + * @since Series 60 3.1 + * @return The field. Empty if not specified. + */ + TPtrC CallText() const; + + /** + * Call image field content. + * @since Series 60 3.1 + * @return The field. Empty if not specified. + */ + TPtrC CallImage() const; + + /** + * Check if contact has a thumbnail image. + * @since Series 60 3.1 + * @return ETrue if thumbnail exists, otherwise EFalse. + */ + TBool HasThumbnailImage() const; + + private: + + /** + * C++ constructor. + */ + CPhCntMatchItem( const TFieldId aFieldId, MPhCntMatchItemOwner& aOwner); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL( const TDesC& aTelNumber, CPbkContactItem& aContact ); + + + /** + * Read all needed info from the contact. + * @param aContact Contact item from Phonebook + */ + void GetContactInfoL( CPbkContactItem& aContact ); + void ReadFirstNameL( CPbkContactItem& aContact ); + void ReadLastNameL( CPbkContactItem& aContact ); + void ReadCompanyNameL( CPbkContactItem& aContact ); + void ReadNumberL( CPbkContactItem& aContact ); + void ReadNumberType( CPbkContactItem& aContact ); + void ReadCliAndTypeL( CPbkContactItem& aContact ); + void ReadGroupsL( CPbkContactItem& aContact ); + void ReadRingingToneL( CPbkContactItem& aContact ); + void ReadTextToSpeechL( CPbkContactItem& aContact ); + void ReadCallObjectL( CPbkContactItem& aContact ); + + /** + * Allocate string and trim the result. + * @since Series 60 3.0 + * @param aText text to be allocated. + * @return trimmed version. + */ + static HBufC* AllocAndTrimL( const TDesC* aText ); + + /** + * Returns ETrue if order of the names needs to be swapped. + * Default order is first name followed by last name. + * + * @since Series 60 3.0 + * @return ETrue if order of the names needs to be swapped. + */ + static TBool SwapNameOrder(); + + private: // Data + // Original phone number buffer + HBufC* iOriginalTelNumber; + // Contact item id + CPhCntPbkContactId* iContactId; + // Field id of the contact + TFieldId iFieldId; + // Reference count to this match data + TInt iReferenceCount; + // Who can delete this (when reference count comes to 0) + MPhCntMatchItemOwner& iOwner; + + // First name buffer + HBufC* iFirstName; + // Last name buffer + HBufC* iLastName; + // Company name buffer + HBufC* iCompanyName; + // Matched phone numer buffer + HBufC* iNumber; + // Number type + TInt iNumberType; + // CLI + HBufC* iCli; + // CLI type (name, number, company, ...) + MPhCntMatch::TCliType iCliType; + // Contact groups + CContactIdArray* iGroups; + // Path to ringing tone + HBufC* iRingingTone; + + // Text to speech related variables: + + // First name reading + HBufC* iFirstNameReading; + // Last name reading + HBufC* iLastNameReading; + // Nick name + HBufC* iSecondName; + // Call text + HBufC* iCallText; + // Call image + HBufC* iCallImage; + // Has thumbnail image + TBool iHasThumbnailImage; + + }; + +#include "CPhCntMatchItem.inl" + +#endif // CPHCNTMATCHITEM_H + +// End of File