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