phoneapp/phoneuicontrol/src/cphonestateincall.cpp
changeset 65 2a5d4ab426d3
parent 50 377c906a8701
child 74 d1c62c765e48
equal deleted inserted replaced
60:1eef62f5c541 65:2a5d4ab426d3
    74 //
    74 //
    75 EXPORT_C CPhoneStateInCall::~CPhoneStateInCall()
    75 EXPORT_C CPhoneStateInCall::~CPhoneStateInCall()
    76     {
    76     {
    77     if( iDtmfWaitCharTimer )
    77     if( iDtmfWaitCharTimer )
    78         {
    78         {
    79         delete iDtmfWaitCharTimer;            
    79         delete iDtmfWaitCharTimer;
    80         }
    80         }
    81     }
    81     }
    82 
    82 
    83 // -----------------------------------------------------------
    83 // -----------------------------------------------------------
    84 // CPhoneStateInCall::ConstructL()
    84 // CPhoneStateInCall::ConstructL()
   124     {
   124     {
   125     __LOGMETHODSTARTEND(EPhoneControl,  
   125     __LOGMETHODSTARTEND(EPhoneControl,  
   126         "CPhoneStateInCall::HandleKeyMessageL()" ); 
   126         "CPhoneStateInCall::HandleKeyMessageL()" ); 
   127     switch ( aCode )
   127     switch ( aCode )
   128         {
   128         {
   129         // end-key
   129         case EKeyNo: // end-key
   130         case EKeyNo:
       
   131             HandleEndKeyPressL( aMessage );
   130             HandleEndKeyPressL( aMessage );
   132             break;
   131             break;
   133 
   132 
   134         // Voice key
   133         case EKeyDevice6: // Voice key
   135         case EKeyDevice6:
       
   136             HandleVoiceKeyPressL( aMessage ); 
   134             HandleVoiceKeyPressL( aMessage ); 
   137             break;
   135             break;
   138             
   136             
   139 #ifdef RD_INTELLIGENT_TEXT_INPUT
   137 #ifdef RD_INTELLIGENT_TEXT_INPUT
   140         case EKeyEnter:
   138         case EKeyEnter:
   142                 {
   140                 {
   143                 HandleCommandL( EPhoneCmdOptions );
   141                 HandleCommandL( EPhoneCmdOptions );
   144                 }
   142                 }
   145             break;
   143             break;
   146 #endif            
   144 #endif            
   147           
       
   148         default:
   145         default:
   149             break;
   146             break;
   150         }
   147         }
   151     }
   148     }
   152 
   149 
   204             HandleAudioVolumeChangedL();
   201             HandleAudioVolumeChangedL();
   205             break;
   202             break;
   206             
   203             
   207         case MEngineMonitor::EPEMessageDisconnecting:
   204         case MEngineMonitor::EPEMessageDisconnecting:
   208             CancelDTMFSendingL();
   205             CancelDTMFSendingL();
   209             if ( !CPhoneState::IsAnyConnectedCalls() )
       
   210                 {
       
   211                 CloseDtmfQueryL();
       
   212                 }            
       
   213             CPhoneState::HandlePhoneEngineMessageL( aMessage, aCallId );
   206             CPhoneState::HandlePhoneEngineMessageL( aMessage, aCallId );
   214             break; 
   207             break; 
   215             
   208             
   216         case MEngineMonitor::EPEMessageInValidEmergencyNumber:
   209         case MEngineMonitor::EPEMessageInValidEmergencyNumber:
   217             SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed, ETrue );
   210             SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed, ETrue );
   218             break;
   211             break;
   219             
   212             
   220         case MEngineMonitor::EPEMessageValidEmergencyNumber:
   213         case MEngineMonitor::EPEMessageValidEmergencyNumber:
   221             DialVoiceCallL();
   214             DialVoiceCallL();
   222             break;    
   215             break;
   223         
   216         
   224         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
   217         case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
   225             // If there is a waiting call then update header and label
   218             // If there is a waiting call then update header and label
   226             // else forward message to CPhoneState.
   219             // else forward message to CPhoneState.
   227             if ( IsWaitingCallL( aCallId ) )
   220             if ( IsWaitingCallL( aCallId ) )
   249         TInt aCallId, 
   242         TInt aCallId, 
   250         TPhoneCmdParamCallHeaderData aCallHeaderParam )
   243         TPhoneCmdParamCallHeaderData aCallHeaderParam )
   251     {
   244     {
   252     __LOGMETHODSTARTEND(EPhoneControl,
   245     __LOGMETHODSTARTEND(EPhoneControl,
   253             "CPhoneStateInCall::UpdateRemoteInfoDataAndLabelL ()" );
   246             "CPhoneStateInCall::UpdateRemoteInfoDataAndLabelL ()" );
   254     // Update the remote info data in the call header
       
   255     iViewCommandHandle->ExecuteCommandL( 
   247     iViewCommandHandle->ExecuteCommandL( 
   256         EPhoneViewUpdateCallHeaderRemoteInfoDataAndLabel, 
   248         EPhoneViewUpdateCallHeaderRemoteInfoDataAndLabel, 
   257         aCallId,
   249         aCallId,
   258         &aCallHeaderParam );
   250         &aCallHeaderParam );
   259     }
   251     }
   262 // CPhoneStateInCall::HandleIdleL
   254 // CPhoneStateInCall::HandleIdleL
   263 // -----------------------------------------------------------
   255 // -----------------------------------------------------------
   264 //
   256 //
   265 EXPORT_C void CPhoneStateInCall::HandleIdleL( TInt aCallId )
   257 EXPORT_C void CPhoneStateInCall::HandleIdleL( TInt aCallId )
   266     {
   258     {
   267     __LOGMETHODSTARTEND(EPhoneControl,  
   259     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::HandleIdleL()" );
   268         "CPhoneStateInCall::HandleIdleL()" );
       
   269     __ASSERT_DEBUG( aCallId >= 0, Panic( EPhoneCtrlParameterNotInitialized ) );
   260     __ASSERT_DEBUG( aCallId >= 0, Panic( EPhoneCtrlParameterNotInitialized ) );
   270     
       
   271     TBool showDialer( EFalse );
   261     TBool showDialer( EFalse );
   272     HBufC *phoneNumber = HBufC::NewLC( KPhoneNumberEntryBufferSize );
   262     HBufC *phoneNumber = HBufC::NewLC( KPhoneNumberEntryBufferSize );
   273     TPtr ptr( phoneNumber->Des() );
   263     TPtr ptr( phoneNumber->Des() );
   274     TPhoneCmdParamString stringParam;
   264     TPhoneCmdParamString stringParam;
   275     stringParam.SetString( &ptr );
   265     stringParam.SetString( &ptr );
   276 
   266     
   277     // Remove call 
       
   278     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   267     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   279   
       
   280     //Make sure that toolbar is not shown
       
   281     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
   268     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
       
   269     
   282     BeginUiUpdateLC();
   270     BeginUiUpdateLC();
   283     SetDefaultFlagsL();
   271     SetDefaultFlagsL();
   284     if ( IsNumberEntryUsedL() )
   272     if ( IsNumberEntryUsedL() )
   285         {
   273         {
   286         iViewCommandHandle->ExecuteCommand(
   274         iViewCommandHandle->ExecuteCommand(
   289         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
   277         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
   290         showDialer = ETrue;
   278         showDialer = ETrue;
   291         }
   279         }
   292     
   280     
   293     if ( !TopAppIsDisplayedL() || IsAutoLockOn() )
   281     if ( !TopAppIsDisplayedL() || IsAutoLockOn() )
   294         {        
   282         {
   295         // Continue displaying current app but set up the 
   283         // Continue displaying current app but set up the 
   296         // idle screen in the background
   284         // idle screen in the background
   297         SetupIdleScreenInBackgroundL();
   285         SetupIdleScreenInBackgroundL();
   298         }
   286         }
   299     else if ( showDialer )
   287     else if ( showDialer )
   300         {
   288         {
   301         // Open dialer
       
   302         iViewCommandHandle->ExecuteCommandL( EPhoneViewLaunchLogs, &stringParam );
   289         iViewCommandHandle->ExecuteCommandL( EPhoneViewLaunchLogs, &stringParam );
   303         }
   290         }
   304     else 
   291     else 
   305         {
   292         {
   306         // Display idle screen and update CBAs
       
   307         DisplayIdleScreenL();
   293         DisplayIdleScreenL();
   308         }
   294         }
   309         
   295         
   310     DeleteTouchPaneButtons();        
   296     DeleteTouchPaneButtons();
   311     EndUiUpdate();
   297     EndUiUpdate();
   312     // Display call termination note, if necessary
       
   313     DisplayCallTerminationNoteL();
   298     DisplayCallTerminationNoteL();
   314 
   299 
   315     TPhoneCmdParamKeyCapture captureParam;
   300     TPhoneCmdParamKeyCapture captureParam;
   316     captureParam.SetKeyCode( EKeyNo );
   301     captureParam.SetKeyCode( EKeyNo );
   317     iViewCommandHandle->ExecuteCommand( EPhoneViewStopCapturingKey, &captureParam );
   302     iViewCommandHandle->ExecuteCommand( EPhoneViewStopCapturingKey, &captureParam );
   318     
       
   319     CleanupStack::PopAndDestroy( phoneNumber );
   303     CleanupStack::PopAndDestroy( phoneNumber );
   320     // Go to idle state
       
   321     iStateMachine->ChangeState( EPhoneStateIdle );
   304     iStateMachine->ChangeState( EPhoneStateIdle );
   322     }
   305     }
   323 
   306 
   324 // -----------------------------------------------------------
   307 // -----------------------------------------------------------
   325 // CPhoneStateInCall::UpdateInCallCbaL
   308 // CPhoneStateInCall::UpdateInCallCbaL
   336 // -----------------------------------------------------------
   319 // -----------------------------------------------------------
   337 //
   320 //
   338 EXPORT_C void CPhoneStateInCall::UpdateCbaL( TInt aResource )
   321 EXPORT_C void CPhoneStateInCall::UpdateCbaL( TInt aResource )
   339     {
   322     {
   340     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::UpdateCbaL() ");
   323     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::UpdateCbaL() ");
   341     iCbaManager->UpdateCbaL( aResource );   
   324     iCbaManager->UpdateCbaL( aResource );
   342     }
   325     }
   343 
   326 
   344 // -----------------------------------------------------------
   327 // -----------------------------------------------------------
   345 // CPhoneStateInCall::HandleAudioMuteChangedL
   328 // CPhoneStateInCall::HandleAudioMuteChangedL
   346 // -----------------------------------------------------------
   329 // -----------------------------------------------------------
   348 void CPhoneStateInCall::HandleAudioMuteChangedL()
   331 void CPhoneStateInCall::HandleAudioMuteChangedL()
   349     {
   332     {
   350     __LOGMETHODSTARTEND(EPhoneControl,  
   333     __LOGMETHODSTARTEND(EPhoneControl,  
   351         "CPhoneStateInCall::HandleAudioMuteChangedL()" );
   334         "CPhoneStateInCall::HandleAudioMuteChangedL()" );
   352     CPhoneState::HandleAudioMuteChangedL();
   335     CPhoneState::HandleAudioMuteChangedL();
   353 
       
   354     // Update the single call CBA only if the number entry is not
   336     // Update the single call CBA only if the number entry is not
   355     // used
   337     // used
   356     if ( !IsNumberEntryUsedL() )
   338     if ( !IsNumberEntryUsedL() )
   357         {
   339         {
   358         // Go to current state implementation
   340         // Go to current state implementation
   366 //
   348 //
   367 void CPhoneStateInCall::HandleAudioOutputChangedL()
   349 void CPhoneStateInCall::HandleAudioOutputChangedL()
   368     {
   350     {
   369     __LOGMETHODSTARTEND(EPhoneControl,  
   351     __LOGMETHODSTARTEND(EPhoneControl,  
   370         "CPhoneStateInCall::HandleAudioOutputChangedL()" );
   352         "CPhoneStateInCall::HandleAudioOutputChangedL()" );
   371     // Handle the handsfree mode change
       
   372     CPhoneState::HandleAudioOutputChangedL();
   353     CPhoneState::HandleAudioOutputChangedL();
   373 
   354 
   374     // Update the single call CBA only if the number entry is not
   355     UpdateInCallCbaL();
   375     // used
       
   376     if ( !IsNumberEntryVisibleL() )
       
   377         {
       
   378         // Go to current state implementation
       
   379         UpdateInCallCbaL();
       
   380         }
       
   381     
   356     
   382     SetTouchPaneButtons(0);
   357     SetTouchPaneButtons(0);
   383     }
   358     }
   384 
   359 
   385 // -----------------------------------------------------------
   360 // -----------------------------------------------------------
   388 //
   363 //
   389 void CPhoneStateInCall::HandleAudioVolumeChangedL()
   364 void CPhoneStateInCall::HandleAudioVolumeChangedL()
   390     {
   365     {
   391     __LOGMETHODSTARTEND(EPhoneControl,  
   366     __LOGMETHODSTARTEND(EPhoneControl,  
   392         "CPhoneStateInCall::HandleAudioVolumeChangedL()" );
   367         "CPhoneStateInCall::HandleAudioVolumeChangedL()" );
   393     // Update the volume display
       
   394     TInt audioVolume = iStateMachine->PhoneEngineInfo()->AudioVolume();
   368     TInt audioVolume = iStateMachine->PhoneEngineInfo()->AudioVolume();
   395     TPhoneCmdParamInteger volumeParam;
   369     TPhoneCmdParamInteger volumeParam;
   396     volumeParam.SetInteger( audioVolume );
   370     volumeParam.SetInteger( audioVolume );
   397     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetNaviPaneAudioVolume,
   371     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetNaviPaneAudioVolume,
   398         &volumeParam );
   372         &volumeParam );
   408         "CPhoneStateInCall::HandleSendingDTMFL()" );
   382         "CPhoneStateInCall::HandleSendingDTMFL()" );
   409     TPhoneCmdParamNote noteParam;
   383     TPhoneCmdParamNote noteParam;
   410     noteParam.SetType( EPhoneNoteDtmfSending );
   384     noteParam.SetType( EPhoneNoteDtmfSending );
   411     noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
   385     noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
   412         ResolveResourceID( EPhoneSendingDtmfWaitNote ) );
   386         ResolveResourceID( EPhoneSendingDtmfWaitNote ) );
   413 
   387     
   414     // Show the "Sending..." Wait Note, and pre-populate it 
   388     // Show the "Sending..." Wait Note, and pre-populate it 
   415     // with the PhoneEngine's current DTMF String.
   389     // with the PhoneEngine's current DTMF String.
   416     // Set the text for the wait-note.
   390     // Set the text for the wait-note.
   417     TPEDtmfString dtmfString = iStateMachine->PhoneEngineInfo()->DtmfString();
   391     TPEDtmfString dtmfString = iStateMachine->PhoneEngineInfo()->DtmfString();
   418     HBufC* noteText = StringLoader::LoadLC( 
   392     HBufC* noteText = StringLoader::LoadLC( 
   419         CPhoneMainResourceResolver::Instance()->
   393         CPhoneMainResourceResolver::Instance()->
   420             ResolveResourceID( EPhoneSendingDtmfWaitNoteText ), 
   394             ResolveResourceID( EPhoneSendingDtmfWaitNoteText ), 
   421         dtmfString );
   395         dtmfString );
   422     noteParam.SetText( *noteText );
   396     noteParam.SetText( *noteText );
   423 
       
   424     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, &noteParam );
   397     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, &noteParam );
   425 
       
   426     CleanupStack::PopAndDestroy( noteText );
   398     CleanupStack::PopAndDestroy( noteText );
   427     }
   399     }
   428 
   400 
   429 // -----------------------------------------------------------
   401 // -----------------------------------------------------------
   430 // CPhoneStateInCall::HandleStoppedDTMFL
   402 // CPhoneStateInCall::HandleStoppedDTMFL
   432 //
   404 //
   433 void CPhoneStateInCall::HandleStoppedDTMFL()
   405 void CPhoneStateInCall::HandleStoppedDTMFL()
   434     {
   406     {
   435     __LOGMETHODSTARTEND(EPhoneControl,  
   407     __LOGMETHODSTARTEND(EPhoneControl,  
   436         "CPhoneStateInCall::HandleStoppedDTMFL()" );
   408         "CPhoneStateInCall::HandleStoppedDTMFL()" );
   437     // Remove the Sending... note
       
   438     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
   409     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
   439 
       
   440     // Fetch the remaining (unparsed) portion of the DTMF String 
   410     // Fetch the remaining (unparsed) portion of the DTMF String 
   441     // from PhoneEngine
   411     // from PhoneEngine
   442     TPEDtmfString dtmfString = iStateMachine->PhoneEngineInfo()->DtmfString();
   412     TPEDtmfString dtmfString = iStateMachine->PhoneEngineInfo()->DtmfString();
   443 
   413 
   444     if ( dtmfString.Length() )
   414     if ( dtmfString.Length() )
   454         HBufC* queryPrompt = StringLoader::LoadLC( 
   424         HBufC* queryPrompt = StringLoader::LoadLC( 
   455             CPhoneMainResourceResolver::Instance()->ResolveResourceID( 
   425             CPhoneMainResourceResolver::Instance()->ResolveResourceID( 
   456                 EPhoneDtmfWaitCharacterConfirmationQueryText ), 
   426                 EPhoneDtmfWaitCharacterConfirmationQueryText ), 
   457             dtmfString );
   427             dtmfString );
   458         queryParam.SetQueryPrompt( *queryPrompt );
   428         queryParam.SetQueryPrompt( *queryPrompt );
   459 
       
   460         iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery, 
   429         iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery, 
   461             &queryParam );
   430             &queryParam );
   462 
       
   463         CleanupStack::PopAndDestroy( queryPrompt );
   431         CleanupStack::PopAndDestroy( queryPrompt );
   464         }
   432         }
   465     else
   433     else
   466         {
   434         {
   467         // Stop the asynchronous sending operation the 
   435         // Stop the asynchronous sending operation the 
   470             MPEPhoneModel::EPEMessageStopDTMFSending );
   438             MPEPhoneModel::EPEMessageStopDTMFSending );
   471 
   439 
   472         // Prompt for more characters by showing DTMF query with empty string
   440         // Prompt for more characters by showing DTMF query with empty string
   473         HBufC* emptyString = HBufC::NewLC( KPhoneNumberEntryBufferSize );
   441         HBufC* emptyString = HBufC::NewLC( KPhoneNumberEntryBufferSize );
   474         TPtr ptr( emptyString->Des() );
   442         TPtr ptr( emptyString->Des() );
   475 
       
   476         ShowDtmfTextQueryL( 
   443         ShowDtmfTextQueryL( 
   477             CPhoneMainResourceResolver::Instance()->
   444             CPhoneMainResourceResolver::Instance()->
   478                 ResolveResourceID( EPhoneDtmfNumberQuery ),
   445                 ResolveResourceID( EPhoneDtmfNumberQuery ),
   479             CPhoneMainResourceResolver::Instance()->
   446             CPhoneMainResourceResolver::Instance()->
   480                 ResolveResourceID( EPhoneSendDtmfEmptyEditBoxCBA ),
   447                 ResolveResourceID( EPhoneSendDtmfEmptyEditBoxCBA ),
   481             CPhoneMainResourceResolver::Instance()->
   448             CPhoneMainResourceResolver::Instance()->
   482                 ResolveResourceID( EPhoneSendDtmfNormalEditBoxCBA ),
   449                 ResolveResourceID( EPhoneSendDtmfNormalEditBoxCBA ),
   483             &ptr );
   450             &ptr );
   484 
       
   485         CleanupStack::PopAndDestroy( emptyString );
   451         CleanupStack::PopAndDestroy( emptyString );
   486         }
   452         }
   487     }
   453     }
   488 
   454 
   489 // -----------------------------------------------------------
   455 // -----------------------------------------------------------
   492 //
   458 //
   493 void CPhoneStateInCall::CancelDTMFSendingL()
   459 void CPhoneStateInCall::CancelDTMFSendingL()
   494     {
   460     {
   495     __LOGMETHODSTARTEND(EPhoneControl,  
   461     __LOGMETHODSTARTEND(EPhoneControl,  
   496         "CPhoneStateInCall::CancelDTMFSendingL()" );
   462         "CPhoneStateInCall::CancelDTMFSendingL()" );
   497     // Remove the Sending... note
       
   498     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveDtmfNote );
   463     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveDtmfNote );
   499     }
   464     }
   500 
   465 
   501 // -----------------------------------------------------------
   466 // -----------------------------------------------------------
   502 // CPhoneStateInCall::HandleCommandL
   467 // CPhoneStateInCall::HandleCommandL
   503 // -----------------------------------------------------------
   468 // -----------------------------------------------------------
   504 //
   469 //
   505 EXPORT_C TBool CPhoneStateInCall::HandleCommandL( TInt aCommand )
   470 EXPORT_C TBool CPhoneStateInCall::HandleCommandL( TInt aCommand )
   506     {
   471     {
   507     __LOGMETHODSTARTEND( EPhoneControl,  
   472     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStateInCall::HandleCommandL()" );
   508         "CPhoneStateInCall::HandleCommandL()" );
       
   509     __PHONELOG1 ( EBasic, EPhoneControl,
   473     __PHONELOG1 ( EBasic, EPhoneControl,
   510         "CPhoneStateInCall::HandleCommandL() - aCommand  = %d ", aCommand );
   474         "CPhoneStateInCall::HandleCommandL() - aCommand  = %d ", aCommand );
   511     TBool commandStatus = ETrue;
   475     TBool commandStatus = ETrue;
   512 
       
   513     switch( aCommand )
   476     switch( aCommand )
   514         {
   477         {
   515         case EPhoneInCallCmdDialer:
   478         case EPhoneInCallCmdDialer:
   516             iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
   479             iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
   517             break;
       
   518         case EPhoneCmdOptions:
       
   519             break;
   480             break;
   520             
   481             
   521         case EPhoneDtmfDialerCancel:
   482         case EPhoneDtmfDialerCancel:
   522             {
   483             {
   523             // Activate DTMF list query when cancel is pressed.
   484             // Activate DTMF list query when cancel is pressed.
   524             // Forwards command to the framework 
   485             // Forwards command to the framework 
   525             HandleCommandL( EPhoneInCallCmdDtmfListQuery );
   486             HandleCommandL( EPhoneInCallCmdDtmfListQuery );
   526             }
       
   527             break;  
       
   528         case EPhoneDtmfDialerExit:
       
   529             {
       
   530             }
   487             }
   531             break;
   488             break;
   532             
   489             
   533         case EPhoneInCallCmdEndThisActiveCall:
   490         case EPhoneInCallCmdEndThisActiveCall:
   534             CPhoneState::DisconnectCallL();
   491             CPhoneState::DisconnectCallL();
   545             iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( 
   502             iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( 
   546                 ( aCommand == EPhoneInCallCmdMute ) );
   503                 ( aCommand == EPhoneInCallCmdMute ) );
   547             iStateMachine->SendPhoneEngineMessage( 
   504             iStateMachine->SendPhoneEngineMessage( 
   548                 MPEPhoneModel::EPEMessageSetAudioMute );
   505                 MPEPhoneModel::EPEMessageSetAudioMute );
   549             break;
   506             break;
       
   507             
   550         //DTMF list query - dialog   
   508         //DTMF list query - dialog   
   551         case EPhoneInCallCmdDtmfListQuery:
   509         case EPhoneInCallCmdDtmfListQuery:
   552             LaunchDtmfListQueryL();
   510             LaunchDtmfListQueryL();
   553             break;
       
   554             
       
   555         //DTMF list query - Search   
       
   556         case EPhoneInCallCmdDtmfListViewSearch:
       
   557             break;
       
   558             
       
   559         //DTMF manual entry 
       
   560         case EPhoneInCallCmdDtmfManualQuery:
       
   561             break;
       
   562             
       
   563         // DTMF manual entry - Search          
       
   564         case EPhoneCmdDtmfSearch:
       
   565             break;
   511             break;
   566             
   512             
   567         // DTMF entry - Ok          
   513         // DTMF entry - Ok          
   568         case EPhoneCmdDtmfOk:
   514         case EPhoneCmdDtmfOk:
   569             SendDtmfL();
   515             SendDtmfL();
   586                 {
   532                 {
   587                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   533                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   588                     iStateMachine );                    
   534                     iStateMachine );                    
   589                 }
   535                 }
   590             iDtmfWaitCharTimer->ButtonPressedL();
   536             iDtmfWaitCharTimer->ButtonPressedL();
   591             break;
       
   592 
       
   593         // New Call - Search
       
   594         case EPhoneInCallCmdNewCallFind:
       
   595             break;
       
   596             
       
   597         // New Call - Dialog     
       
   598         case EPhoneInCallCmdNewCall:
       
   599             break;
   537             break;
   600             
   538             
   601         case EPhoneNumberAcqCmdCall:
   539         case EPhoneNumberAcqCmdCall:
   602         case EPhoneNumberAcqCmdSendCommand:
   540         case EPhoneNumberAcqCmdSendCommand:
   603             if ( IsVideoCallActiveL() )
   541             if ( IsVideoCallActiveL() )
   622                 else
   560                 else
   623                     {
   561                     {
   624                     iStateMachine->SendPhoneEngineMessage( 
   562                     iStateMachine->SendPhoneEngineMessage( 
   625                         MPEPhoneModel::EPEMessageCheckEmergencyNumber );
   563                         MPEPhoneModel::EPEMessageCheckEmergencyNumber );
   626                     }
   564                     }
   627                 CleanupStack::PopAndDestroy( phoneNumber );               
   565                 CleanupStack::PopAndDestroy( phoneNumber );
   628                 }
   566                 }
   629             else
   567             else
   630                 {
   568                 {
   631                 // Provide number information with dial command
       
   632                 CallFromNumberEntryL();
   569                 CallFromNumberEntryL();
   633                 }
   570                 }
   634             break;
   571             break;
   635 
   572 
   636         case EPhoneCmdEnd:
   573         case EPhoneCmdEnd:
   637             CloseDtmfQueryL();
       
   638             CPhoneState::DisconnectCallL();
   574             CPhoneState::DisconnectCallL();
   639             break;
   575             break;
   640             
   576             
   641         // 'End all calls' from menu
   577         // 'End all calls' from menu
   642         case EPhoneInCallCmdEndAllCalls:
   578         case EPhoneInCallCmdEndAllCalls:
   647         case EPhoneInCallCmdEndThisOutgoingCall:
   583         case EPhoneInCallCmdEndThisOutgoingCall:
   648             DisconnectOutgoingCallL();
   584             DisconnectOutgoingCallL();
   649             break;
   585             break;
   650 
   586 
   651         case EPhoneInCallCmdGoToIdle:
   587         case EPhoneInCallCmdGoToIdle:
   652             {
   588             iViewCommandHandle->ExecuteCommandL( EPhoneViewBringIdleToForeground );
   653             // Bring Idle app to foreground
   589             break;
   654             iViewCommandHandle->ExecuteCommandL( EPhoneViewBringIdleToForeground );    
       
   655             break;                   
       
   656             }
       
   657             
   590             
   658         case EPhoneNumberAcqCmdVideoCall:
   591         case EPhoneNumberAcqCmdVideoCall:
   659             {// Create normal voice call, if number is emergency number.
   592             {// Create normal voice call, if number is emergency number.
   660             // Get the number entry contents
   593             // Get the number entry contents
   661             HBufC* phoneNumber = PhoneNumberFromEntryLC();
   594             HBufC* phoneNumber = PhoneNumberFromEntryLC();
   665             CleanupStack::PopAndDestroy( phoneNumber );}
   598             CleanupStack::PopAndDestroy( phoneNumber );}
   666             break;
   599             break;
   667             
   600             
   668         case EPhoneInCallCmdLockKeypad:
   601         case EPhoneInCallCmdLockKeypad:
   669         case EPhoneInCallCmdLockScreen:
   602         case EPhoneInCallCmdLockScreen:
   670             LockKeypadL();          
   603             LockKeypadL();
   671             break;
   604             break;
   672 
   605 
   673        case EPhoneViewOpenCallHandling:
   606        case EPhoneViewOpenCallHandling:
   674             if ( iOnScreenDialer && IsNumberEntryUsedL() )
   607             if ( IsNumberEntryUsedL() )
   675                 {
   608                 {
   676                 // Remove number entry from screen
       
   677                 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
   609                 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
   678                 HandleNumberEntryClearedL();
   610                 HandleNumberEntryClearedL();
   679                 }
   611                 }
   680             commandStatus = CPhoneState::HandleCommandL( aCommand );        
   612             commandStatus = CPhoneState::HandleCommandL( aCommand );
   681             break;
   613             break;
       
   614             
       
   615        case EPhoneInCallCmdNewCallFind:
       
   616        case EPhoneInCallCmdNewCall:
       
   617        case EPhoneInCallCmdDtmfListViewSearch:
       
   618        case EPhoneInCallCmdDtmfManualQuery:
       
   619        case EPhoneCmdDtmfSearch:
       
   620        case EPhoneDtmfDialerExit:
       
   621        case EPhoneCmdOptions:
       
   622            break;
   682  
   623  
   683        default:
   624        default:
   684             commandStatus = CPhoneState::HandleCommandL( aCommand );
   625             commandStatus = CPhoneState::HandleCommandL( aCommand );
   685             break;
   626             break;
   686         }
   627         }
   687 
       
   688     return commandStatus;
   628     return commandStatus;
   689     }
   629     }
   690 
   630 
   691 // -----------------------------------------------------------
   631 // -----------------------------------------------------------
   692 // CPhoneStateInCall::CallFetchedNumberL
   632 // CPhoneStateInCall::CallFetchedNumberL
   696     const TDesC& aFetchedNumber )
   636     const TDesC& aFetchedNumber )
   697     {
   637     {
   698     __LOGMETHODSTARTEND(EPhoneControl,  
   638     __LOGMETHODSTARTEND(EPhoneControl,  
   699         "CPhoneStateInCall::CallFetchedNumberL()" );
   639         "CPhoneStateInCall::CallFetchedNumberL()" );
   700     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
   640     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
   701         Panic( EPhoneCtrlInvariant ) );    
   641         Panic( EPhoneCtrlInvariant ) );
   702         
       
   703     // Store the phone number
   642     // Store the phone number
   704     iStateMachine->PhoneEngineInfo()->SetPhoneNumber( aFetchedNumber );
   643     iStateMachine->PhoneEngineInfo()->SetPhoneNumber( aFetchedNumber );
   705 
       
   706     DialVoiceCallL();
   644     DialVoiceCallL();
   707     }
   645     }
   708 
   646 
   709 // -----------------------------------------------------------
   647 // -----------------------------------------------------------
   710 // CPhoneStateInCall::SendDtmfL
   648 // CPhoneStateInCall::SendDtmfL
   714     {
   652     {
   715     __LOGMETHODSTARTEND(EPhoneControl,  
   653     __LOGMETHODSTARTEND(EPhoneControl,  
   716         "CPhoneStateInCall::SendDtmfL()" );
   654         "CPhoneStateInCall::SendDtmfL()" );
   717     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
   655     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
   718         Panic( EPhoneCtrlInvariant ) );    
   656         Panic( EPhoneCtrlInvariant ) );    
   719 
       
   720     // First get the DTMF sequence from dialog
   657     // First get the DTMF sequence from dialog
   721     TPhoneCmdParamString dtmfSequence;
   658     TPhoneCmdParamString dtmfSequence;
   722     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   659     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   723     TPtr ptr( content->Des() );
   660     TPtr ptr( content->Des() );
   724     dtmfSequence.SetString( &ptr );
   661     dtmfSequence.SetString( &ptr );
   725     
   662     iViewCommandHandle->ExecuteCommand(
   726     if ( iOnScreenDialer )
   663         EPhoneViewGetNumberFromEntry,
   727         {
   664         &dtmfSequence );
   728         iViewCommandHandle->ExecuteCommand(
       
   729             EPhoneViewGetNumberFromEntry,
       
   730             &dtmfSequence );  
       
   731                     
       
   732         }     
       
   733 
   665 
   734     // Send the DTMF
   666     // Send the DTMF
   735     if ( ptr.Length() )
   667     if ( ptr.Length() )
   736         {
   668         {
   737         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );
   669         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );
   738         iStateMachine->SendPhoneEngineMessage(
   670         iStateMachine->SendPhoneEngineMessage(
   739             MPEPhoneModel::EPEMessageSendDTMF );    
   671             MPEPhoneModel::EPEMessageSendDTMF );
   740         }
   672         }
   741     
       
   742     CleanupStack::PopAndDestroy( content );
   673     CleanupStack::PopAndDestroy( content );
   743     }
   674     }
   744 
   675 
   745 // -----------------------------------------------------------
   676 // -----------------------------------------------------------
   746 // CPhoneStateInCall::LaunchDtmfListQueryL
   677 // CPhoneStateInCall::LaunchDtmfListQueryL
   747 // -----------------------------------------------------------
   678 // -----------------------------------------------------------
   748 //
   679 //
   749 void CPhoneStateInCall::LaunchDtmfListQueryL()
   680 void CPhoneStateInCall::LaunchDtmfListQueryL()
   750     {
   681     {
   751     __LOGMETHODSTARTEND(EPhoneControl,  
   682     __LOGMETHODSTARTEND(EPhoneControl,  
   752         "CPhoneStateInCall::LaunchDtmfListQueryL()" );   
   683         "CPhoneStateInCall::LaunchDtmfListQueryL()" );
   753          
   684     
   754     // Fetch active call's id from view
       
   755     TPhoneCmdParamCallStateData callStateData;
   685     TPhoneCmdParamCallStateData callStateData;
   756     callStateData.SetCallState( EPEStateConnected );
   686     callStateData.SetCallState( EPEStateConnected );
   757     iViewCommandHandle->HandleCommandL(
   687     iViewCommandHandle->HandleCommandL(
   758         EPhoneViewGetCallIdByState, &callStateData );
   688         EPhoneViewGetCallIdByState, &callStateData );
   759    
   689    
   764             EPhoneViewGetCallIdByState, &callStateData );    
   694             EPhoneViewGetCallIdByState, &callStateData );    
   765         }
   695         }
   766         
   696         
   767     if ( callStateData.CallId() > KErrNotFound )
   697     if ( callStateData.CallId() > KErrNotFound )
   768         {
   698         {
   769         //Get Array of DTMF strings from PhoneEngine           
   699         //Get Array of DTMF strings from PhoneEngine
   770         const CDesCArray& dtmfArray = 
   700         const CDesCArray& dtmfArray = 
   771         iStateMachine->PhoneEngineInfo()->
   701         iStateMachine->PhoneEngineInfo()->
   772         RemotePredefinedDtmfStrings( callStateData.CallId() );              
   702         RemotePredefinedDtmfStrings( callStateData.CallId() );
   773         
       
   774         TInt itemCount = dtmfArray.Count();  
   703         TInt itemCount = dtmfArray.Count();  
   775         if ( itemCount )
   704         if ( itemCount )
   776             {
   705             {
   777      
   706             TPhoneCmdParamString stringParam;
   778             TPhoneCmdParamString stringParam;                 
       
   779             //Go through the array and send each dtmf string
   707             //Go through the array and send each dtmf string
   780             //to view.
   708             //to view.
   781             for ( TInt i=0; i<itemCount; i++ )
   709             for ( TInt i=0; i<itemCount; i++ )
   782                 {
   710                 {
   783                 TPtrC16 ptrC16 = dtmfArray.MdcaPoint( i );
   711                 TPtrC16 ptrC16 = dtmfArray.MdcaPoint( i );
   786                 TPtr ptr( string->Des() );
   714                 TPtr ptr( string->Des() );
   787                 
   715                 
   788                 stringParam.SetString( &ptr ); 
   716                 stringParam.SetString( &ptr ); 
   789                 iViewCommandHandle->ExecuteCommandL(
   717                 iViewCommandHandle->ExecuteCommandL(
   790                     EPhoneViewSetListQueryString,
   718                     EPhoneViewSetListQueryString,
   791                     &stringParam );     
   719                     &stringParam );
   792                 CleanupStack::PopAndDestroy( string );
   720                 CleanupStack::PopAndDestroy( string );
   793                 string = NULL;
   721                 string = NULL;
   794                 }           
   722                 }
   795             }
   723             }
   796         }
   724         }
   797     else
   725     else
   798         {
   726         {
   799         __PHONELOG( EOnlyFatal, EPhoneControl, 
   727         __PHONELOG( EOnlyFatal, EPhoneControl, 
   800             "CPhoneStateInCall::LaunchDtmfListQueryL() No found valid call id" );    
   728             "CPhoneStateInCall::LaunchDtmfListQueryL() No found valid call id" );
   801         }  
   729         }
   802     
       
   803     // if there is a connected call only then open DtmfListQuery.
   730     // if there is a connected call only then open DtmfListQuery.
   804     if ( IsAnyConnectedCalls() )
   731     if ( IsAnyConnectedCalls() )
   805        {
   732        {
   806        TPhoneCmdParamQuery queryDialogParam;
   733        TPhoneCmdParamQuery queryDialogParam;
   807        queryDialogParam.SetQueryType( EPhoneDtmfListQueryDialog );
   734        queryDialogParam.SetQueryType( EPhoneDtmfListQueryDialog );
   808        queryDialogParam.SetQueryResourceId(
   735        queryDialogParam.SetQueryResourceId(
   809                CPhoneMainResourceResolver::Instance()->
   736                CPhoneMainResourceResolver::Instance()->
   810                ResolveResourceID( EPhoneDtmfNumberListQuery )  );
   737                ResolveResourceID( EPhoneDtmfNumberListQuery ) );
   811        
       
   812        // Display dialog        
       
   813        iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
   738        iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
   814            &queryDialogParam );
   739            &queryDialogParam );
   815        }
   740        }
   816     }   
   741     }   
   817     
   742     
   822 EXPORT_C TBool CPhoneStateInCall::IsVideoCallActiveL()
   747 EXPORT_C TBool CPhoneStateInCall::IsVideoCallActiveL()
   823     {
   748     {
   824     __LOGMETHODSTARTEND(EPhoneControl,  
   749     __LOGMETHODSTARTEND(EPhoneControl,  
   825         "CPhoneStateInCall::IsVideoCallActive()" );
   750         "CPhoneStateInCall::IsVideoCallActive()" );
   826     TBool retVal = EFalse;
   751     TBool retVal = EFalse;
   827     // Fetch active call's id from view
       
   828     TPhoneCmdParamCallStateData callStateData;
   752     TPhoneCmdParamCallStateData callStateData;
   829     callStateData.SetCallState( EPEStateConnected );
   753     callStateData.SetCallState( EPEStateConnected );
   830     iViewCommandHandle->HandleCommandL(
   754     iViewCommandHandle->HandleCommandL(
   831         EPhoneViewGetCallIdByState, &callStateData );
   755         EPhoneViewGetCallIdByState, &callStateData );
   832         
       
   833     if ( callStateData.CallId() > KErrNotFound )
   756     if ( callStateData.CallId() > KErrNotFound )
   834         {
   757         {
   835         retVal = IsVideoCall( callStateData.CallId() );
   758         retVal = IsVideoCall( callStateData.CallId() );
   836         }
   759         }
   837         
       
   838     return retVal;
   760     return retVal;
   839     }
   761     }
   840     
   762     
   841 // ---------------------------------------------------------
   763 // ---------------------------------------------------------
   842 // CPhoneStateInCall::IsVideoCallRingingL
   764 // CPhoneStateInCall::IsVideoCallRingingL
   846 EXPORT_C TBool CPhoneStateInCall::IsVideoCallRingingL()
   768 EXPORT_C TBool CPhoneStateInCall::IsVideoCallRingingL()
   847     {
   769     {
   848     __LOGMETHODSTARTEND(EPhoneControl,  
   770     __LOGMETHODSTARTEND(EPhoneControl,  
   849         "CPhoneStateInCall::IsVideoCallRingingL()" );
   771         "CPhoneStateInCall::IsVideoCallRingingL()" );
   850     TBool retVal = EFalse;
   772     TBool retVal = EFalse;
   851     // Fetch ringing call id from view
       
   852     TPhoneCmdParamCallStateData callStateData;
   773     TPhoneCmdParamCallStateData callStateData;
   853     callStateData.SetCallState( EPEStateRinging );
   774     callStateData.SetCallState( EPEStateRinging );
   854     iViewCommandHandle->HandleCommandL(
   775     iViewCommandHandle->HandleCommandL(
   855         EPhoneViewGetCallIdByState, &callStateData );
   776         EPhoneViewGetCallIdByState, &callStateData );
   856         
       
   857     if ( callStateData.CallId() > KErrNotFound )
   777     if ( callStateData.CallId() > KErrNotFound )
   858         {
   778         {
   859         retVal = IsVideoCall( callStateData.CallId() );
   779         retVal = IsVideoCall( callStateData.CallId() );
   860         }
   780         }
   861         
       
   862     return retVal;
   781     return retVal;
   863     }
   782     }
   864 
   783 
   865 // ---------------------------------------------------------
   784 // ---------------------------------------------------------
   866 // CPhoneStateInCall::GetRingingCallL
   785 // CPhoneStateInCall::GetRingingCallL
   869 
   788 
   870 EXPORT_C TInt CPhoneStateInCall::GetRingingCallL()
   789 EXPORT_C TInt CPhoneStateInCall::GetRingingCallL()
   871     {
   790     {
   872     __LOGMETHODSTARTEND(EPhoneControl,  
   791     __LOGMETHODSTARTEND(EPhoneControl,  
   873         "CPhoneStateInCall::GetRingingCallL()" );
   792         "CPhoneStateInCall::GetRingingCallL()" );
   874     
       
   875     // Fetch ringing call id from view
       
   876     TPhoneCmdParamCallStateData callStateData;
   793     TPhoneCmdParamCallStateData callStateData;
   877     callStateData.SetCallState( EPEStateRinging );
   794     callStateData.SetCallState( EPEStateRinging );
   878     iViewCommandHandle->HandleCommandL(
   795     iViewCommandHandle->HandleCommandL(
   879         EPhoneViewGetCallIdByState, &callStateData );
   796         EPhoneViewGetCallIdByState, &callStateData );
   880          
       
   881     return callStateData.CallId();
   797     return callStateData.CallId();
   882     }
   798     }
   883 
   799 
   884 // -----------------------------------------------------------
   800 // -----------------------------------------------------------
   885 // CPhoneStateInCall::DisconnectOutgoingCallL
   801 // CPhoneStateInCall::DisconnectOutgoingCallL
   887 //
   803 //
   888 EXPORT_C void CPhoneStateInCall::DisconnectOutgoingCallL()
   804 EXPORT_C void CPhoneStateInCall::DisconnectOutgoingCallL()
   889     {
   805     {
   890     __LOGMETHODSTARTEND(EPhoneControl, 
   806     __LOGMETHODSTARTEND(EPhoneControl, 
   891         "CPhoneStateInCall::DisconnectOutgoingCallL()");
   807         "CPhoneStateInCall::DisconnectOutgoingCallL()");
   892     // Fetch alerting call's id from view
       
   893     TPhoneCmdParamCallStateData callStateData;
   808     TPhoneCmdParamCallStateData callStateData;
   894     callStateData.SetCallState( EPEStateConnecting );
   809     callStateData.SetCallState( EPEStateConnecting );
   895     iViewCommandHandle->HandleCommandL(
   810     iViewCommandHandle->HandleCommandL(
   896         EPhoneViewGetCallIdByState, &callStateData );
   811         EPhoneViewGetCallIdByState, &callStateData );
   897         
       
   898     if( callStateData.CallId() == KErrNotFound )
   812     if( callStateData.CallId() == KErrNotFound )
   899         {
   813         {
   900         // No connecting call, find the dialing call
   814         // No connecting call, find the dialing call
   901         callStateData.SetCallState( EPEStateDialing );
   815         callStateData.SetCallState( EPEStateDialing );
   902         iViewCommandHandle->HandleCommandL(
   816         iViewCommandHandle->HandleCommandL(
   918             }
   832             }
   919         }
   833         }
   920 
   834 
   921     if( callStateData.CallId() > KErrNotFound )
   835     if( callStateData.CallId() > KErrNotFound )
   922         {
   836         {
   923         // Release the call
       
   924         iStateMachine->SetCallId( callStateData.CallId() );
   837         iStateMachine->SetCallId( callStateData.CallId() );
   925         iStateMachine->SendPhoneEngineMessage( 
   838         iStateMachine->SendPhoneEngineMessage( 
   926             MPEPhoneModel::EPEMessageRelease );
   839             MPEPhoneModel::EPEMessageRelease );
   927         }
   840         }
   928      else
   841      else
   937 // CPhoneStateInCall::LockKeysL
   850 // CPhoneStateInCall::LockKeysL
   938 // -----------------------------------------------------------------------------
   851 // -----------------------------------------------------------------------------
   939 //
   852 //
   940 void CPhoneStateInCall::LockKeypadL()
   853 void CPhoneStateInCall::LockKeypadL()
   941     {
   854     {
   942     __LOGMETHODSTARTEND(EPhoneControl, 
   855     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::LockKeypadL()");
   943         "CPhoneStateInCall::LockKeypadL()");
   856     TInt state = EPSHWRMGripStatusUninitialized; 
   944 
       
   945     if ( !FeatureManager::FeatureSupported( KFeatureIdKeypadNoSlider ) )
   857     if ( !FeatureManager::FeatureSupported( KFeatureIdKeypadNoSlider ) )
   946         {
   858         {
   947         TInt state = KErrNone; 
   859         TInt err = RProperty::Get( KPSUidHWRM, KHWRMGripStatus, state );
   948         TInt err = RProperty::Get(
       
   949             KPSUidHWRM,
       
   950             KHWRMGripStatus,
       
   951             state );
       
   952         if ( state == EPSHWRMGripOpen )
   860         if ( state == EPSHWRMGripOpen )
   953             {
   861             {
   954             SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed, ETrue );
   862             SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed, ETrue );
   955             }
   863             }
   956         else
   864         }
   957             {
   865     
   958             iViewCommandHandle->ExecuteCommandL(
   866     if ( state != EPSHWRMGripOpen )
   959                 EPhoneViewEnableKeyLock );    
   867         {
   960             }
   868         iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLock );
   961         }
   869         }
   962     else
   870     }
   963         {
       
   964         iViewCommandHandle->ExecuteCommandL(
       
   965             EPhoneViewEnableKeyLock ); 
       
   966         }
       
   967     }    
       
   968 
       
   969 // -----------------------------------------------------------------------------
       
   970 // CPhoneStateInCall::CloseDtmfQueryL
       
   971 // -----------------------------------------------------------------------------
       
   972 //    
       
   973 EXPORT_C void CPhoneStateInCall::CloseDtmfQueryL()
       
   974     {    
       
   975     }  
       
   976 
       
   977 
   871 
   978 // -----------------------------------------------------------------------------
   872 // -----------------------------------------------------------------------------
   979 // CPhoneStateInCall::HandleEndKeyPressL
   873 // CPhoneStateInCall::HandleEndKeyPressL
   980 // -----------------------------------------------------------------------------
   874 // -----------------------------------------------------------------------------
   981 //    
   875 //    
   982 void CPhoneStateInCall::HandleEndKeyPressL( TPhoneKeyEventMessages aMessage )
   876 void CPhoneStateInCall::HandleEndKeyPressL( TPhoneKeyEventMessages aMessage )
   983     {
   877     {
   984     __LOGMETHODSTARTEND(EPhoneControl, 
   878     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::HandleEndKeyPressL()");
   985         "CPhoneStateInCall::HandleEndKeyPressL()");        
       
   986     // handle long press of end key
       
   987     if ( aMessage == EPhoneKeyLongPress )
   879     if ( aMessage == EPhoneKeyLongPress )
   988         {
   880         {
   989         // Fetch active call's id from view
       
   990         TPhoneCmdParamCallStateData callStateData;
   881         TPhoneCmdParamCallStateData callStateData;
   991         callStateData.SetCallState( EPEStateConnected );
   882         callStateData.SetCallState( EPEStateConnected );
   992         iViewCommandHandle->HandleCommandL(
   883         iViewCommandHandle->HandleCommandL(
   993             EPhoneViewGetCallIdByState, &callStateData );
   884             EPhoneViewGetCallIdByState, &callStateData );
   994 
   885 
  1005                 KNullDesC8,
   896                 KNullDesC8,
  1006                 CPhoneTerminateAllConnectionsCommand::NewL( *iStateMachine ) );
   897                 CPhoneTerminateAllConnectionsCommand::NewL( *iStateMachine ) );
  1007             }
   898             }
  1008         else
   899         else
  1009             {
   900             {
  1010             // Close all connections
       
  1011             iStateMachine->SendPhoneEngineMessage(
   901             iStateMachine->SendPhoneEngineMessage(
  1012                 MPEPhoneModel::EPEMessageTerminateAllConnections );
   902                 MPEPhoneModel::EPEMessageTerminateAllConnections );
  1013             
       
  1014             if ( IsNumberEntryContentStored() )
   903             if ( IsNumberEntryContentStored() )
  1015                 {
   904                 {
  1016                 ClearNumberEntryContentCache();
   905                 ClearNumberEntryContentCache();
  1017                 }
   906                 }
  1018             }
   907             }
  1019 
   908 
  1020         if ( IsNumberEntryUsedL() )
   909         if ( IsNumberEntryUsedL() )
  1021             {
   910             {
  1022             // Remove number entry from screen
       
  1023             iViewCommandHandle->ExecuteCommandL( 
   911             iViewCommandHandle->ExecuteCommandL( 
  1024                 EPhoneViewRemoveNumberEntry );
   912                 EPhoneViewRemoveNumberEntry );
  1025             // Do state-specific operation when number entry is cleared
   913             // Do state-specific operation when number entry is cleared
  1026             HandleNumberEntryClearedL();         
   914             HandleNumberEntryClearedL();
  1027             }
   915             }
  1028 
   916 
  1029         if ( !TopAppIsDisplayedL() )
   917         if ( !TopAppIsDisplayedL() )
  1030             {
   918             {
  1031             // Bring app to foreground
       
  1032             TPhoneCmdParamInteger uidParam;
   919             TPhoneCmdParamInteger uidParam;
  1033             uidParam.SetInteger( KUidPhoneApplication.iUid );
   920             uidParam.SetInteger( KUidPhoneApplication.iUid );
  1034             iViewCommandHandle->ExecuteCommandL(
   921             iViewCommandHandle->ExecuteCommandL(
  1035                 EPhoneViewBringAppToForeground, &uidParam );
   922                 EPhoneViewBringAppToForeground, &uidParam );
  1036             }
   923             }
  1037         }
   924         }
  1038     else
   925     else
  1039         {        
   926         {        
  1040         // handle short end key
   927         // handle short end key
  1041         CPhoneState::DisconnectCallL();    
   928         CPhoneState::DisconnectCallL();
  1042         }
   929         }
  1043     }
   930     }
  1044 
   931 
  1045 // -----------------------------------------------------------------------------
   932 // -----------------------------------------------------------------------------
  1046 // CPhoneStateInCall::HandleVoiceKeyPressL
   933 // CPhoneStateInCall::HandleVoiceKeyPressL
  1050     {
   937     {
  1051     __LOGMETHODSTARTEND(EPhoneControl, 
   938     __LOGMETHODSTARTEND(EPhoneControl, 
  1052         "CPhoneStateInCall::HandleVoiceKeyPressL()");
   939         "CPhoneStateInCall::HandleVoiceKeyPressL()");
  1053     if ( aMessage == EPhoneKeyShortPress )
   940     if ( aMessage == EPhoneKeyShortPress )
  1054         {
   941         {
  1055         // Toggle the handsfree mode
   942         const TBool handsfreeMode = iStateMachine->
  1056         const TBool handsfreeMode = 
   943                 PhoneEngineInfo()->AudioOutput() == EPELoudspeaker;
  1057             iStateMachine->PhoneEngineInfo()->AudioOutput() ==
       
  1058                 EPELoudspeaker;
       
  1059         SetHandsfreeModeL( !handsfreeMode );
   944         SetHandsfreeModeL( !handsfreeMode );
  1060         }
   945         }
  1061     else // aMessage == EPhoneKeyLongPress
   946     else // aMessage == EPhoneKeyLongPress
  1062         {
   947         {
  1063         // Display call in progress information note
       
  1064         SendGlobalInfoNoteL( EPhoneCallInProgress, ETrue );
   948         SendGlobalInfoNoteL( EPhoneCallInProgress, ETrue );
  1065         }        
   949         }
  1066     }
   950     }
  1067 
   951 
  1068 // -----------------------------------------------------------
   952 // -----------------------------------------------------------
  1069 // CPhoneStateInCall::ShowDtmfTextQueryL
   953 // CPhoneStateInCall::ShowDtmfTextQueryL
  1070 // -----------------------------------------------------------
   954 // -----------------------------------------------------------
  1076     TDes* aDataText,
   960     TDes* aDataText,
  1077     TBool aSendKeyEnabled )
   961     TBool aSendKeyEnabled )
  1078     {
   962     {
  1079     __LOGMETHODSTARTEND(EPhoneControl, 
   963     __LOGMETHODSTARTEND(EPhoneControl, 
  1080         "CPhoneStateInCall::ShowDtmfTextQueryL()");
   964         "CPhoneStateInCall::ShowDtmfTextQueryL()");
  1081 
       
  1082     __ASSERT_DEBUG( aDialogResourceId &&
   965     __ASSERT_DEBUG( aDialogResourceId &&
  1083         aDefaultCbaResourceId &&
   966         aDefaultCbaResourceId &&
  1084         aContentCbaResourceId &&
   967         aContentCbaResourceId &&
  1085         aDataText, 
   968         aDataText, 
  1086         Panic( EPhoneCtrlParameterNotInitialized ) );
   969         Panic( EPhoneCtrlParameterNotInitialized ) );
  1090     queryDialogParam.SetDefaultCba( aDefaultCbaResourceId );
   973     queryDialogParam.SetDefaultCba( aDefaultCbaResourceId );
  1091     queryDialogParam.SetContentCba( aContentCbaResourceId );
   974     queryDialogParam.SetContentCba( aContentCbaResourceId );
  1092     queryDialogParam.SetDataText( aDataText );
   975     queryDialogParam.SetDataText( aDataText );
  1093     queryDialogParam.SetSendKeyEnabled( aSendKeyEnabled );
   976     queryDialogParam.SetSendKeyEnabled( aSendKeyEnabled );
  1094     
   977     
  1095     // Display dialog        
       
  1096     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
   978     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
  1097         &queryDialogParam );    
   979         &queryDialogParam );
  1098     }
   980     }
  1099   
   981   
  1100 // End of File
   982 // End of File