phoneapp/phoneuivoipextension/inc/cphonecustomizationvoip.h
changeset 37 ba76fc04e6c2
child 51 f39ed5e045e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuivoipextension/inc/cphonecustomizationvoip.h	Fri Jun 04 10:19:18 2010 +0100
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2008-2009 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:  VoIP-specific customization class.
+*
+*/
+
+
+#ifndef C_CPHONECUSTOMIZATIONVOIP_H
+#define C_CPHONECUSTOMIZATIONVOIP_H
+
+// INCLUDES
+#include <settingsinternalcrkeys.h>
+#include <telmenuextension.h>
+#include <spdefinitions.h>
+#include "mphonecustomization.h"
+#include "mphonebuttoncustomization.h"
+
+// FORWARD DECLARATIONS
+class MPhoneStateMachine;
+class MPhoneViewCommandHandle;
+class CPhoneExtensionHandler;
+class MPhoneDialerController;
+class CPhoneViewCustomizationVoip;
+class CPhoneStateUtilsVoip;
+class CPhoneUnattendedTransferCmdHandler;
+class CPhoneNewCallCmdHandler;
+class CEikMenuPaneItem;
+class CCoeEnv;
+class CPhoneCallForwardQueryHandler;
+
+// CONSTANTS
+
+const TInt KMaxVoIPServiceName = 100;
+
+// CLASS DECLARATION
+/**
+*  VoIP-specific customization class.
+*/
+NONSHARABLE_CLASS( CPhoneCustomizationVoip ): public CBase, 
+        public MPhoneCustomization, public MPhoneButtonCustomization
+    {
+    public: // Data
+    
+    /**
+     * Features for multicall case
+     */    
+    enum TFeature
+        {
+        EFeatureNone,
+        EFeatureConference,
+        EFeatureTransfer
+        };
+    public:      
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPhoneCustomizationVoip();
+
+        /**
+        * Creates the VoIP-specific utility class
+        * @param aStateMachine: a container of state objects
+        * @return an instance of class CPhoneCustomizationVoip
+        */
+        static CPhoneCustomizationVoip* NewL( 
+            MPhoneStateMachine& aStateMachine,
+            MPhoneViewCommandHandle& aViewCommandHandle );
+        
+// from base class MPhoneCustomization  
+        
+        /**
+        * From MPhoneCustomization.
+        * Customizes menu bar.
+        * @param    aResourceId     Menu bar resource identifier.
+        * @param    aMenuBar        Menu bar.
+        */
+        void CustomizeMenuBarL( TInt aResourceId, CEikMenuBar* aMenuBar );
+        
+        /**
+        * From MPhoneCustomization.
+        * Customizes menu pane.
+        * @param    aResourceId     Menu pane resource identifier.
+        * @param    aMenuPane       Menu pane.
+        */
+        void CustomizeMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+        
+        /**
+        * From MPhoneCustomization.
+        * Customizes call header texts shown in a call bubble.
+        * @param    aCallId             Call identifier.
+        * @param    aHeaderData         Call header data to be modified.
+        * @param    aInCallNumberText   In call number text (Call 1, Call 2...).
+        */
+        void ModifyCallHeaderTexts( TInt aCallId, 
+            TPhoneCmdParamCallHeaderData* aHeaderData, 
+            const TDesC& aInCallNumberText );
+        
+        /**
+        * From MPhoneCustomization.
+        * Handles custom menu commands.
+        * @param aCommand Command id.
+        * @return ETrue if command handled.
+        */
+        TBool HandleCommandL( TInt aCommand );
+        
+        /**
+        * From MPhoneCustomization.
+        * Checks is alphanumeric mode allowed for number entry/
+        * dialer.
+        * @return ETrue if allowed.     
+        */
+        TBool AllowAlphaNumericMode(); 
+        
+        /**
+        * From MPhoneCustomization.
+        * Returns resource id for soft keys.
+        * @return Resource id.
+        */
+        TInt CustomizeSoftKeys();
+        
+        /**
+        * From MPhoneCustomization.
+        * Returns text resource id for private call header.
+        * @return Resource id.
+        */
+        TInt CustomizeCallHeaderText();
+        
+        /**
+        * From MPhoneCustomization.
+        * Returns text resource id for busy note.
+        * @return Resource id.
+        */
+        TInt CustomizeBusyNoteText();
+        
+        /**
+        * From MPhoneCustomization.
+        * Handles calls from number entry.
+        * @return ETrue when call is handled by customization.
+        *         EFalse otherwice.
+        */        
+        TBool HandleCallFromNumberEntryL();
+        
+        /**
+        * A message handling function for Phone Engine messages
+        * @param aMessage Id of the message 
+        * @param aCallId  The call id of the call
+        * @return ETrue if message was handled
+        */
+        TBool HandlePhoneEngineMessageL(
+            const TInt aMessage, 
+            TInt aCallId );
+
+        /**
+        * Handles dial by unknown service id.
+        * @param aNumber   Number/Address 
+        */
+        void HandleDialL( const TDesC& aNumber );
+
+// from base class MPhoneButtonCustomization
+        /**
+        * From MPhoneButtonCustomization.
+        * Customizes touch pane buttons.
+        * @param aTouchPane Interface to add and dimm
+        *                   bubble touch pane buttons.
+        */
+        void CustomizeTouchPaneButtons(
+                        /*MBubbleTouchPaneInterface& aTouchPane*/ );
+    protected:
+
+        CPhoneCustomizationVoip( 
+            MPhoneStateMachine& aStateMachine,
+            MPhoneViewCommandHandle& aViewCommandHandle );
+        
+        virtual void ConstructL();
+        
+    private:        
+        /**
+        * VoIP supported check.
+        */
+        TBool VoIPSupportedL();
+        
+        /**
+        * Get VoIP services
+        * @param aVoipServiceIds On return, contains the list of VoIP services
+        */
+        void GetVoIPServiceIdsL( RIdArray& aVoipServiceIds ) const;
+
+        /**
+        * Get the service provider name
+        * @param aServiceId The service, whose name is requested
+        * @param aServiceName On return, contains the service name
+        */
+        void GetVoipServiceNameL( TServiceId aServiceId, TDes& aServiceName ) const;
+        
+        /**
+        * Modifies menu when there is active call.
+        * @param aResourceId Menu resource id.
+        * @param aMenuPane Menu pane
+        */
+        void ModifyInCallMenuL( TInt aResourceId, CEikMenuPane& aMenuPane );
+        
+        /**
+         * Modifies menu when there is dialer/number entry shown.
+         * 
+         * @param   aResourceId     Menu pane resource identifier.
+         * @param   aMenuPane       Menu pane.
+         */
+        void ModifyNumberAcquisitionMenuL( 
+            TInt aResourceId, CEikMenuPane& aMenuPane );
+        
+        /**
+         * Inserts "Internet call" menu item to the given menu pane.
+         * 
+         * @param   aResourceId     Menu pane resource identifier.
+         * @param   aMenuPane       Menu pane. 
+         */
+        void InsertInternetCallMenuItemL( TInt aResourceId, 
+            CEikMenuPane& aMenuPane );
+        
+        /**
+         * Inserts menu item for changing between alpha and numeric input 
+         * modes to the given menu pane.
+         * 
+         * @param   aMenuPane       Menu pane. 
+         */
+        void InsertTextInputModeChangeMenuItemL( CEikMenuPane& aMenuPane );
+        
+        /**
+        * Resolves active calls from phoneengine.
+        * @param aArray Active call array.
+        */
+        void GetActiveCallArrayL( 
+                RArray<CTelMenuExtension::TCallInfo>& aArray );
+        
+        /**
+        * Resolves most active call.
+        * This is used to determine which plug-in customizes menu pane 
+        * and handles command.
+        * @param aArray Active call array.
+        */
+        TInt ResolveMostActiveCallL( 
+                const RArray<CTelMenuExtension::TCallInfo>& aArray );
+
+        /**
+         * Returns service id for activest call
+         * by active call array.
+         * @param aArray Active call array.
+         * @return Service id.
+         */
+        TUint ServiceIdForActivestCallL(
+                const RArray<CTelMenuExtension::TCallInfo>& aArray );
+        
+        /**
+        * Checks is feature supported.
+        * @since    S60 v5.1
+        * @param    aFeature A feature to be checked.
+        * @return   ETrue if feature supported.
+        */  
+        TBool IsFeatureSupported( TFeature aFeature );  
+        
+        /**
+        * Checks is feature supported by call type.
+        * E.g. Conference not supported if held voip call
+        * and active CS call.
+        * @since    S60 v5.1
+        * @leave    Leaves if check not succeed.
+        * @param    aFeature A feature to be checked.
+        * @return   ETrue if feature supported.
+        */  
+        TBool CheckFeatureSupportByCallTypeL( 
+                TFeature aFeature );
+
+        /**
+        * Shows "Enabling %U service" wait note 
+        */
+        void LaunchEnablingServiceNoteL();
+         
+        /**
+        * Show global ErrorNote
+        * @param aResourceId resource id to be resolved
+        */
+        void SendGlobalErrorNoteL( TInt aResourceId );
+        
+        /**
+        * Show global InfoNote
+        * @param aResourceId resource id to be resolved
+        */
+        void SendGlobalInfoNoteL( TInt aResourceId );
+        
+        /**
+        * Fits URI to call bubble lines.
+        * @param aCLIText Full caller address.
+        * @param aSipURI returns first line of bubble.
+        * @param aSipURIDomainPart returns second line of bubble.
+        */
+        void HandleURIFittingToCallBubble( const TDesC& aCLIText,
+                   TDes& aSipURI, TDes& aSipURIDomainPart );
+        
+        /**
+         * Returns VoIP state utils.
+         * @return VoIP state utils.
+         */
+        CPhoneStateUtilsVoip& StateUtils();
+        
+        /**
+        * Take care of actions when callsecurestatus 
+        * change.
+        * @param aCallId CallId of the call.
+        */ 
+        void HandleCallSecureStatusChangeL( TInt aCallId );
+        
+        /**
+         * Creates menu pane item with specified command and text resource 
+         * identifiers.
+         * 
+         * @param   aCommandId      Command identifier.
+         * @param   aTextResourceId Text resource identifier.
+         * @return  Menu pane item. 
+         */
+        CEikMenuPaneItem* CreateMenuPaneItemLC( 
+            TInt aCommandId, TInt aTextResourceId ) const;
+        
+        /**
+         * Creates a VoIP menu pane item with specified command and text resource 
+         * @param   aCommandId      Command identifier.
+         * @param   aTextResourceId Text resource identifier.
+         * @return  Menu pane item. 
+         */
+        CEikMenuPaneItem* CreateMenuPaneItemLC( 
+            TInt aCommandId, TServiceId aServiceId ) const;
+        
+        /**
+        * Adds handover menu item to menu.
+        * @param aResourceId menu resource
+        * @param aMenuPane Menu pane.
+        */
+        void AddHandoverMenuItemIfNeededL( 
+            TInt aResourceId, CEikMenuPane& aMenuPane );
+
+        /**
+        * Gets phone number from the phone number entry.
+        * @return  Phone number
+        */
+        HBufC* PhoneNumberFromEntryLC() const;
+        
+    private: // Data
+                
+        /** 
+         * Control environment.
+         */
+        CCoeEnv& iCoeEnv;
+        
+        /** 
+         * Interface for setting and getting active state
+         */
+        MPhoneStateMachine& iStateMachine;
+        
+        /** 
+         * Reference to the Phone UI View command handle
+         */
+        MPhoneViewCommandHandle& iViewCommandHandle;
+        
+        /**
+         * Extension handler.
+         * Own.
+         */
+        CPhoneExtensionHandler* iExtensionHandler;
+
+        /**
+         * Phone view customization.
+         */
+        CPhoneViewCustomizationVoip* iPhoneViewCustomization;
+        
+        /**
+         * Unattended transfer command handler.
+         */
+        CPhoneUnattendedTransferCmdHandler* iTransferCmdHandler;
+        
+        /**
+         * New Internet call command handler.
+         */
+        CPhoneNewCallCmdHandler* iNewCallCmdHandler;
+        
+        /**
+         * Call forward handler.
+         */
+        CPhoneCallForwardQueryHandler* iCallForwardHandler;
+        
+    };
+
+#endif // C_CPHONECUSTOMIZATIONVOIP_H
+
+// End of File