phoneapp/phoneuistates/src/cphonesinglecall.cpp
changeset 50 377c906a8701
parent 46 bc5a64e5bc3c
child 65 2a5d4ab426d3
equal deleted inserted replaced
46:bc5a64e5bc3c 50:377c906a8701
   114             }
   114             }
   115         }
   115         }
   116 
   116 
   117     iCallId = callStateData.CallId();
   117     iCallId = callStateData.CallId();
   118     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   118     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
   119 
       
   120     
       
   121     // Update phone number availability for menu use
       
   122     PhoneNumberAvailableInPhoneEngineL( callStateData.CallId() );
       
   123       
   119       
   124     }
   120     }
   125 
   121 
   126 // -----------------------------------------------------------
   122 // -----------------------------------------------------------
   127 // CPhoneSingleCall::NewL()
   123 // CPhoneSingleCall::NewL()
   267         case EPhoneInCallCmdUnhold:
   263         case EPhoneInCallCmdUnhold:
   268             ToggleHoldL();
   264             ToggleHoldL();
   269             break;
   265             break;
   270             
   266             
   271         case EPhoneInCallCmdNewCall:
   267         case EPhoneInCallCmdNewCall:
   272             LaunchNewCallQueryL();
       
   273             break;
   268             break;
   274             
   269             
   275         case EPhoneInCallCmdNewCallCall:
   270         case EPhoneInCallCmdNewCallCall:
   276             CallFromNewCallQueryL();
       
   277             break;
   271             break;
   278 
   272 
   279         case EPhoneInCallCmdSwitchToVideo:
   273         case EPhoneInCallCmdSwitchToVideo:
   280             SwitchToVideoL();
   274             SwitchToVideoL();
   281             break;
   275             break;
   292             break;
   286             break;
   293         
   287         
   294         /* Flow through */ 
   288         /* Flow through */ 
   295         case EPhoneCmdNoSwitchToVideo:
   289         case EPhoneCmdNoSwitchToVideo:
   296         case EPhoneCmdNoSwitchToVoice:
   290         case EPhoneCmdNoSwitchToVoice:
   297             // Sets touch buttons to correct status if 'No' command has occured.    
       
   298             iViewCommandHandle->ExecuteCommand( EPhoneResetTouchButtons );    
       
   299             break;        
   291             break;        
   300                 
   292                 
   301         case EPhoneCmdYesSwitchToVoice:
   293         case EPhoneCmdYesSwitchToVoice:
   302             // Set current call id
   294             // Set current call id
   303             iStateMachine->SetCallId( iCallId );
   295             iStateMachine->SetCallId( iCallId );
   338 
   330 
   339     return commandStatus;
   331     return commandStatus;
   340     }
   332     }
   341 
   333 
   342 // -----------------------------------------------------------
   334 // -----------------------------------------------------------
   343 // CPhoneSingleCall::OpenMenuBarL
       
   344 // -----------------------------------------------------------
       
   345 //
       
   346 EXPORT_C void CPhoneSingleCall::OpenMenuBarL()
       
   347     {
       
   348     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::OpenMenuBarL()");
       
   349 
       
   350     if ( IsVideoCall ( iCallId ))
       
   351         {
       
   352         OpenVideoCallMenuBarL();
       
   353         }
       
   354     else
       
   355         {
       
   356         CPhoneGsmInCall::OpenMenuBarL();            
       
   357         }
       
   358     }
       
   359 
       
   360 // -----------------------------------------------------------
       
   361 // CPhoneSingleCall::CallId
   335 // CPhoneSingleCall::CallId
   362 // -----------------------------------------------------------
   336 // -----------------------------------------------------------
   363 //
   337 //
   364 EXPORT_C TInt CPhoneSingleCall::CallId() const
   338 EXPORT_C TInt CPhoneSingleCall::CallId() const
   365     {
   339     {
   371 // -----------------------------------------------------------
   345 // -----------------------------------------------------------
   372 //
   346 //
   373 void CPhoneSingleCall::OpenVideoCallMenuBarL()
   347 void CPhoneSingleCall::OpenVideoCallMenuBarL()
   374     {
   348     {
   375     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::OpenVideoCallMenuBarL()");
   349     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::OpenVideoCallMenuBarL()");
   376     if( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
   350                    
   377         {
       
   378         TInt resourceId;
       
   379 
       
   380         if ( IsNumberEntryUsedL() )
       
   381             {
       
   382             resourceId = EPhoneVideoCallMenubarWithNumberEntry;
       
   383             }
       
   384         else
       
   385             {
       
   386             resourceId = EPhoneVideoCallMenubar;
       
   387             }
       
   388         
       
   389         TPhoneCmdParamInteger integerParam;
       
   390         integerParam.SetInteger( 
       
   391             CPhoneMainResourceResolver::Instance()->
       
   392             ResolveResourceID( resourceId ) );
       
   393         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
       
   394             &integerParam );
       
   395         }                    
       
   396     }
   351     }
   397     
   352     
   398 // -----------------------------------------------------------
   353 // -----------------------------------------------------------
   399 // CPhoneSingleCall::HandleHeldL
   354 // CPhoneSingleCall::HandleHeldL
   400 // -----------------------------------------------------------
   355 // -----------------------------------------------------------
   567     TInt aCallId, 
   522     TInt aCallId, 
   568     const TPhoneCmdParamBoolean aCommandParam )
   523     const TPhoneCmdParamBoolean aCommandParam )
   569     {
   524     {
   570     __LOGMETHODSTARTEND( EPhoneUIStates, 
   525     __LOGMETHODSTARTEND( EPhoneUIStates, 
   571         "CPhoneSingleCall::DisplayIncomingCallL()");
   526         "CPhoneSingleCall::DisplayIncomingCallL()");
   572     // Close menu bar, if it is displayed
       
   573     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   574 
   527 
   575     // Cannot delete active note, e.g. New call query, 
   528     // Cannot delete active note, e.g. New call query, 
   576     // but show waiting note with or without caller name
   529     // but show waiting note with or without caller name
   577     if ( IsAnyQueryActiveL() || 
   530     if ( IsAnyQueryActiveL() || 
   578         ( !aCommandParam.Boolean() && iOnScreenDialer ) )
   531         ( !aCommandParam.Boolean() && iOnScreenDialer ) )
   603     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
   556     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
   604         &uidParam );
   557         &uidParam );
   605 
   558 
   606     DisplayHeaderForCallComingInL( aCallId, ETrue ); //waiting call 
   559     DisplayHeaderForCallComingInL( aCallId, ETrue ); //waiting call 
   607     }    
   560     }    
   608     
       
   609 // ---------------------------------------------------------
       
   610 // CPhoneSingleCall::CallFromNewCallQueryL
       
   611 // ---------------------------------------------------------
       
   612 //
       
   613 void CPhoneSingleCall::CallFromNewCallQueryL()
       
   614     {
       
   615     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   616         "CPhoneSingleCall::CallFromNewCallQueryL()");
       
   617     // First get the phone number from the dialog
       
   618     TPhoneCmdParamString phoneNumberParam;
       
   619     HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
       
   620     TPtr ptr( content->Des() );
       
   621     phoneNumberParam.SetString( &ptr );
       
   622     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
       
   623         &phoneNumberParam );
       
   624 
       
   625     // Store the phone number
       
   626     iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
       
   627 
       
   628     // clean up stack
       
   629     CleanupStack::PopAndDestroy( content );
       
   630     
       
   631     DialVoiceCallL();
       
   632     }
       
   633 
       
   634 // -----------------------------------------------------------
   561 // -----------------------------------------------------------
   635 // CPhoneSingleCall::HandleDiallingL
   562 // CPhoneSingleCall::HandleDiallingL
   636 // -----------------------------------------------------------
   563 // -----------------------------------------------------------
   637 //
   564 //
   638 void CPhoneSingleCall::HandleDiallingL( TInt aCallId )
   565 void CPhoneSingleCall::HandleDiallingL( TInt aCallId )
   639     {
   566     {
   640     __LOGMETHODSTARTEND( EPhoneUIStates, 
   567     __LOGMETHODSTARTEND( EPhoneUIStates, 
   641         "CPhoneSingleCall::HandleDiallingL()");
   568         "CPhoneSingleCall::HandleDiallingL()");
   642     
       
   643     BeginTransEffectLC( ENumberEntryClose );
       
   644     BeginUiUpdateLC();
   569     BeginUiUpdateLC();
   645     
   570     
   646     SetNumberEntryVisibilityL(EFalse);
   571     SetNumberEntryVisibilityL(EFalse);
   647 
   572 
   648     // Display call setup 
   573     // Display call setup 
   650     
   575     
   651     // Show incoming call buttons
   576     // Show incoming call buttons
   652     SetTouchPaneButtons( EPhoneCallSetupAndSingleButtons );
   577     SetTouchPaneButtons( EPhoneCallSetupAndSingleButtons );
   653 
   578 
   654     EndUiUpdate();
   579     EndUiUpdate();
   655     
       
   656     EndTransEffect();
       
   657 
   580 
   658     // Go to call setup state
   581     // Go to call setup state
   659     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   582     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   660     iStateMachine->ChangeState( EPhoneStateCallSetupInSingle );
   583     iStateMachine->ChangeState( EPhoneStateCallSetupInSingle );
   661     }
   584     }
   666 //
   589 //
   667 void CPhoneSingleCall::DisplayCallSetupL( TInt aCallId )
   590 void CPhoneSingleCall::DisplayCallSetupL( TInt aCallId )
   668     {
   591     {
   669     __LOGMETHODSTARTEND( EPhoneUIStates, 
   592     __LOGMETHODSTARTEND( EPhoneUIStates, 
   670         "CPhoneSingleCall::DisplayCallSetupL()");
   593         "CPhoneSingleCall::DisplayCallSetupL()");
   671     // Close menu bar, if it is displayed
       
   672     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   673 
   594 
   674     // Remove dialogs if necessary
   595     // Remove dialogs if necessary
   675     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   596     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   676 
   597 
   677     // Capture keys when the phone is dialling
   598     // Capture keys when the phone is dialling
   683     iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
   604     iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
   684         &uidParam );
   605         &uidParam );
   685 
   606 
   686     // Display call setup header
   607     // Display call setup header
   687     DisplayHeaderForOutgoingCallL( aCallId );
   608     DisplayHeaderForOutgoingCallL( aCallId );
   688     }
       
   689 
       
   690 // -----------------------------------------------------------
       
   691 // CPhoneSingleCall::SetCallHoldL
       
   692 // -----------------------------------------------------------
       
   693 //
       
   694 void CPhoneSingleCall::SetCallHoldL()
       
   695     {
       
   696     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   697         "CPhoneSingleCall::SetCallHold()");
       
   698     
       
   699     TPhoneCmdParamCallStateData callStateData;
       
   700     callStateData.SetCallId( iCallId );
       
   701     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
       
   702         &callStateData );
       
   703     
       
   704     if( callStateData.CallState() == EPEStateConnected && !IsVideoCallActiveL() )
       
   705         {
       
   706         iStateMachine->SetCallId( iCallId );         
       
   707         iStateMachine->SendPhoneEngineMessage( 
       
   708             CPEPhoneModelIF::EPEMessageHold );    
       
   709         }
       
   710     else
       
   711         {
       
   712         // Show not allowed note
       
   713         SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed, ETrue );    
       
   714         }
       
   715     }
       
   716     
       
   717 // -----------------------------------------------------------
       
   718 // CPhoneSingleCall::SetCallResumeL
       
   719 // -----------------------------------------------------------
       
   720 //
       
   721 void CPhoneSingleCall::SetCallResumeL()
       
   722     {
       
   723     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   724         "CPhoneSingleCall::SetCallHold()");
       
   725 
       
   726     TPhoneCmdParamCallStateData callStateData;
       
   727     callStateData.SetCallId( iCallId );
       
   728     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
       
   729         &callStateData );
       
   730     
       
   731     if( callStateData.CallState() == EPEStateHeld )
       
   732         {
       
   733         iStateMachine->SetCallId( iCallId );
       
   734         iStateMachine->SendPhoneEngineMessage(
       
   735             CPEPhoneModelIF::EPEMessageResume );
       
   736         }
       
   737     else
       
   738         {
       
   739         // Show not allowed note
       
   740         SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed, ETrue );    
       
   741         }                
       
   742     }
   609     }
   743 
   610 
   744 // -----------------------------------------------------------
   611 // -----------------------------------------------------------
   745 // CPhoneSingleCall::SwitchToVideoL
   612 // CPhoneSingleCall::SwitchToVideoL
   746 // -----------------------------------------------------------
   613 // -----------------------------------------------------------
   754         {        
   621         {        
   755         TInt networkMode( CPhonePubSubProxy::Instance()->Value( KPSUidNetworkInfo,
   622         TInt networkMode( CPhonePubSubProxy::Instance()->Value( KPSUidNetworkInfo,
   756             KNWTelephonyNetworkMode ) );
   623             KNWTelephonyNetworkMode ) );
   757         TBool restoreOngoing( CPhonePubSubProxy::Instance()->Value( KUidSystemCategory,
   624         TBool restoreOngoing( CPhonePubSubProxy::Instance()->Value( KUidSystemCategory,
   758             conn::KUidBackupRestoreKey ));
   625             conn::KUidBackupRestoreKey ));
   759     
       
   760         TBool resetTouchButtons = EFalse;
       
   761         
   626         
   762         if ( networkMode != ENWNetworkModeWcdma )
   627         if ( networkMode != ENWNetworkModeWcdma )
   763             {
   628             {
   764             // We aren't in 3G, video call not possible
   629             // We aren't in 3G, video call not possible
   765             SendGlobalInfoNoteL( EPhoneInformationNoNetworkSupportForVideoCallNote );    
   630             SendGlobalInfoNoteL( EPhoneInformationNoNetworkSupportForVideoCallNote );    
   766             resetTouchButtons = ETrue;
       
   767             }
   631             }
   768         else if ( restoreOngoing & ( conn::EBURRestoreFull | conn::EBURRestorePartial ))
   632         else if ( restoreOngoing & ( conn::EBURRestoreFull | conn::EBURRestorePartial ))
   769             {
   633             {
   770             // MC restore ongoing
   634             // MC restore ongoing
   771             SendGlobalInfoNoteL( EPhoneInformationVideoCallNotAllowedDuringRestoreNote );
   635             SendGlobalInfoNoteL( EPhoneInformationVideoCallNotAllowedDuringRestoreNote );
   772             resetTouchButtons = ETrue;    
       
   773             }
   636             }
   774         else
   637         else
   775             {
   638             {
   776         iSwitchToVideoQuery = ETrue;
   639             iSwitchToVideoQuery = ETrue;
   777         ShowQueryL( EPhoneSwitchToVideoQuery );
   640             //ShowQueryL( EPhoneSwitchToVideoQuery );
   778         iSwitchToVideoQuery = EFalse;
   641             iSwitchToVideoQuery = EFalse;
   779         }    
   642             }    
   780     
       
   781         if( resetTouchButtons )
       
   782             {
       
   783             // Sets touch buttons to correct status if error has occured.    
       
   784             iViewCommandHandle->ExecuteCommand( EPhoneResetTouchButtons ); 
       
   785             }
       
   786         }
   643         }
   787     }
   644     }
   788 
   645 
   789 // -----------------------------------------------------------
   646 // -----------------------------------------------------------
   790 // CPhoneSingleCall::SwitchToVoiceL
   647 // CPhoneSingleCall::SwitchToVoiceL
   793 void CPhoneSingleCall::SwitchToVoiceL()
   650 void CPhoneSingleCall::SwitchToVoiceL()
   794     {
   651     {
   795     __LOGMETHODSTARTEND( EPhoneUIStates, 
   652     __LOGMETHODSTARTEND( EPhoneUIStates, 
   796         "CPhoneSingleCall::SwitchToVoiceL()");
   653         "CPhoneSingleCall::SwitchToVoiceL()");
   797     
   654     
   798     ShowQueryL( EPhoneSwitchToVoiceQuery );
   655     //ShowQueryL( EPhoneSwitchToVoiceQuery );
   799     }
   656     }
   800 
   657 
   801 // End of File
   658 // End of File