diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp Tue Aug 31 15:14:29 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -54,6 +54,16 @@ // CPhoneConferenceAndWaitingAndCallSetup::~CPhoneConferenceAndWaitingAndCallSetup() { + // Need to check iViewCommandHandle validity here to not + // trigger a high/can panic error in a Codescanner run. + // coverity[var_compare_op] + if ( iViewCommandHandle ) + { + TPhoneCmdParamBoolean dtmfSendFlag; + dtmfSendFlag.SetBoolean( EFalse ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ) ); + } } // ----------------------------------------------------------- @@ -104,25 +114,35 @@ switch ( aMessage ) { case MEngineMonitor::EPEMessageConnecting: + { iAlerting = ETrue; HandleConnectingL( aCallId ); + } break; case MEngineMonitor::EPEMessageConnected: + { HandleConnectedL( aCallId ); + } break; case MEngineMonitor::EPEMessageConferenceIdle: + { HandleConferenceIdleL(); + } break; case MEngineMonitor::EPEMessageIdle: + { HandleIdleL( aCallId ); + } break; default: + { CPhoneConference::HandlePhoneEngineMessageL( aMessage, aCallId ); + } break; } } @@ -141,6 +161,7 @@ { case EPhoneDtmfDialerCancel: { + CloseDTMFEditorL(); } break; @@ -176,7 +197,7 @@ // We can't answer to call in this state so display // Not allowed -note. SendGlobalErrorNoteL( - EPhoneNoteTextNotAllowed, ETrue ); + EPhoneNoteTextNotAllowed ); } break; @@ -188,6 +209,67 @@ } // ----------------------------------------------------------- +// CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) + { + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); + } + } + +// ----------------------------------------------------------- +// CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL +// ----------------------------------------------------------- +// +void CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL() + { + __LOGMETHODSTARTEND( EPhoneUIStates, + "CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL"); + + // Set specific flag to view so that DTMF menu item available + TPhoneCmdParamBoolean dtmfSendFlag; + dtmfSendFlag.SetBoolean( ETrue ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ); + + TInt resourceId ( EPhoneAlertingWaitingAndConfHeldCallMenuBar ); + if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) + { + resourceId = EPhoneDtmfDialerMenubar; + } + else if ( IsNumberEntryVisibleL() ) + { + resourceId = + EPhoneAlertingWaitingAndConfHeldCallMenuBarWithNumberEntry; + } + else if ( IsConferenceBubbleInSelectionMode() ) + { + resourceId = EPhoneConfCallParticipantsDropMenubar; + } + + TPhoneCmdParamInteger integerParam; + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( resourceId ) ); + + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, + &integerParam ); + } + +// ----------------------------------------------------------- // CPhoneConferenceAndWaitingAndCallSetup::UpdateInCallCbaL // ----------------------------------------------------------- // @@ -235,7 +317,7 @@ &callHeaderParam ); // Remove the number entry if it isn't DTMF dialer - if ( !iOnScreenDialer || !IsNumberEntryVisibleL() ) + if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); } @@ -269,12 +351,13 @@ CaptureKeysDuringCallNotificationL( EFalse ); // Remove the number entry if it isn't DTMF dialer - if ( !iOnScreenDialer || !IsNumberEntryVisibleL() ) + if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); } SetTouchPaneButtons( EPhoneWaitingCallButtons ); + SetTouchPaneButtonDisabled( EPhoneCallComingCmdAnswer ); EndUiUpdate(); // Go to Conference And Single And Waiting state @@ -302,10 +385,10 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndWaitingAndCallSetup::HandleConferenceIdleL"); + BeginUiUpdateLC(); - BeginUiUpdateLC(); - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); if ( IsNumberEntryUsedL() ) { @@ -342,16 +425,13 @@ // Reset Hold flag to view TPhoneCmdParamBoolean holdFlag; holdFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); - - // Go to Call Setup And Waiting state + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); SetTouchPaneButtons( EPhoneCallSetupButtons ); - - // No need update cbas + SetToolbarDimming( ETrue ); iStateMachine->ChangeState( EPhoneStateCallSetupAndWaiting ); } } - EndUiUpdate(); + EndUiUpdate(); } // ----------------------------------------------------------- @@ -372,6 +452,9 @@ // Stop capturing keys CaptureKeysDuringCallNotificationL( EFalse ); + // Close menu bar, if it is displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); + TPhoneCmdParamBoolean conferenceExistsForCallId; iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference, aCallId, &conferenceExistsForCallId ); @@ -426,7 +509,7 @@ UpdateCbaL( EPhoneCallHandlingInCallCBA ); iStateMachine->ChangeState( EPhoneStateConferenceAndCallSetup ); } - EndUiUpdate(); + EndUiUpdate(); } } }