phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp
branchRCL_3
changeset 62 5266b1f337bd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp	Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,947 @@
+/*
+* Copyright (c) 2007-2010 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:  Handles the updating of touch buttons
+*
+*/
+
+
+#include <eikappui.h>
+#include <eikenv.h>
+#include <pevirtualengine.h>
+#include <AknsSkinInstance.h>
+#include <AknsUtils.h>
+#include <AknsConstants.h>
+#include <data_caging_path_literals.hrh>
+#include <phoneui.mbg>
+#include "cphonebuttonscontroller.h"
+#include "phoneui.hrh"
+#include "tphonecommandparam.h"
+#include "tphonecmdparamboolean.h"
+#include "tphonecmdparaminteger.h"
+#include "tphonecmdparamcallheaderdata.h"
+#include "cphonemainresourceresolver.h"
+#include "phonerssbase.h"
+
+_LIT( KPhoneUiScalableIconFile, "Z:phoneui.mif" );
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhoneButtonsController::CPhoneButtonsController(
+    MBubbleTouchPaneInterface& aTouchPane ) : 
+    iTouchPane( aTouchPane )
+    {
+    iTouchPane.SetIconProvider( this );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPhoneButtonsController* CPhoneButtonsController::NewL(
+    MBubbleTouchPaneInterface& aTouchPane )
+    {
+    CPhoneButtonsController* self = 
+        new (ELeave) CPhoneButtonsController( aTouchPane );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CPhoneButtonsController::~CPhoneButtonsController()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// SetButtonSet
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetButtonSet(
+    TPhoneCommandParam* aCommandParam )
+    {
+    TPhoneCmdParamInteger* cbaResource = 
+        static_cast<TPhoneCmdParamInteger*>( aCommandParam );
+    TInt resourceId = cbaResource->Integer();
+    
+    iTouchPane.SetButtonSet( resourceId );
+    ReplaceAudioButton();
+    SetButtonDimming();
+    }
+
+
+// ---------------------------------------------------------------------------
+//  SetMuteFlag
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetMuteFlag( 
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsPhoneMuted;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsPhoneMuted;    
+            }            
+        
+        if ( iFlags & EButtonsPhoneMuted )
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdUnmute );    
+            }
+        else
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdMute );        
+            }            
+        
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// SetHoldFlag
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetHoldFlag( 
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == 
+        TPhoneCommandParam::EPhoneParamIdBoolean )
+        { 
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsCallOnHold;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsCallOnHold;    
+            }            
+        
+        if ( iFlags & EButtonsCallOnHold )
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdUnhold );
+            }
+        else
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdHold );
+            }            
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// SetIhfFlag
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetIhfFlag(
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsIhfActive;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsIhfActive;    
+            }            
+         }    
+    }
+ 
+// ---------------------------------------------------------
+// CPhoneButtonsController::SetBTAccFlag
+// ---------------------------------------------------------
+//
+void CPhoneButtonsController::SetBTAccFlag( TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsBTAcc;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsBTAcc;    
+            }            
+        // Temporary unavailability
+        if ( ( iFlags & EButtonsBTAccAvail ) && !( iFlags & EButtonsBTAcc ) )
+            {
+            iFlags |= EButtonsBTAccTmpUn;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsBTAccTmpUn;  
+            }      
+         }     
+    }
+ 
+ // ---------------------------------------------------------
+// CPhoneButtonsController::SetWiredAccFlag
+// ---------------------------------------------------------
+//
+void CPhoneButtonsController::SetWiredAccFlag( TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsWiredAcc;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsWiredAcc;    
+            }            
+        }     
+    }
+
+// ---------------------------------------------------------
+// CPhoneButtonsController::SetBTAccAvailableFlag
+// ---------------------------------------------------------
+//
+void CPhoneButtonsController::SetBTAccAvailableFlag( TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+           
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsBTAccAvail;
+            }
+        else
+            {
+            iFlags &= ~EButtonsBTAccAvail;    
+            }
+        
+        // Temporary unavailability        
+        if ( ( iFlags & EButtonsBTAccAvail ) && !( iFlags & EButtonsBTAcc ) )
+            {
+            iFlags |= EButtonsBTAccTmpUn;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsBTAccTmpUn;  
+            }            
+        }
+    }
+// ---------------------------------------------------------------------------
+//  SetVideoCallFlag
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetVideoCallFlag( 
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+            
+        if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsVideoCallOngoing;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsVideoCallOngoing;    
+            }            
+        
+        if ( iFlags & EButtonsVideoCallOngoing )
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVoice );
+            iTouchPane.SetButtonDimmed( EPhoneInCallCmdHold, ETrue );    
+            }
+        else
+            {
+            iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVideo );
+            iTouchPane.SetButtonDimmed( EPhoneInCallCmdHold, EFalse );
+            }            
+        }
+    }
+        
+
+// ---------------------------------------------------------
+// CPhoneButtonsController::SetInCallJoinEnabled
+// ---------------------------------------------------------
+//
+void CPhoneButtonsController::SetInCallJoinEnabled( TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+        {
+        TPhoneCmdParamBoolean* booleanParam = 
+            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+         if ( booleanParam->Boolean() )
+            {
+            iFlags |= EButtonsDimJoin;     
+            }
+        else
+            {
+            iFlags &= ~EButtonsDimJoin;    
+            }            
+        }
+    SetButtonDimming();     
+    }
+
+// ---------------------------------------------------------
+// SetButtonEnabled
+// ---------------------------------------------------------
+// 
+void CPhoneButtonsController::SetButtonEnabled( 
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == 
+        TPhoneCommandParam::EPhoneParamIdInteger )
+        { 
+        TInt commandId =
+            static_cast<TPhoneCmdParamInteger*>( aCommandParam )->Integer();
+            
+        switch ( commandId )
+            {
+            case EPhoneCallComingCmdAnswer:
+                iFlags &= ~EButtonsDimAnswer;    
+                break;
+            case EPhoneInCallCmdPrivate:
+                iFlags &= ~EButtonsDimPrivate;
+                break;
+            case EPhoneCallComingCmdSilent:
+                iFlags &= ~EButtonsDimSilence;
+                break;
+            case EPhoneInCallCmdCreateConference:
+                iFlags &= ~EButtonsDimCreateConference;
+                break;
+            case EPhoneInCallCmdHold:
+                iFlags &= ~EButtonsDimHold;
+                break;
+            default:
+                break;                
+            }
+
+        SetButtonDimming(); 
+        }    
+    }
+
+// ---------------------------------------------------------
+// SetButtonDisabled
+// ---------------------------------------------------------
+//    
+void CPhoneButtonsController::SetButtonDisabled(
+    TPhoneCommandParam* aCommandParam )
+    {
+    if ( aCommandParam->ParamId() == 
+        TPhoneCommandParam::EPhoneParamIdInteger )
+        { 
+        TInt commandId =
+            static_cast<TPhoneCmdParamInteger*>( aCommandParam )->Integer();
+            
+        switch ( commandId )
+            {
+            case EPhoneCallComingCmdAnswer:
+                iFlags |= EButtonsDimAnswer;    
+                break;
+            case EPhoneInCallCmdPrivate:
+                iFlags |= EButtonsDimPrivate;
+                break;                
+            case EPhoneCallComingCmdSilent:
+                iFlags |= EButtonsDimSilence;
+                break;
+           case EPhoneInCallCmdCreateConference:
+                iFlags |= EButtonsDimCreateConference;
+                break;
+           case EPhoneInCallCmdHold:
+                iFlags |= EButtonsDimHold;
+                break;
+            default:
+                break;                
+            }
+
+        SetButtonDimming(); 
+        }
+    }
+ 
+// ---------------------------------------------------------------------------
+// SetToggleButtons
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetToggleButtons()
+    {
+    TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
+    
+    for ( TInt i=0; i < buttonCount ; i++ )
+        {
+        switch ( iTouchPane.ButtonCommandId( i ) )
+            {
+            case EPhoneInCallCmdMute:
+                {
+                if ( iFlags & EButtonsPhoneMuted )    
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdUnmute );           
+                    }
+                }
+                break;
+                
+            case EPhoneInCallCmdUnmute:
+                {
+                if ( !( iFlags & EButtonsPhoneMuted ) )   
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdMute );           
+                    }
+                }
+                break;
+                
+            case EPhoneInCallCmdHold:
+                {
+                if ( iFlags & EButtonsCallOnHold )    
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdUnhold );           
+                    }    
+                }
+                break;
+                
+            case EPhoneInCallCmdUnhold:
+                {
+                if ( !( iFlags & EButtonsCallOnHold ) )
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdHold );           
+                    }    
+                }
+                break;
+                
+            case EPhoneInCallCmdActivateIhf:
+                {
+                if ( iFlags & EButtonsIhfActive )
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdDeactivateIhf );    
+                    }
+                }
+                break;
+                
+            case EPhoneInCallCmdDeactivateIhf:
+                {
+                if ( !( iFlags & EButtonsIhfActive ) )
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdActivateIhf );    
+                    }
+                }
+                break;
+                
+            case EPhoneInCallCmdHandset:
+                {
+                if ( iFlags & EButtonsBTAccTmpUn )
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdBtHandsfree );    
+                    }
+                }
+                break;
+            
+            case EPhoneInCallCmdBtHandsfree:
+                {
+                if ( iFlags & EButtonsBTAcc )
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdHandset );    
+                    }
+                }
+                break;
+                
+            case EPhoneInCallCmdSwitchToVideo:
+                {
+                if ( iFlags & EButtonsVideoCallOngoing )    
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVoice );           
+                    }
+                }
+                break;    
+                            
+            case EPhoneInCallCmdSwitchToVoice:
+                {
+                if ( !( iFlags & EButtonsVideoCallOngoing ) )   
+                    {
+                    iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVideo );           
+                    }
+                }
+                break;                         
+                                                            
+            default:
+                break;                                                                                                
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// ReplaceAudioButton
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::ReplaceAudioButton()
+    {
+  
+    TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
+    
+    for ( TInt i=0; i < buttonCount; i++ )    
+        {
+        TInt commandId = iTouchPane.ButtonCommandId( i );
+        
+        if( commandId == EPhoneInCallCmdHandset ||
+            commandId == EPhoneInCallCmdBtHandsfree )
+            {
+            // wired connect
+            if ( iFlags & EButtonsWiredAcc )
+                {
+                // Bt disconnect when wired
+                if ( !( iFlags & EButtonsBTAccTmpUn ) )
+                    {
+                    iTouchPane.ReplaceButton( i, 
+                    CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioDefButton ) );
+                    commandId = iTouchPane.ButtonCommandId( i );
+                    }
+                iTouchPane.SetButtonDimmed( commandId, ETrue);                    
+                }
+            // BTA connect or temporarary unavailable
+            else if ( iFlags & EButtonsBTAcc || iFlags & EButtonsBTAccTmpUn )
+                {
+                iTouchPane.SetButtonDimmed( commandId, EFalse );
+                }
+            else  
+                {
+                iTouchPane.ReplaceButton( i, 
+                    CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioDefButton ) );
+                }
+            }
+         else if ( commandId == EPhoneInCallCmdActivateIhf ||
+                   commandId == EPhoneInCallCmdDeactivateIhf )
+            {
+            // wired connect
+            if ( iFlags & EButtonsWiredAcc )
+                {
+                // Bt connect when wired
+                if ( iFlags & EButtonsBTAccTmpUn )
+                    {
+                    iTouchPane.ReplaceButton( i, 
+                    CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioBTAButton ) );
+                    commandId = iTouchPane.ButtonCommandId( i );
+                    }
+                iTouchPane.SetButtonDimmed( commandId, ETrue);                    
+                }
+            // BTA connect or temporarary unavailable
+            else if ( iFlags & EButtonsBTAcc || iFlags & EButtonsBTAccTmpUn )
+                {
+                iTouchPane.ReplaceButton( i, 
+                    CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioBTAButton ) );
+                }
+            else
+                {
+                iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                }
+            
+            }
+        }
+    SetToggleButtons();        
+    }
+
+// ---------------------------------------------------------------------------
+// SetButtonDimming
+// ---------------------------------------------------------------------------
+//
+void CPhoneButtonsController::SetButtonDimming()
+    {
+    TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
+    
+    for ( TInt i=0; i < buttonCount; i++ )    
+        {
+        TInt commandId = iTouchPane.ButtonCommandId( i );
+    
+        switch ( commandId )
+            {
+            case EPhoneCallComingCmdAnswer:
+                {
+                if ( iFlags & EButtonsDimAnswer )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }    
+                break;    
+                }                
+            case EPhoneInCallCmdPrivate:
+                {
+                if ( iFlags & EButtonsDimPrivate )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }
+                break;    
+                }
+            case EPhoneInCallCmdJoin:
+                {
+                if ( iFlags & EButtonsDimJoin )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }
+                break;    
+                }
+            case EPhoneInCallCmdHold:
+                {
+                if ( iFlags & EButtonsVideoCallOngoing || iFlags & EButtonsDimHold )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }
+                break;    
+                }
+            case EPhoneCallComingCmdSilent:
+                {
+                if ( iFlags & EButtonsDimSilence )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }
+                break;    
+                }                
+            case EPhoneInCallCmdCreateConference:
+                {
+                if ( iFlags & EButtonsDimCreateConference )
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, ETrue );
+                    }
+                else
+                    {
+                    iTouchPane.SetButtonDimmed( commandId, EFalse ); 
+                    }
+                break;  
+                }
+            default:
+                break;                    
+            } // switch
+        } // for
+
+    if ( iCustomization )
+        {
+        // Customizes touch pane button.
+        iCustomization->CustomizeTouchPaneButtons( iTouchPane );
+        }
+    }
+
+// -----------------------------------------------------------
+// CPhoneButtonsController::SetCustomization
+// -----------------------------------------------------------
+//
+void CPhoneButtonsController::SetCustomization(
+        MPhoneButtonCustomization* aCustomization )
+    {
+    iCustomization = aCustomization;
+    }
+  
+// ---------------------------------------------------------------------------
+// GetIconForCommandL
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CPhoneButtonsController::GetIconForCommandL( TInt aCommandId )
+    {
+    TAknsItemID skinId( KAknsIIDNone );
+    TInt fileIndex( 0 );
+    TInt maskIndex(0);
+    switch ( aCommandId )
+        {
+        case EPhoneInCallCmdMute:
+            {
+            skinId =KAknsIIDQgnIndiButtonMuteMic; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_mute_mic;
+            maskIndex = EMbmPhoneuiQgn_indi_button_mute_mic_mask;                     
+            break;
+            }
+        case EPhoneInCallCmdUnmute:
+            {
+            skinId = KAknsIIDQgnIndiButtonUnmuteMic; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_unmute_mic;
+            maskIndex = EMbmPhoneuiQgn_indi_button_unmute_mic_mask;     
+            break;     
+            }
+        case EPhoneInCallCmdEndAllCalls:
+            {
+            skinId = KAknsIIDQgnIndiButtonEndAllCalls; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_end_all_calls; 
+            maskIndex =  EMbmPhoneuiQgn_indi_button_end_all_calls_mask;   
+            break;           
+            }
+        case EPhoneInCallCmdHold:
+            {
+            skinId = KAknsIIDQgnIndiButtonHold; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_hold; 
+            maskIndex = EMbmPhoneuiQgn_indi_button_hold_mask;               
+            break;            
+            }
+        case EPhoneInCallCmdUnhold:
+            {
+            skinId = KAknsIIDQgnIndiButtonUnhold; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_unhold; 
+            maskIndex = EMbmPhoneuiQgn_indi_button_unhold_mask;                 
+            break;          
+            }
+        case EPhoneInCallCmdActivateIhf:
+            {
+            skinId = KAknsIIDQgnIndiButtonLoudspeaker;
+            fileIndex = EMbmPhoneuiQgn_indi_button_loudspeaker;
+            maskIndex = EMbmPhoneuiQgn_indi_button_loudspeaker_mask;                
+            break;          
+            }
+        case EPhoneInCallCmdDeactivateIhf:
+            {
+            skinId = KAknsIIDQgnIndiButtonHandset;   
+            fileIndex = EMbmPhoneuiQgn_indi_button_handset;
+            maskIndex = EMbmPhoneuiQgn_indi_button_handset_mask;                
+            break;           
+            }
+        case EPhoneInCallCmdHandset:
+            {
+            skinId = KAknsIIDQgnIndiButtonHandset;   
+            fileIndex = EMbmPhoneuiQgn_indi_button_handset;
+            maskIndex = EMbmPhoneuiQgn_indi_button_handset_mask;                 
+            break;
+            }
+        case EPhoneInCallCmdBtHandsfree:
+            {
+            skinId = KAknsIIDQgnIndiButtonBluetooth;    
+            fileIndex = EMbmPhoneuiQgn_indi_button_bluetooth;
+            maskIndex = EMbmPhoneuiQgn_indi_button_bluetooth_mask;                 
+            break;         
+            }
+        case EPhoneInCallCmdSwap:
+            {
+            skinId = KAknsIIDQgnIndiButtonSwap;  
+            fileIndex = EMbmPhoneuiQgn_indi_button_swap;
+            maskIndex = EMbmPhoneuiQgn_indi_button_swap_mask;                
+            break;
+            }
+        case EPhoneInCallCmdGoToIdle:
+            {
+            skinId = KAknsIIDQgnIndiButtonGoIdle; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_go_idle;
+            maskIndex = EMbmPhoneuiQgn_indi_button_go_idle_mask;                
+            break;           
+            }
+        case EPhoneInCallCmdCreateConference:
+            {
+            skinId = KAknsIIDQgnIndiButtonConference; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_conference;
+            maskIndex = EMbmPhoneuiQgn_indi_button_conference_mask;                
+            break;             
+            }
+        case EPhoneInCallCmdParticipants:
+            {
+            skinId = KAknsIIDQgnIndiButtonParticipants; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_participants; 
+            maskIndex = EMbmPhoneuiQgn_indi_button_participants_mask;                
+            break;
+            }
+        case EPhoneInCallCmdDrop:
+            {
+            skinId = KAknsIIDQgnIndiButtonDrop; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_drop;
+            maskIndex = EMbmPhoneuiQgn_indi_button_drop_mask;                 
+            break;
+            }
+        case EPhoneInCallCmdPrivate:
+            {
+            skinId = KAknsIIDQgnIndiButtonPrivate; 
+            fileIndex = EMbmPhoneuiQgn_indi_button_private; 
+            maskIndex = EMbmPhoneuiQgn_indi_button_private_mask;                 
+            break;
+            }
+        case EPhoneInCallCmdJoin:
+            {
+            skinId = KAknsIIDQgnIndiButtonJoin;  
+            fileIndex = EMbmPhoneuiQgn_indi_button_join;
+            maskIndex = EMbmPhoneuiQgn_indi_button_join_mask;                 
+            break;          
+            }
+        case EPhoneInCallCmdEndThisOutgoingCall: 
+            {
+            skinId = KAknsIIDQgnIndiButtonEndActiveCall;
+            fileIndex = EMbmPhoneuiQgn_indi_button_end_active_call;
+            maskIndex = EMbmPhoneuiQgn_indi_button_end_active_call_mask;
+            break;
+            }
+        case EPhoneCmdEnd:
+            {
+            skinId = KAknsIIDQgnIndiButtonEndCall;
+            fileIndex = EMbmPhoneuiQgn_indi_button_end_active_call;
+            maskIndex = EMbmPhoneuiQgn_indi_button_end_active_call_mask;
+            break;
+            }
+        case EPhoneCallComingCmdAnswer:
+            {
+            skinId = KAknsIIDQgnIndiButtonAnswer;
+            fileIndex = EMbmPhoneuiQgn_indi_button_answer;
+            maskIndex = EMbmPhoneuiQgn_indi_button_answer_mask;
+            break;
+            }
+        case EPhoneCallComingCmdReject:
+            {
+            skinId = KAknsIIDQgnIndiButtonReject;
+            fileIndex = EMbmPhoneuiQgn_indi_button_reject;
+            maskIndex = EMbmPhoneuiQgn_indi_button_reject_mask;
+            break;
+            }
+        case EPhoneInCallCmdSwitchToVideo:
+            {
+            skinId = KAknsIIDQgnIndiButtonVoiceToVideo;
+            fileIndex = EMbmPhoneuiQgn_indi_button_voice_to_video;
+            maskIndex = EMbmPhoneuiQgn_indi_button_voice_to_video_mask;
+            break;
+            }            
+        case EPhoneInCallCmdSwitchToVoice:
+            {
+            skinId = KAknsIIDQgnIndiButtonVideoToVoice;
+            fileIndex = EMbmPhoneuiQgn_indi_button_video_to_voice;
+            maskIndex = EMbmPhoneuiQgn_indi_button_video_to_voice_mask;
+            break;
+            }              
+        case EPhoneCallComingCmdSilent:
+            {
+            skinId = KAknsIIDQgnIndiButtonSilence;
+            fileIndex = EMbmPhoneuiQgn_indi_button_silence;
+            maskIndex = EMbmPhoneuiQgn_indi_button_silence_mask;
+            break;
+            }  
+        case EPhoneInCallCmdShareLiveVideo:
+            {
+            skinId = KAknsIIDQgnIndiButtonVideoShare;
+            fileIndex = EMbmPhoneuiQgn_indi_button_video_share;
+            maskIndex = EMbmPhoneuiQgn_indi_button_video_share_mask;
+            break;
+            }            
+
+        default:
+            return NULL; 
+        } // switch
+        
+    CGulIcon* icon = NULL;
+    if ( skinId != KAknsIIDNone )
+        {
+        TParse* fp = new( ELeave ) TParse();
+        CleanupStack::PushL( fp );
+        TInt err = fp->Set(KPhoneUiScalableIconFile, &KDC_APP_BITMAP_DIR, NULL); 
+
+        if (err != KErrNone)
+            {
+            User::Leave(err);
+            }
+
+        TBuf<KMaxFileName> fileName = fp->FullName();
+        CleanupStack::PopAndDestroy();  //fp
+            
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+        
+        icon = AknsUtils::CreateGulIconL( skin, 
+                                          skinId, 
+                                          fileName, 
+                                          fileIndex,
+                                          maskIndex );
+        }
+
+    return icon;  
+    }
+    
+
+// ---------------------------------------------------------------------------
+// GetButtonForCommandL
+// ---------------------------------------------------------------------------
+//
+TAknsItemID CPhoneButtonsController::GetButtonForCommandL( TInt aCommandId )
+    {
+    TAknsItemID frameId( KAknsIIDNone );
+    switch ( aCommandId )
+        {
+        case EPhoneInCallCmdEndAllCalls:
+            {
+            frameId = KAknsIIDQsnFrButtonNormalReject; 
+            break;           
+            }
+        case EPhoneInCallCmdEndThisOutgoingCall: 
+            {
+            frameId = KAknsIIDQsnFrButtonNormalReject;
+            break;
+            }
+        case EPhoneCmdEnd:
+            {
+            frameId = KAknsIIDQsnFrButtonNormalReject;
+            break;
+            }
+        case EPhoneCallComingCmdAnswer:
+            {
+            frameId = KAknsIIDQsnFrButtonNormalAnswer;
+            break;
+            }
+        case EPhoneCallComingCmdReject:
+            {
+            frameId = KAknsIIDQsnFrButtonNormalReject;
+            break;
+            }
+
+        default:
+            frameId= KAknsIIDQsnFrButtonNormal;
+            break; 
+        } // switch
+        
+    return frameId;  
+    }
+
+
+// END