phoneapp/phoneuicontrol/src/cphonestateincall.cpp
changeset 56 5bcb308bd24d
parent 46 bc5a64e5bc3c
child 65 2a5d4ab426d3
equal deleted inserted replaced
46:bc5a64e5bc3c 56:5bcb308bd24d
    89 EXPORT_C void CPhoneStateInCall::ConstructL()
    89 EXPORT_C void CPhoneStateInCall::ConstructL()
    90     {
    90     {
    91     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
    91     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
    92         Panic( EPhoneCtrlInvariant ) );
    92         Panic( EPhoneCtrlInvariant ) );
    93     CPhoneState::BaseConstructL();
    93     CPhoneState::BaseConstructL();
    94     // Enable the volume display
       
    95     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNaviPaneAudioVolume );
       
    96     }
    94     }
    97 
    95 
    98 // -----------------------------------------------------------
    96 // -----------------------------------------------------------
    99 // CPhoneStateInCall::NewL()
    97 // CPhoneStateInCall::NewL()
   100 // Constructor
    98 // Constructor
   138             HandleVoiceKeyPressL( aMessage ); 
   136             HandleVoiceKeyPressL( aMessage ); 
   139             break;
   137             break;
   140             
   138             
   141 #ifdef RD_INTELLIGENT_TEXT_INPUT
   139 #ifdef RD_INTELLIGENT_TEXT_INPUT
   142         case EKeyEnter:
   140         case EKeyEnter:
   143             if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   141             if ( IsNumberEntryVisibleL() )
   144                 {
       
   145                 SendDtmfL();    
       
   146                 }
       
   147             else if ( IsNumberEntryVisibleL() )
       
   148                 {
   142                 {
   149                 HandleCommandL( EPhoneCmdOptions );
   143                 HandleCommandL( EPhoneCmdOptions );
   150                 }
   144                 }
   151             break;
   145             break;
   152 #endif            
   146 #endif            
   283     // Remove call 
   277     // Remove call 
   284     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   278     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   285   
   279   
   286     //Make sure that toolbar is not shown
   280     //Make sure that toolbar is not shown
   287     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
   281     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
   288     BeginTransEffectLC( ENumberEntryOpen );  
       
   289     BeginUiUpdateLC();
   282     BeginUiUpdateLC();
   290     SetDefaultFlagsL();
   283     SetDefaultFlagsL();
   291     if ( IsNumberEntryUsedL() )
   284     if ( IsNumberEntryUsedL() )
   292         {
   285         {
   293         if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
   286         iViewCommandHandle->ExecuteCommand(
   294             {            
   287                 EPhoneViewGetNumberFromEntry,
   295             CloseCustomizedDialerL();
   288                 &stringParam );
   296             }
   289         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
   297         else 
   290         showDialer = ETrue;
   298             {
   291         }
   299             iViewCommandHandle->ExecuteCommand(
       
   300                     EPhoneViewGetNumberFromEntry,
       
   301                     &stringParam );
       
   302             iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
       
   303             showDialer = ETrue;
       
   304             }
       
   305         }
       
   306 
       
   307         
       
   308     // Close menu bar, if it is displayed
       
   309     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   310     
   292     
   311     if ( !TopAppIsDisplayedL() || IsAutoLockOn() )
   293     if ( !TopAppIsDisplayedL() || IsAutoLockOn() )
   312         {        
   294         {        
   313         // Continue displaying current app but set up the 
   295         // Continue displaying current app but set up the 
   314         // idle screen in the background
   296         // idle screen in the background
   325         DisplayIdleScreenL();
   307         DisplayIdleScreenL();
   326         }
   308         }
   327         
   309         
   328     DeleteTouchPaneButtons();        
   310     DeleteTouchPaneButtons();        
   329     EndUiUpdate();
   311     EndUiUpdate();
   330     EndTransEffect();
       
   331     // Display call termination note, if necessary
   312     // Display call termination note, if necessary
   332     DisplayCallTerminationNoteL();
   313     DisplayCallTerminationNoteL();
   333 
   314 
   334     TPhoneCmdParamKeyCapture captureParam;
   315     TPhoneCmdParamKeyCapture captureParam;
   335     captureParam.SetKeyCode( EKeyNo );
   316     captureParam.SetKeyCode( EKeyNo );
   355 // -----------------------------------------------------------
   336 // -----------------------------------------------------------
   356 //
   337 //
   357 EXPORT_C void CPhoneStateInCall::UpdateCbaL( TInt aResource )
   338 EXPORT_C void CPhoneStateInCall::UpdateCbaL( TInt aResource )
   358     {
   339     {
   359     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::UpdateCbaL() ");
   340     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::UpdateCbaL() ");
   360     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   341     iCbaManager->UpdateCbaL( aResource );   
   361         {
       
   362         iCbaManager->SetCbaL( EPhoneDtmfDialerCBA );        
       
   363         }
       
   364     else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
       
   365         {
       
   366         iCbaManager->SetCbaL( CustomizedDialerCbaResourceIdL() );
       
   367         }
       
   368     else
       
   369         {
       
   370         iCbaManager->UpdateCbaL( aResource );   
       
   371         }
       
   372     }
   342     }
   373 
   343 
   374 // -----------------------------------------------------------
   344 // -----------------------------------------------------------
   375 // CPhoneStateInCall::HandleAudioMuteChangedL
   345 // CPhoneStateInCall::HandleAudioMuteChangedL
   376 // -----------------------------------------------------------
   346 // -----------------------------------------------------------
   544         {
   514         {
   545         case EPhoneInCallCmdDialer:
   515         case EPhoneInCallCmdDialer:
   546             iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
   516             iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
   547             break;
   517             break;
   548         case EPhoneCmdOptions:
   518         case EPhoneCmdOptions:
   549             OpenMenuBarL();
       
   550             break;
   519             break;
   551             
   520             
   552         case EPhoneDtmfDialerCancel:
   521         case EPhoneDtmfDialerCancel:
   553             {
   522             {
   554             CloseDTMFEditorL();
       
   555             
       
   556             // Activate DTMF list query when cancel is pressed.
   523             // Activate DTMF list query when cancel is pressed.
   557             // Forwards command to the framework 
   524             // Forwards command to the framework 
   558             HandleCommandL( EPhoneInCallCmdDtmfListQuery );
   525             HandleCommandL( EPhoneInCallCmdDtmfListQuery );
   559             }
   526             }
   560             break;  
   527             break;  
   561         case EPhoneDtmfDialerExit:
   528         case EPhoneDtmfDialerExit:
   562             {
   529             {
   563             CloseDTMFEditorL();   
       
   564             }
   530             }
   565             break;
   531             break;
   566             
   532             
   567         case EPhoneInCallCmdEndThisActiveCall:
   533         case EPhoneInCallCmdEndThisActiveCall:
   568             CPhoneState::DisconnectCallL();
   534             CPhoneState::DisconnectCallL();
   586             LaunchDtmfListQueryL();
   552             LaunchDtmfListQueryL();
   587             break;
   553             break;
   588             
   554             
   589         //DTMF list query - Search   
   555         //DTMF list query - Search   
   590         case EPhoneInCallCmdDtmfListViewSearch:
   556         case EPhoneInCallCmdDtmfListViewSearch:
   591             LaunchDtmfListViewSearchDialogL();
       
   592             break;
   557             break;
   593             
   558             
   594         //DTMF manual entry 
   559         //DTMF manual entry 
   595         case EPhoneInCallCmdDtmfManualQuery:
   560         case EPhoneInCallCmdDtmfManualQuery:
   596             if ( iOnScreenDialer )
       
   597                 {
       
   598                 ShowDtmfDialerL();
       
   599                 }
       
   600             else
       
   601                 {
       
   602                 LaunchDtmfManualQueryL();
       
   603                 }
       
   604             break;
   561             break;
   605             
   562             
   606         // DTMF manual entry - Search          
   563         // DTMF manual entry - Search          
   607         case EPhoneCmdDtmfSearch:
   564         case EPhoneCmdDtmfSearch:
   608             LaunchDtmfSearchDialogL();
       
   609             break;
   565             break;
   610             
   566             
   611         // DTMF entry - Ok          
   567         // DTMF entry - Ok          
   612         case EPhoneCmdDtmfOk:
   568         case EPhoneCmdDtmfOk:
   613             SendDtmfL();
   569             SendDtmfL();
   631                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   587                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   632                     iStateMachine );                    
   588                     iStateMachine );                    
   633                 }
   589                 }
   634             iDtmfWaitCharTimer->ButtonPressedL();
   590             iDtmfWaitCharTimer->ButtonPressedL();
   635             break;
   591             break;
   636             
       
   637         case  EPhoneDialerCmdHelpDtmf:
       
   638             {
       
   639             if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
       
   640                 {                
       
   641                 TPtrC contextName( KDATA_DIALER_HLP_SEND_DTMF );
       
   642                 iViewCommandHandle->ExecuteCommandL( 
       
   643                     EPhoneViewLaunchHelpApplication,
       
   644                     0,
       
   645                     contextName );
       
   646                 }
       
   647             }
       
   648             break;
       
   649 
   592 
   650         // New Call - Search
   593         // New Call - Search
   651         case EPhoneInCallCmdNewCallFind:
   594         case EPhoneInCallCmdNewCallFind:
   652             LaunchNewCallSearchDialogL();
       
   653             break;
   595             break;
   654             
   596             
   655         // New Call - Dialog     
   597         // New Call - Dialog     
   656         case EPhoneInCallCmdNewCall:
   598         case EPhoneInCallCmdNewCall:
   657             LaunchNewCallQueryL();
       
   658             break;
       
   659             
       
   660         case EPhoneViewYesSingleItemFetch:       
       
   661             HandleSuccessFetchedNumberL();                          
       
   662             break;
       
   663             
       
   664         case EPhoneViewNoSingleItemFetch:
       
   665             if ( !iOnScreenDialer )
       
   666                 {   
       
   667                 HandleFailedFetchedNumberL();
       
   668                 }
       
   669             break;
   599             break;
   670             
   600             
   671         case EPhoneNumberAcqCmdCall:
   601         case EPhoneNumberAcqCmdCall:
   672         case EPhoneNumberAcqCmdSendCommand:
   602         case EPhoneNumberAcqCmdSendCommand:
   673             if ( IsVideoCallActiveL() )
   603             if ( IsVideoCallActiveL() )
   701                 // Provide number information with dial command
   631                 // Provide number information with dial command
   702                 CallFromNumberEntryL();
   632                 CallFromNumberEntryL();
   703                 }
   633                 }
   704             break;
   634             break;
   705 
   635 
   706         case EPhoneInCallCmdHelp:
       
   707             if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
       
   708                 {                
       
   709                 TPtrC contextName;
       
   710                 if ( IsVideoCallActiveL() )
       
   711                     {
       
   712                     contextName.Set( KINCAL_HLP_VIDEOCALL() );    
       
   713                     }     
       
   714                 else
       
   715                     {
       
   716                     contextName.Set( KINCAL_HLP_CALL_HANDLING() );
       
   717                     }
       
   718                 iViewCommandHandle->ExecuteCommandL(
       
   719                     EPhoneViewLaunchHelpApplication, 0, contextName );
       
   720                 }
       
   721             break;
       
   722 
       
   723         case EPhoneCmdEnd:
   636         case EPhoneCmdEnd:
   724             CloseDtmfQueryL();
   637             CloseDtmfQueryL();
   725             CPhoneState::DisconnectCallL();
   638             CPhoneState::DisconnectCallL();
   726             break;
   639             break;
   727             
   640             
   772             break;
   685             break;
   773         }
   686         }
   774 
   687 
   775     return commandStatus;
   688     return commandStatus;
   776     }
   689     }
   777     
       
   778 // -----------------------------------------------------------
       
   779 // CPhoneStateInCall::CreateNumberEntryL
       
   780 // -----------------------------------------------------------
       
   781 //
       
   782 EXPORT_C void CPhoneStateInCall::CreateNumberEntryL()
       
   783     {
       
   784     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStateInCall::CreateNumberEntryL( ) ");
       
   785     iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateNumberEntry );
       
   786     }
       
   787 
       
   788 // -----------------------------------------------------------
       
   789 // CPhoneStateInCall::OpenMenuBarL
       
   790 // -----------------------------------------------------------
       
   791 //
       
   792 EXPORT_C void CPhoneStateInCall::OpenMenuBarL()
       
   793     {
       
   794     __LOGMETHODSTARTEND(EPhoneControl,  
       
   795         "CPhoneStateInCall::OpenMenuBarL()" );
       
   796     TInt resourceId;
       
   797     
       
   798     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
       
   799         {
       
   800         resourceId = EPhoneDtmfDialerMenubar;
       
   801         }
       
   802     else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
       
   803         {
       
   804         resourceId = CustomizedDialerMenuResourceIdL();
       
   805         }
       
   806     else if ( IsNumberEntryVisibleL() )
       
   807         {
       
   808         resourceId = EPhoneCallHandlingMenubarWithNumberEntry;
       
   809         }
       
   810     else
       
   811         {
       
   812         resourceId = EPhoneCallHandlingMenubar;
       
   813         }
       
   814 
       
   815     TPhoneCmdParamInteger integerParam;
       
   816     integerParam.SetInteger( 
       
   817         CPhoneMainResourceResolver::Instance()->
       
   818         ResolveResourceID( resourceId ) );
       
   819     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
       
   820         &integerParam );
       
   821     }
       
   822     
       
   823 // -----------------------------------------------------------
       
   824 // CPhoneStateInCall::LaunchNewCallQueryL
       
   825 // -----------------------------------------------------------
       
   826 //
       
   827 EXPORT_C void CPhoneStateInCall::LaunchNewCallQueryL()
       
   828     {
       
   829     __LOGMETHODSTARTEND(EPhoneControl,  
       
   830         "CPhoneStateInCall::LaunchNewCallQueryL()" );
       
   831     
       
   832     if ( iOnScreenDialer )
       
   833         {
       
   834         //In touch, just activate dialer
       
   835         BeginTransEffectLC( ENumberEntryCreate );
       
   836         if ( IsNumberEntryUsedL() )
       
   837             {
       
   838             SetNumberEntryVisibilityL(ETrue);   
       
   839             }
       
   840         else
       
   841             {
       
   842             CreateNumberEntryL();
       
   843             SetNumberEntryVisibilityL(ETrue); 
       
   844             }
       
   845         EndTransEffect();
       
   846         }
       
   847     else
       
   848         {
       
   849         HBufC *text = HBufC::NewLC( KPhoneNumberEntryBufferSize );
       
   850         TPtr ptr( text->Des() );
       
   851 
       
   852         // Pre-populate the query with the number entry contents,
       
   853         // if it exists
       
   854         if ( IsNumberEntryUsedL() )
       
   855             {
       
   856             // get the number entry contents
       
   857             TPhoneCmdParamString stringParam;
       
   858             stringParam.SetString( &ptr );
       
   859             iViewCommandHandle->ExecuteCommandL(
       
   860                 EPhoneViewGetLocalizedNumberFromEntry,
       
   861                 &stringParam );
       
   862             }
       
   863 
       
   864         // Show text query with send key enabled
       
   865         const TBool enableSendKey = ETrue;
       
   866 
       
   867         CPhoneState::ShowTextQueryL( 
       
   868             CPhoneMainResourceResolver::Instance()->
       
   869                 ResolveResourceID( EPhoneNewCallPhoneNumberEditor ),
       
   870             CPhoneMainResourceResolver::Instance()->
       
   871                 ResolveResourceID( EPhoneCallHandlingNewCallFindCBA ),
       
   872             CPhoneMainResourceResolver::Instance()->
       
   873                 ResolveResourceID( EPhoneCallHandlingNewCallCallCBA ),
       
   874             &ptr,
       
   875             enableSendKey );
       
   876 
       
   877         CleanupStack::PopAndDestroy( text );        
       
   878         }
       
   879 
       
   880     }
       
   881 
   690 
   882 // -----------------------------------------------------------
   691 // -----------------------------------------------------------
   883 // CPhoneStateInCall::CallFetchedNumberL
   692 // CPhoneStateInCall::CallFetchedNumberL
   884 // -----------------------------------------------------------
   693 // -----------------------------------------------------------
   885 //
   694 //
   912     TPhoneCmdParamString dtmfSequence;
   721     TPhoneCmdParamString dtmfSequence;
   913     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   722     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   914     TPtr ptr( content->Des() );
   723     TPtr ptr( content->Des() );
   915     dtmfSequence.SetString( &ptr );
   724     dtmfSequence.SetString( &ptr );
   916     
   725     
   917     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   726     if ( iOnScreenDialer )
   918         {
   727         {
   919         iViewCommandHandle->ExecuteCommand(
   728         iViewCommandHandle->ExecuteCommand(
   920             EPhoneViewGetNumberFromEntry,
   729             EPhoneViewGetNumberFromEntry,
   921             &dtmfSequence );  
   730             &dtmfSequence );  
   922                     
   731                     
   923         CloseDTMFEditorL();   
   732         }     
   924         }
       
   925     else
       
   926         {
       
   927         iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
       
   928                                              &dtmfSequence );
       
   929         }        
       
   930 
   733 
   931     // Send the DTMF
   734     // Send the DTMF
   932     if ( ptr.Length() )
   735     if ( ptr.Length() )
   933         {
   736         {
   934         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );
   737         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );
   935         iStateMachine->SendPhoneEngineMessage(
   738         iStateMachine->SendPhoneEngineMessage(
   936             MPEPhoneModel::EPEMessageSendDTMF );    
   739             MPEPhoneModel::EPEMessageSendDTMF );    
   937         }
   740         }
   938     
   741     
   939     CleanupStack::PopAndDestroy( content );
   742     CleanupStack::PopAndDestroy( content );
   940     }
       
   941 
       
   942 // -----------------------------------------------------------
       
   943 // CPhoneStateInCall::LaunchDtmfManualQueryL
       
   944 // -----------------------------------------------------------
       
   945 //
       
   946 void CPhoneStateInCall::LaunchDtmfManualQueryL()
       
   947     {
       
   948     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::LaunchDtmfManualQueryL()" );
       
   949     
       
   950     HBufC *text = HBufC::NewLC( KPhoneNumberEntryBufferSize );
       
   951     TPtr ptr( text->Des() );
       
   952     // Pre-populate the query with the number entry contents, if it exists
       
   953     if ( IsNumberEntryUsedL() )
       
   954         {
       
   955         // get the number entry contents
       
   956         TPhoneCmdParamString stringParam;
       
   957         stringParam.SetString( &ptr );
       
   958         iViewCommandHandle->ExecuteCommandL(
       
   959             EPhoneViewGetLocalizedNumberFromEntry,
       
   960             &stringParam );
       
   961         }
       
   962 
       
   963     ShowDtmfTextQueryL( 
       
   964         CPhoneMainResourceResolver::Instance()->
       
   965             ResolveResourceID( EPhoneDtmfNumberQuery ),
       
   966         CPhoneMainResourceResolver::Instance()->
       
   967             ResolveResourceID( EPhoneSendDtmfEmptyEditBoxCBA ),
       
   968         CPhoneMainResourceResolver::Instance()->
       
   969             ResolveResourceID( EPhoneSendDtmfNormalEditBoxCBA ),
       
   970         &ptr );
       
   971     CleanupStack::PopAndDestroy( text );
       
   972     }
   743     }
   973 
   744 
   974 // -----------------------------------------------------------
   745 // -----------------------------------------------------------
   975 // CPhoneStateInCall::LaunchDtmfListQueryL
   746 // CPhoneStateInCall::LaunchDtmfListQueryL
   976 // -----------------------------------------------------------
   747 // -----------------------------------------------------------
  1040        
   811        
  1041        // Display dialog        
   812        // Display dialog        
  1042        iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
   813        iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
  1043            &queryDialogParam );
   814            &queryDialogParam );
  1044        }
   815        }
  1045     }
   816     }   
  1046 
       
  1047 // -----------------------------------------------------------
       
  1048 // CPhoneStateInCall::LaunchDtmfSearchDialogL
       
  1049 // -----------------------------------------------------------
       
  1050 //
       
  1051 void CPhoneStateInCall::LaunchDtmfSearchDialogL()
       
  1052     {
       
  1053     __LOGMETHODSTARTEND(EPhoneControl,  
       
  1054         "CPhoneStateInCall::LaunchDtmfSearchDialogL()" );
       
  1055     
       
  1056     TPhoneCmdParamInteger integerParam;
       
  1057     integerParam.SetInteger( EPhoneDtmfNumberQuery ); 
       
  1058     iViewCommandHandle->HandleCommandL( EPhoneViewOpenSingleItemFetchDialog, &integerParam );
       
  1059     }
       
  1060     
       
  1061 // -----------------------------------------------------------
       
  1062 // CPhoneStateInCall::LaunchDtmfListViewSearchDialogL
       
  1063 // -----------------------------------------------------------
       
  1064 //
       
  1065 void CPhoneStateInCall::LaunchDtmfListViewSearchDialogL()
       
  1066     {
       
  1067     __LOGMETHODSTARTEND(EPhoneControl,  
       
  1068         "CPhoneStateInCall::LaunchDtmfListViewSearchDialogL()" );
       
  1069 
       
  1070     TPhoneCmdParamInteger integerParam;
       
  1071     integerParam.SetInteger( EPhoneDtmfFetchTitle ); 
       
  1072     iViewCommandHandle->HandleCommandL( EPhoneViewOpenSingleItemFetchDialog, &integerParam );
       
  1073     }    
       
  1074 
       
  1075 // -----------------------------------------------------------
       
  1076 // CPhoneStateInCall::LaunchNewCallSearchDialogL
       
  1077 // -----------------------------------------------------------
       
  1078 //
       
  1079 void CPhoneStateInCall::LaunchNewCallSearchDialogL()
       
  1080     {
       
  1081     __LOGMETHODSTARTEND(EPhoneControl,  
       
  1082         "CPhoneStateInCall::LaunchNewCallSearchDialogL()" );
       
  1083     
       
  1084     TPhoneCmdParamBoolean blockingDialogStatus;
       
  1085             iViewCommandHandle->ExecuteCommandL( EPhoneViewGetBlockingDialogStatus, 
       
  1086             &blockingDialogStatus ); 
       
  1087     // Prevents unlegal use of singleitem fetch       
       
  1088     if ( !blockingDialogStatus.Boolean() )     
       
  1089         {             
       
  1090                     
       
  1091         TPhoneCmdParamInteger integerParam;
       
  1092         integerParam.SetInteger( EPhoneNewCallFetchTitle ); 
       
  1093         iViewCommandHandle->HandleCommandL( EPhoneViewOpenSingleItemFetchDialog, &integerParam );
       
  1094         }
       
  1095     }
       
  1096     
   817     
  1097 // ---------------------------------------------------------
   818 // ---------------------------------------------------------
  1098 // CPhoneStateInCall::IsVideoCallActiveL
   819 // CPhoneStateInCall::IsVideoCallActiveL
  1099 // ---------------------------------------------------------
   820 // ---------------------------------------------------------
  1100 //
   821 //
  1242         {
   963         {
  1243         iViewCommandHandle->ExecuteCommandL(
   964         iViewCommandHandle->ExecuteCommandL(
  1244             EPhoneViewEnableKeyLock ); 
   965             EPhoneViewEnableKeyLock ); 
  1245         }
   966         }
  1246     }    
   967     }    
  1247      
       
  1248 // -----------------------------------------------------------------------------
       
  1249 // CPhoneStateInCall::HandleSuccessFetchedNumberL
       
  1250 // -----------------------------------------------------------------------------
       
  1251 //    
       
  1252 void CPhoneStateInCall::HandleSuccessFetchedNumberL()
       
  1253     {
       
  1254     __LOGMETHODSTARTEND(EPhoneControl, 
       
  1255         "CPhoneStateInCall::HandleSuccessFetchedNumberL()");
       
  1256     TBuf<KPhoneNumberEntryBufferSize> fetchContent;    
       
  1257     fetchContent = iViewCommandHandle->FetchContent();
       
  1258 
       
  1259     TPhoneCmdParamInteger fetchTypeParam;
       
  1260     iViewCommandHandle->ExecuteCommand( EPhoneViewGetSingleItemFetchType,
       
  1261         &fetchTypeParam );
       
  1262     TInt fetchType( fetchTypeParam.Integer() );
       
  1263     
       
  1264     if ( fetchType == EPhoneNewCallFetchTitle )
       
  1265         {
       
  1266         if ( iOnScreenDialer )
       
  1267             {
       
  1268             iViewCommandHandle->ExecuteCommandL(
       
  1269                             EPhoneViewSetNumberEntryContent,
       
  1270                             0,
       
  1271                             fetchContent );              
       
  1272             }
       
  1273         // Call the fetched number
       
  1274         CallFetchedNumberL( fetchContent );
       
  1275         }
       
  1276     else if ( fetchType == EPhoneDtmfFetchTitle )
       
  1277         {
       
  1278         // Send the DTMF
       
  1279         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( fetchContent );
       
  1280         iStateMachine->SendPhoneEngineMessage(
       
  1281             MPEPhoneModel::EPEMessageSendDTMF ); 
       
  1282         }
       
  1283     else if( iCustomization && fetchType > EPhoneRssBaseLast )
       
  1284         {
       
  1285         // Handle unattended transfer contact fetch
       
  1286         iCustomization->HandleCommandL( fetchType );
       
  1287         }
       
  1288     else // EPhoneCmdDtmfSearch
       
  1289         {
       
  1290         // Send the DTMF
       
  1291         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( fetchContent );
       
  1292         iStateMachine->SendPhoneEngineMessage(
       
  1293             MPEPhoneModel::EPEMessageSendDTMF ); 
       
  1294         }
       
  1295     }
       
  1296     
       
  1297 // -----------------------------------------------------------------------------
       
  1298 // CPhoneStateInCall::HandleFailedFetchedNumberL
       
  1299 // -----------------------------------------------------------------------------
       
  1300 //    
       
  1301 void CPhoneStateInCall::HandleFailedFetchedNumberL()
       
  1302     {
       
  1303     __LOGMETHODSTARTEND(EPhoneControl, 
       
  1304         "CPhoneStateInCall::HandleFailedFetchedNumberL()");
       
  1305     
       
  1306     TPhoneCmdParamInteger fetchTypeParam;
       
  1307     iViewCommandHandle->ExecuteCommand( EPhoneViewGetSingleItemFetchType,
       
  1308         &fetchTypeParam );
       
  1309     TInt fetchType( fetchTypeParam.Integer() );
       
  1310     
       
  1311     if ( fetchType == EPhoneNewCallFetchTitle )
       
  1312         {
       
  1313         HandleCommandL( EPhoneInCallCmdNewCall );
       
  1314         }
       
  1315     else if ( fetchType ==  EPhoneDtmfFetchTitle )
       
  1316         {
       
  1317         HandleCommandL( EPhoneInCallCmdDtmfListQuery );
       
  1318         }
       
  1319     else // EPhoneCmdDtmfSearch
       
  1320         {
       
  1321         HandleCommandL( EPhoneDtmfFetchTitle ); 
       
  1322         }
       
  1323     }  
       
  1324 
       
  1325 
   968 
  1326 // -----------------------------------------------------------------------------
   969 // -----------------------------------------------------------------------------
  1327 // CPhoneStateInCall::CloseDtmfQueryL
   970 // CPhoneStateInCall::CloseDtmfQueryL
  1328 // -----------------------------------------------------------------------------
   971 // -----------------------------------------------------------------------------
  1329 //    
   972 //    
  1330 EXPORT_C void CPhoneStateInCall::CloseDtmfQueryL()
   973 EXPORT_C void CPhoneStateInCall::CloseDtmfQueryL()
  1331     {
   974     {    
  1332     __LOGMETHODSTARTEND(EPhoneControl, 
       
  1333         "CPhoneStateInCall::CloseDtmfQueryL()");
       
  1334     TPhoneCmdParamInteger fetchTypeParam;
       
  1335         iViewCommandHandle->ExecuteCommand( EPhoneViewGetSingleItemFetchType,
       
  1336             &fetchTypeParam );
       
  1337         TInt fetchType( fetchTypeParam.Integer() );
       
  1338      
       
  1339     // If DTMF fetch is active then remove numberentry because it is considered
       
  1340     // to be a part of DTMF fetch operation.
       
  1341     if ( fetchType ==  EPhoneDtmfFetchTitle )
       
  1342         {
       
  1343         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
       
  1344         iViewCommandHandle->ExecuteCommand( EPhoneViewCloseSingleItemFetchDialog ); 
       
  1345         }
       
  1346     
       
  1347     // Close dtmf dialer or dtmf query if exist.
       
  1348     if ( IsDTMFEditorVisibleL() )
       
  1349         {
       
  1350         CloseDTMFEditorL();
       
  1351         }
       
  1352     }  
   975     }  
  1353 
       
  1354 // -----------------------------------------------------------
       
  1355 // CPhoneStateInCall::PhoneNumberAvailableInPhoneEngineL
       
  1356 // -----------------------------------------------------------
       
  1357 //
       
  1358 EXPORT_C void CPhoneStateInCall::PhoneNumberAvailableInPhoneEngineL( TInt aCallId )
       
  1359     {
       
  1360     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStateInCall::PhoneNumberAvailableInPhoneEngineL() ");
       
  1361     TPhoneCmdParamBoolean phoneNumberAvailable;
       
  1362     
       
  1363     const TBool contactInfoAvailable = 
       
  1364         iStateMachine->PhoneEngineInfo()->RemoteName( aCallId ).Length() ||
       
  1365         iStateMachine->PhoneEngineInfo()->RemoteCompanyName( aCallId ).Length();
       
  1366     
       
  1367     if( iStateMachine->PhoneEngineInfo()->RemotePhoneNumber( aCallId ).Length() ||
       
  1368         contactInfoAvailable )
       
  1369         {
       
  1370         // Phone number is available straight or via contact info
       
  1371         // so switch to video/voice call is possible
       
  1372         __PHONELOG( EBasic, EPhoneControl, "CPhoneStateInCall::PhoneNumberAvailableInPhoneEngineL - Phonenumber is available" );
       
  1373         phoneNumberAvailable.SetBoolean( ETrue );
       
  1374         }
       
  1375     else
       
  1376         {
       
  1377         __PHONELOG( EBasic, EPhoneControl, "CPhoneStateInCall::PhoneNumberAvailableInPhoneEngineL - Phonenumber is not available" );
       
  1378         phoneNumberAvailable.SetBoolean( EFalse );
       
  1379         }
       
  1380 
       
  1381     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetPhoneNumberAvailableInPhoneEngine,
       
  1382         &phoneNumberAvailable );
       
  1383     }
       
  1384 
   976 
  1385 
   977 
  1386 // -----------------------------------------------------------------------------
   978 // -----------------------------------------------------------------------------
  1387 // CPhoneStateInCall::HandleEndKeyPressL
   979 // CPhoneStateInCall::HandleEndKeyPressL
  1388 // -----------------------------------------------------------------------------
   980 // -----------------------------------------------------------------------------
  1425                 }
  1017                 }
  1426             }
  1018             }
  1427 
  1019 
  1428         if ( IsNumberEntryUsedL() )
  1020         if ( IsNumberEntryUsedL() )
  1429             {
  1021             {
  1430             if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
  1022             // Remove number entry from screen
  1431                 {
  1023             iViewCommandHandle->ExecuteCommandL( 
  1432                 CloseDTMFEditorL();
  1024                 EPhoneViewRemoveNumberEntry );
  1433                 }
  1025             // Do state-specific operation when number entry is cleared
  1434             else
  1026             HandleNumberEntryClearedL();         
  1435                 {
       
  1436                 BeginTransEffectLC( ENumberEntryClose );
       
  1437                 // Remove number entry from screen
       
  1438                 iViewCommandHandle->ExecuteCommandL( 
       
  1439                     EPhoneViewRemoveNumberEntry );
       
  1440                 EndTransEffect();
       
  1441                 // Do state-specific operation when number entry is cleared
       
  1442                 HandleNumberEntryClearedL();         
       
  1443                 }
       
  1444             }
  1027             }
  1445 
  1028 
  1446         if ( !TopAppIsDisplayedL() )
  1029         if ( !TopAppIsDisplayedL() )
  1447             {
  1030             {
  1448             // Bring app to foreground
  1031             // Bring app to foreground
  1451             iViewCommandHandle->ExecuteCommandL(
  1034             iViewCommandHandle->ExecuteCommandL(
  1452                 EPhoneViewBringAppToForeground, &uidParam );
  1035                 EPhoneViewBringAppToForeground, &uidParam );
  1453             }
  1036             }
  1454         }
  1037         }
  1455     else
  1038     else
  1456         {  
  1039         {        
  1457         if ( IsNumberEntryUsedL() )
       
  1458             {
       
  1459             if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
       
  1460                 {
       
  1461                 CloseDTMFEditorL();
       
  1462                 }
       
  1463             }
       
  1464       
       
  1465         // handle short end key
  1040         // handle short end key
  1466         CPhoneState::DisconnectCallL();    
  1041         CPhoneState::DisconnectCallL();    
  1467         }
  1042         }
  1468     }
  1043     }
  1469 
  1044