diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Tue Aug 31 15:14:29 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -42,7 +42,6 @@ #include "phonelogger.h" #include "cphonecenrepproxy.h" #include "cphonepubsubproxy.h" -#include "mphonestorage.h" // ================= MEMBER FUNCTIONS ======================= @@ -66,7 +65,14 @@ // CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting() { - + if( iViewCommandHandle ) + { + TPhoneCmdParamBoolean dtmfSendFlag; + dtmfSendFlag.SetBoolean( EFalse ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( + EPhoneViewSetVideoCallDTMFVisibilityFlag, + &dtmfSendFlag ); ) + } } // ----------------------------------------------------------- @@ -143,7 +149,7 @@ break; case MEngineMonitor::EPEMessageDialing: - HandleDiallingL( aCallId ); + HandleDialingL( aCallId ); break; case MEngineMonitor::EPEMessageDisconnecting: @@ -185,9 +191,11 @@ } case EPhoneInCallCmdNewCall: + LaunchNewCallQueryL(); break; case EPhoneInCallCmdNewCallCall: + CallFromNewCallQueryL(); break; case EPhoneCallComingCmdReject: // fall through @@ -210,10 +218,6 @@ MPEPhoneModel::EPEMessageReject ); break; - case EPhoneCmdUpdateUiControls: - UpdateUiControlsL(); - break; - default: commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand ); break; @@ -222,6 +226,65 @@ return commandStatus; } +// ----------------------------------------------------------- +// CPhoneSingleAndWaiting::OpenMenuBarL +// ----------------------------------------------------------- +// +void CPhoneSingleAndWaiting::OpenMenuBarL() + { + __LOGMETHODSTARTEND( EPhoneUIStates, + "CPhoneSingleAndWaiting::OpenMenuBarL() "); + TInt resourceId ( KErrNone ); + + + if ( !IsAutoLockOn() ) + { + if( IsVideoCallActiveL() || IsVideoCallRingingL() ) + { + //DTMF hiding will be set to TRUE + if( IsVideoCallActiveL() ) + { + TPhoneCmdParamBoolean dtmfSendFlag; + dtmfSendFlag.SetBoolean( ETrue ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallDTMFVisibilityFlag, + &dtmfSendFlag ); + } + if ( IsNumberEntryVisibleL() ) + { + resourceId = EPhoneVideoCallWaitingMenubarWithNumberEntry; + } + else + { + resourceId = EPhoneVideoCallWaitingMenubar; + } + } + + else // single voice and waiting voice + { + if ( IsNumberEntryVisibleL() ) + { + resourceId = EPhoneCallWaitingMenubarWithNumberEntry; + } + else + { + resourceId = EPhoneCallWaitingMenubar; + } + } + } + else + { + resourceId = EPhoneCallWaitingLockMenubar; + } + + + TPhoneCmdParamInteger integerParam; + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( resourceId ) ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, + &integerParam ); + } + // -------------------------------------------------------------- // CPhoneSingleAndWaiting::HandleKeyMessageL // -------------------------------------------------------------- @@ -264,22 +327,6 @@ } // ----------------------------------------------------------- -// CPhoneSingleAndWaiting::HandleKeyEventL -// ----------------------------------------------------------- -// -void CPhoneSingleAndWaiting::HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode /*aEventCode*/ ) - { - if( EKeyDeviceF == aKeyEvent.iCode ) - { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); - } - } - -// ----------------------------------------------------------- // CPhoneSingleAndWaiting::HandleIdleL // ----------------------------------------------------------- // @@ -287,6 +334,8 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleIdleL() "); + // Close menu bar, if it is displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); if ( iSingleCallId == KErrNotFound ) { @@ -361,42 +410,38 @@ SetNumberEntryVisibilityL(EFalse); } - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneIncomingCallButtons ); + SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent ); // Bring up callhandling view BringIncomingToForegroundL(); //Set incoming cba iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); + UpdateSilenceButtonDimming(); // Play ringtone SetRingingTonePlaybackL( callStateData.CallId() ); } - - SetBackButtonActive(EFalse); EndUiUpdate(); + SetToolbarDimming( ETrue ); iStateMachine->ChangeState( EPhoneStateIncoming ); } else { - BeginUiUpdateLC(); // Remove call iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); - // Idle message came for waiting call if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); UpdateCbaL( EPhoneCallHandlingInCallCBA ); } else @@ -408,32 +453,30 @@ else { UpdateCbaL( EPhoneCallHandlingInCallCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and + // If numberentry is not open just check NeedToReturnToForegroundAppL and // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); } } - // Enable call UI - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) + if ( IsVideoCall( iSingleCallId ) ) { - EnableCallUIL(); - } + TPhoneCmdParamInteger uidParam; + uidParam.SetInteger( KVtUiAppUidValue.iUid ); - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - + // Set video Phone as the top application + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication, + &uidParam ); + } + SetTouchPaneButtons( EPhoneIncallButtons ); EndUiUpdate(); - // CBA updates in above if-else conditions iStateMachine->ChangeState( EPhoneStateSingle ); } - } // ----------------------------------------------------------- @@ -453,7 +496,7 @@ TInt callLabelId = CPhoneMainResourceResolver::Instance()-> ResolveResourceID( EPhoneCallOnHold ); - StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() ); + StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() ); callHeaderParam.SetLabelText( labelText ); iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, @@ -470,8 +513,6 @@ } UpdateInCallCbaL(); - - SetTouchPaneButtons( EPhoneWaitingCallButtons ); } // ----------------------------------------------------------- @@ -507,6 +548,12 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleUnholdL() "); + // Close menu if focus is somewhere else than number entry. + if ( !IsNumberEntryUsedL() ) + { + // Close menubar + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); + } // Show bubble TPhoneCmdParamCallHeaderData callHeaderParam; @@ -525,9 +572,7 @@ } // Set CBAs - UpdateInCallCbaL(); - - SetTouchPaneButtons( EPhoneWaitingCallButtons ); + UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); } // ----------------------------------------------------------- @@ -538,12 +583,7 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() "); - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - BeginUiUpdateLC(); - UpdateRemoteInfoDataL ( aCallId ); // Show bubble TPhoneCmdParamCallHeaderData callHeaderParam; @@ -556,91 +596,83 @@ holdFlag.SetBoolean( EFalse ); iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); - if ( IsNumberEntryUsedL() ) + // Close dtmf dialer if exist. + if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) + { + CloseDTMFEditorL(); + } + else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() ) { - if ( NeedToSendToBackgroundL() ) - { - // Return phone to the background if send to background is needed. - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - - UpdateCbaL( EPhoneCallHandlingInCallCBA ); - } - else - { - // Show the number entry if it exists. - SetNumberEntryVisibilityL(ETrue); - } + CloseCustomizedDialerL(); + } + + if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() ) + { + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); + UpdateCbaL( EPhoneCallHandlingInCallCBA ); } else { - // Set Two singles softkeys + // Set Two singles state softkeys UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); } - + SetTouchPaneButtons( EPhoneTwoSinglesButtons ); EndUiUpdate(); - - // Go to two singles state // CBA updates in above if-else conditions iStateMachine->ChangeState( EPhoneStateTwoSingles ); } -// ----------------------------------------------------------- -// CPhoneSingleAndWaiting::HandleDiallingL -// ----------------------------------------------------------- +// --------------------------------------------------------- +// CPhoneSingleAndWaiting::CallFromNewCallQueryL +// --------------------------------------------------------- // -void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId ) +void CPhoneSingleAndWaiting::CallFromNewCallQueryL() { __LOGMETHODSTARTEND( EPhoneUIStates, - "CPhoneSingleAndWaiting::HandleDiallingL() "); + "CPhoneSingleAndWaiting::CallFromNewCallQueryL() "); + // First get the phone number from the dialog + TPhoneCmdParamString phoneNumberParam; + HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize ); + TPtr ptr( content->Des() ); + phoneNumberParam.SetString( &ptr ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent, + &phoneNumberParam ); - BeginUiUpdateLC(); + // Store the phone number + iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr ); - // Hide number entry if it exists - SetNumberEntryVisibilityL(EFalse); + // clean up stack + CleanupStack::PopAndDestroy( content ); + + DialVoiceCallL(); + } +// ----------------------------------------------------------- +// CPhoneSingleAndWaiting::HandleDialingL +// ----------------------------------------------------------- +// +void CPhoneSingleAndWaiting::HandleDialingL( TInt aCallId ) + { + __LOGMETHODSTARTEND( EPhoneUIStates, + "CPhoneSingleAndWaiting::HandleDialingL() "); // Display call setup DisplayCallSetupL( aCallId ); - - // Set Hold flag to view ( DTMF menu label have to present ) - TPhoneCmdParamBoolean holdFlag; - holdFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); - - SetTouchPaneButtons( EPhoneCallSetupButtons ); - - EndUiUpdate(); - - // Update call setup CBAs - UpdateCbaL( EPhoneCallHandlingCallSetupCBA ); - // Go to Single And Waiting And Call Setup state iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting ); } // ----------------------------------------------------------- -// CPhoneSingleAndWaiting::DisplayCallSetupL +// CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL // ----------------------------------------------------------- // -void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId ) +EXPORT_C void CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL() { - __LOGMETHODSTARTEND( EPhoneUIStates, - "CPhoneSingleAndWaiting::DisplayCallSetupL() "); - - // Remove dialogs if necessary - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); - - // Capture keys when the phone is dialling - CaptureKeysDuringCallNotificationL( ETrue ); - - // Force telephony to the foreground - TPhoneCmdParamInteger uidParam; - uidParam.SetInteger( KUidPhoneApplication.iUid ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground, - &uidParam ); - - // Display call setup header - DisplayHeaderForOutgoingCallL( aCallId ); + // Set Hold flag to view ( DTMF menu label have to present ) + TPhoneCmdParamBoolean holdFlag; + holdFlag.SetBoolean( EFalse ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); + SetTouchPaneButtons( EPhoneCallSetupButtons ); } // ----------------------------------------------------------- @@ -651,18 +683,7 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateInCallCbaL() "); - TPhoneCmdParamInteger callIdParam; - iViewCommandHandle->ExecuteCommandL( - EPhoneViewGetExpandedBubbleCallId, &callIdParam ); - - if ( callIdParam.Integer()==iSingleCallId ) - { - CPhoneGsmInCall::UpdateInCallCbaL(); - } - else - { - iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA ); - } + UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); } // ----------------------------------------------------------- @@ -690,33 +711,9 @@ // CPhoneSingleAndWaiting::HandleDisconnectingL // ----------------------------------------------------------- // -void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt aCallId ) +void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt /*aCallId*/ ) { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) "); - - if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) ) - { - __PHONELOG( EBasic, EPhoneControl, - "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" ); - - // Keep phone on the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, - &booleanParam ); - } - } - -// ----------------------------------------------------------- -// CPhoneSingleAndWaiting::UpdateUiControlsL -// ----------------------------------------------------------- -// -void CPhoneSingleAndWaiting::UpdateUiControlsL() - { - __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) "); - - UpdateInCallCbaL(); } // End of File