phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp
branchRCL_3
changeset 24 41a7f70b3818
parent 23 40a3f856b14d
child 25 5266b1f337bd
equal deleted inserted replaced
23:40a3f856b14d 24:41a7f70b3818
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDES
    19 // INCLUDES
    20 #include <featmgr.h>
    20 #include <featmgr.h>
    21 #include <StringLoader.h> 
    21 #include <StringLoader.h>
    22 #include <ScreensaverInternalPSKeys.h>
       
    23 #include <AknUtils.h>
    22 #include <AknUtils.h>
    24 #include <mpeengineinfo.h>
    23 #include <mpeengineinfo.h>
    25 #include <mpeclientinformation.h>
    24 #include <mpeclientinformation.h>
    26 
    25 
    27 #include "cphonepubsubproxy.h"
    26 #include "cphonepubsubproxy.h"
    81     {
    80     {
    82     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
    81     __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
    83         Panic( EPhoneCtrlInvariant ) );
    82         Panic( EPhoneCtrlInvariant ) );
    84     
    83     
    85     CPhoneState::BaseConstructL();
    84     CPhoneState::BaseConstructL();
    86     
    85 
    87     // Enable the volume display
       
    88     iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNaviPaneAudioVolume );   
       
    89     HandleAudioOutputChangedL();
    86     HandleAudioOutputChangedL();
    90 
       
    91     TPhoneCmdParamCallStateData callStateData;
       
    92     callStateData.SetCallState( EPEStateDialing );
       
    93     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, &callStateData );
       
    94     if ( callStateData.CallId() > KErrNotFound && IsVideoCall( callStateData.CallId() ) )
       
    95         {
       
    96         CPhonePubSubProxy::Instance()->ChangePropertyValue(
       
    97                         KPSUidScreenSaver,
       
    98                         KScreenSaverAllowScreenSaver,
       
    99                         EPhoneScreensaverNotAllowed );
       
   100         }
       
   101     }
    87     }
   102 
    88 
   103 // -----------------------------------------------------------
    89 // -----------------------------------------------------------
   104 // CPhoneStateCallSetup::NewL()
    90 // CPhoneStateCallSetup::NewL()
   105 // Constructor
    91 // Constructor
   131         "CPhoneStateCallSetup::HandleCommandL()" );
   117         "CPhoneStateCallSetup::HandleCommandL()" );
   132     TBool commandStatus = ETrue;
   118     TBool commandStatus = ETrue;
   133     
   119     
   134     switch( aCommand )
   120     switch( aCommand )
   135         {
   121         {
       
   122         case EPhoneInCallCmdDialer:
       
   123             iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
       
   124             break;
       
   125             
   136         case EPhoneNumberAcqCmdAddToContacts:
   126         case EPhoneNumberAcqCmdAddToContacts:
   137             {
   127             {
   138             // If call setup is ongoing then add to contacts query should
   128             // If call setup is ongoing then add to contacts query should
   139             // not be opened -> do nothing here.
   129             // not be opened -> do nothing here.
   140             }
   130             }
   163                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   153                 iDtmfWaitCharTimer = CPhoneDtmfWaitCharTimer::NewL( 
   164                     iStateMachine );                    
   154                     iStateMachine );                    
   165                 }
   155                 }
   166             iDtmfWaitCharTimer->ButtonPressedL();
   156             iDtmfWaitCharTimer->ButtonPressedL();
   167             break;
   157             break;
   168                 
   158 
   169         case EPhoneDialerCmdHelpDtmf:
       
   170             {
       
   171             if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
       
   172                 {                
       
   173                 TPtrC contextName( KDATA_DIALER_HLP_SEND_DTMF );
       
   174                 iViewCommandHandle->ExecuteCommandL( 
       
   175                     EPhoneViewLaunchHelpApplication,
       
   176                     0,
       
   177                     contextName );
       
   178                 }
       
   179             }
       
   180             break;
       
   181         
   159         
   182         case EPhoneCmdOptions:
   160         case EPhoneCmdOptions:
   183             OpenMenuBarL();
       
   184             break;
   161             break;
   185         
   162         
   186         case EPhoneInCallCmdDtmfManualQuery:
   163         case EPhoneInCallCmdDtmfManualQuery:
   187              if ( iOnScreenDialer )
       
   188                  {
       
   189                  ShowDtmfDialerL();
       
   190                  }
       
   191               break;    
   164               break;    
   192             
   165             
   193         case EPhoneDtmfDialerExit:      // fall through
   166         case EPhoneDtmfDialerExit:      // fall through
   194         case EPhoneDtmfDialerCancel:
   167         case EPhoneDtmfDialerCancel:
   195             CloseDTMFEditorL();
   168             break;
       
   169 
       
   170         case EPhoneInCallCmdMute: // fall through
       
   171         case EPhoneInCallCmdUnmute:
       
   172             iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( 
       
   173                 ( aCommand == EPhoneInCallCmdMute ) );
       
   174             iStateMachine->SendPhoneEngineMessage( 
       
   175                 MPEPhoneModel::EPEMessageSetAudioMute );
   196             break;
   176             break;
   197                                    
   177                                    
   198         default:
   178         default:
   199             commandStatus = CPhoneState::HandleCommandL( aCommand );
   179             commandStatus = CPhoneState::HandleCommandL( aCommand );
   200             break;
   180             break;
   201         }
   181         }
   202 
   182 
   203     return commandStatus;
   183     return commandStatus;
   204     }
   184     }
   205 
   185 
   206 // -----------------------------------------------------------
       
   207 // CPhoneStateCallSetup::OpenMenuBarL   
       
   208 // -----------------------------------------------------------
       
   209 //
       
   210 EXPORT_C void CPhoneStateCallSetup::OpenMenuBarL()
       
   211     {
       
   212     __LOGMETHODSTARTEND(EPhoneControl,  
       
   213         "CPhoneStateCallSetup::OpenMenuBarL()" );
       
   214 
       
   215     if ( iOnScreenDialer )
       
   216         {
       
   217         if ( IsDTMFEditorVisibleL() && IsNumberEntryVisibleL() )
       
   218             {
       
   219             TInt resourceId = EPhoneDtmfDialerMenubar;
       
   220             
       
   221             TPhoneCmdParamInteger integerParam;
       
   222             integerParam.SetInteger( 
       
   223                 CPhoneMainResourceResolver::Instance()->
       
   224                 ResolveResourceID( resourceId ) );
       
   225             iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
       
   226                 &integerParam );
       
   227             }
       
   228         }
       
   229     }
       
   230 
   186 
   231 // -----------------------------------------------------------
   187 // -----------------------------------------------------------
   232 // CPhoneStateCallSetup::HandleNumberEntryClearedL()
   188 // CPhoneStateCallSetup::HandleNumberEntryClearedL()
   233 // -----------------------------------------------------------
   189 // -----------------------------------------------------------
   234 //
   190 //
   240     // Update call setup CBA when number entry is cleared
   196     // Update call setup CBA when number entry is cleared
   241     UpdateInCallCbaL();
   197     UpdateInCallCbaL();
   242     }
   198     }
   243 
   199 
   244 // -----------------------------------------------------------
   200 // -----------------------------------------------------------
   245 // CPhoneStateCallSetup::HandleCreateNumberEntryL
       
   246 // -----------------------------------------------------------
       
   247 //
       
   248 EXPORT_C void CPhoneStateCallSetup::HandleCreateNumberEntryL( 
       
   249         const TKeyEvent& /*aKeyEvent*/,
       
   250         TEventCode /*aEventCode*/)
       
   251     {
       
   252     __LOGMETHODSTARTEND(EPhoneControl,  
       
   253         "CPhoneStateCallSetup::HandleCreateNumberEntryL()" );
       
   254     }
       
   255 
       
   256 // -----------------------------------------------------------
       
   257 // CPhoneStateCallSetup::UpdateInCallCbaL
   201 // CPhoneStateCallSetup::UpdateInCallCbaL
   258 // -----------------------------------------------------------
   202 // -----------------------------------------------------------
   259 //
   203 //
   260 EXPORT_C void CPhoneStateCallSetup::UpdateInCallCbaL()
   204 EXPORT_C void CPhoneStateCallSetup::UpdateInCallCbaL()
   261     {
   205     {
   268 // -----------------------------------------------------------
   212 // -----------------------------------------------------------
   269 //
   213 //
   270 EXPORT_C void CPhoneStateCallSetup::UpdateCbaL( TInt aResource )
   214 EXPORT_C void CPhoneStateCallSetup::UpdateCbaL( TInt aResource )
   271     {
   215     {
   272     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::UpdateCbaL() ");
   216     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::UpdateCbaL() ");
   273     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   217     iCbaManager->UpdateCbaL( aResource );   
   274         {
       
   275         iCbaManager->SetCbaL( EPhoneDtmfDialerCBA );        
       
   276         }
       
   277     else
       
   278         {
       
   279         iCbaManager->UpdateCbaL( aResource );   
       
   280         }
       
   281     }
   218     }
   282 
   219 
   283 // -----------------------------------------------------------
   220 // -----------------------------------------------------------
   284 // CPhoneStateCallSetup::HandleKeyEventL
   221 // CPhoneStateCallSetup::HandleKeyEventL
   285 // -----------------------------------------------------------
   222 // -----------------------------------------------------------
   371                     MPEPhoneModel::EPEMessageTerminateAllConnections );
   308                     MPEPhoneModel::EPEMessageTerminateAllConnections );
   372                 
   309                 
   373                 // Remove number entry if long press
   310                 // Remove number entry if long press
   374                 if ( IsNumberEntryUsedL() )
   311                 if ( IsNumberEntryUsedL() )
   375                     {
   312                     {
   376                     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   313                     iViewCommandHandle->ExecuteCommandL( 
   377                         {
   314                         EPhoneViewRemoveNumberEntry );
   378                         CloseDTMFEditorL();
       
   379                         } 
       
   380                     else
       
   381                         {
       
   382                         iViewCommandHandle->ExecuteCommandL( 
       
   383                             EPhoneViewRemoveNumberEntry );
       
   384                         }
       
   385                     }
   315                     }
   386                 }
   316                 }
   387             else
   317             else
   388                 {                
   318                 {                
   389                 // handle end key
   319                 // handle end key
   402                 CPhoneState::SetHandsfreeModeL( !handsfreeMode );
   332                 CPhoneState::SetHandsfreeModeL( !handsfreeMode );
   403                 }
   333                 }
   404             else // aMessage == EPhoneKeyLongPress
   334             else // aMessage == EPhoneKeyLongPress
   405                 {
   335                 {
   406                 // Display call in progress information note
   336                 // Display call in progress information note
   407                 CPhoneState::SendGlobalInfoNoteL( EPhoneCallInProgress );
   337                 CPhoneState::SendGlobalInfoNoteL( EPhoneCallInProgress, ETrue );
   408                 }
   338                 }
   409             break;
   339             break;
   410 
   340 
   411         default:
   341         default:
   412             break;
   342             break;
   568 // CPhoneStateCallSetup::HandleConnectedL
   498 // CPhoneStateCallSetup::HandleConnectedL
   569 // -----------------------------------------------------------
   499 // -----------------------------------------------------------
   570 //
   500 //
   571 void CPhoneStateCallSetup::HandleConnectedL( TInt aCallId )
   501 void CPhoneStateCallSetup::HandleConnectedL( TInt aCallId )
   572     {
   502     {
   573     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()");        
   503     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()");
   574 
   504     // Keep Phone in the foreground
   575     // Close menu bar, if it is displayed
   505     TPhoneCmdParamBoolean booleanParam;
   576     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
   506     booleanParam.SetBoolean( EFalse );
       
   507     iViewCommandHandle->ExecuteCommandL( 
       
   508         EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
   577     
   509     
   578     BeginUiUpdateLC();
   510     BeginUiUpdateLC();
   579         
   511  
   580     // Remove the number entry if it isn't DTMF dialer
       
   581     if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() )
       
   582         {
       
   583         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
       
   584         }
       
   585     
       
   586     // Update the single call
   512     // Update the single call
   587     CPhoneState::UpdateSingleActiveCallL( aCallId );
   513     CPhoneState::UpdateSingleActiveCallL( aCallId );
   588         
   514             
   589     // Complete sat request
       
   590     if ( iStateMachine->PhoneEngineInfo()->CallOrigin( aCallId ) == EPECallOriginSAT )
       
   591         {
       
   592         CompleteSatRequestL( aCallId );
       
   593         }
       
   594         
       
   595     // Update touch buttons
   515     // Update touch buttons
   596     SetTouchPaneButtons( EPhoneIncallButtons );        
   516     SetTouchPaneButtons( EPhoneIncallButtons );        
   597 
   517 
   598     SetToolbarDimming( EFalse );
       
   599 
       
   600     EndUiUpdate();
   518     EndUiUpdate();
   601     
   519     
   602     // Go to single state
   520     // Go to single state
   603     UpdateCbaL( EPhoneCallHandlingInCallCBA );    
   521     UpdateCbaL( EPhoneCallHandlingInCallCBA );    
   604 
   522 
   610 // -----------------------------------------------------------
   528 // -----------------------------------------------------------
   611 //
   529 //
   612 void CPhoneStateCallSetup::HandleIdleL( TInt aCallId )
   530 void CPhoneStateCallSetup::HandleIdleL( TInt aCallId )
   613     {
   531     {
   614     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleIdleL()");
   532     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleIdleL()");
   615     if ( !NeedToReturnToForegroundAppL() &&
   533     
   616          IsNumberEntryUsedL() )
   534     BeginUiUpdateLC ();
   617         {
       
   618         BeginTransEffectLC( ECallUiDisappear );
       
   619         }
       
   620     else 
       
   621         {
       
   622         BeginTransEffectLC( ENumberEntryOpen );
       
   623         }
       
   624     BeginUiUpdateLC();
       
   625     
   535     
   626     // Disable the volume display
   536     // Disable the volume display
   627     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
   537     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
   628 
   538 
   629     // Remove call 
   539     // Remove call 
   632        
   542        
   633     CheckIfRestoreNEContentAfterDtmfDialer();
   543     CheckIfRestoreNEContentAfterDtmfDialer();
   634       
   544       
   635     if ( IsNumberEntryUsedL() )
   545     if ( IsNumberEntryUsedL() )
   636         {
   546         {
   637         if ( NeedToReturnToForegroundAppL() )
   547         // Show the number entry if it exists
   638             {
   548         SetNumberEntryVisibilityL(ETrue);    
   639             // Return phone to the background if send to background is needed.
       
   640             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
       
   641     
       
   642             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
       
   643     
       
   644             // Set Number Entry CBA
       
   645             iCbaManager->SetCbaL( EPhoneNumberAcqCBA );
       
   646             }
       
   647         else
       
   648             {
       
   649             // Show the number entry if it exists
       
   650             SetNumberEntryVisibilityL(ETrue);
       
   651             }
       
   652         }    
   549         }    
   653     else if ( NeedToReturnToForegroundAppL() )
   550     else if ( NeedToSendToBackgroundL() )
   654         {
   551         {
   655         __PHONELOG( EBasic,EPhoneControl,"CPhoneStateCallSetup::elseif1");
   552         __PHONELOG( EBasic,EPhoneControl,"CPhoneStateCallSetup::elseif1");
   656         // Continue displaying current app but set up the 
   553         // Continue displaying current app but set up the 
   657         // idle screen in the background
   554         // idle screen in the background
   658         SetupIdleScreenInBackgroundL();
   555         SetupIdleScreenInBackgroundL();
   663          // Display idle screen
   560          // Display idle screen
   664         DisplayIdleScreenL();
   561         DisplayIdleScreenL();
   665         }
   562         }
   666         
   563         
   667     EndUiUpdate();
   564     EndUiUpdate();
   668     EndTransEffect(); 
   565     // Go to idle state
   669     // No need update cba
   566     // No need update cba
   670     iStateMachine->ChangeState( EPhoneStateIdle );
   567     iStateMachine->ChangeState( EPhoneStateIdle );
   671     }
   568     }
   672 
   569 
   673 // -----------------------------------------------------------------------------
   570 // -----------------------------------------------------------------------------
   674 // CPhoneStateCallSetup::HandleRemoteTerminatedL
   571 // CPhoneStateCallSetup::HandleRemoteTerminatedL
   675 // -----------------------------------------------------------------------------
   572 // -----------------------------------------------------------------------------
   676 //
   573 //
   677 void CPhoneStateCallSetup::HandleRemoteTerminatedL( TInt aCallId )
   574 void CPhoneStateCallSetup::HandleRemoteTerminatedL( TInt /*aCallId*/ )
   678     {
   575     {
   679     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleRemoteTerminatedL( ) ");
   576     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleRemoteTerminatedL( ) ");
   680 
   577 
   681     // Remove call header
   578     // Remove call header
   682     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   579     /*iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   683     
   580     
   684     TPhoneCmdParamBoolean globalNotifierParam;
   581     TPhoneCmdParamBoolean globalNotifierParam;
   685     globalNotifierParam.SetBoolean( EFalse );
   582     globalNotifierParam.SetBoolean( EFalse );
   686     iViewCommandHandle->ExecuteCommandL( 
   583     iViewCommandHandle->ExecuteCommandL( 
   687         EPhoneViewSetGlobalNotifiersDisabled, &globalNotifierParam );
   584         EPhoneViewSetGlobalNotifiersDisabled, &globalNotifierParam );*/
   688 
   585 
   689     // Video call not possible note is shown by 
   586     // Video call not possible note is shown by 
   690     // CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL method,
   587     // CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL method,
   691     // if error ECCPErrorCCResourceNotAvailable occured.
   588     // if error ECCPErrorCCResourceNotAvailable occured.
   692     }    
   589     }    
   696 // -----------------------------------------------------------------------------
   593 // -----------------------------------------------------------------------------
   697 //    
   594 //    
   698 void CPhoneStateCallSetup::HandleAudioOutputChangedL()
   595 void CPhoneStateCallSetup::HandleAudioOutputChangedL()
   699     {
   596     {
   700     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleAudioOutputChangedL( ) ");
   597     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleAudioOutputChangedL( ) ");
   701    
   598        
       
   599     CPhoneState::HandleAudioOutputChangedL();
   702     // Update the call setup CBA
   600     // Update the call setup CBA
   703     UpdateInCallCbaL();
   601     UpdateInCallCbaL();
   704     
   602     SetTouchPaneButtons(0);
   705     CPhoneState::HandleAudioOutputChangedL();
       
   706     }
   603     }
   707  
   604  
   708 // -----------------------------------------------------------
   605 // -----------------------------------------------------------
   709 // CPhoneStateCallSetup::SendDtmfL
   606 // CPhoneStateCallSetup::SendDtmfL
   710 // -----------------------------------------------------------
   607 // -----------------------------------------------------------
   720     TPhoneCmdParamString dtmfSequence;
   617     TPhoneCmdParamString dtmfSequence;
   721     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   618     HBufC *content = HBufC::NewLC( KPEDtmfMaxLength );
   722     TPtr ptr( content->Des() );
   619     TPtr ptr( content->Des() );
   723     dtmfSequence.SetString( &ptr );
   620     dtmfSequence.SetString( &ptr );
   724     
   621     
   725     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
   622     if ( iOnScreenDialer )
   726         {
   623         {
   727         iViewCommandHandle->ExecuteCommand(
   624         iViewCommandHandle->ExecuteCommand(
   728             EPhoneViewGetNumberFromEntry,
   625             EPhoneViewGetNumberFromEntry,
   729             &dtmfSequence );  
   626             &dtmfSequence );  
   730                     
   627         }     
   731         CloseDTMFEditorL();
       
   732         }
       
   733     else
       
   734         {
       
   735         iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
       
   736                                              &dtmfSequence );
       
   737         }        
       
   738 
   628 
   739     // Send the DTMF
   629     // Send the DTMF
   740     if ( ptr.Length() )
   630     if ( ptr.Length() )
   741         {
   631         {
   742         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );
   632         iStateMachine->PhoneEngineInfo()->SetDtmfStringCommand( ptr );