diff -r 000000000000 -r 5f000ab63145 phoneengine/contacthandling/inc/cpecontactmatch.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneengine/contacthandling/inc/cpecontactmatch.h Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,282 @@ +/* +* 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: Manager for contacts. +* +*/ + + +#ifndef CPECONTACTMATCH_H +#define CPECONTACTMATCH_H + +// INCLUDES +#include +#include +#include +#include + +// CONSTANTS +// Number of languages that use lastname-firstname order +const TInt KPENumberOfSwappedLanguages = 7; + +// Languages which use lastname-firstname order +const TLanguage KPESwappedLanguages[ KPENumberOfSwappedLanguages ] = + { + ELangHungarian, // 17 + ELangTaiwanChinese, // 29 + ELangHongKongChinese, // 30 + ELangPrcChinese, // 31 + ELangJapanese, // 32 + ELangKorean, // 65 + ELangVietnamese // 96 + }; + +// FORWARD DECLARATIONS +class CPEContactHandling; +class CPhCntContactId; +class CPhCntFactory; +class CPhCntSingleItemFetch; +class CPhCntSpeedDialMonitor; +class CPhCntThumbnailLoader; +class MPEDataStore; +class MPhCntMatch; +class CPhCntMatcher; +class CPhCntThumbnailLoader; +class MPESimContactMatch; +class CTelMatchingExtension; +class CPEContactExtensionWrapper; + +// CLASS DECLARATION + +/** +* Container for all Contact Handling owned instances of Phone Contact Finder +*/ +class CPEContactMatch + : public CBase, + public MPhCntThumbnailLoaderObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aOwner, handle to contact handling interface / owner of this class + * @param aDataStore, handle to internal engine info interface + * @return an instance of class CPEContactMatch + */ + IMPORT_C static CPEContactMatch* NewL( + CPEContactHandling& aOwner, + MPEDataStore& aDataStore ); + + /** + * Destructor. + */ + ~CPEContactMatch(); + + public: // New functions + + /** + * Synchronous method for finding contact data specified with aContactId + * @param aCallId, the call this contact is associated with + * @return None + */ + void MatchWithContactIdL( const TInt aCallId ); + + /** + * Search contact information synchronously matching with aPhoneNumber + * @param aCallId, the call this contact is associated with + * @return None (leaves with KErrNotFound if no match found or db in use) + */ + void MatchWithNumberL( const TInt aCallId ); + + /** + * Returns contact picture data and call id association + * NOTE! Ownership of the picture is transfered to caller. + * @return contact thumbnail, equals NULL if not found + */ + CFbsBitmap* ContactThumbnail(); + + /** + * Fetch number from speed dial location + * @param aLocationIndex Index to look for + * @param aNumber Filled with speed dial location phone number + */ + void GetSpeedDialLocationL( + TInt aLocationIndex, + TPEPhoneNumber& aNumber ); + + private: + + /** + * C++ constructor. + */ + CPEContactMatch( + CPEContactHandling& aOwner, + MPEDataStore& aDataStore ); + + /** + * Symbian OS constructor. + */ + void ConstructL(); + + /** + * Create thumbnail loader. + */ + void ConstructThumbnailLoaderL(); + + /** + * Create speed dial command + */ + void ConstructSpeedDialCommandL(); + + /** + * Copies contact information to remote info struct + * @param aMatch a contact item + * @param aCallId, the call this contact is associated with + */ + void CopyContactFieldsDataL( + const MPhCntMatch& aMatch, + const TInt aCallId ); + + /** + * Creates single item fetch. + * + * Ownership is passed to the client. + * + * @return instance of single item fetch. + */ + CPhCntSingleItemFetch* CreateSingleItemFetchL(); + + /** + * Creates contact id. + */ + CPhCntContactId* CreateContactIdL( const TDesC8& aContactId ); + + /** + * Creates contact id. + */ + CPhCntContactId* CreateContactIdL( TContactItemId aContactId ); + + /** + * Starts loading thumbnail image + * @param aContactId contact item with the desired thumbnail + * @param aCallId call id for identifying which thumbnail is loaded + * @return Symbian OS error code + */ + TInt LoadThumbnail( const CPhCntContactId& aContactId, const TInt aCallId ); + + /** + * From MPhCntThumbnailLoaderObserver + * + * Called when thumbnail loading has been completed. + * Ownership of the bitmap is transferred to the observer. + * + * @param aId id, never KPhCntThumbnailNullId. + * @param aResult error code. + * @param aBitmap bitmap. + */ + void MpctloThumbnailLoaded( + CPhCntThumbnailLoader::TThumbnailId aId, + TInt aResult, + CFbsBitmap* aBitmap ); + + /** + * Resolves services implementation uid for matching (ECom plugin). + * @leave Leaves with KErrNotFound if UID not found. + * @param aServiceId Unique service id used in current call. + * @return Implementation UID + */ + TUid ResolveServicesImplementationUidL( TUint32 aServiceId ); + + /** + * Makes voip contact matching. + * @param aCallId Id of the currently used call + * @param aMatch Contact match + * @param aRemotePartyName Remote party name. + */ + void MatchWithVoipAdressL( + const TInt aCallId, + MPhCntMatch*& aMatch, + RBuf& aRemotePartyName ); + + /** + * Returns contact store uris that should be opened + * before contact match. Store uris are fetched by service id. + * @param aServiceId Service id of the ongoing call. + * @return Array of uri's. NULL if not found for current service. + */ + CDesCArray* StoreUrisForServiceL( TUint aServiceId ); + + /** + * Makes voip contact matching using extension plugin. + * @since S60 v5.1 + * @param aCallId Identifier of the currently used call. + * @param aMatch Contact match. + * @param aRemotePartyName Remote party name. + */ + void MatchWithVoipAddressUsingExtensionL( TInt aCallId, + MPhCntMatch*& aMatch, RBuf& aRemotePartyName ); + + /** + * Returns matching extension plugin for the given service. A new + * plugin is created if extension is not yet created for the service. + * @since S60 v5.1 + * @param aServiceId Service identifier. + * @return A matching extension instance. + */ + CTelMatchingExtension& MatchingExtensionL( TUint aServiceId ); + + private: // Data + + // Handle to contact handling interface / owner of this class + CPEContactHandling& iOwner; + + // Handle to internal engine info interface + MPEDataStore& iDataStore; + + // Owned: library + RLibrary iLibrary; + + // Owned: contact factory + CPhCntFactory* iContactFactory; + + // Owned: contact matcher + CPhCntMatcher* iContactMatcher; + + // Owned: sim contact matcher + MPESimContactMatch* iSimContactMatcher; + + // Owned: thumbnail loader + CPhCntThumbnailLoader* iContactThumbnailLoader; + + // Owned: speed dial monitor + CPhCntSpeedDialMonitor* iSpeedDialCommand; + + // Owned: thumbnail image + // Ownership is passed to client when it calls ContactThumbnail() + CFbsBitmap* iThumbnailImage; + + // Identifier of the currently loading thumbnail + // Used *exlusively* by this class to associate a thumbnail to a contact + // This class uses a call id (TInt) for this purpose + CPhCntThumbnailLoader::TThumbnailId iThumbnailId; + + /** + * Contact extension plugins. + * Own. + */ + RPointerArray iPlugins; + }; + +#endif // CPECONTACTMATCH_H + +// End of File