phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp
branchRCL_3
changeset 62 5266b1f337bd
parent 61 41a7f70b3818
child 69 8baf28733c3d
equal deleted inserted replaced
61:41a7f70b3818 62:5266b1f337bd
    40 #include "tphonecmdparamcallstatedata.h"
    40 #include "tphonecmdparamcallstatedata.h"
    41 #include "phonestatedefinitionsgsm.h"
    41 #include "phonestatedefinitionsgsm.h"
    42 #include "phonelogger.h"
    42 #include "phonelogger.h"
    43 #include "cphonecenrepproxy.h"
    43 #include "cphonecenrepproxy.h"
    44 #include "cphonepubsubproxy.h"
    44 #include "cphonepubsubproxy.h"
    45 #include "mphonestorage.h"
       
    46 
    45 
    47 // ================= MEMBER FUNCTIONS =======================
    46 // ================= MEMBER FUNCTIONS =======================
    48 
    47 
    49 // C++ default constructor can NOT contain any code, that
    48 // C++ default constructor can NOT contain any code, that
    50 // might leave.
    49 // might leave.
    64 // (other items were commented in a header).
    63 // (other items were commented in a header).
    65 // -----------------------------------------------------------
    64 // -----------------------------------------------------------
    66 //
    65 //
    67 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    66 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    68     {
    67     {
    69 
    68     if( iViewCommandHandle )
       
    69         {
       
    70         TPhoneCmdParamBoolean dtmfSendFlag;
       
    71         dtmfSendFlag.SetBoolean( EFalse );
       
    72         TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( 
       
    73                         EPhoneViewSetVideoCallDTMFVisibilityFlag,
       
    74                         &dtmfSendFlag ); )
       
    75         }
    70     }
    76     }
    71 
    77 
    72 // -----------------------------------------------------------
    78 // -----------------------------------------------------------
    73 // CPhoneSingleAndWaiting::ConstructL()
    79 // CPhoneSingleAndWaiting::ConstructL()
    74 // Constructor
    80 // Constructor
   141         case MEngineMonitor::EPEMessageConnected:
   147         case MEngineMonitor::EPEMessageConnected:
   142             HandleConnectedL( aCallId );
   148             HandleConnectedL( aCallId );
   143             break;
   149             break;
   144 
   150 
   145         case MEngineMonitor::EPEMessageDialing:
   151         case MEngineMonitor::EPEMessageDialing:
   146             HandleDiallingL( aCallId );
   152             HandleDialingL( aCallId );
   147             break;
   153             break;
   148             
   154             
   149         case MEngineMonitor::EPEMessageDisconnecting:
   155         case MEngineMonitor::EPEMessageDisconnecting:
   150             HandleDisconnectingL( aCallId );
   156             HandleDisconnectingL( aCallId );
   151             /* Flow through */
   157             /* Flow through */
   183                 CPEPhoneModelIF::EPEMessageResume );
   189                 CPEPhoneModelIF::EPEMessageResume );
   184             break;
   190             break;
   185             }
   191             }
   186 
   192 
   187         case EPhoneInCallCmdNewCall:
   193         case EPhoneInCallCmdNewCall:
       
   194             LaunchNewCallQueryL();
   188             break;
   195             break;
   189 
   196 
   190         case EPhoneInCallCmdNewCallCall:
   197         case EPhoneInCallCmdNewCallCall:
       
   198             CallFromNewCallQueryL();
   191             break;
   199             break;
   192 
   200 
   193         case EPhoneCallComingCmdReject: // fall through
   201         case EPhoneCallComingCmdReject: // fall through
   194             {
   202             {
   195             // Get waiting callid
   203             // Get waiting callid
   208             iStateMachine->SetCallId( iSingleCallId );
   216             iStateMachine->SetCallId( iSingleCallId );
   209             iStateMachine->SendPhoneEngineMessage(
   217             iStateMachine->SendPhoneEngineMessage(
   210                 MPEPhoneModel::EPEMessageReject );
   218                 MPEPhoneModel::EPEMessageReject );
   211             break;
   219             break;
   212 
   220 
   213         case EPhoneCmdUpdateUiControls:
       
   214             UpdateUiControlsL();
       
   215             break;
       
   216 
       
   217         default:
   221         default:
   218             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   222             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   219             break;
   223             break;
   220         }
   224         }
   221 
   225 
   222     return commandStatus;
   226     return commandStatus;
       
   227     }
       
   228 
       
   229 // -----------------------------------------------------------
       
   230 // CPhoneSingleAndWaiting::OpenMenuBarL
       
   231 // -----------------------------------------------------------
       
   232 //
       
   233 void CPhoneSingleAndWaiting::OpenMenuBarL()
       
   234     {
       
   235     __LOGMETHODSTARTEND( EPhoneUIStates,
       
   236         "CPhoneSingleAndWaiting::OpenMenuBarL() ");
       
   237     TInt resourceId ( KErrNone );
       
   238 
       
   239 
       
   240     if ( !IsAutoLockOn() )
       
   241         {
       
   242          if( IsVideoCallActiveL() || IsVideoCallRingingL() )
       
   243             {
       
   244             //DTMF hiding will be set to TRUE
       
   245             if( IsVideoCallActiveL() )
       
   246                 {
       
   247                 TPhoneCmdParamBoolean dtmfSendFlag;
       
   248                 dtmfSendFlag.SetBoolean( ETrue );
       
   249                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallDTMFVisibilityFlag,
       
   250                         &dtmfSendFlag );
       
   251                 }
       
   252             if ( IsNumberEntryVisibleL() )
       
   253                 {
       
   254                 resourceId = EPhoneVideoCallWaitingMenubarWithNumberEntry;
       
   255                 }
       
   256             else
       
   257                 {
       
   258                 resourceId = EPhoneVideoCallWaitingMenubar;
       
   259                 }
       
   260             }
       
   261 
       
   262         else // single voice and waiting voice
       
   263             {
       
   264             if ( IsNumberEntryVisibleL() )
       
   265                 {
       
   266                 resourceId = EPhoneCallWaitingMenubarWithNumberEntry;
       
   267                 }
       
   268             else
       
   269                 {
       
   270                 resourceId = EPhoneCallWaitingMenubar;
       
   271                 }
       
   272             }
       
   273         }
       
   274     else
       
   275         {
       
   276         resourceId = EPhoneCallWaitingLockMenubar;
       
   277         }
       
   278 
       
   279 
       
   280     TPhoneCmdParamInteger integerParam;
       
   281     integerParam.SetInteger(
       
   282         CPhoneMainResourceResolver::Instance()->
       
   283         ResolveResourceID( resourceId ) );
       
   284     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
       
   285         &integerParam );
   223     }
   286     }
   224 
   287 
   225 // --------------------------------------------------------------
   288 // --------------------------------------------------------------
   226 // CPhoneSingleAndWaiting::HandleKeyMessageL
   289 // CPhoneSingleAndWaiting::HandleKeyMessageL
   227 // --------------------------------------------------------------
   290 // --------------------------------------------------------------
   262             break;
   325             break;
   263         }
   326         }
   264     }
   327     }
   265 
   328 
   266 // -----------------------------------------------------------
   329 // -----------------------------------------------------------
   267 // CPhoneSingleAndWaiting::HandleKeyEventL
       
   268 // -----------------------------------------------------------
       
   269 //
       
   270 void CPhoneSingleAndWaiting::HandleKeyEventL(
       
   271     const TKeyEvent& aKeyEvent,
       
   272     TEventCode /*aEventCode*/ )
       
   273     {
       
   274     if( EKeyDeviceF == aKeyEvent.iCode )
       
   275         {
       
   276         __PHONELOG( EBasic, EPhoneUIStates,
       
   277             "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" );
       
   278         HandleHoldSwitchL();
       
   279         }
       
   280     }
       
   281 
       
   282 // -----------------------------------------------------------
       
   283 // CPhoneSingleAndWaiting::HandleIdleL
   330 // CPhoneSingleAndWaiting::HandleIdleL
   284 // -----------------------------------------------------------
   331 // -----------------------------------------------------------
   285 //
   332 //
   286 void CPhoneSingleAndWaiting::HandleIdleL( TInt aCallId )
   333 void CPhoneSingleAndWaiting::HandleIdleL( TInt aCallId )
   287     {
   334     {
   288     __LOGMETHODSTARTEND( EPhoneUIStates,
   335     __LOGMETHODSTARTEND( EPhoneUIStates,
   289         "CPhoneSingleAndWaiting::HandleIdleL() ");
   336         "CPhoneSingleAndWaiting::HandleIdleL() ");
       
   337     // Close menu bar, if it is displayed
       
   338     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
   290 
   339 
   291     if ( iSingleCallId == KErrNotFound )
   340     if ( iSingleCallId == KErrNotFound )
   292         {
   341         {
   293         TPhoneCmdParamCallStateData callStateData;
   342         TPhoneCmdParamCallStateData callStateData;
   294         callStateData.SetCallState( EPEStateDisconnecting );
   343         callStateData.SetCallState( EPEStateDisconnecting );
   359             if ( IsNumberEntryVisibleL() )
   408             if ( IsNumberEntryVisibleL() )
   360                 {
   409                 {
   361                 SetNumberEntryVisibilityL(EFalse);
   410                 SetNumberEntryVisibilityL(EFalse);
   362                 }
   411                 }
   363 
   412 
   364             // Check if HW Keys or Call UI should be disabled
       
   365             CheckDisableHWKeysAndCallUIL();
       
   366             
       
   367             SetTouchPaneButtons( EPhoneIncomingCallButtons );
   413             SetTouchPaneButtons( EPhoneIncomingCallButtons );
       
   414             SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent );
   368             
   415             
   369             // Bring up callhandling view
   416             // Bring up callhandling view
   370             BringIncomingToForegroundL();
   417             BringIncomingToForegroundL();
   371 
   418 
   372             //Set incoming cba
   419             //Set incoming cba
   373             iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
   420             iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
       
   421             UpdateSilenceButtonDimming();
   374             
   422             
   375             // Play ringtone
   423             // Play ringtone
   376             SetRingingTonePlaybackL( callStateData.CallId() );
   424             SetRingingTonePlaybackL( callStateData.CallId() );
   377             }
   425             }
   378 
       
   379         SetBackButtonActive(EFalse);
       
   380         EndUiUpdate();
   426         EndUiUpdate();
       
   427         SetToolbarDimming( ETrue );
   381 
   428 
   382         iStateMachine->ChangeState( EPhoneStateIncoming );
   429         iStateMachine->ChangeState( EPhoneStateIncoming );
   383         }
   430         }
   384     else
   431     else
   385         {
   432         {
   386 
       
   387         BeginUiUpdateLC();
   433         BeginUiUpdateLC();
   388 
   434 
   389         // Remove call
   435         // Remove call
   390         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   436         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   391 
       
   392         // Idle message came for waiting call
   437         // Idle message came for waiting call
   393         if ( IsNumberEntryUsedL() )
   438         if ( IsNumberEntryUsedL() )
   394             {
   439             {
   395             if ( NeedToSendToBackgroundL() )
   440             if ( NeedToReturnToForegroundAppL() )
   396                 {
   441                 {
   397                 // Return phone to the background if send to background is needed.
   442                 // Return phone to the background if send to background is needed.
   398                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   443                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   399 
   444                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
   400                 UpdateCbaL( EPhoneCallHandlingInCallCBA );
   445                 UpdateCbaL( EPhoneCallHandlingInCallCBA );
   401                 }
   446                 }
   402             else
   447             else
   403                 {
   448                 {
   404                 // Show the number entry if it exists
   449                 // Show the number entry if it exists
   406                 }
   451                 }
   407             }
   452             }
   408         else
   453         else
   409             {
   454             {
   410             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   455             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   411             // If numberentry is not open just check NeedToSendToBackgroundL and
   456             // If numberentry is not open just check NeedToReturnToForegroundAppL and
   412             // sendbackround if needed.
   457             // sendbackround if needed.
   413             if ( NeedToSendToBackgroundL() )
   458             if ( NeedToReturnToForegroundAppL() )
   414                 {
   459                 {
   415                 // Return phone to the background if send to background is needed.
   460                 // Return phone to the background if send to background is needed.
   416                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   461                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   417                 }
   462                 }
   418             }
   463             }
   419         
   464         
   420         // Enable call UI
   465         if ( IsVideoCall( iSingleCallId ) )
   421         if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
   466             {
   422             && iStateMachine->PhoneStorage()->IsScreenLocked() )
   467             TPhoneCmdParamInteger uidParam;
   423             {
   468             uidParam.SetInteger( KVtUiAppUidValue.iUid );
   424             EnableCallUIL();
   469 
   425             }
   470             // Set video Phone as the top application
   426 
   471             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
   427         // Reset blocked keys list
   472                 &uidParam );
   428         iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   473             }
   429 
   474         
   430         SetTouchPaneButtons( EPhoneIncallButtons );
   475         SetTouchPaneButtons( EPhoneIncallButtons );
   431         EndUiUpdate();
   476         EndUiUpdate();
   432 
       
   433         // CBA updates in above if-else conditions
   477         // CBA updates in above if-else conditions
   434         iStateMachine->ChangeState( EPhoneStateSingle );
   478         iStateMachine->ChangeState( EPhoneStateSingle );
   435         }
   479         }
   436 
       
   437     }
   480     }
   438 
   481 
   439 // -----------------------------------------------------------
   482 // -----------------------------------------------------------
   440 // CPhoneSingleAndWaiting::HandleHeldL
   483 // CPhoneSingleAndWaiting::HandleHeldL
   441 // -----------------------------------------------------------
   484 // -----------------------------------------------------------
   451 
   494 
   452     TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
   495     TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
   453     TInt callLabelId = CPhoneMainResourceResolver::Instance()->
   496     TInt callLabelId = CPhoneMainResourceResolver::Instance()->
   454             ResolveResourceID( EPhoneCallOnHold );
   497             ResolveResourceID( EPhoneCallOnHold );
   455 
   498 
   456     StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );        
   499     StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );
   457     callHeaderParam.SetLabelText( labelText );
   500     callHeaderParam.SetLabelText( labelText );
   458 
   501 
   459     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   502     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   460         &callHeaderParam );
   503         &callHeaderParam );
   461 
   504 
   468         {
   511         {
   469         HandleHoldNoteL( aCallId, ETrue );
   512         HandleHoldNoteL( aCallId, ETrue );
   470         }
   513         }
   471 
   514 
   472     UpdateInCallCbaL();
   515     UpdateInCallCbaL();
   473     
       
   474     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
       
   475     }
   516     }
   476 
   517 
   477 // -----------------------------------------------------------
   518 // -----------------------------------------------------------
   478 // CPhoneSingleAndWaiting::HandleConnectedL
   519 // CPhoneSingleAndWaiting::HandleConnectedL
   479 // -----------------------------------------------------------
   520 // -----------------------------------------------------------
   505 //
   546 //
   506 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId )
   547 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId )
   507     {
   548     {
   508     __LOGMETHODSTARTEND( EPhoneUIStates,
   549     __LOGMETHODSTARTEND( EPhoneUIStates,
   509         "CPhoneSingleAndWaiting::HandleUnholdL() ");
   550         "CPhoneSingleAndWaiting::HandleUnholdL() ");
       
   551     // Close menu if focus is somewhere else than number entry.
       
   552     if ( !IsNumberEntryUsedL() )
       
   553         {
       
   554         // Close menubar
       
   555         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   556         }
   510 
   557 
   511     // Show bubble
   558     // Show bubble
   512     TPhoneCmdParamCallHeaderData callHeaderParam;
   559     TPhoneCmdParamCallHeaderData callHeaderParam;
   513     callHeaderParam.SetCallState( EPEStateConnected );
   560     callHeaderParam.SetCallState( EPEStateConnected );
   514     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   561     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   523         {
   570         {
   524         HandleHoldNoteL( aCallId, EFalse );
   571         HandleHoldNoteL( aCallId, EFalse );
   525         }
   572         }
   526 
   573 
   527     // Set CBAs
   574     // Set CBAs
   528     UpdateInCallCbaL();
   575     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   529     
       
   530     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
       
   531     }
   576     }
   532 
   577 
   533 // -----------------------------------------------------------
   578 // -----------------------------------------------------------
   534 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL
   579 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL
   535 // -----------------------------------------------------------
   580 // -----------------------------------------------------------
   536 //
   581 //
   537 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId )
   582 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId )
   538     {
   583     {
   539     __LOGMETHODSTARTEND( EPhoneUIStates,
   584     __LOGMETHODSTARTEND( EPhoneUIStates,
   540         "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
   585         "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
   541     
       
   542     // Reset blocked keys list
       
   543     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
       
   544     
       
   545     BeginUiUpdateLC();
   586     BeginUiUpdateLC();
   546 
       
   547     UpdateRemoteInfoDataL ( aCallId );
   587     UpdateRemoteInfoDataL ( aCallId );
   548     // Show bubble
   588     // Show bubble
   549     TPhoneCmdParamCallHeaderData callHeaderParam;
   589     TPhoneCmdParamCallHeaderData callHeaderParam;
   550     callHeaderParam.SetCallState( EPEStateConnected );
   590     callHeaderParam.SetCallState( EPEStateConnected );
   551     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   591     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   554     // Set Hold flag to view
   594     // Set Hold flag to view
   555     TPhoneCmdParamBoolean holdFlag;
   595     TPhoneCmdParamBoolean holdFlag;
   556     holdFlag.SetBoolean( EFalse );
   596     holdFlag.SetBoolean( EFalse );
   557     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   597     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   558 
   598 
   559     if ( IsNumberEntryUsedL() )
   599     // Close dtmf dialer if exist.
   560         {
   600     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   561         if ( NeedToSendToBackgroundL() )
   601         {
   562             {
   602         CloseDTMFEditorL();
   563             // Return phone to the background if send to background is needed.
   603         }
   564             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   604     else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
   565 
   605         {
   566             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   606         CloseCustomizedDialerL();
   567             }
   607         }
   568         else
   608      
   569             {
   609     if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() )
   570             // Show the number entry if it exists.
   610         {
   571             SetNumberEntryVisibilityL(ETrue);
   611         iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
   572             }
   612         UpdateCbaL( EPhoneCallHandlingInCallCBA );
   573         }
   613         }
   574     else
   614     else
   575         {
   615         {
   576         // Set Two singles softkeys
   616         // Set Two singles state softkeys
   577         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   617         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   578         }
   618         }
   579 
   619     
   580     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   620     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   581     EndUiUpdate();
   621     EndUiUpdate();
   582 
       
   583     // Go to two singles state
       
   584     // CBA updates in above if-else conditions
   622     // CBA updates in above if-else conditions
   585     iStateMachine->ChangeState( EPhoneStateTwoSingles );
   623     iStateMachine->ChangeState( EPhoneStateTwoSingles );
   586     }
   624     }
   587 
   625 
   588 // -----------------------------------------------------------
   626 // ---------------------------------------------------------
   589 // CPhoneSingleAndWaiting::HandleDiallingL
   627 // CPhoneSingleAndWaiting::CallFromNewCallQueryL
   590 // -----------------------------------------------------------
   628 // ---------------------------------------------------------
   591 //
   629 //
   592 void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
   630 void CPhoneSingleAndWaiting::CallFromNewCallQueryL()
   593     {
   631     {
   594     __LOGMETHODSTARTEND( EPhoneUIStates,
   632     __LOGMETHODSTARTEND( EPhoneUIStates,
   595         "CPhoneSingleAndWaiting::HandleDiallingL() ");
   633         "CPhoneSingleAndWaiting::CallFromNewCallQueryL() ");
   596 
   634     // First get the phone number from the dialog
   597     BeginUiUpdateLC();
   635     TPhoneCmdParamString phoneNumberParam;
   598 
   636     HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
   599     // Hide number entry if it exists
   637     TPtr ptr( content->Des() );
   600     SetNumberEntryVisibilityL(EFalse);
   638     phoneNumberParam.SetString( &ptr );
   601 
   639     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
       
   640         &phoneNumberParam );
       
   641 
       
   642     // Store the phone number
       
   643     iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
       
   644 
       
   645     // clean up stack
       
   646     CleanupStack::PopAndDestroy( content );
       
   647 
       
   648     DialVoiceCallL();
       
   649     }
       
   650 
       
   651 // -----------------------------------------------------------
       
   652 // CPhoneSingleAndWaiting::HandleDialingL
       
   653 // -----------------------------------------------------------
       
   654 //
       
   655 void CPhoneSingleAndWaiting::HandleDialingL( TInt aCallId )
       
   656     {
       
   657     __LOGMETHODSTARTEND( EPhoneUIStates,
       
   658         "CPhoneSingleAndWaiting::HandleDialingL() ");
   602     // Display call setup
   659     // Display call setup
   603     DisplayCallSetupL( aCallId );
   660     DisplayCallSetupL( aCallId );
   604 
   661     // Go to Single And Waiting And Call Setup state
       
   662     iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
       
   663     }
       
   664 
       
   665 // -----------------------------------------------------------
       
   666 // CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL
       
   667 // -----------------------------------------------------------
       
   668 //
       
   669 EXPORT_C void CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL()
       
   670     {
   605     // Set Hold flag to view ( DTMF menu label have to present )
   671     // Set Hold flag to view ( DTMF menu label have to present )
   606     TPhoneCmdParamBoolean holdFlag;
   672     TPhoneCmdParamBoolean holdFlag;
   607     holdFlag.SetBoolean( EFalse );
   673     holdFlag.SetBoolean( EFalse );
   608     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   674     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   609 
       
   610     SetTouchPaneButtons( EPhoneCallSetupButtons );
   675     SetTouchPaneButtons( EPhoneCallSetupButtons );
   611 
       
   612     EndUiUpdate();
       
   613 
       
   614     // Update call setup CBAs
       
   615     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
       
   616 
       
   617     // Go to Single And Waiting And Call Setup state
       
   618     iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
       
   619     }
       
   620 
       
   621 // -----------------------------------------------------------
       
   622 // CPhoneSingleAndWaiting::DisplayCallSetupL
       
   623 // -----------------------------------------------------------
       
   624 //
       
   625 void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
       
   626     {
       
   627     __LOGMETHODSTARTEND( EPhoneUIStates,
       
   628         "CPhoneSingleAndWaiting::DisplayCallSetupL() ");
       
   629 
       
   630     // Remove dialogs if necessary
       
   631     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
       
   632 
       
   633     // Capture keys when the phone is dialling
       
   634     CaptureKeysDuringCallNotificationL( ETrue );
       
   635 
       
   636     // Force telephony to the foreground
       
   637     TPhoneCmdParamInteger uidParam;
       
   638     uidParam.SetInteger( KUidPhoneApplication.iUid );
       
   639     iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
       
   640         &uidParam );
       
   641 
       
   642     // Display call setup header
       
   643     DisplayHeaderForOutgoingCallL( aCallId );
       
   644     }
   676     }
   645 
   677 
   646 // -----------------------------------------------------------
   678 // -----------------------------------------------------------
   647 // CPhoneSingleAndWaiting::UpdateInCallCbaL
   679 // CPhoneSingleAndWaiting::UpdateInCallCbaL
   648 // -----------------------------------------------------------
   680 // -----------------------------------------------------------
   649 //
   681 //
   650 void CPhoneSingleAndWaiting::UpdateInCallCbaL()
   682 void CPhoneSingleAndWaiting::UpdateInCallCbaL()
   651     {
   683     {
   652     __LOGMETHODSTARTEND( EPhoneUIStates,
   684     __LOGMETHODSTARTEND( EPhoneUIStates,
   653         "CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
   685         "CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
   654     TPhoneCmdParamInteger callIdParam;
   686      UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   655     iViewCommandHandle->ExecuteCommandL( 
       
   656             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
       
   657 
       
   658     if ( callIdParam.Integer()==iSingleCallId )
       
   659         {
       
   660         CPhoneGsmInCall::UpdateInCallCbaL();
       
   661         } 
       
   662     else 
       
   663         {
       
   664         iCbaManager->SetCbaL(  EPhoneCallHandlingCallWaitingCBA );
       
   665         }
       
   666     }
   687     }
   667 
   688 
   668 // -----------------------------------------------------------
   689 // -----------------------------------------------------------
   669 // CPhoneSingleAndWaiting::HandleErrorL
   690 // CPhoneSingleAndWaiting::HandleErrorL
   670 // -----------------------------------------------------------
   691 // -----------------------------------------------------------
   688 
   709 
   689 // -----------------------------------------------------------
   710 // -----------------------------------------------------------
   690 // CPhoneSingleAndWaiting::HandleDisconnectingL
   711 // CPhoneSingleAndWaiting::HandleDisconnectingL
   691 // -----------------------------------------------------------
   712 // -----------------------------------------------------------
   692 //
   713 //
   693 void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt aCallId )
   714 void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt /*aCallId*/ )
   694     {
   715     {
   695     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) ");
   716     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) ");
   696     
       
   697     if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) )
       
   698         {
       
   699         __PHONELOG( EBasic, EPhoneControl, 
       
   700             "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" );
       
   701         
       
   702         // Keep phone on the foreground
       
   703         TPhoneCmdParamBoolean booleanParam;
       
   704         booleanParam.SetBoolean( EFalse );
       
   705         iViewCommandHandle->ExecuteCommandL(
       
   706             EPhoneViewSetNeedToSendToBackgroundStatus,
       
   707             &booleanParam );
       
   708         }
       
   709     }
       
   710 
       
   711 // -----------------------------------------------------------
       
   712 // CPhoneSingleAndWaiting::UpdateUiControlsL
       
   713 // -----------------------------------------------------------
       
   714 //
       
   715 void CPhoneSingleAndWaiting::UpdateUiControlsL()
       
   716     {
       
   717     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
       
   718     
       
   719     UpdateInCallCbaL();
       
   720     }
   717     }
   721 
   718 
   722 // End of File
   719 // End of File