phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp
changeset 72 c76a0b1755b9
parent 56 5bcb308bd24d
child 74 d1c62c765e48
equal deleted inserted replaced
64:6aaf0276100e 72:c76a0b1755b9
    69 //
    69 //
    70 void CPhoneTwoSinglesAndWaiting::ConstructL()
    70 void CPhoneTwoSinglesAndWaiting::ConstructL()
    71     {
    71     {
    72     CPhoneTwoSingles::ConstructL();
    72     CPhoneTwoSingles::ConstructL();
    73     
    73     
    74     // Fetch ringing call's id from view
       
    75     TPhoneCmdParamCallStateData callStateData;
    74     TPhoneCmdParamCallStateData callStateData;
    76     callStateData.SetCallState( EPEStateRinging );
    75     callStateData.SetCallState( EPEStateRinging );
    77     iViewCommandHandle->HandleCommandL(
    76     iViewCommandHandle->HandleCommandL(
    78         EPhoneViewGetCallIdByState, &callStateData );
    77         EPhoneViewGetCallIdByState, &callStateData );
    79     iRingingCallId = callStateData.CallId();
    78     iRingingCallId = callStateData.CallId();
   110     {
   109     {
   111     __LOGMETHODSTARTEND( EPhoneUIStates, 
   110     __LOGMETHODSTARTEND( EPhoneUIStates, 
   112         "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()");
   111         "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()");
   113     switch ( aCode )
   112     switch ( aCode )
   114         {
   113         {
   115         // send-key
   114         case EKeyYes: // send-key
   116         case EKeyYes:
       
   117             {
   115             {
   118             if( IsNumberEntryVisibleL() )
   116             if( IsNumberEntryVisibleL() )
   119                 {
   117                 {
   120                 CallFromNumberEntryL();                         
   118                 CallFromNumberEntryL();
   121                 }
   119                 }
   122             else
   120             else
   123                 {
   121                 {
   124                 // Waiting call bubble is over number entry
   122                 // Waiting call bubble is over number entry
   125                 // so display not allowed note because we
   123                 // so display not allowed note because we
   204 //
   202 //
   205 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId )
   203 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId )
   206     {
   204     {
   207     __LOGMETHODSTARTEND( EPhoneUIStates, 
   205     __LOGMETHODSTARTEND( EPhoneUIStates, 
   208         "CPhoneTwoSinglesAndWaiting::HandleIdleL()");
   206         "CPhoneTwoSinglesAndWaiting::HandleIdleL()");
   209  
   207     BeginUiUpdateLC();
   210     BeginUiUpdateLC();    
       
   211     
       
   212     // Remove call 
       
   213     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   208     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   214     
   209     
   215     if ( iRingingCallId == aCallId )
   210     if ( iRingingCallId == aCallId )
   216         {
   211         {
   217         StateTransitionToTwoSinglesL();    
   212         StateTransitionToTwoSinglesL();    
   218         }
   213         }
   219     else
   214     else
   220         {
   215         {
   221         StateTransitionToSingleAndWaitingL();
   216         StateTransitionToSingleAndWaitingL();
   222         }
   217         }
   223 
       
   224     EndUiUpdate();
   218     EndUiUpdate();
   225     }
   219     }
   226 
   220 
   227 // -----------------------------------------------------------
   221 // -----------------------------------------------------------
   228 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL
   222 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL
   232     {
   226     {
   233     __LOGMETHODSTARTEND( EPhoneUIStates, 
   227     __LOGMETHODSTARTEND( EPhoneUIStates, 
   234         "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()");
   228         "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()");
   235     if ( IsNumberEntryUsedL() )
   229     if ( IsNumberEntryUsedL() )
   236         {
   230         {
   237         // Go to background if necessary
       
   238         if ( NeedToSendToBackgroundL() )
   231         if ( NeedToSendToBackgroundL() )
   239             {
   232             {
   240             // Return phone to the background if send to background is needed.
       
   241             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   233             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   242 
       
   243             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   234             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   244             }
   235             }
   245         else
   236         else
   246             {
   237             {
   247             // Show the number entry if it exists.
       
   248             SetNumberEntryVisibilityL(ETrue);
   238             SetNumberEntryVisibilityL(ETrue);
   249             }
   239             }
   250         } 
   240         } 
   251     else
   241     else
   252         {
   242         {
   255         
   245         
   256         // If numberentry is not open just check NeedToSendToBackgroundL and 
   246         // If numberentry is not open just check NeedToSendToBackgroundL and 
   257         // sendbackround if needed.
   247         // sendbackround if needed.
   258         if ( NeedToSendToBackgroundL() )
   248         if ( NeedToSendToBackgroundL() )
   259             {
   249             {
   260             // Return phone to the background if send to background is needed.
       
   261             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   250             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   262             }
   251             }
   263         }
   252         }
   264 
   253 
   265     if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
   254     if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
   266         && iStateMachine->PhoneStorage()->IsScreenLocked() )
   255         && iStateMachine->PhoneStorage()->IsScreenLocked() )
   267         {
   256         {
   268         EnableCallUIL();
   257         EnableCallUIL();
   269         }
   258         }
   270     
   259     
   271     // Reset blocked keys list
       
   272     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   260     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   273 
       
   274     // Go to two singles state
       
   275     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   261     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   276     // CBA updates in above if-else conditions
       
   277     iStateMachine->ChangeState( EPhoneStateTwoSingles );                     
   262     iStateMachine->ChangeState( EPhoneStateTwoSingles );                     
   278     }
   263     }
   279 
   264 
   280 // -----------------------------------------------------------
   265 // -----------------------------------------------------------
   281 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL
   266 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL
   282 // -----------------------------------------------------------
   267 // -----------------------------------------------------------
   283 //
   268 //
   284 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()
   269 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()
   285     {
   270     {
   286     __LOGMETHODSTARTEND( EPhoneUIStates, 
   271     __LOGMETHODSTARTEND( EPhoneUIStates, 
   287         "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()");
   272         "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()")
   288     // Go to two singles state
       
   289     TPhoneCmdParamInteger callIdParam;
   273     TPhoneCmdParamInteger callIdParam;
   290     iViewCommandHandle->ExecuteCommandL( 
   274     iViewCommandHandle->ExecuteCommandL( 
   291             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   275             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   292     
   276     
   293     if ( callIdParam.Integer()!=iRingingCallId )
   277     if ( callIdParam.Integer()!=iRingingCallId )
   294         {
   278         {
   295         CPhoneGsmInCall::UpdateInCallCbaL();
   279         CPhoneGsmInCall::UpdateInCallCbaL();
   296         } 
   280         } 
   297     else 
   281     else 
   298         {
   282         {
   299         iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA );
   283         UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   300         }
   284         }
   301     
       
   302     // Check if HW Keys or Call UI should be disabled
       
   303     CheckDisableHWKeysAndCallUIL();
   285     CheckDisableHWKeysAndCallUIL();
   304     
       
   305     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   286     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   306   
   287     iStateMachine->ChangeState( EPhoneStateWaitingInSingle );
   307     iStateMachine->ChangeState( EPhoneStateWaitingInSingle );                             
       
   308     }
   288     }
   309 
   289 
   310 // -----------------------------------------------------------
   290 // -----------------------------------------------------------
   311 // CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL
   291 // CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL
   312 // -----------------------------------------------------------
   292 // -----------------------------------------------------------
   314 void CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL( TInt aCallId )
   294 void CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL( TInt aCallId )
   315     {
   295     {
   316     __LOGMETHODSTARTEND( EPhoneUIStates, 
   296     __LOGMETHODSTARTEND( EPhoneUIStates, 
   317         "CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL()");
   297         "CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL()");
   318     BeginUiUpdateLC();
   298     BeginUiUpdateLC();
   319     // Update call state
   299     
   320     TPhoneCmdParamCallHeaderData callHeaderParam;
       
   321 
       
   322     TInt callLabelId;
   300     TInt callLabelId;
   323     TBuf<KPhoneCallHeaderLabelMaxLength> conferenceText( KNullDesC );
   301     TBuf<KPhoneCallHeaderLabelMaxLength> conferenceText( KNullDesC );
   324     callLabelId = CPhoneMainResourceResolver::Instance()->
   302     callLabelId = CPhoneMainResourceResolver::Instance()->
   325             ResolveResourceID( EPhoneCLIConferenceCall );
   303             ResolveResourceID( EPhoneCLIConferenceCall );
   326 
       
   327     StringLoader::Load( 
   304     StringLoader::Load( 
   328         conferenceText, 
   305         conferenceText, 
   329         callLabelId, 
   306         callLabelId, 
   330         CCoeEnv::Static() );        
   307         CCoeEnv::Static() );
       
   308     
       
   309     TPhoneCmdParamCallHeaderData callHeaderParam;
   331     callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight );
   310     callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight );
   332     
       
   333     callHeaderParam.SetCallState(EPEStateConnectedConference);
   311     callHeaderParam.SetCallState(EPEStateConnectedConference);
   334     
       
   335     callHeaderParam.SetCiphering(
   312     callHeaderParam.SetCiphering(
   336         iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) );
   313         iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) );
   337         
       
   338     callHeaderParam.SetCipheringIndicatorAllowed(
   314     callHeaderParam.SetCipheringIndicatorAllowed(
   339         iStateMachine->PhoneEngineInfo()->SecureSpecified() );
   315         iStateMachine->PhoneEngineInfo()->SecureSpecified() );
   340 
       
   341     // Service identifier must be given so that service specific settings
   316     // Service identifier must be given so that service specific settings
   342     // can be taken into account at phoneuiview.
   317     // can be taken into account at phoneuiview.
   343     callHeaderParam.SetServiceId( 
   318     callHeaderParam.SetServiceId( 
   344         iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) );
   319         iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) );
   345         
   320     
   346     // Check if HW Keys or Call UI should be disabled
       
   347     CheckDisableHWKeysAndCallUIL();
   321     CheckDisableHWKeysAndCallUIL();
   348 
       
   349 
   322 
   350     iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId,
   323     iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId,
   351         &callHeaderParam );
   324         &callHeaderParam );
   352         
   325         
   353     // Clear the flag
   326     // Clear the flag
   354     TPhoneCmdParamBoolean booleanParam;
   327     TPhoneCmdParamBoolean booleanParam;
   355     booleanParam.SetBoolean( EFalse );
   328     booleanParam.SetBoolean( EFalse );
   356     iViewCommandHandle->ExecuteCommandL( 
   329     iViewCommandHandle->ExecuteCommandL( 
   357         EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
   330         EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
   358     
   331     
   359     // Set touch controls
       
   360     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   332     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   361     
       
   362     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   333     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   363     
       
   364     EndUiUpdate();
   334     EndUiUpdate();
   365     // Go to Conference And Waiting state
   335     iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting );
   366     // No need for CBA update
       
   367     iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting );                
       
   368     }
   336     }
   369     
   337     
   370 // -----------------------------------------------------------
   338 // -----------------------------------------------------------
   371 // CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL
   339 // CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL
   372 // -----------------------------------------------------------
   340 // -----------------------------------------------------------
   373 //
   341 //
   374 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()
   342 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()
   375     {
   343     {
   376     __LOGMETHODSTARTEND( EPhoneUIStates, 
   344     __LOGMETHODSTARTEND( EPhoneUIStates, 
   377         "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()");
   345         "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()");
   378 
       
   379     TPhoneCmdParamInteger callIdParam;
   346     TPhoneCmdParamInteger callIdParam;
   380     iViewCommandHandle->ExecuteCommandL( 
   347     iViewCommandHandle->ExecuteCommandL( 
   381             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   348             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   382     
       
   383     if ( callIdParam.Integer()!=iRingingCallId )
   349     if ( callIdParam.Integer()!=iRingingCallId )
   384         {
   350         {
   385         CPhoneGsmInCall::UpdateInCallCbaL();
   351         CPhoneGsmInCall::UpdateInCallCbaL();
   386         } 
   352         } 
   387     else 
   353     else 
   408 TBool CPhoneTwoSinglesAndWaiting::HandleCommandL( TInt aCommand )
   374 TBool CPhoneTwoSinglesAndWaiting::HandleCommandL( TInt aCommand )
   409     {
   375     {
   410     __LOGMETHODSTARTEND( EPhoneUIStates,
   376     __LOGMETHODSTARTEND( EPhoneUIStates,
   411         "CPhoneTwoSinglesAndWaiting::HandleCommandL() ");
   377         "CPhoneTwoSinglesAndWaiting::HandleCommandL() ");
   412     TBool commandStatus = ETrue;
   378     TBool commandStatus = ETrue;
   413 
       
   414     switch( aCommand )
   379     switch( aCommand )
   415         {
   380         {
   416         case EPhoneCmdUpdateUiControls:
   381         case EPhoneCmdUpdateUiControls:
   417             UpdateUiControlsL();
   382             UpdateUiControlsL();
   418             break;
   383             break;