phoneengine/contacthandling/inc/cpecontactmatch.h
changeset 0 5f000ab63145
--- /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 <cntdef.h>
+#include <e32base.h>
+#include <pevirtualengine.h>
+#include <mphcntthumbnailloaderobserver.h>
+
+// 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<CPEContactExtensionWrapper> iPlugins;
+    };
+
+#endif // CPECONTACTMATCH_H
+
+// End of File