phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp
branchRCL_3
changeset 61 41a7f70b3818
parent 58 40a3f856b14d
child 62 5266b1f337bd
equal deleted inserted replaced
58:40a3f856b14d 61:41a7f70b3818
    34 #include "phoneui.hrh"
    34 #include "phoneui.hrh"
    35 #include "cphonemainresourceresolver.h"
    35 #include "cphonemainresourceresolver.h"
    36 #include "phonerssbase.h"
    36 #include "phonerssbase.h"
    37 #include "phonestatedefinitionsgsm.h"
    37 #include "phonestatedefinitionsgsm.h"
    38 #include "phonelogger.h"
    38 #include "phonelogger.h"
       
    39 #include "mphonestorage.h"
    39 
    40 
    40 // ================= MEMBER FUNCTIONS =======================
    41 // ================= MEMBER FUNCTIONS =======================
    41 
    42 
    42 // C++ default constructor can NOT contain any code, that
    43 // C++ default constructor can NOT contain any code, that
    43 // might leave.
    44 // might leave.
   111         "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()");
   112         "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()");
   112     switch ( aCode )
   113     switch ( aCode )
   113         {
   114         {
   114         // send-key
   115         // send-key
   115         case EKeyYes:
   116         case EKeyYes:
   116 			{
   117             {
   117             if( IsNumberEntryVisibleL() )
   118             if( IsNumberEntryVisibleL() )
   118                 {
   119                 {
   119                 CallFromNumberEntryL();    	 					
   120                 CallFromNumberEntryL();                         
   120                 }
   121                 }
   121             else
   122             else
   122                 {
   123                 {
   123                 // Waiting call bubble is over number entry
   124                 // Waiting call bubble is over number entry
   124                 // so display not allowed note because we
   125                 // so display not allowed note because we
   125                 // can't answer the call
   126                 // can't answer the call
   126                 SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed );		 				
   127                 SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed, ETrue );                     
   127                 }
   128                 }
   128             break;
   129             break;
   129 			}
   130             }
   130 
   131 
   131         default:
   132         default:
   132             CPhoneTwoSingles::HandleKeyMessageL( aMessage, aCode );   
   133             CPhoneTwoSingles::HandleKeyMessageL( aMessage, aCode );   
   133             break;
   134             break;
       
   135         }
       
   136     }
       
   137 
       
   138 // -----------------------------------------------------------
       
   139 // CPhoneTwoSinglesAndWaiting::HandleKeyEventL
       
   140 // -----------------------------------------------------------
       
   141 //
       
   142 void CPhoneTwoSinglesAndWaiting::HandleKeyEventL(
       
   143     const TKeyEvent& aKeyEvent,
       
   144     TEventCode /*aEventCode*/ )
       
   145     {
       
   146     if( EKeyDeviceF == aKeyEvent.iCode )
       
   147         {
       
   148         __PHONELOG( EBasic, EPhoneUIStates,
       
   149             "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL-deviceF" );
       
   150         HandleHoldSwitchL();
   134         }
   151         }
   135     }
   152     }
   136 
   153 
   137 // -----------------------------------------------------------
   154 // -----------------------------------------------------------
   138 // CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL
   155 // CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL
   147     switch ( aMessage )
   164     switch ( aMessage )
   148         {
   165         {
   149         case MEngineMonitor::EPEMessageIdle:
   166         case MEngineMonitor::EPEMessageIdle:
   150             HandleIdleL( aCallId );
   167             HandleIdleL( aCallId );
   151             break;
   168             break;
   152             
   169         case MEngineMonitor::EPEMessageConnected:
       
   170             UpdateInCallCbaL();
       
   171             CPhoneTwoSingles::HandlePhoneEngineMessageL( aMessage, aCallId );
       
   172             break;           
   153         default:
   173         default:
   154             CPhoneTwoSingles::HandlePhoneEngineMessageL( aMessage, aCallId );
   174             CPhoneTwoSingles::HandlePhoneEngineMessageL( aMessage, aCallId );
   155             break;
   175             break;
   156         }
   176         }
   157     }
   177     }
   177         CPhoneState::HandleErrorL( aErrorInfo );
   197         CPhoneState::HandleErrorL( aErrorInfo );
   178         }
   198         }
   179     }
   199     }
   180 
   200 
   181 // -----------------------------------------------------------
   201 // -----------------------------------------------------------
   182 // CPhoneTwoSinglesAndWaiting::OpenMenuBarL
       
   183 // -----------------------------------------------------------
       
   184 //
       
   185 void CPhoneTwoSinglesAndWaiting::OpenMenuBarL()
       
   186     {
       
   187     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   188         "CPhoneTwoSinglesAndWaiting::OpenMenuBarL()");
       
   189 
       
   190     TInt resourceId ( EPhoneCallTwoSinglesWaitingLockMenubar );
       
   191     
       
   192     if ( !IsAutoLockOn() )
       
   193         {
       
   194         if ( IsNumberEntryVisibleL() )
       
   195             {
       
   196             resourceId = EPhoneCallActiveHeldAndWaitingMenubarWithNumberEntry;
       
   197             }
       
   198         else
       
   199             {
       
   200             resourceId = EPhoneCallActiveHeldAndWaitingMenubar;
       
   201             }
       
   202         }   
       
   203 
       
   204     TPhoneCmdParamInteger integerParam;
       
   205     integerParam.SetInteger( 
       
   206         CPhoneMainResourceResolver::Instance()->
       
   207         ResolveResourceID( resourceId ) );
       
   208     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
       
   209         &integerParam );
       
   210     }
       
   211 
       
   212 // -----------------------------------------------------------
       
   213 // CPhoneTwoSinglesAndWaiting::HandleIdleL
   202 // CPhoneTwoSinglesAndWaiting::HandleIdleL
   214 // -----------------------------------------------------------
   203 // -----------------------------------------------------------
   215 //
   204 //
   216 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId )
   205 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId )
   217     {
   206     {
   218     __LOGMETHODSTARTEND( EPhoneUIStates, 
   207     __LOGMETHODSTARTEND( EPhoneUIStates, 
   219         "CPhoneTwoSinglesAndWaiting::HandleIdleL()");
   208         "CPhoneTwoSinglesAndWaiting::HandleIdleL()");
   220     BeginUiUpdateLC();
   209  
   221     if ( !IsNumberEntryUsedL() )
   210     BeginUiUpdateLC();    
   222         {
   211     
   223         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); 
   212     // Remove call 
   224         }
       
   225     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   213     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   226     
   214     
   227     if ( iRingingCallId == aCallId )
   215     if ( iRingingCallId == aCallId )
   228         {
   216         {
   229         StateTransitionToTwoSinglesL();
   217         StateTransitionToTwoSinglesL();    
   230         }
   218         }
   231     else
   219     else
   232         {
   220         {
   233         StateTransitionToSingleAndWaitingL();
   221         StateTransitionToSingleAndWaitingL();
   234         }
   222         }
       
   223 
   235     EndUiUpdate();
   224     EndUiUpdate();
   236     }
   225     }
   237 
   226 
   238 // -----------------------------------------------------------
   227 // -----------------------------------------------------------
   239 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL
   228 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL
   244     __LOGMETHODSTARTEND( EPhoneUIStates, 
   233     __LOGMETHODSTARTEND( EPhoneUIStates, 
   245         "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()");
   234         "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()");
   246     if ( IsNumberEntryUsedL() )
   235     if ( IsNumberEntryUsedL() )
   247         {
   236         {
   248         // Go to background if necessary
   237         // Go to background if necessary
   249         if ( NeedToReturnToForegroundAppL() )
   238         if ( NeedToSendToBackgroundL() )
   250             {
   239             {
   251             // Return phone to the background if menu application is needed to foreground.
   240             // Return phone to the background if send to background is needed.
   252             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   241             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   253 
   242 
   254             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
       
   255             
       
   256             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   243             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   257             }
   244             }
   258         else
   245         else
   259             {
   246             {
   260             // Show the number entry if it exists.
   247             // Show the number entry if it exists.
   263         } 
   250         } 
   264     else
   251     else
   265         {
   252         {
   266         // Set Two singles softkeys
   253         // Set Two singles softkeys
   267         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   254         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   268 	    
   255         
   269         // If numberentry is not open just check NeedToReturnToForegroundAppL and 
   256         // If numberentry is not open just check NeedToSendToBackgroundL and 
   270         // sendbackround if needed.
   257         // sendbackround if needed.
   271         if ( NeedToReturnToForegroundAppL() )
   258         if ( NeedToSendToBackgroundL() )
   272             {
   259             {
   273             // Return phone to the background if send to background is needed.
   260             // Return phone to the background if send to background is needed.
   274             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   261             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   275             }
   262             }
   276         }
   263         }
   277 
   264 
       
   265     if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
       
   266         && iStateMachine->PhoneStorage()->IsScreenLocked() )
       
   267         {
       
   268         EnableCallUIL();
       
   269         }
       
   270     
       
   271     // Reset blocked keys list
       
   272     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
       
   273 
   278     // Go to two singles state
   274     // Go to two singles state
   279     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   280     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   275     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   281     // CBA updates in above if-else conditions
   276     // CBA updates in above if-else conditions
   282     iStateMachine->ChangeState( EPhoneStateTwoSingles );
   277     iStateMachine->ChangeState( EPhoneStateTwoSingles );                     
   283     }
   278     }
   284 
   279 
   285 // -----------------------------------------------------------
   280 // -----------------------------------------------------------
   286 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL
   281 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL
   287 // -----------------------------------------------------------
   282 // -----------------------------------------------------------
   289 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()
   284 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()
   290     {
   285     {
   291     __LOGMETHODSTARTEND( EPhoneUIStates, 
   286     __LOGMETHODSTARTEND( EPhoneUIStates, 
   292         "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()");
   287         "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()");
   293     // Go to two singles state
   288     // Go to two singles state
   294     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   289     TPhoneCmdParamInteger callIdParam;
   295   
   290     iViewCommandHandle->ExecuteCommandL( 
   296     // Set touch controls
   291             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
   297     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
   292     
       
   293     if ( callIdParam.Integer()!=iRingingCallId )
       
   294         {
       
   295         CPhoneGsmInCall::UpdateInCallCbaL();
       
   296         } 
       
   297     else 
       
   298         {
       
   299         iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA );
       
   300         }
       
   301     
       
   302     // Check if HW Keys or Call UI should be disabled
       
   303     CheckDisableHWKeysAndCallUIL();
   298     
   304     
   299     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   305     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   300   
   306   
   301     iStateMachine->ChangeState( EPhoneStateWaitingInSingle );                             
   307     iStateMachine->ChangeState( EPhoneStateWaitingInSingle );                             
   302     }
   308     }
   320 
   326 
   321     StringLoader::Load( 
   327     StringLoader::Load( 
   322         conferenceText, 
   328         conferenceText, 
   323         callLabelId, 
   329         callLabelId, 
   324         CCoeEnv::Static() );        
   330         CCoeEnv::Static() );        
   325     callHeaderParam.SetCLIText( conferenceText, CBubbleManager::ERight );
   331     callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight );
       
   332     
       
   333     callHeaderParam.SetCallState(EPEStateConnectedConference);
   326     
   334     
   327     callHeaderParam.SetCiphering(
   335     callHeaderParam.SetCiphering(
   328         iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) );
   336         iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) );
   329         
   337         
   330     callHeaderParam.SetCipheringIndicatorAllowed(
   338     callHeaderParam.SetCipheringIndicatorAllowed(
   332 
   340 
   333     // Service identifier must be given so that service specific settings
   341     // Service identifier must be given so that service specific settings
   334     // can be taken into account at phoneuiview.
   342     // can be taken into account at phoneuiview.
   335     callHeaderParam.SetServiceId( 
   343     callHeaderParam.SetServiceId( 
   336         iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) );
   344         iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) );
   337     
   345         
   338     // Set touch controls
   346     // Check if HW Keys or Call UI should be disabled
   339     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
   347     CheckDisableHWKeysAndCallUIL();
   340 
   348 
   341     SetTouchPaneButtons( EPhoneWaitingCallButtons );
       
   342 
   349 
   343     iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId,
   350     iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId,
   344         &callHeaderParam );
   351         &callHeaderParam );
   345         
   352         
   346     SetNeedToReturnToForegroundAppStatusL( EFalse );
   353     // Clear the flag
   347         
   354     TPhoneCmdParamBoolean booleanParam;
       
   355     booleanParam.SetBoolean( EFalse );
       
   356     iViewCommandHandle->ExecuteCommandL( 
       
   357         EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
       
   358     
       
   359     // Set touch controls
       
   360     SetTouchPaneButtons( EPhoneWaitingCallButtons );
       
   361     
       
   362     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
       
   363     
   348     EndUiUpdate();
   364     EndUiUpdate();
   349     // Go to Conference And Waiting state
   365     // Go to Conference And Waiting state
   350     // No need for CBA update
   366     // No need for CBA update
   351     iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting );                
   367     iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting );                
   352     }
   368     }
   357 //
   373 //
   358 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()
   374 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()
   359     {
   375     {
   360     __LOGMETHODSTARTEND( EPhoneUIStates, 
   376     __LOGMETHODSTARTEND( EPhoneUIStates, 
   361         "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()");
   377         "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()");
   362 	UpdateCbaL ( EPhoneCallHandlingCallWaitingCBA );   
   378 
       
   379     TPhoneCmdParamInteger callIdParam;
       
   380     iViewCommandHandle->ExecuteCommandL( 
       
   381             EPhoneViewGetExpandedBubbleCallId, &callIdParam );
       
   382     
       
   383     if ( callIdParam.Integer()!=iRingingCallId )
       
   384         {
       
   385         CPhoneGsmInCall::UpdateInCallCbaL();
       
   386         } 
       
   387     else 
       
   388         {
       
   389         iCbaManager->SetCbaL( EPhoneCallHandlingIncomingRejectCBA );
       
   390         }
   363     }
   391     }
   364 
   392 
   365 // -----------------------------------------------------------
   393 // -----------------------------------------------------------
   366 // CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()
   394 // CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()
   367 // -----------------------------------------------------------
   395 // -----------------------------------------------------------
   370     {
   398     {
   371     __LOGMETHODSTARTEND( EPhoneUIStates, 
   399     __LOGMETHODSTARTEND( EPhoneUIStates, 
   372         "CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()");
   400         "CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()");
   373     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   401     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   374     }
   402     }
   375     
   403 
       
   404 // -----------------------------------------------------------
       
   405 // CPhoneTwoSinglesAndWaiting::HandleCommandL
       
   406 // -----------------------------------------------------------
       
   407 //
       
   408 TBool CPhoneTwoSinglesAndWaiting::HandleCommandL( TInt aCommand )
       
   409     {
       
   410     __LOGMETHODSTARTEND( EPhoneUIStates,
       
   411         "CPhoneTwoSinglesAndWaiting::HandleCommandL() ");
       
   412     TBool commandStatus = ETrue;
       
   413 
       
   414     switch( aCommand )
       
   415         {
       
   416         case EPhoneCmdUpdateUiControls:
       
   417             UpdateUiControlsL();
       
   418             break;
       
   419 
       
   420         default:
       
   421             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
       
   422             break;
       
   423         }
       
   424 
       
   425     return commandStatus;
       
   426     }
       
   427 
       
   428 // -----------------------------------------------------------
       
   429 // CPhoneTwoSinglesAndWaiting::UpdateUiControlsL
       
   430 // -----------------------------------------------------------
       
   431 //
       
   432 void CPhoneTwoSinglesAndWaiting::UpdateUiControlsL()
       
   433     {
       
   434     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
       
   435     UpdateInCallCbaL();
       
   436     }
       
   437 
   376 // End of File
   438 // End of File