diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp Tue Aug 31 15:14:29 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -52,6 +52,16 @@ // CPhoneConferenceAndCallSetup::~CPhoneConferenceAndCallSetup() { + // 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 ) ); + } } // ----------------------------------------------------------- @@ -99,25 +109,35 @@ switch ( aMessage ) { case MEngineMonitor::EPEMessageConnecting: + { iAlerting = ETrue; HandleConnectingL( aCallId ); + } break; case MEngineMonitor::EPEMessageConnected: + { HandleConnectedL( aCallId ); + } break; case MEngineMonitor::EPEMessageIdle: + { HandleIdleL( aCallId ); + } break; case MEngineMonitor::EPEMessageConferenceIdle: + { HandleConferenceIdleL(); + } break; default: + { CPhoneConference::HandlePhoneEngineMessageL( aMessage, aCallId ); + } break; } } @@ -136,6 +156,7 @@ { case EPhoneDtmfDialerCancel: { + CloseDTMFEditorL(); } break; @@ -178,6 +199,46 @@ break; } } +// ----------------------------------------------------------- +// CPhoneConferenceAndCallSetup::OpenMenuBarL +// ----------------------------------------------------------- +// +void CPhoneConferenceAndCallSetup::OpenMenuBarL() + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndCallSetup::OpenMenuBarL()"); + TInt resourceId; + + // Set specific flag to view so that DTMF menu item available + TPhoneCmdParamBoolean dtmfSendFlag; + dtmfSendFlag.SetBoolean( ETrue ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ); + + if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) + { + resourceId = EPhoneDtmfDialerMenubar; + } + else if ( IsNumberEntryVisibleL() ) + { + resourceId = EPhoneAlertingAndConfHeldCallMenuBarWithNumberEntry; + } + else if ( IsConferenceBubbleInSelectionMode() ) + { + resourceId = EPhoneConfCallParticipantsDropMenubar; + } + else + { + resourceId = EPhoneAlertingAndConfHeldCallMenuBar; + } + + TPhoneCmdParamInteger integerParam; + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( resourceId ) ); + + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, + &integerParam ); + } // ----------------------------------------------------------- // CPhoneConferenceAndCallSetup::HandleConnectingL @@ -203,7 +264,7 @@ CaptureKeysDuringCallNotificationL( EFalse ); // Remove the number entry if it isn't DTMF dialer - if ( !iOnScreenDialer || !IsNumberEntryVisibleL() ) + if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || ! IsDTMFEditorVisibleL() ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); } @@ -232,12 +293,9 @@ { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndCallSetup::HandleConnectedL()"); - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - + // Close menu bar, if it is displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); + BeginUiUpdateLC(); // Show bubble @@ -251,12 +309,13 @@ CaptureKeysDuringCallNotificationL( EFalse ); // Remove the number entry if it isn't DTMF dialer - if ( !iOnScreenDialer || !IsNumberEntryVisibleL() ) + if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || ! IsDTMFEditorVisibleL() ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); } SetTouchPaneButtons( EPhoneConferenceAndSingleButtons ); + SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate ); EndUiUpdate(); UpdateCbaL ( EPhoneCallHandlingNewCallSwapCBA ); @@ -281,14 +340,17 @@ // Stop capturing keys CaptureKeysDuringCallNotificationL( EFalse ); + // Close menu bar, if it is displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); + TPhoneCmdParamBoolean conferenceExistsForCallId; iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference, aCallId, &conferenceExistsForCallId ); if( conferenceExistsForCallId.Boolean() ) { - // Remove 'Conference on hold' global note - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveGlobalNote ); + // Remove 'Conference on hold' global note + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveGlobalNote ); // Remove conference member from conference bubble iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveFromConference, @@ -312,19 +374,17 @@ } else { - iStateMachine->ChangeState( EPhoneStateCallSetupInSingle ); + iStateMachine->ChangeState( EPhoneStateCallSetupInSingle ); } } } else - { + { // Remove outgoing call + BeginTransEffectLC( ENumberEntryOpen ); BeginUiUpdateLC(); - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); - CheckIfRestoreNEContentAfterDtmfDialer(); - if ( IsNumberEntryUsedL() ) { // Show the number entry if it exists @@ -333,14 +393,11 @@ SetTouchPaneButtons( EPhoneConferenceButtons ); EndUiUpdate(); - - // Go to conference state + EndTransEffect(); UpdateCbaL( EPhoneCallHandlingInCallCBA ); iStateMachine->ChangeState( EPhoneStateConference ); - } - + } } - // ----------------------------------------------------------- // CPhoneConferenceAndCallSetup::UpdateInCallCbaL