messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h
changeset 0 72b543305e3a
child 5 4697dfb2d7ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,190 @@
+/*
+* 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:   Calls voice call or VoIP call to either of addresses provided. 
+*  CMuiuContactService IS NOT YET READY. IMPLEMENTATION IS MISSING. DO NOT USE.
+*
+*/
+
+
+#ifndef MUIUCONTACTSERVICE_H
+#define MUIUCONTACTSERVICE_H
+
+#include <e32base.h> // CBase
+#include "MuiuMsvUiServiceUtilitiesInternal.h"
+
+class CMuiuContactAddressMatcher;
+class CMsgVoIPExtension;
+class CEikonEnv;
+class CItemFinder;
+/**
+ *  VoIP call:
+ *  Calls voice call or VoIP call to either of addresses provided. 
+ *  VoIP call is performed, if VoIP is preferred call method
+ *  and VoIP profiles exists.
+ *  VoIP call is possible to perform using either phone number or email address.
+ *  
+ *  Voice call: If VoIP is not possible...
+ *  ...and phone number is supplied, voice call is performed.
+ *  ...and email address is supplied, email address
+ *  is used to search for contact. The API searches for first contact mathing 
+ *  the address. Other contacts are ignored. If contact has several addresses 
+ *  (phone numbers), AIW is used to let user select address, which will be used.
+ *  
+ *  If contact with phone number could not be found matching the supplied 
+ *  emails address, nothing takes place.
+ *
+ *  @lib muiu_internal.lib
+ *  @since S60 v3.2
+ */
+ 
+class CMuiuContactService : public CBase
+    {
+public:
+    enum TMuiuPreferredCallType
+            {
+            EMuiuCallTypeNone = 0,
+            EMuiuCallTypeVoice,
+            EMuiuCallTypeVoip
+            };        
+    
+public: 
+
+    /**
+     * NewL
+     * @param aVoipExtension 
+     * @return self
+     * @since S60 v3.2
+     */
+    IMPORT_C static CMuiuContactService* NewL( 
+        CEikonEnv&          aEnv,
+        CMsgVoIPExtension*  aVoipExtension = NULL );
+        
+    /// Destructor
+    IMPORT_C virtual ~CMuiuContactService();
+
+    /**
+    * Returns information whether VOIP calls are supported in this build/device.
+    * @return ETrue: supported. EFalse: not supported
+    * @since S60 v3.2
+    */
+    IMPORT_C TBool IsVoipSupported() const;    
+
+    /**
+    * Returns preferred call type to be tried. Function can be called
+    * immediately after construction. 
+    * @return Preferred call type 
+    * @since S60 v3.2
+    */
+    IMPORT_C TMuiuPreferredCallType PreferredCallTypeL() const;    
+
+    /**
+     * Sets primary (usually sender) address.
+     * Setting address resets earlier found address and name.
+     * @param aAddress primary address
+     * @since S60 v3.2
+     */    
+    IMPORT_C void SetAddress( const TDesC& aAddress );
+
+    /**
+     * Sets contact name of primary address, if known.
+     * Setting alias resets earlier found address and name.
+     * @param aAddress primary address
+     * @since S60 v3.2
+     */    
+    IMPORT_C void SetName( const TDesC& aName );
+
+    /**
+    * Calls to primary address. Operation is synchronous. Secondary address is not 
+    * searched from phonebook. Function call resets previous results.
+    * Earlier found address and alias are utilised, it they are still available. 
+    * @return ETrue: if contact was searched from phonebook.
+    * @since S60 v3.2
+    */
+    IMPORT_C TBool CallL( );    
+
+    /**
+    * Call to primary or secondary address. Secondary address is preferred to primary
+    * address, if it exists. Operation is synchronous. Secondary address is not 
+    * searched from phonebook.
+    * @param aSecondaryAddress secondary address. 
+    * @return ETrue: if contact was searched from phonebook.
+    * @since S60 v3.2
+    */
+    IMPORT_C TBool CallL( const TDesC& aSecondaryAddress );    
+
+    /**
+    * Call to primary or secondary address. Secondary address is preferred to primary
+    * address, if it exists. Operation is synchronous. Secondary address is not searched
+    * from phonebook.
+    * @param aSecondaryItem Function retrieves current item from CItemFinder and uses 
+    *         its address. 
+    * @return ETrue: if primary address was searched from phonebook.
+    * @since S60 v3.2
+    */
+    IMPORT_C TBool CallL( CItemFinder* aSecondaryItem );    
+
+    /**
+    * Method returns information whether contact with phone number was found.
+    * @return ETrue: contact found. Otherwise not found or search into
+    *         phonebook was not even done.
+    * @since S60 v3.2
+    */
+    IMPORT_C TBool IsContactFound() const;    
+    
+    /**
+    * If contact search was successful, method to read phone number of matched contact.
+    * Returns NULL if contact was not found or contact had not phone number
+    * @return match result, ownership is transferred to caller.
+    * @since S60 v3.2
+    */
+    IMPORT_C TPtrC FoundContactAddressL() const;    
+    
+    /**
+    * If contact search was successful, method to read phone number of matched contact.
+    * Returns NULL if contact was not found or contact had not phone number
+    * @return match name, ownership is transferred to caller
+    * @since S60 v3.2
+    */
+    IMPORT_C TPtrC FoundContactNameL() const;
+
+private: // implementation  
+
+    // Callback function of TCallback
+    static TInt MatchDone( TAny* aCallService );
+                                  
+private:
+
+    CMuiuContactService( CEikonEnv&         aEnv ,
+                         CMsgVoIPExtension* aVoipExtension );
+                         
+    void ConstructL();
+        
+private: // data
+       
+    TPtrC                       iPrimaryAddress;
+    TPtrC                       iPrimaryName;
+    TPtrC                       iSecondaryAddress;
+        
+    CEikonEnv&                  iEikEnv;
+    
+    /// Management of VoIP data
+    CMsgVoIPExtension*          iVoipExtension;
+    
+    CMuiuContactAddressMatcher* iContactAddressMatcher;  
+    HBufC*                      iMatchAddress;
+    HBufC*                      iMatchName;
+    CActiveSchedulerWait        iWait;
+    };
+
+#endif // MUIUCONTACTSERVICE_H