58 { |
58 { |
59 } |
59 } |
60 |
60 |
61 // ----------------------------------------------------------- |
61 // ----------------------------------------------------------- |
62 // CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting() |
62 // CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting() |
63 // Destructor |
|
64 // (other items were commented in a header). |
|
65 // ----------------------------------------------------------- |
63 // ----------------------------------------------------------- |
66 // |
64 // |
67 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting() |
65 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting() |
68 { |
66 { |
69 |
|
70 } |
67 } |
71 |
68 |
72 // ----------------------------------------------------------- |
69 // ----------------------------------------------------------- |
73 // CPhoneSingleAndWaiting::ConstructL() |
70 // CPhoneSingleAndWaiting::ConstructL() |
74 // Constructor |
|
75 // (other items were commented in a header). |
|
76 // ----------------------------------------------------------- |
71 // ----------------------------------------------------------- |
77 // |
72 // |
78 void CPhoneSingleAndWaiting::ConstructL() |
73 void CPhoneSingleAndWaiting::ConstructL() |
79 { |
74 { |
80 CPhoneGsmInCall::ConstructL(); |
75 CPhoneGsmInCall::ConstructL(); |
81 |
76 |
82 TPhoneCmdParamCallStateData callStateData; |
77 TPhoneCmdParamCallStateData callStateData; |
83 callStateData.SetCallState( EPEStateConnected ); |
78 callStateData.SetCallState( EPEStateConnected ); |
84 |
|
85 iViewCommandHandle->HandleCommandL( |
79 iViewCommandHandle->HandleCommandL( |
86 EPhoneViewGetCallIdByState, &callStateData ); |
80 EPhoneViewGetCallIdByState, &callStateData ); |
87 |
81 |
88 if ( callStateData.CallId() == KErrNotFound ) |
82 if ( callStateData.CallId() == KErrNotFound ) |
89 { |
83 { |
90 callStateData.SetCallState( EPEStateHeld ); |
84 callStateData.SetCallState( EPEStateHeld ); |
91 iViewCommandHandle->HandleCommandL( |
85 iViewCommandHandle->HandleCommandL( |
92 EPhoneViewGetCallIdByState, &callStateData ); |
86 EPhoneViewGetCallIdByState, &callStateData ); |
93 } |
87 } |
94 iSingleCallId = callStateData.CallId(); |
88 iSingleCallId = callStateData.CallId(); |
95 |
|
96 __PHONELOG1( EBasic, EPhoneUIStates, |
89 __PHONELOG1( EBasic, EPhoneUIStates, |
97 "CPhoneSingleAndWaiting::ConstructL() (iSingleCallId=%d)", iSingleCallId); |
90 "CPhoneSingleAndWaiting::ConstructL() (iSingleCallId=%d)", iSingleCallId); |
98 } |
91 } |
99 |
92 |
100 // ----------------------------------------------------------- |
93 // ----------------------------------------------------------- |
101 // CPhoneSingleAndWaiting::NewL() |
94 // CPhoneSingleAndWaiting::NewL() |
102 // Constructor |
|
103 // (other items were commented in a header). |
|
104 // ----------------------------------------------------------- |
95 // ----------------------------------------------------------- |
105 // |
96 // |
106 CPhoneSingleAndWaiting* CPhoneSingleAndWaiting::NewL( |
97 CPhoneSingleAndWaiting* CPhoneSingleAndWaiting::NewL( |
107 MPhoneStateMachine* aStateMachine, |
98 MPhoneStateMachine* aStateMachine, |
108 MPhoneViewCommandHandle* aViewCommandHandle, |
99 MPhoneViewCommandHandle* aViewCommandHandle, |
232 { |
220 { |
233 __LOGMETHODSTARTEND( EPhoneUIStates, |
221 __LOGMETHODSTARTEND( EPhoneUIStates, |
234 "CPhoneSingleAndWaiting::HandleKeyMessageL() "); |
222 "CPhoneSingleAndWaiting::HandleKeyMessageL() "); |
235 switch ( aCode ) |
223 switch ( aCode ) |
236 { |
224 { |
237 // send-key |
225 case EKeyYes: // send-key |
238 case EKeyYes: |
|
239 { |
226 { |
240 if( IsNumberEntryVisibleL() ) |
227 if( IsNumberEntryVisibleL() ) |
241 { |
228 { |
242 // Send a manual control sequence by providing number |
|
243 // information with Dial command |
|
244 CallFromNumberEntryL(); |
229 CallFromNumberEntryL(); |
245 } |
230 } |
246 else |
231 else |
247 { |
232 { |
248 // Close DTMF sending note if it exists |
233 // Close DTMF sending note if it exists |
249 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); |
234 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); |
250 |
|
251 // Number entry is below incoming call bubble so |
|
252 // answer the call |
|
253 iStateMachine->SendPhoneEngineMessage( |
235 iStateMachine->SendPhoneEngineMessage( |
254 CPEPhoneModelIF::EPEMessageAnswer ); |
236 CPEPhoneModelIF::EPEMessageAnswer ); |
255 } |
237 } |
256 break; |
238 break; |
257 } |
239 } |
258 |
240 |
259 default: |
241 default: |
260 // do base operation |
|
261 CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode ); |
242 CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode ); |
262 break; |
243 break; |
263 } |
244 } |
264 } |
245 } |
265 |
246 |
307 callStateData.SetCallState( EPEStateHeld ); |
287 callStateData.SetCallState( EPEStateHeld ); |
308 iViewCommandHandle->HandleCommandL( |
288 iViewCommandHandle->HandleCommandL( |
309 EPhoneViewGetCallIdByState, &callStateData ); |
289 EPhoneViewGetCallIdByState, &callStateData ); |
310 } |
290 } |
311 } |
291 } |
312 |
|
313 iSingleCallId = callStateData.CallId(); |
292 iSingleCallId = callStateData.CallId(); |
314 } |
293 } |
315 |
294 |
316 __PHONELOG1( EBasic, EPhoneControl, |
295 __PHONELOG1( EBasic, EPhoneControl, |
317 "CPhoneSingleAndWaiting::HandleIdleL iSingleCallId(%d)", |
296 "CPhoneSingleAndWaiting::HandleIdleL iSingleCallId(%d)", |
318 iSingleCallId ); |
297 iSingleCallId ); |
319 __PHONELOG1( EBasic, EPhoneControl, |
298 __PHONELOG1( EBasic, EPhoneControl, |
320 "CPhoneSingleAndWaiting::HandleIdleL aCallId(%d)", |
299 "CPhoneSingleAndWaiting::HandleIdleL aCallId(%d)", |
321 aCallId ); |
300 aCallId ); |
322 |
301 |
|
302 // Idle message came for active call |
323 if( iSingleCallId == aCallId ) |
303 if( iSingleCallId == aCallId ) |
324 { |
304 { |
325 // Idle message came for active call |
|
326 BeginUiUpdateLC(); |
305 BeginUiUpdateLC(); |
327 |
|
328 // Remove call |
|
329 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
306 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
330 |
307 |
331 // Get waiting callId |
308 // Get waiting callId |
332 TPhoneCmdParamCallStateData callStateData; |
309 TPhoneCmdParamCallStateData callStateData; |
333 callStateData.SetCallState( EPEStateRinging ); |
310 callStateData.SetCallState( EPEStateRinging ); |
336 |
313 |
337 __PHONELOG1( EBasic, EPhoneControl, |
314 __PHONELOG1( EBasic, EPhoneControl, |
338 "CPhoneSingleAndWaiting::HandleIdleL EPEStateRinging CallId(%d)", |
315 "CPhoneSingleAndWaiting::HandleIdleL EPEStateRinging CallId(%d)", |
339 callStateData.CallId() ); |
316 callStateData.CallId() ); |
340 |
317 |
|
318 // Display ringing bubble |
341 if ( callStateData.CallId() > KErrNotFound ) |
319 if ( callStateData.CallId() > KErrNotFound ) |
342 { |
320 { |
343 // Display ringing bubble |
|
344 TPhoneCmdParamCallHeaderData callHeaderParam; |
321 TPhoneCmdParamCallHeaderData callHeaderParam; |
345 callHeaderParam.SetCallState( EPEStateRinging ); |
322 callHeaderParam.SetCallState( EPEStateRinging ); |
346 |
323 |
347 // Set Hold flag to view |
|
348 TPhoneCmdParamBoolean holdFlag; |
324 TPhoneCmdParamBoolean holdFlag; |
349 holdFlag.SetBoolean( EFalse ); |
325 holdFlag.SetBoolean( EFalse ); |
350 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
326 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
351 |
327 |
352 SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam ); |
328 SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam ); |
353 |
329 |
354 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, |
330 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, |
355 callStateData.CallId(), |
331 callStateData.CallId(), |
356 &callHeaderParam ); |
332 &callHeaderParam ); |
357 |
333 |
358 // Hide number entry if visible |
|
359 if ( IsNumberEntryVisibleL() ) |
334 if ( IsNumberEntryVisibleL() ) |
360 { |
335 { |
361 SetNumberEntryVisibilityL(EFalse); |
336 SetNumberEntryVisibilityL(EFalse); |
362 } |
337 } |
363 |
338 |
364 // Check if HW Keys or Call UI should be disabled |
|
365 CheckDisableHWKeysAndCallUIL(); |
339 CheckDisableHWKeysAndCallUIL(); |
366 |
340 |
367 SetTouchPaneButtons( EPhoneIncomingCallButtons ); |
341 SetTouchPaneButtons( EPhoneIncomingCallButtons ); |
368 |
|
369 // Bring up callhandling view |
|
370 BringIncomingToForegroundL(); |
342 BringIncomingToForegroundL(); |
371 |
|
372 //Set incoming cba |
|
373 iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); |
343 iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); |
374 |
|
375 // Play ringtone |
|
376 SetRingingTonePlaybackL( callStateData.CallId() ); |
344 SetRingingTonePlaybackL( callStateData.CallId() ); |
377 } |
345 } |
378 |
|
379 SetBackButtonActive(EFalse); |
346 SetBackButtonActive(EFalse); |
380 EndUiUpdate(); |
347 EndUiUpdate(); |
381 |
|
382 iStateMachine->ChangeState( EPhoneStateIncoming ); |
348 iStateMachine->ChangeState( EPhoneStateIncoming ); |
383 } |
349 } |
384 else |
350 else |
385 { |
351 { |
386 |
|
387 BeginUiUpdateLC(); |
352 BeginUiUpdateLC(); |
388 |
|
389 // Remove call |
|
390 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
353 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
391 |
354 |
392 // Idle message came for waiting call |
355 // Idle message came for waiting call |
393 if ( IsNumberEntryUsedL() ) |
356 if ( IsNumberEntryUsedL() ) |
394 { |
357 { |
395 if ( NeedToSendToBackgroundL() ) |
358 if ( NeedToSendToBackgroundL() ) |
396 { |
359 { |
397 // Return phone to the background if send to background is needed. |
|
398 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
360 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
399 |
|
400 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
361 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
401 } |
362 } |
402 else |
363 else |
403 { |
364 { |
404 // Show the number entry if it exists |
|
405 SetNumberEntryVisibilityL(ETrue); |
365 SetNumberEntryVisibilityL(ETrue); |
406 } |
366 } |
407 } |
367 } |
408 else |
368 else |
409 { |
369 { |
410 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
370 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
411 // If numberentry is not open just check NeedToSendToBackgroundL and |
371 // If numberentry is not open just check NeedToSendToBackgroundL and |
412 // sendbackround if needed. |
372 // sendbackround if needed. |
413 if ( NeedToSendToBackgroundL() ) |
373 if ( NeedToSendToBackgroundL() ) |
414 { |
374 { |
415 // Return phone to the background if send to background is needed. |
|
416 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
375 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
417 } |
376 } |
418 } |
377 } |
419 |
378 |
420 // Enable call UI |
|
421 if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
379 if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
422 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
380 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
423 { |
381 { |
424 EnableCallUIL(); |
382 EnableCallUIL(); |
425 } |
383 } |
426 |
|
427 // Reset blocked keys list |
|
428 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
384 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
429 |
|
430 SetTouchPaneButtons( EPhoneIncallButtons ); |
385 SetTouchPaneButtons( EPhoneIncallButtons ); |
431 EndUiUpdate(); |
386 EndUiUpdate(); |
432 |
|
433 // CBA updates in above if-else conditions |
|
434 iStateMachine->ChangeState( EPhoneStateSingle ); |
387 iStateMachine->ChangeState( EPhoneStateSingle ); |
435 } |
388 } |
436 |
389 |
437 } |
390 } |
438 |
391 |
442 // |
395 // |
443 void CPhoneSingleAndWaiting::HandleHeldL( TInt aCallId ) |
396 void CPhoneSingleAndWaiting::HandleHeldL( TInt aCallId ) |
444 { |
397 { |
445 __LOGMETHODSTARTEND( EPhoneUIStates, |
398 __LOGMETHODSTARTEND( EPhoneUIStates, |
446 "CPhoneSingleAndWaiting::HandleHeldL() "); |
399 "CPhoneSingleAndWaiting::HandleHeldL() "); |
447 |
|
448 // Display hold bubble |
|
449 TPhoneCmdParamCallHeaderData callHeaderParam; |
400 TPhoneCmdParamCallHeaderData callHeaderParam; |
450 callHeaderParam.SetCallState( EPEStateHeld ); |
401 callHeaderParam.SetCallState( EPEStateHeld ); |
451 |
|
452 TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC ); |
402 TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC ); |
453 TInt callLabelId = CPhoneMainResourceResolver::Instance()-> |
403 TInt callLabelId = CPhoneMainResourceResolver::Instance()-> |
454 ResolveResourceID( EPhoneCallOnHold ); |
404 ResolveResourceID( EPhoneCallOnHold ); |
455 |
405 |
456 StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() ); |
406 StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() ); |
457 callHeaderParam.SetLabelText( labelText ); |
407 callHeaderParam.SetLabelText( labelText ); |
458 |
408 |
459 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
409 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
460 &callHeaderParam ); |
410 &callHeaderParam ); |
461 |
411 |
462 // Set Hold flag to view |
|
463 TPhoneCmdParamBoolean holdFlag; |
412 TPhoneCmdParamBoolean holdFlag; |
464 holdFlag.SetBoolean( ETrue ); |
413 holdFlag.SetBoolean( ETrue ); |
465 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
414 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
466 |
415 |
467 if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) |
|
468 { |
|
469 HandleHoldNoteL( aCallId, ETrue ); |
|
470 } |
|
471 |
|
472 UpdateInCallCbaL(); |
416 UpdateInCallCbaL(); |
473 |
|
474 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
417 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
475 } |
418 } |
476 |
419 |
477 // ----------------------------------------------------------- |
420 // ----------------------------------------------------------- |
478 // CPhoneSingleAndWaiting::HandleConnectedL |
421 // CPhoneSingleAndWaiting::HandleConnectedL |
480 // |
423 // |
481 void CPhoneSingleAndWaiting::HandleConnectedL( TInt aCallId ) |
424 void CPhoneSingleAndWaiting::HandleConnectedL( TInt aCallId ) |
482 { |
425 { |
483 __LOGMETHODSTARTEND( EPhoneUIStates, |
426 __LOGMETHODSTARTEND( EPhoneUIStates, |
484 "CPhoneSingleAndWaiting::HandleConnectedL() "); |
427 "CPhoneSingleAndWaiting::HandleConnectedL() "); |
485 |
|
486 __PHONELOG1( EBasic, EPhoneUIStates, |
428 __PHONELOG1( EBasic, EPhoneUIStates, |
487 "CPhoneSingleAndWaiting::HandleConnectedL (CallId=%d)", aCallId); |
429 "CPhoneSingleAndWaiting::HandleConnectedL (CallId=%d)", aCallId); |
488 |
|
489 if ( iSingleCallId == aCallId ) |
430 if ( iSingleCallId == aCallId ) |
490 { |
431 { |
491 // Connected message came for the hold call, we still |
432 // Connected message came for the hold call, we still |
492 // have the waiting call also |
433 // have the waiting call also |
493 HandleUnholdL( aCallId ); |
434 HandleUnholdL( aCallId ); |
505 // |
446 // |
506 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId ) |
447 void CPhoneSingleAndWaiting::HandleUnholdL( TInt aCallId ) |
507 { |
448 { |
508 __LOGMETHODSTARTEND( EPhoneUIStates, |
449 __LOGMETHODSTARTEND( EPhoneUIStates, |
509 "CPhoneSingleAndWaiting::HandleUnholdL() "); |
450 "CPhoneSingleAndWaiting::HandleUnholdL() "); |
510 |
|
511 // Show bubble |
|
512 TPhoneCmdParamCallHeaderData callHeaderParam; |
451 TPhoneCmdParamCallHeaderData callHeaderParam; |
513 callHeaderParam.SetCallState( EPEStateConnected ); |
452 callHeaderParam.SetCallState( EPEStateConnected ); |
514 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
453 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
515 &callHeaderParam ); |
454 &callHeaderParam ); |
516 |
455 |
517 // Set Hold flag to view |
|
518 TPhoneCmdParamBoolean holdFlag; |
456 TPhoneCmdParamBoolean holdFlag; |
519 holdFlag.SetBoolean( EFalse ); |
457 holdFlag.SetBoolean( EFalse ); |
520 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
458 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
521 |
459 |
522 if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) |
|
523 { |
|
524 HandleHoldNoteL( aCallId, EFalse ); |
|
525 } |
|
526 |
|
527 // Set CBAs |
|
528 UpdateInCallCbaL(); |
460 UpdateInCallCbaL(); |
529 |
|
530 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
461 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
531 } |
462 } |
532 |
463 |
533 // ----------------------------------------------------------- |
464 // ----------------------------------------------------------- |
534 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL |
465 // CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL |
536 // |
467 // |
537 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId ) |
468 void CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL( TInt aCallId ) |
538 { |
469 { |
539 __LOGMETHODSTARTEND( EPhoneUIStates, |
470 __LOGMETHODSTARTEND( EPhoneUIStates, |
540 "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() "); |
471 "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() "); |
541 |
|
542 // Reset blocked keys list |
|
543 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
472 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
544 |
473 |
545 BeginUiUpdateLC(); |
474 BeginUiUpdateLC(); |
546 |
475 |
547 UpdateRemoteInfoDataL ( aCallId ); |
476 UpdateRemoteInfoDataL ( aCallId ); |
548 // Show bubble |
477 |
549 TPhoneCmdParamCallHeaderData callHeaderParam; |
478 TPhoneCmdParamCallHeaderData callHeaderParam; |
550 callHeaderParam.SetCallState( EPEStateConnected ); |
479 callHeaderParam.SetCallState( EPEStateConnected ); |
551 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
480 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, |
552 &callHeaderParam ); |
481 &callHeaderParam ); |
553 |
482 |
554 // Set Hold flag to view |
|
555 TPhoneCmdParamBoolean holdFlag; |
483 TPhoneCmdParamBoolean holdFlag; |
556 holdFlag.SetBoolean( EFalse ); |
484 holdFlag.SetBoolean( EFalse ); |
557 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
485 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
558 |
486 |
559 if ( IsNumberEntryUsedL() ) |
487 if ( IsNumberEntryUsedL() ) |
560 { |
488 { |
561 if ( NeedToSendToBackgroundL() ) |
489 if ( NeedToSendToBackgroundL() ) |
562 { |
490 { |
563 // Return phone to the background if send to background is needed. |
|
564 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
491 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
565 |
|
566 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
492 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
567 } |
493 } |
568 else |
494 else |
569 { |
495 { |
570 // Show the number entry if it exists. |
|
571 SetNumberEntryVisibilityL(ETrue); |
496 SetNumberEntryVisibilityL(ETrue); |
572 } |
497 } |
573 } |
498 } |
574 else |
499 else |
575 { |
500 { |
576 // Set Two singles softkeys |
|
577 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
501 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
578 } |
502 } |
579 |
503 |
580 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
504 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
581 EndUiUpdate(); |
505 EndUiUpdate(); |
582 |
|
583 // Go to two singles state |
|
584 // CBA updates in above if-else conditions |
|
585 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
506 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
586 } |
507 } |
587 |
508 |
588 // ----------------------------------------------------------- |
509 // ----------------------------------------------------------- |
589 // CPhoneSingleAndWaiting::HandleDiallingL |
510 // CPhoneSingleAndWaiting::HandleDiallingL |
591 // |
512 // |
592 void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId ) |
513 void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId ) |
593 { |
514 { |
594 __LOGMETHODSTARTEND( EPhoneUIStates, |
515 __LOGMETHODSTARTEND( EPhoneUIStates, |
595 "CPhoneSingleAndWaiting::HandleDiallingL() "); |
516 "CPhoneSingleAndWaiting::HandleDiallingL() "); |
596 |
|
597 BeginUiUpdateLC(); |
517 BeginUiUpdateLC(); |
598 |
|
599 // Hide number entry if it exists |
|
600 SetNumberEntryVisibilityL(EFalse); |
518 SetNumberEntryVisibilityL(EFalse); |
601 |
|
602 // Display call setup |
|
603 DisplayCallSetupL( aCallId ); |
519 DisplayCallSetupL( aCallId ); |
604 |
520 |
605 // Set Hold flag to view ( DTMF menu label have to present ) |
521 // Set Hold flag to view ( DTMF menu label have to present ) |
606 TPhoneCmdParamBoolean holdFlag; |
522 TPhoneCmdParamBoolean holdFlag; |
607 holdFlag.SetBoolean( EFalse ); |
523 holdFlag.SetBoolean( EFalse ); |
608 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
524 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); |
609 |
525 |
610 SetTouchPaneButtons( EPhoneCallSetupButtons ); |
526 SetTouchPaneButtons( EPhoneCallSetupButtons ); |
611 |
|
612 EndUiUpdate(); |
527 EndUiUpdate(); |
613 |
528 |
614 // Update call setup CBAs |
|
615 UpdateCbaL( EPhoneCallHandlingCallSetupCBA ); |
529 UpdateCbaL( EPhoneCallHandlingCallSetupCBA ); |
616 |
|
617 // Go to Single And Waiting And Call Setup state |
|
618 iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting ); |
530 iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting ); |
619 } |
531 } |
620 |
532 |
621 // ----------------------------------------------------------- |
533 // ----------------------------------------------------------- |
622 // CPhoneSingleAndWaiting::DisplayCallSetupL |
534 // CPhoneSingleAndWaiting::DisplayCallSetupL |
624 // |
536 // |
625 void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId ) |
537 void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId ) |
626 { |
538 { |
627 __LOGMETHODSTARTEND( EPhoneUIStates, |
539 __LOGMETHODSTARTEND( EPhoneUIStates, |
628 "CPhoneSingleAndWaiting::DisplayCallSetupL() "); |
540 "CPhoneSingleAndWaiting::DisplayCallSetupL() "); |
629 |
|
630 // Remove dialogs if necessary |
|
631 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); |
541 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); |
632 |
542 |
633 // Capture keys when the phone is dialling |
|
634 CaptureKeysDuringCallNotificationL( ETrue ); |
|
635 |
|
636 // Force telephony to the foreground |
543 // Force telephony to the foreground |
637 TPhoneCmdParamInteger uidParam; |
544 TPhoneCmdParamInteger uidParam; |
638 uidParam.SetInteger( KUidPhoneApplication.iUid ); |
545 uidParam.SetInteger( KUidPhoneApplication.iUid ); |
639 iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground, |
546 iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground, |
640 &uidParam ); |
547 &uidParam ); |
641 |
548 |
642 // Display call setup header |
|
643 DisplayHeaderForOutgoingCallL( aCallId ); |
549 DisplayHeaderForOutgoingCallL( aCallId ); |
644 } |
550 } |
645 |
551 |
646 // ----------------------------------------------------------- |
552 // ----------------------------------------------------------- |
647 // CPhoneSingleAndWaiting::UpdateInCallCbaL |
553 // CPhoneSingleAndWaiting::UpdateInCallCbaL |
652 __LOGMETHODSTARTEND( EPhoneUIStates, |
558 __LOGMETHODSTARTEND( EPhoneUIStates, |
653 "CPhoneSingleAndWaiting::UpdateInCallCbaL() "); |
559 "CPhoneSingleAndWaiting::UpdateInCallCbaL() "); |
654 TPhoneCmdParamInteger callIdParam; |
560 TPhoneCmdParamInteger callIdParam; |
655 iViewCommandHandle->ExecuteCommandL( |
561 iViewCommandHandle->ExecuteCommandL( |
656 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
562 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
657 |
|
658 if ( callIdParam.Integer()==iSingleCallId ) |
563 if ( callIdParam.Integer()==iSingleCallId ) |
659 { |
564 { |
660 CPhoneGsmInCall::UpdateInCallCbaL(); |
565 CPhoneGsmInCall::UpdateInCallCbaL(); |
661 } |
566 } |
662 else |
567 else |
663 { |
568 { |
664 iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA ); |
569 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
665 } |
570 } |
666 } |
571 } |
667 |
572 |
668 // ----------------------------------------------------------- |
573 // ----------------------------------------------------------- |
669 // CPhoneSingleAndWaiting::HandleErrorL |
574 // CPhoneSingleAndWaiting::HandleErrorL |
670 // ----------------------------------------------------------- |
575 // ----------------------------------------------------------- |
671 // |
576 // |
672 EXPORT_C void CPhoneSingleAndWaiting::HandleErrorL( const TPEErrorInfo& aErrorInfo ) |
577 EXPORT_C void CPhoneSingleAndWaiting::HandleErrorL( const TPEErrorInfo& aErrorInfo ) |
673 { |
578 { |
674 __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleErrorL()"); |
579 __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleErrorL()"); |
675 |
|
676 if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) |
580 if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) |
677 { |
581 { |
678 // Should not shown "Not Allowed" note, if active call. |
582 // Should not shown "Not Allowed" note, if active call. |
679 __PHONELOG1( EBasic, EPhoneUIStates, |
583 __PHONELOG1( EBasic, EPhoneUIStates, |
680 "PhoneUIControl: CPhoneSingleAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", |
584 "PhoneUIControl: CPhoneSingleAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", |