phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp
changeset 72 c76a0b1755b9
parent 56 5bcb308bd24d
child 74 d1c62c765e48
equal deleted inserted replaced
64:6aaf0276100e 72:c76a0b1755b9
    58     {
    58     {
    59     }
    59     }
    60 
    60 
    61 // -----------------------------------------------------------
    61 // -----------------------------------------------------------
    62 // CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    62 // CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    63 // Destructor
       
    64 // (other items were commented in a header).
       
    65 // -----------------------------------------------------------
    63 // -----------------------------------------------------------
    66 //
    64 //
    67 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    65 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
    68     {
    66     {
    69 
       
    70     }
    67     }
    71 
    68 
    72 // -----------------------------------------------------------
    69 // -----------------------------------------------------------
    73 // CPhoneSingleAndWaiting::ConstructL()
    70 // CPhoneSingleAndWaiting::ConstructL()
    74 // Constructor
       
    75 // (other items were commented in a header).
       
    76 // -----------------------------------------------------------
    71 // -----------------------------------------------------------
    77 //
    72 //
    78 void CPhoneSingleAndWaiting::ConstructL()
    73 void CPhoneSingleAndWaiting::ConstructL()
    79     {
    74     {
    80     CPhoneGsmInCall::ConstructL();
    75     CPhoneGsmInCall::ConstructL();
    81 
    76     
    82     TPhoneCmdParamCallStateData callStateData;
    77     TPhoneCmdParamCallStateData callStateData;
    83     callStateData.SetCallState( EPEStateConnected );
    78     callStateData.SetCallState( EPEStateConnected );
    84 
       
    85     iViewCommandHandle->HandleCommandL(
    79     iViewCommandHandle->HandleCommandL(
    86         EPhoneViewGetCallIdByState, &callStateData );
    80         EPhoneViewGetCallIdByState, &callStateData );
    87 
    81 
    88     if ( callStateData.CallId() == KErrNotFound )
    82     if ( callStateData.CallId() == KErrNotFound )
    89         {
    83         {
    90         callStateData.SetCallState( EPEStateHeld );
    84         callStateData.SetCallState( EPEStateHeld );
    91         iViewCommandHandle->HandleCommandL(
    85         iViewCommandHandle->HandleCommandL(
    92             EPhoneViewGetCallIdByState, &callStateData );
    86             EPhoneViewGetCallIdByState, &callStateData );
    93         }
    87         }
    94     iSingleCallId = callStateData.CallId();
    88     iSingleCallId = callStateData.CallId();
    95 
       
    96     __PHONELOG1( EBasic, EPhoneUIStates,
    89     __PHONELOG1( EBasic, EPhoneUIStates,
    97         "CPhoneSingleAndWaiting::ConstructL()  (iSingleCallId=%d)", iSingleCallId);
    90         "CPhoneSingleAndWaiting::ConstructL()  (iSingleCallId=%d)", iSingleCallId);
    98     }
    91     }
    99 
    92 
   100 // -----------------------------------------------------------
    93 // -----------------------------------------------------------
   101 // CPhoneSingleAndWaiting::NewL()
    94 // CPhoneSingleAndWaiting::NewL()
   102 // Constructor
       
   103 // (other items were commented in a header).
       
   104 // -----------------------------------------------------------
    95 // -----------------------------------------------------------
   105 //
    96 //
   106 CPhoneSingleAndWaiting* CPhoneSingleAndWaiting::NewL(
    97 CPhoneSingleAndWaiting* CPhoneSingleAndWaiting::NewL(
   107     MPhoneStateMachine* aStateMachine,
    98     MPhoneStateMachine* aStateMachine,
   108     MPhoneViewCommandHandle* aViewCommandHandle,
    99     MPhoneViewCommandHandle* aViewCommandHandle,
   163 TBool CPhoneSingleAndWaiting::HandleCommandL( TInt aCommand )
   154 TBool CPhoneSingleAndWaiting::HandleCommandL( TInt aCommand )
   164     {
   155     {
   165     __LOGMETHODSTARTEND( EPhoneUIStates,
   156     __LOGMETHODSTARTEND( EPhoneUIStates,
   166         "CPhoneSingleAndWaiting::HandleCommandL() ");
   157         "CPhoneSingleAndWaiting::HandleCommandL() ");
   167     TBool commandStatus = ETrue;
   158     TBool commandStatus = ETrue;
   168 
       
   169     switch( aCommand )
   159     switch( aCommand )
   170         {
   160         {
   171         case EPhoneInCallCmdHold:
   161         case EPhoneInCallCmdHold:
   172             {
   162             {
   173             iStateMachine->SetCallId( iSingleCallId );
   163             iStateMachine->SetCallId( iSingleCallId );
   201             iStateMachine->SendPhoneEngineMessage(
   191             iStateMachine->SendPhoneEngineMessage(
   202                 MPEPhoneModel::EPEMessageReject );
   192                 MPEPhoneModel::EPEMessageReject );
   203             break;
   193             break;
   204             }
   194             }
   205 
   195 
   206 
       
   207         case EPhoneInCallCmdReject:
   196         case EPhoneInCallCmdReject:
   208             iStateMachine->SetCallId( iSingleCallId );
   197             iStateMachine->SetCallId( iSingleCallId );
   209             iStateMachine->SendPhoneEngineMessage(
   198             iStateMachine->SendPhoneEngineMessage(
   210                 MPEPhoneModel::EPEMessageReject );
   199                 MPEPhoneModel::EPEMessageReject );
   211             break;
   200             break;
   216 
   205 
   217         default:
   206         default:
   218             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   207             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   219             break;
   208             break;
   220         }
   209         }
   221 
       
   222     return commandStatus;
   210     return commandStatus;
   223     }
   211     }
   224 
   212 
   225 // --------------------------------------------------------------
   213 // --------------------------------------------------------------
   226 // CPhoneSingleAndWaiting::HandleKeyMessageL
   214 // CPhoneSingleAndWaiting::HandleKeyMessageL
   232     {
   220     {
   233     __LOGMETHODSTARTEND( EPhoneUIStates,
   221     __LOGMETHODSTARTEND( EPhoneUIStates,
   234         "CPhoneSingleAndWaiting::HandleKeyMessageL() ");
   222         "CPhoneSingleAndWaiting::HandleKeyMessageL() ");
   235     switch ( aCode )
   223     switch ( aCode )
   236         {
   224         {
   237         // send-key
   225         case EKeyYes: // send-key
   238         case EKeyYes:
       
   239             {
   226             {
   240             if( IsNumberEntryVisibleL() )
   227             if( IsNumberEntryVisibleL() )
   241                 {
   228                 {
   242                 // Send a manual control sequence by providing number
       
   243                 // information with Dial command
       
   244                 CallFromNumberEntryL();
   229                 CallFromNumberEntryL();
   245                 }
   230                 }
   246              else
   231              else
   247                 {
   232                 {
   248                 // Close DTMF sending note if it exists
   233                 // Close DTMF sending note if it exists
   249                 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
   234                 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
   250 
       
   251                 // Number entry is below incoming call bubble so
       
   252                 // answer the call
       
   253                 iStateMachine->SendPhoneEngineMessage(
   235                 iStateMachine->SendPhoneEngineMessage(
   254                     CPEPhoneModelIF::EPEMessageAnswer );
   236                     CPEPhoneModelIF::EPEMessageAnswer );
   255                 }
   237                 }
   256             break;
   238             break;
   257             }
   239             }
   258 
   240 
   259         default:
   241         default:
   260             // do base operation
       
   261             CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode );
   242             CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode );
   262             break;
   243             break;
   263         }
   244         }
   264     }
   245     }
   265 
   246 
   290 
   271 
   291     if ( iSingleCallId == KErrNotFound )
   272     if ( iSingleCallId == KErrNotFound )
   292         {
   273         {
   293         TPhoneCmdParamCallStateData callStateData;
   274         TPhoneCmdParamCallStateData callStateData;
   294         callStateData.SetCallState( EPEStateDisconnecting );
   275         callStateData.SetCallState( EPEStateDisconnecting );
   295 
       
   296         iViewCommandHandle->HandleCommandL(
   276         iViewCommandHandle->HandleCommandL(
   297             EPhoneViewGetCallIdByState, &callStateData );
   277             EPhoneViewGetCallIdByState, &callStateData );
   298 
   278 
   299         if ( callStateData.CallId() == KErrNotFound )
   279         if ( callStateData.CallId() == KErrNotFound )
   300             {
   280             {
   307                 callStateData.SetCallState( EPEStateHeld );
   287                 callStateData.SetCallState( EPEStateHeld );
   308                 iViewCommandHandle->HandleCommandL(
   288                 iViewCommandHandle->HandleCommandL(
   309                     EPhoneViewGetCallIdByState, &callStateData );
   289                     EPhoneViewGetCallIdByState, &callStateData );
   310                 }
   290                 }
   311             }
   291             }
   312 
       
   313         iSingleCallId = callStateData.CallId();
   292         iSingleCallId = callStateData.CallId();
   314         }
   293         }
   315 
   294 
   316     __PHONELOG1( EBasic, EPhoneControl, 
   295     __PHONELOG1( EBasic, EPhoneControl, 
   317         "CPhoneSingleAndWaiting::HandleIdleL iSingleCallId(%d)",
   296         "CPhoneSingleAndWaiting::HandleIdleL iSingleCallId(%d)",
   318         iSingleCallId );
   297         iSingleCallId );
   319     __PHONELOG1( EBasic, EPhoneControl, 
   298     __PHONELOG1( EBasic, EPhoneControl, 
   320         "CPhoneSingleAndWaiting::HandleIdleL aCallId(%d)",
   299         "CPhoneSingleAndWaiting::HandleIdleL aCallId(%d)",
   321         aCallId );
   300         aCallId );
   322     
   301     
       
   302     // Idle message came for active call
   323     if( iSingleCallId == aCallId )
   303     if( iSingleCallId == aCallId )
   324         {
   304         {
   325         // Idle message came for active call
       
   326         BeginUiUpdateLC();
   305         BeginUiUpdateLC();
   327 
       
   328         // Remove call
       
   329         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   306         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   330 
   307 
   331         // Get waiting callId
   308         // Get waiting callId
   332         TPhoneCmdParamCallStateData callStateData;
   309         TPhoneCmdParamCallStateData callStateData;
   333         callStateData.SetCallState( EPEStateRinging );
   310         callStateData.SetCallState( EPEStateRinging );
   336         
   313         
   337         __PHONELOG1( EBasic, EPhoneControl, 
   314         __PHONELOG1( EBasic, EPhoneControl, 
   338             "CPhoneSingleAndWaiting::HandleIdleL EPEStateRinging CallId(%d)",
   315             "CPhoneSingleAndWaiting::HandleIdleL EPEStateRinging CallId(%d)",
   339             callStateData.CallId() );
   316             callStateData.CallId() );
   340         
   317         
       
   318         // Display ringing bubble
   341         if ( callStateData.CallId() > KErrNotFound )
   319         if ( callStateData.CallId() > KErrNotFound )
   342             {
   320             {
   343             // Display ringing bubble
       
   344             TPhoneCmdParamCallHeaderData callHeaderParam;
   321             TPhoneCmdParamCallHeaderData callHeaderParam;
   345             callHeaderParam.SetCallState( EPEStateRinging );
   322             callHeaderParam.SetCallState( EPEStateRinging );
   346 
   323             
   347             // Set Hold flag to view
       
   348             TPhoneCmdParamBoolean holdFlag;
   324             TPhoneCmdParamBoolean holdFlag;
   349             holdFlag.SetBoolean( EFalse );
   325             holdFlag.SetBoolean( EFalse );
   350             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   326             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   351             
   327             
   352             SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam );
   328             SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam );
   353             
   329             
   354             iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble,
   330             iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble,
   355                 callStateData.CallId(),
   331                 callStateData.CallId(),
   356                 &callHeaderParam );
   332                 &callHeaderParam );
   357 
   333 
   358             // Hide number entry if visible
       
   359             if ( IsNumberEntryVisibleL() )
   334             if ( IsNumberEntryVisibleL() )
   360                 {
   335                 {
   361                 SetNumberEntryVisibilityL(EFalse);
   336                 SetNumberEntryVisibilityL(EFalse);
   362                 }
   337                 }
   363 
   338             
   364             // Check if HW Keys or Call UI should be disabled
       
   365             CheckDisableHWKeysAndCallUIL();
   339             CheckDisableHWKeysAndCallUIL();
   366             
   340             
   367             SetTouchPaneButtons( EPhoneIncomingCallButtons );
   341             SetTouchPaneButtons( EPhoneIncomingCallButtons );
   368             
       
   369             // Bring up callhandling view
       
   370             BringIncomingToForegroundL();
   342             BringIncomingToForegroundL();
   371 
       
   372             //Set incoming cba
       
   373             iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
   343             iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
   374             
       
   375             // Play ringtone
       
   376             SetRingingTonePlaybackL( callStateData.CallId() );
   344             SetRingingTonePlaybackL( callStateData.CallId() );
   377             }
   345             }
   378 
       
   379         SetBackButtonActive(EFalse);
   346         SetBackButtonActive(EFalse);
   380         EndUiUpdate();
   347         EndUiUpdate();
   381 
       
   382         iStateMachine->ChangeState( EPhoneStateIncoming );
   348         iStateMachine->ChangeState( EPhoneStateIncoming );
   383         }
   349         }
   384     else
   350     else
   385         {
   351         {
   386 
       
   387         BeginUiUpdateLC();
   352         BeginUiUpdateLC();
   388 
       
   389         // Remove call
       
   390         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   353         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   391 
   354 
   392         // Idle message came for waiting call
   355         // Idle message came for waiting call
   393         if ( IsNumberEntryUsedL() )
   356         if ( IsNumberEntryUsedL() )
   394             {
   357             {
   395             if ( NeedToSendToBackgroundL() )
   358             if ( NeedToSendToBackgroundL() )
   396                 {
   359                 {
   397                 // Return phone to the background if send to background is needed.
       
   398                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   360                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   399 
       
   400                 UpdateCbaL( EPhoneCallHandlingInCallCBA );
   361                 UpdateCbaL( EPhoneCallHandlingInCallCBA );
   401                 }
   362                 }
   402             else
   363             else
   403                 {
   364                 {
   404                 // Show the number entry if it exists
       
   405                 SetNumberEntryVisibilityL(ETrue);
   365                 SetNumberEntryVisibilityL(ETrue);
   406                 }
   366                 }
   407             }
   367             }
   408         else
   368         else
   409             {
   369             {
   410             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   370             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   411             // If numberentry is not open just check NeedToSendToBackgroundL and
   371             // If numberentry is not open just check NeedToSendToBackgroundL and
   412             // sendbackround if needed.
   372             // sendbackround if needed.
   413             if ( NeedToSendToBackgroundL() )
   373             if ( NeedToSendToBackgroundL() )
   414                 {
   374                 {
   415                 // Return phone to the background if send to background is needed.
       
   416                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   375                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   417                 }
   376                 }
   418             }
   377             }
   419         
   378         
   420         // Enable call UI
       
   421         if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
   379         if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
   422             && iStateMachine->PhoneStorage()->IsScreenLocked() )
   380             && iStateMachine->PhoneStorage()->IsScreenLocked() )
   423             {
   381             {
   424             EnableCallUIL();
   382             EnableCallUIL();
   425             }
   383             }
   426 
       
   427         // Reset blocked keys list
       
   428         iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   384         iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   429 
       
   430         SetTouchPaneButtons( EPhoneIncallButtons );
   385         SetTouchPaneButtons( EPhoneIncallButtons );
   431         EndUiUpdate();
   386         EndUiUpdate();
   432 
       
   433         // CBA updates in above if-else conditions
       
   434         iStateMachine->ChangeState( EPhoneStateSingle );
   387         iStateMachine->ChangeState( EPhoneStateSingle );
   435         }
   388         }
   436 
   389 
   437     }
   390     }
   438 
   391 
   442 //
   395 //
   443 void CPhoneSingleAndWaiting::HandleHeldL( TInt aCallId )
   396 void CPhoneSingleAndWaiting::HandleHeldL( TInt aCallId )
   444     {
   397     {
   445     __LOGMETHODSTARTEND( EPhoneUIStates,
   398     __LOGMETHODSTARTEND( EPhoneUIStates,
   446         "CPhoneSingleAndWaiting::HandleHeldL() ");
   399         "CPhoneSingleAndWaiting::HandleHeldL() ");
   447 
       
   448      // Display hold bubble
       
   449     TPhoneCmdParamCallHeaderData callHeaderParam;
   400     TPhoneCmdParamCallHeaderData callHeaderParam;
   450     callHeaderParam.SetCallState( EPEStateHeld );
   401     callHeaderParam.SetCallState( EPEStateHeld );
   451 
       
   452     TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
   402     TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
   453     TInt callLabelId = CPhoneMainResourceResolver::Instance()->
   403     TInt callLabelId = CPhoneMainResourceResolver::Instance()->
   454             ResolveResourceID( EPhoneCallOnHold );
   404             ResolveResourceID( EPhoneCallOnHold );
   455 
   405 
   456     StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );        
   406     StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() ); 
   457     callHeaderParam.SetLabelText( labelText );
   407     callHeaderParam.SetLabelText( labelText );
   458 
   408 
   459     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   409     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   460         &callHeaderParam );
   410         &callHeaderParam );
   461 
   411 
   462     // Set Hold flag to view
       
   463     TPhoneCmdParamBoolean holdFlag;
   412     TPhoneCmdParamBoolean holdFlag;
   464     holdFlag.SetBoolean( ETrue );
   413     holdFlag.SetBoolean( ETrue );
   465     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   414     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   466 
   415 
   467     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
       
   468         {
       
   469         HandleHoldNoteL( aCallId, ETrue );
       
   470         }
       
   471 
       
   472     UpdateInCallCbaL();
   416     UpdateInCallCbaL();
   473     
       
   474     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
   417     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
   475     }
   418     }
   476 
   419 
   477 // -----------------------------------------------------------
   420 // -----------------------------------------------------------
   478 // CPhoneSingleAndWaiting::HandleConnectedL
   421 // CPhoneSingleAndWaiting::HandleConnectedL
   480 //
   423 //
   481 void CPhoneSingleAndWaiting::HandleConnectedL( TInt aCallId )
   424 void CPhoneSingleAndWaiting::HandleConnectedL( TInt aCallId )
   482     {
   425     {
   483     __LOGMETHODSTARTEND( EPhoneUIStates,
   426     __LOGMETHODSTARTEND( EPhoneUIStates,
   484         "CPhoneSingleAndWaiting::HandleConnectedL() ");
   427         "CPhoneSingleAndWaiting::HandleConnectedL() ");
   485 
       
   486     __PHONELOG1( EBasic, EPhoneUIStates,
   428     __PHONELOG1( EBasic, EPhoneUIStates,
   487         "CPhoneSingleAndWaiting::HandleConnectedL  (CallId=%d)", aCallId);
   429         "CPhoneSingleAndWaiting::HandleConnectedL  (CallId=%d)", aCallId);
   488 
       
   489     if ( iSingleCallId == aCallId )
   430     if ( iSingleCallId == aCallId )
   490         {
   431         {
   491         // Connected message came for the hold call, we still
   432         // Connected message came for the hold call, we still
   492         // have the waiting call also
   433         // have the waiting call also
   493         HandleUnholdL( aCallId );
   434         HandleUnholdL( aCallId );
   505 //
   446 //
   506 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId )
   447 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId )
   507     {
   448     {
   508     __LOGMETHODSTARTEND( EPhoneUIStates,
   449     __LOGMETHODSTARTEND( EPhoneUIStates,
   509         "CPhoneSingleAndWaiting::HandleUnholdL() ");
   450         "CPhoneSingleAndWaiting::HandleUnholdL() ");
   510 
       
   511     // Show bubble
       
   512     TPhoneCmdParamCallHeaderData callHeaderParam;
   451     TPhoneCmdParamCallHeaderData callHeaderParam;
   513     callHeaderParam.SetCallState( EPEStateConnected );
   452     callHeaderParam.SetCallState( EPEStateConnected );
   514     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   453     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   515         &callHeaderParam );
   454         &callHeaderParam );
   516 
   455 
   517     // Set Hold flag to view
       
   518     TPhoneCmdParamBoolean holdFlag;
   456     TPhoneCmdParamBoolean holdFlag;
   519     holdFlag.SetBoolean( EFalse );
   457     holdFlag.SetBoolean( EFalse );
   520     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   458     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   521 
   459 
   522     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
       
   523         {
       
   524         HandleHoldNoteL( aCallId, EFalse );
       
   525         }
       
   526 
       
   527     // Set CBAs
       
   528     UpdateInCallCbaL();
   460     UpdateInCallCbaL();
   529     
       
   530     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
   461     SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
   531     }
   462     }
   532 
   463 
   533 // -----------------------------------------------------------
   464 // -----------------------------------------------------------
   534 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL
   465 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL
   536 //
   467 //
   537 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId )
   468 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId )
   538     {
   469     {
   539     __LOGMETHODSTARTEND( EPhoneUIStates,
   470     __LOGMETHODSTARTEND( EPhoneUIStates,
   540         "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
   471         "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
   541     
       
   542     // Reset blocked keys list
       
   543     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   472     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   544     
   473     
   545     BeginUiUpdateLC();
   474     BeginUiUpdateLC();
   546 
   475 
   547     UpdateRemoteInfoDataL ( aCallId );
   476     UpdateRemoteInfoDataL ( aCallId );
   548     // Show bubble
   477     
   549     TPhoneCmdParamCallHeaderData callHeaderParam;
   478     TPhoneCmdParamCallHeaderData callHeaderParam;
   550     callHeaderParam.SetCallState( EPEStateConnected );
   479     callHeaderParam.SetCallState( EPEStateConnected );
   551     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   480     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
   552         &callHeaderParam );
   481         &callHeaderParam );
   553 
   482 
   554     // Set Hold flag to view
       
   555     TPhoneCmdParamBoolean holdFlag;
   483     TPhoneCmdParamBoolean holdFlag;
   556     holdFlag.SetBoolean( EFalse );
   484     holdFlag.SetBoolean( EFalse );
   557     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   485     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   558 
   486 
   559     if ( IsNumberEntryUsedL() )
   487     if ( IsNumberEntryUsedL() )
   560         {
   488         {
   561         if ( NeedToSendToBackgroundL() )
   489         if ( NeedToSendToBackgroundL() )
   562             {
   490             {
   563             // Return phone to the background if send to background is needed.
       
   564             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   491             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   565 
       
   566             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   492             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   567             }
   493             }
   568         else
   494         else
   569             {
   495             {
   570             // Show the number entry if it exists.
       
   571             SetNumberEntryVisibilityL(ETrue);
   496             SetNumberEntryVisibilityL(ETrue);
   572             }
   497             }
   573         }
   498         }
   574     else
   499     else
   575         {
   500         {
   576         // Set Two singles softkeys
       
   577         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   501         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   578         }
   502         }
   579 
   503 
   580     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   504     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   581     EndUiUpdate();
   505     EndUiUpdate();
   582 
       
   583     // Go to two singles state
       
   584     // CBA updates in above if-else conditions
       
   585     iStateMachine->ChangeState( EPhoneStateTwoSingles );
   506     iStateMachine->ChangeState( EPhoneStateTwoSingles );
   586     }
   507     }
   587 
   508 
   588 // -----------------------------------------------------------
   509 // -----------------------------------------------------------
   589 // CPhoneSingleAndWaiting::HandleDiallingL
   510 // CPhoneSingleAndWaiting::HandleDiallingL
   591 //
   512 //
   592 void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
   513 void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
   593     {
   514     {
   594     __LOGMETHODSTARTEND( EPhoneUIStates,
   515     __LOGMETHODSTARTEND( EPhoneUIStates,
   595         "CPhoneSingleAndWaiting::HandleDiallingL() ");
   516         "CPhoneSingleAndWaiting::HandleDiallingL() ");
   596 
       
   597     BeginUiUpdateLC();
   517     BeginUiUpdateLC();
   598 
       
   599     // Hide number entry if it exists
       
   600     SetNumberEntryVisibilityL(EFalse);
   518     SetNumberEntryVisibilityL(EFalse);
   601 
       
   602     // Display call setup
       
   603     DisplayCallSetupL( aCallId );
   519     DisplayCallSetupL( aCallId );
   604 
   520 
   605     // Set Hold flag to view ( DTMF menu label have to present )
   521     // Set Hold flag to view ( DTMF menu label have to present )
   606     TPhoneCmdParamBoolean holdFlag;
   522     TPhoneCmdParamBoolean holdFlag;
   607     holdFlag.SetBoolean( EFalse );
   523     holdFlag.SetBoolean( EFalse );
   608     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   524     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   609 
   525 
   610     SetTouchPaneButtons( EPhoneCallSetupButtons );
   526     SetTouchPaneButtons( EPhoneCallSetupButtons );
   611 
       
   612     EndUiUpdate();
   527     EndUiUpdate();
   613 
   528 
   614     // Update call setup CBAs
       
   615     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   529     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   616 
       
   617     // Go to Single And Waiting And Call Setup state
       
   618     iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
   530     iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
   619     }
   531     }
   620 
   532 
   621 // -----------------------------------------------------------
   533 // -----------------------------------------------------------
   622 // CPhoneSingleAndWaiting::DisplayCallSetupL
   534 // CPhoneSingleAndWaiting::DisplayCallSetupL
   624 //
   536 //
   625 void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
   537 void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
   626     {
   538     {
   627     __LOGMETHODSTARTEND( EPhoneUIStates,
   539     __LOGMETHODSTARTEND( EPhoneUIStates,
   628         "CPhoneSingleAndWaiting::DisplayCallSetupL() ");
   540         "CPhoneSingleAndWaiting::DisplayCallSetupL() ");
   629 
       
   630     // Remove dialogs if necessary
       
   631     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   541     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   632 
   542     
   633     // Capture keys when the phone is dialling
       
   634     CaptureKeysDuringCallNotificationL( ETrue );
       
   635 
       
   636     // Force telephony to the foreground
   543     // Force telephony to the foreground
   637     TPhoneCmdParamInteger uidParam;
   544     TPhoneCmdParamInteger uidParam;
   638     uidParam.SetInteger( KUidPhoneApplication.iUid );
   545     uidParam.SetInteger( KUidPhoneApplication.iUid );
   639     iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
   546     iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
   640         &uidParam );
   547         &uidParam );
   641 
   548     
   642     // Display call setup header
       
   643     DisplayHeaderForOutgoingCallL( aCallId );
   549     DisplayHeaderForOutgoingCallL( aCallId );
   644     }
   550     }
   645 
   551 
   646 // -----------------------------------------------------------
   552 // -----------------------------------------------------------
   647 // CPhoneSingleAndWaiting::UpdateInCallCbaL
   553 // CPhoneSingleAndWaiting::UpdateInCallCbaL
   652     __LOGMETHODSTARTEND( EPhoneUIStates,
   558     __LOGMETHODSTARTEND( EPhoneUIStates,
   653         "CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
   559         "CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
   654     TPhoneCmdParamInteger callIdParam;
   560     TPhoneCmdParamInteger callIdParam;
   655     iViewCommandHandle->ExecuteCommandL( 
   561     iViewCommandHandle->ExecuteCommandL( 
   656             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   562             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   657 
       
   658     if ( callIdParam.Integer()==iSingleCallId )
   563     if ( callIdParam.Integer()==iSingleCallId )
   659         {
   564         {
   660         CPhoneGsmInCall::UpdateInCallCbaL();
   565         CPhoneGsmInCall::UpdateInCallCbaL();
   661         } 
   566         } 
   662     else 
   567     else 
   663         {
   568         {
   664         iCbaManager->SetCbaL(  EPhoneCallHandlingCallWaitingCBA );
   569         UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   665         }
   570         }
   666     }
   571     }
   667 
   572 
   668 // -----------------------------------------------------------
   573 // -----------------------------------------------------------
   669 // CPhoneSingleAndWaiting::HandleErrorL
   574 // CPhoneSingleAndWaiting::HandleErrorL
   670 // -----------------------------------------------------------
   575 // -----------------------------------------------------------
   671 //
   576 //
   672 EXPORT_C void CPhoneSingleAndWaiting::HandleErrorL( const TPEErrorInfo& aErrorInfo )
   577 EXPORT_C void CPhoneSingleAndWaiting::HandleErrorL( const TPEErrorInfo& aErrorInfo )
   673     {
   578     {
   674     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleErrorL()");
   579     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleErrorL()");
   675 
       
   676     if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer )
   580     if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer )
   677         {
   581         {
   678         // Should not shown "Not Allowed" note, if active call.
   582         // Should not shown "Not Allowed" note, if active call.
   679         __PHONELOG1( EBasic, EPhoneUIStates,
   583         __PHONELOG1( EBasic, EPhoneUIStates,
   680             "PhoneUIControl: CPhoneSingleAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ",
   584             "PhoneUIControl: CPhoneSingleAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ",
   696     
   600     
   697     if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) )
   601     if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) )
   698         {
   602         {
   699         __PHONELOG( EBasic, EPhoneControl, 
   603         __PHONELOG( EBasic, EPhoneControl, 
   700             "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" );
   604             "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" );
   701         
       
   702         // Keep phone on the foreground
       
   703         TPhoneCmdParamBoolean booleanParam;
   605         TPhoneCmdParamBoolean booleanParam;
   704         booleanParam.SetBoolean( EFalse );
   606         booleanParam.SetBoolean( EFalse );
   705         iViewCommandHandle->ExecuteCommandL(
   607         iViewCommandHandle->ExecuteCommandL(
   706             EPhoneViewSetNeedToSendToBackgroundStatus,
   608             EPhoneViewSetNeedToSendToBackgroundStatus,
   707             &booleanParam );
   609             &booleanParam );
   713 // -----------------------------------------------------------
   615 // -----------------------------------------------------------
   714 //
   616 //
   715 void CPhoneSingleAndWaiting::UpdateUiControlsL()
   617 void CPhoneSingleAndWaiting::UpdateUiControlsL()
   716     {
   618     {
   717     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
   619     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
   718     
       
   719     UpdateInCallCbaL();
   620     UpdateInCallCbaL();
   720     }
   621     }
   721 
   622 
   722 // End of File
   623 // End of File