diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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 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