phoneapp/phoneuistates/src/cphoneconference.cpp
changeset 50 377c906a8701
parent 46 bc5a64e5bc3c
child 65 2a5d4ab426d3
equal deleted inserted replaced
46:bc5a64e5bc3c 50:377c906a8701
    79     TPhoneCmdParamBoolean globalNotifierParam;
    79     TPhoneCmdParamBoolean globalNotifierParam;
    80     globalNotifierParam.SetBoolean( EFalse );
    80     globalNotifierParam.SetBoolean( EFalse );
    81     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
    81     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
    82         &globalNotifierParam );
    82         &globalNotifierParam );
    83     
    83     
    84   
       
    85     DefineAndSetHoldFlagL();
       
    86     
       
    87     }
    84     }
    88 
    85 
    89 // -----------------------------------------------------------
    86 // -----------------------------------------------------------
    90 // CPhoneConference::NewL()
    87 // CPhoneConference::NewL()
    91 // Constructor
    88 // Constructor
   193 
   190 
   194     switch( aCommand )
   191     switch( aCommand )
   195         {   
   192         {   
   196         case EAknSoftkeyCancel:
   193         case EAknSoftkeyCancel:
   197             BeginUiUpdateLC();
   194             BeginUiUpdateLC();
   198             CloseSelectionListL();
       
   199             SetTouchPaneButtons( EPhoneConferenceButtons );
   195             SetTouchPaneButtons( EPhoneConferenceButtons );
   200             EndUiUpdate();    
   196             EndUiUpdate();    
   201             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   197             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   202             break;
   198             break;
   203     
   199     
   213                 CPEPhoneModelIF::EPEMessageResumeConference );
   209                 CPEPhoneModelIF::EPEMessageResumeConference );
   214             break;
   210             break;
   215             
   211             
   216         // Conference -> Drop participant
   212         // Conference -> Drop participant
   217         case EPhoneInCallCmdDropSelection:
   213         case EPhoneInCallCmdDropSelection:
   218             OpenDropParticipantSelectionL();
       
   219             break;
   214             break;
   220         
   215         
   221         // Drop CBA    
   216         // Drop CBA    
   222         case EPhoneInCallCmdDrop:
   217         case EPhoneInCallCmdDrop:
   223             DropSelectedParticipantL();
   218             DropSelectedParticipantL();
   224             break;
   219             break;
   225             
   220             
   226         case EPhoneInCallCmdPrivateSelection:
   221         case EPhoneInCallCmdPrivateSelection:
   227             OpenPrivateSelectionL();
       
   228             break;
   222             break;
   229             
   223             
   230         case EPhoneInCallCmdPrivate:
   224         case EPhoneInCallCmdPrivate:
   231             PrivateSelectedParticipantL();
   225             PrivateSelectedParticipantL();
   232             break;
   226             break;
   233           
   227           
   234         case EPhoneInCallCmdNewCall:
   228         case EPhoneInCallCmdNewCall:
   235             LaunchNewCallQueryL();
       
   236             break;
   229             break;
   237             
   230             
   238         case EPhoneInCallCmdNewCallCall:
   231         case EPhoneInCallCmdNewCallCall:
   239             CallFromNewCallQueryL();
       
   240             break;
   232             break;
   241             
   233             
   242         case EPhoneInCallCmdParticipants:
   234         case EPhoneInCallCmdParticipants:
   243             OpenParticipantsListL();
   235             break;     
   244             break;
       
   245             
       
   246         case EPhoneViewOpenNumberEntry:
       
   247             if ( IsConferenceBubbleInSelectionMode() )
       
   248                 {
       
   249                 CloseSelectionListL();
       
   250                 SetTouchPaneButtons( EPhoneConferenceButtons );
       
   251                 }
       
   252             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
       
   253             break;            
       
   254 
   236 
   255         default:
   237         default:
   256             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   238             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
   257             break;
   239             break;
   258         }
   240         }
   265 // -----------------------------------------------------------
   247 // -----------------------------------------------------------
   266 //
   248 //
   267 void CPhoneConference::UpdateInCallCbaL()
   249 void CPhoneConference::UpdateInCallCbaL()
   268     {
   250     {
   269     UpdateCbaL( EPhoneCallHandlingInCallCBA );
   251     UpdateCbaL( EPhoneCallHandlingInCallCBA );
   270     }
       
   271 
       
   272 // -----------------------------------------------------------
       
   273 // CPhoneConference::OpenMenuBarL
       
   274 // -----------------------------------------------------------
       
   275 //
       
   276 void CPhoneConference::OpenMenuBarL()
       
   277     {
       
   278     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   279         "CPhoneConference::OpenMenuBarL()");
       
   280     TInt resourceId;
       
   281 
       
   282     if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
       
   283         {
       
   284         resourceId = EPhoneDtmfDialerMenubar;
       
   285         }
       
   286     else if ( IsNumberEntryVisibleL() )
       
   287         {
       
   288         resourceId = EPhoneConfCallMenubarWithNumberEntry;
       
   289         }
       
   290     else if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) 
       
   291               && IsConferenceBubbleInSelectionMode() )        
       
   292         {
       
   293         resourceId = EPhoneConfCallParticipantsMenubar;            
       
   294         }
       
   295     else
       
   296         {
       
   297         resourceId = EPhoneConfCallMenubar;
       
   298         }
       
   299 
       
   300     TPhoneCmdParamInteger integerParam;
       
   301     integerParam.SetInteger( 
       
   302         CPhoneMainResourceResolver::Instance()->
       
   303         ResolveResourceID( resourceId ) );
       
   304     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
       
   305         &integerParam );
       
   306     }
   252     }
   307 
   253 
   308 // -----------------------------------------------------------
   254 // -----------------------------------------------------------
   309 // CPhoneConference::HandleKeyEventL
   255 // CPhoneConference::HandleKeyEventL
   310 // -----------------------------------------------------------
   256 // -----------------------------------------------------------
   313     const TKeyEvent& aKeyEvent, 
   259     const TKeyEvent& aKeyEvent, 
   314     TEventCode aEventCode )
   260     TEventCode aEventCode )
   315     {
   261     {
   316     __LOGMETHODSTARTEND( EPhoneUIStates, 
   262     __LOGMETHODSTARTEND( EPhoneUIStates, 
   317         "CPhoneConference::HandleKeyEventL()");
   263         "CPhoneConference::HandleKeyEventL()");
   318     if ( IsConferenceBubbleInSelectionMode() )
   264 
   319         {
   265     if ( CPhoneKeys::IsNumericKey( aKeyEvent, aEventCode ) )
   320         if ( aKeyEvent.iCode == EKeyUpArrow ||
   266         {
   321              aKeyEvent.iCode == EKeyDownArrow )
   267         // Handle numeric keys when key events are received 
   322             {
   268         // in conference state.
   323             TPhoneCmdParamKeyEvent keyEventParam;
   269         CPhoneGsmInCall::HandleNumericKeyEventL( aKeyEvent, aEventCode );
   324             keyEventParam.SetKeyEvent( aKeyEvent );
       
   325             keyEventParam.SetEventCode( aEventCode );    
       
   326             
       
   327             iViewCommandHandle->ExecuteCommandL( 
       
   328                 EPhoneViewMoveHighLightInList, &keyEventParam );
       
   329             }
       
   330         }
   270         }
   331     else
   271     else
   332         {
   272         {
   333         if ( CPhoneKeys::IsNumericKey( aKeyEvent, aEventCode ) )
   273         // Handle other key events.
   334             {
   274         CPhoneState::HandleKeyEventL( aKeyEvent, aEventCode );
   335             // Handle numeric keys when key events are received 
   275         }
   336             // in conference state.
   276     
   337             CPhoneGsmInCall::HandleNumericKeyEventL( aKeyEvent, aEventCode );
       
   338             }
       
   339         else
       
   340             {
       
   341             // Handle other key events.
       
   342             CPhoneState::HandleKeyEventL( aKeyEvent, aEventCode );
       
   343             }
       
   344         }
       
   345     }
   277     }
   346 
   278 
   347 // --------------------------------------------------------------
   279 // --------------------------------------------------------------
   348 // CPhoneConference::HandleKeyMessageL
   280 // CPhoneConference::HandleKeyMessageL
   349 // --------------------------------------------------------------
   281 // --------------------------------------------------------------
   402     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
   334     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
   403         &globalNotifierParam );
   335         &globalNotifierParam );
   404 
   336 
   405     // Stop capturing keys
   337     // Stop capturing keys
   406     CaptureKeysDuringCallNotificationL( EFalse );
   338     CaptureKeysDuringCallNotificationL( EFalse );
   407 
       
   408     // If dialler is not open then close menu bar.
       
   409     if ( !IsNumberEntryUsedL() )
       
   410         {
       
   411         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   412         }
       
   413         
   339         
   414     // If conference bubble still exists then we have conference and
   340     // If conference bubble still exists then we have conference and
   415     // single call
   341     // single call
   416     TPhoneCmdParamBoolean conferenceBubbleExists;
   342     TPhoneCmdParamBoolean conferenceBubbleExists;
   417     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsConference, 
   343     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsConference, 
   437 //
   363 //
   438 void CPhoneConference::HandleConferenceIdleL()
   364 void CPhoneConference::HandleConferenceIdleL()
   439     {
   365     {
   440     __LOGMETHODSTARTEND( EPhoneUIStates, 
   366     __LOGMETHODSTARTEND( EPhoneUIStates, 
   441         "CPhoneConference::HandleConferenceIdleL()");
   367         "CPhoneConference::HandleConferenceIdleL()");
   442     
       
   443     BeginTransEffectLC( ENumberEntryOpen );
       
   444     BeginUiUpdateLC();
   368     BeginUiUpdateLC();
   445     
   369     
   446     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble );
   370     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble );
   447 
   371 
   448     TPhoneCmdParamInteger activeCallCount;
   372     TPhoneCmdParamInteger activeCallCount;
   482         default:
   406         default:
   483             MakeStateTransitionToTwoSinglesL();
   407             MakeStateTransitionToTwoSinglesL();
   484             break;
   408             break;
   485         }
   409         }
   486     
   410     
   487     EndUiUpdate();
   411     EndUiUpdate(); 
   488     EndTransEffect();     
       
   489     }
   412     }
   490 
   413 
   491 // -----------------------------------------------------------
   414 // -----------------------------------------------------------
   492 // CPhoneConference::HandleHeldConferenceL
   415 // CPhoneConference::HandleHeldConferenceL
   493 // -----------------------------------------------------------
   416 // -----------------------------------------------------------
   510         CCoeEnv::Static() );        
   433         CCoeEnv::Static() );        
   511     callHeaderParam.SetLabelText( labelText );
   434     callHeaderParam.SetLabelText( labelText );
   512  
   435  
   513     iViewCommandHandle->ExecuteCommandL( 
   436     iViewCommandHandle->ExecuteCommandL( 
   514         EPhoneViewUpdateBubble, aCallId, &callHeaderParam );
   437         EPhoneViewUpdateBubble, aCallId, &callHeaderParam );
   515        
   438            
   516     // Set Hold flag to view
       
   517     SetHoldFlagL();
       
   518     
       
   519     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   439     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   520         {
   440         {
   521         SendGlobalInfoNoteL( EPhoneInformationConferenceOnHold, ETrue );
   441         SendGlobalInfoNoteL( EPhoneInformationConferenceOnHold, ETrue );
   522         }
   442         }
   523     
   443     
   524     SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate );
       
   525     SetTouchPaneButtons( EPhoneConferenceButtons );
   444     SetTouchPaneButtons( EPhoneConferenceButtons );
   526     UpdateInCallCbaL();
   445     UpdateInCallCbaL();
   527     }
       
   528 
       
   529 
       
   530 // -----------------------------------------------------------
       
   531 // CPhoneConference::DefineAndSetHoldFlagL
       
   532 // -----------------------------------------------------------
       
   533 //
       
   534 void CPhoneConference::DefineAndSetHoldFlagL()
       
   535     {
       
   536     // Find out is conference held or not
       
   537     TPhoneCmdParamCallStateData callStateData;
       
   538     callStateData.SetCallId( KConferenceCallId );
       
   539     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
       
   540             &callStateData );
       
   541     
       
   542     // Set Hold flag to view
       
   543     TPhoneCmdParamBoolean holdFlag;
       
   544         
       
   545     if( callStateData.CallState() == EPEStateHeld )
       
   546         {
       
   547         holdFlag.SetBoolean( ETrue );
       
   548         }
       
   549     else
       
   550         {
       
   551         holdFlag.SetBoolean( EFalse );   
       
   552         }
       
   553     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
       
   554     
       
   555     }
       
   556 
       
   557 // -----------------------------------------------------------
       
   558 // CPhoneConference::SetHoldFlagL
       
   559 // -----------------------------------------------------------
       
   560 //
       
   561 void CPhoneConference::SetHoldFlagL()
       
   562     {
       
   563     // Set Hold flag to view
       
   564     TPhoneCmdParamBoolean holdFlag;
       
   565     holdFlag.SetBoolean( ETrue );
       
   566     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
       
   567 
       
   568     }
   446     }
   569 
   447 
   570 // -----------------------------------------------------------
   448 // -----------------------------------------------------------
   571 // CPhoneConference::HandleConnectedConferenceL
   449 // CPhoneConference::HandleConnectedConferenceL
   572 // -----------------------------------------------------------
   450 // -----------------------------------------------------------
   600     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   478     if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   601         { 
   479         { 
   602         SendGlobalInfoNoteL( EPhoneInformationConferenceActiveted, ETrue );
   480         SendGlobalInfoNoteL( EPhoneInformationConferenceActiveted, ETrue );
   603         }
   481         }
   604     
   482     
   605     SetTouchPaneButtonEnabled( EPhoneInCallCmdPrivate );
       
   606     SetTouchPaneButtons( EPhoneConferenceButtons );
   483     SetTouchPaneButtons( EPhoneConferenceButtons );
   607     
   484     
   608     UpdateInCallCbaL();
   485     UpdateInCallCbaL();
   609     }
       
   610 
       
   611 // -----------------------------------------------------------
       
   612 // CPhoneConference::OpenDropParticipantSelectionL
       
   613 // -----------------------------------------------------------
       
   614 //
       
   615 void CPhoneConference::OpenDropParticipantSelectionL()
       
   616     {
       
   617     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   618         "CPhoneConference::OpenDropParticipantSelectionL()");
       
   619     TPhoneCmdParamBoolean booleanParam;
       
   620     booleanParam.SetBoolean( ETrue );
       
   621     iViewCommandHandle->ExecuteCommandL( 
       
   622         EPhoneViewOpenConferenceList, &booleanParam );
       
   623 
       
   624     iCbaManager->SetCbaL( EPhoneDropParticipantCBA );
       
   625     }
   486     }
   626 
   487 
   627 // -----------------------------------------------------------
   488 // -----------------------------------------------------------
   628 // CPhoneConference::DropSelectedParticipantL
   489 // CPhoneConference::DropSelectedParticipantL
   629 // -----------------------------------------------------------
   490 // -----------------------------------------------------------
   646             CPEPhoneModelIF::EPEMessageDropConferenceMember );            
   507             CPEPhoneModelIF::EPEMessageDropConferenceMember );            
   647         }
   508         }
   648     }
   509     }
   649 
   510 
   650 // -----------------------------------------------------------
   511 // -----------------------------------------------------------
   651 // CPhoneConference::OpenPrivateSelectionL
       
   652 // -----------------------------------------------------------
       
   653 //
       
   654 void CPhoneConference::OpenPrivateSelectionL()
       
   655     {
       
   656     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   657         "CPhoneConference::OpenPrivateSelectionL()");
       
   658     TPhoneCmdParamBoolean booleanParam;
       
   659     booleanParam.SetBoolean( ETrue );
       
   660     iViewCommandHandle->ExecuteCommandL( 
       
   661         EPhoneViewOpenConferenceList, &booleanParam );
       
   662 
       
   663     iCbaManager->SetCbaL( EPhonePrivateParticipantCBA );
       
   664     }
       
   665 
       
   666 // -----------------------------------------------------------
       
   667 // CPhoneConference::PrivateSelectedParticipantL
   512 // CPhoneConference::PrivateSelectedParticipantL
   668 // -----------------------------------------------------------
   513 // -----------------------------------------------------------
   669 //
   514 //
   670 void CPhoneConference::PrivateSelectedParticipantL()
   515 void CPhoneConference::PrivateSelectedParticipantL()
   671     {
   516     {
   684         iStateMachine->SendPhoneEngineMessage( 
   529         iStateMachine->SendPhoneEngineMessage( 
   685             CPEPhoneModelIF::EPEMessageGoOneToOne );
   530             CPEPhoneModelIF::EPEMessageGoOneToOne );
   686         
   531         
   687         // Update call view
   532         // Update call view
   688         BeginUiUpdateLC();
   533         BeginUiUpdateLC();
   689         CloseSelectionListL();
       
   690         SetTouchPaneButtons( EPhoneConferenceButtons );
   534         SetTouchPaneButtons( EPhoneConferenceButtons );
   691         EndUiUpdate();    
   535         EndUiUpdate();    
   692                 
   536                 
   693         UpdateCbaL( EPhoneCallHandlingInCallCBA );               
   537         UpdateCbaL( EPhoneCallHandlingInCallCBA );               
   694         }
   538         }
   706     SetDefaultFlagsL();
   550     SetDefaultFlagsL();
   707 
   551 
   708     if ( IsNumberEntryUsedL() )
   552     if ( IsNumberEntryUsedL() )
   709         {
   553         {
   710         // Show the number entry if it exists
   554         // Show the number entry if it exists
   711         SetNumberEntryVisibilityL(ETrue);
   555         SetNumberEntryVisibilityL(ETrue);      
   712         
       
   713         // Close dtmf dialer when call is disconnected.
       
   714         if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
       
   715             {            
       
   716             CloseDTMFEditorL();
       
   717             // Display idle screen and update CBAs
       
   718             DisplayIdleScreenL();
       
   719             }        
       
   720         }
   556         }
   721     else if ( !TopAppIsDisplayedL() )
   557     else if ( !TopAppIsDisplayedL() )
   722         {
   558         {
   723         // Close menu bar, if it is displayed
       
   724         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   725         
   559         
   726         // Continue displaying current app but set up the 
   560         // Continue displaying current app but set up the 
   727         // idle screen in the background
   561         // idle screen in the background
   728         SetupIdleScreenInBackgroundL();
   562         SetupIdleScreenInBackgroundL();
   729         }
   563         }
   730     else
   564     else
   731         {
   565         {
   732         // Close menu bar, if it is displayed
       
   733         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   734         
       
   735          // Display idle screen
   566          // Display idle screen
   736         DisplayIdleScreenL();
   567         DisplayIdleScreenL();
   737         }
   568         }
   738 
   569 
   739     // Display call termination note, if necessary
   570     // Display call termination note, if necessary
   750 //
   581 //
   751 void CPhoneConference::MakeStateTransitionToSingleL()
   582 void CPhoneConference::MakeStateTransitionToSingleL()
   752     {
   583     {
   753     __LOGMETHODSTARTEND( EPhoneUIStates, 
   584     __LOGMETHODSTARTEND( EPhoneUIStates, 
   754         "CPhoneConference::MakeStateTransitionToSingleL()");
   585         "CPhoneConference::MakeStateTransitionToSingleL()");
   755     // Close menu bar, if it is displayed
       
   756     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   757  
   586  
   758     if ( IsNumberEntryUsedL() )
   587     if ( IsNumberEntryUsedL() )
   759         {
   588         {
   760         // Show the number entry if it exists
   589         // Show the number entry if it exists
   761         SetNumberEntryVisibilityL(ETrue);
   590         SetNumberEntryVisibilityL(ETrue);
   773 //
   602 //
   774 void CPhoneConference::MakeStateTransitionToTwoSinglesL()
   603 void CPhoneConference::MakeStateTransitionToTwoSinglesL()
   775     {
   604     {
   776     __LOGMETHODSTARTEND( EPhoneUIStates, 
   605     __LOGMETHODSTARTEND( EPhoneUIStates, 
   777         "CPhoneConference::MakeStateTransitionToTwoSinglesL()");
   606         "CPhoneConference::MakeStateTransitionToTwoSinglesL()");
   778     // Close menu bar, if it is displayed
       
   779     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   780 
   607 
   781     if ( IsNumberEntryUsedL() )
   608     if ( IsNumberEntryUsedL() )
   782         {
   609         {
   783         // Show the number entry if it exists
   610         // Show the number entry if it exists
   784         SetNumberEntryVisibilityL(ETrue);
   611         SetNumberEntryVisibilityL(ETrue);
   792     // Go to two singles state
   619     // Go to two singles state
   793     iStateMachine->ChangeState( EPhoneStateTwoSingles );        
   620     iStateMachine->ChangeState( EPhoneStateTwoSingles );        
   794     }
   621     }
   795 
   622 
   796 // -----------------------------------------------------------
   623 // -----------------------------------------------------------
   797 // CPhoneConference::CloseSelectionListL
       
   798 // -----------------------------------------------------------
       
   799 //
       
   800 void CPhoneConference::CloseSelectionListL()
       
   801     {
       
   802     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   803         "CPhoneConference::CloseSelectionListL()");
       
   804     // Close conference list
       
   805     TPhoneCmdParamBoolean booleanParam;
       
   806     booleanParam.SetBoolean( EFalse );
       
   807     iViewCommandHandle->ExecuteCommandL( 
       
   808         EPhoneViewOpenConferenceList, &booleanParam );
       
   809     }
       
   810 
       
   811 // -----------------------------------------------------------
       
   812 // CPhoneConference::ToggleHold
   624 // CPhoneConference::ToggleHold
   813 // -----------------------------------------------------------
   625 // -----------------------------------------------------------
   814 //
   626 //
   815 void CPhoneConference::ToggleHoldL()
   627 void CPhoneConference::ToggleHoldL()
   816     {
   628     {
   817     __LOGMETHODSTARTEND( EPhoneUIStates, 
   629     __LOGMETHODSTARTEND( EPhoneUIStates, 
   818         "CPhoneConference::ToggleHoldL()");
   630         "CPhoneConference::ToggleHoldL()");
   819     TPhoneCmdParamBoolean hold;
   631     
   820     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetHoldFlag, &hold );
   632     TPECallControlCaps callControlCaps =
   821     
   633         iStateMachine->PhoneEngineInfo()->CallControlCaps( KConferenceCallId );
   822     if( hold.Boolean() )
   634     
   823         {
   635     if ( callControlCaps & MCCECallObserver::ECCECapsHold  )
       
   636         {
       
   637         iStateMachine->SetCallId( KConferenceCallId );         
   824         iStateMachine->SendPhoneEngineMessage( 
   638         iStateMachine->SendPhoneEngineMessage( 
   825             CPEPhoneModelIF::EPEMessageResumeConference );
   639             CPEPhoneModelIF::EPEMessageHold );    
       
   640         }
       
   641     else if ( callControlCaps & MCCECallObserver::ECCECapsResume )
       
   642         {
       
   643         iStateMachine->SetCallId( KConferenceCallId );         
       
   644         iStateMachine->SendPhoneEngineMessage( 
       
   645             CPEPhoneModelIF::EPEMessageResume );    
   826         }
   646         }
   827     else
   647     else
   828         {
   648         {
   829         iStateMachine->SendPhoneEngineMessage( 
   649         SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed, ETrue );    
   830             CPEPhoneModelIF::EPEMessageHoldConference );
       
   831         }
   650         }
   832     }
   651     }
   833 
   652 
   834 // -----------------------------------------------------------
   653 // -----------------------------------------------------------
   835 // CPhoneConference::HandleDiallingL
   654 // CPhoneConference::HandleDiallingL
   837 //
   656 //
   838 void CPhoneConference::HandleDiallingL( TInt aCallId )
   657 void CPhoneConference::HandleDiallingL( TInt aCallId )
   839     {
   658     {
   840     __LOGMETHODSTARTEND( EPhoneUIStates, 
   659     __LOGMETHODSTARTEND( EPhoneUIStates, 
   841         "CPhoneConference::HandleDiallingL()");
   660         "CPhoneConference::HandleDiallingL()");
   842     
       
   843     BeginTransEffectLC( ENumberEntryClose );
       
   844     BeginUiUpdateLC(); 
   661     BeginUiUpdateLC(); 
   845     
       
   846     CloseSelectionListL(); 
       
   847     
   662     
   848     SetNumberEntryVisibilityL(EFalse);
   663     SetNumberEntryVisibilityL(EFalse);
   849     
   664     
   850     // Display call setup 
   665     // Display call setup 
   851     DisplayCallSetupL( aCallId );
   666     DisplayCallSetupL( aCallId );
   852     
   667     
   853     // Conference is understood as single call in buttons enumerations.
   668     // Conference is understood as single call in buttons enumerations.
   854     SetTouchPaneButtons(EPhoneCallSetupAndSingleButtons); 
   669     SetTouchPaneButtons(EPhoneCallSetupAndSingleButtons); 
   855 
   670 
   856     EndUiUpdate();
   671     EndUiUpdate();
   857 
       
   858     EndTransEffect();
       
   859     
   672     
   860     // Set Call Setup CBA 
   673     // Set Call Setup CBA 
   861     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   674     UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
   862       
   675       
   863     // Go to conference and call setup state
   676     // Go to conference and call setup state
   870 //
   683 //
   871 void CPhoneConference::DisplayCallSetupL( TInt aCallId )
   684 void CPhoneConference::DisplayCallSetupL( TInt aCallId )
   872     {
   685     {
   873     __LOGMETHODSTARTEND( EPhoneUIStates, 
   686     __LOGMETHODSTARTEND( EPhoneUIStates, 
   874         "CPhoneConference::DisplayCallSetupL()");
   687         "CPhoneConference::DisplayCallSetupL()");
   875     // Close menu bar, if it is displayed
       
   876     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   877 
   688 
   878     // Remove dialogs if necessary
   689     // Remove dialogs if necessary
   879     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   690     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   880 
   691 
   881     // Capture keys when the phone is dialling
   692     // Capture keys when the phone is dialling
   889 
   700 
   890     // Display call setup header
   701     // Display call setup header
   891     DisplayHeaderForOutgoingCallL( aCallId );
   702     DisplayHeaderForOutgoingCallL( aCallId );
   892     }
   703     }
   893 
   704 
   894 // ---------------------------------------------------------
       
   895 // CPhoneConference::CallFromNewCallQueryL
       
   896 // ---------------------------------------------------------
       
   897 //
       
   898 void CPhoneConference::CallFromNewCallQueryL()
       
   899     {
       
   900     __LOGMETHODSTARTEND( EPhoneUIStates, 
       
   901         "CPhoneConference::CallFromNewCallQueryL()");
       
   902     // First get the phone number from the dialog
       
   903     TPhoneCmdParamString phoneNumberParam;
       
   904     HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
       
   905     TPtr ptr( content->Des() );
       
   906     phoneNumberParam.SetString( &ptr );
       
   907     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
       
   908         &phoneNumberParam );
       
   909 
       
   910     // Store the phone number
       
   911     iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
       
   912 
       
   913     // clean up stack
       
   914     CleanupStack::PopAndDestroy( content );
       
   915   
       
   916     // Dial number
       
   917     DialVoiceCallL();
       
   918     }
       
   919 
       
   920 // -----------------------------------------------------------
   705 // -----------------------------------------------------------
   921 // CPhoneConference::HandleIncomingL
   706 // CPhoneConference::HandleIncomingL
   922 // -----------------------------------------------------------
   707 // -----------------------------------------------------------
   923 //
   708 //
   924 void CPhoneConference::HandleIncomingL( TInt aCallId )
   709 void CPhoneConference::HandleIncomingL( TInt aCallId )
   931     TPhoneCmdParamBoolean dialerParam;
   716     TPhoneCmdParamBoolean dialerParam;
   932     dialerParam.SetBoolean( ETrue );
   717     dialerParam.SetBoolean( ETrue );
   933     
   718     
   934     // Get allow waiting call header param value.
   719     // Get allow waiting call header param value.
   935     AllowShowingOfWaitingCallHeaderL( dialerParam );
   720     AllowShowingOfWaitingCallHeaderL( dialerParam );
   936             
       
   937     CloseSelectionListL();
       
   938 
       
   939     // Close fast swap window if it's displayed
   721     // Close fast swap window if it's displayed
   940     CEikonEnv::Static()->DismissTaskList();
   722     CEikonEnv::Static()->DismissTaskList();
   941     
   723     
   942     // Check if HW Keys or Call UI should be disabled
   724     // Check if HW Keys or Call UI should be disabled
   943     CheckDisableHWKeysAndCallUIL();
   725     CheckDisableHWKeysAndCallUIL();
   962     TInt aCallId, 
   744     TInt aCallId, 
   963     const TPhoneCmdParamBoolean aCommandParam )
   745     const TPhoneCmdParamBoolean aCommandParam )
   964     {
   746     {
   965     __LOGMETHODSTARTEND( EPhoneUIStates, 
   747     __LOGMETHODSTARTEND( EPhoneUIStates, 
   966         "CPhoneConference::DisplayIncomingCallL()");
   748         "CPhoneConference::DisplayIncomingCallL()");
   967     // Close menu bar, if it is displayed
       
   968     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   969 
   749 
   970     // Cannot delete active note, e.g. New call query, 
   750     // Cannot delete active note, e.g. New call query, 
   971     // but show waiting note with or without caller name
   751     // but show waiting note with or without caller name
   972     if ( IsAnyQueryActiveL() ||  
   752     if ( IsAnyQueryActiveL() ||  
   973         ( !aCommandParam.Boolean() && iOnScreenDialer ) )
   753         ( !aCommandParam.Boolean() && iOnScreenDialer ) )
  1026         // Go to Conference And Single state
   806         // Go to Conference And Single state
  1027       
   807       
  1028         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
   808         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
  1029         iStateMachine->ChangeState( EPhoneStateConferenceAndSingle );                    
   809         iStateMachine->ChangeState( EPhoneStateConferenceAndSingle );                    
  1030         SetTouchPaneButtons( EPhoneConferenceAndSingleButtons );
   810         SetTouchPaneButtons( EPhoneConferenceAndSingleButtons );
  1031         SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate );
       
  1032         }
   811         }
  1033     else
   812     else
  1034         {            
   813         {            
  1035         SetTouchPaneButtons( EPhoneTwoSinglesButtons );
   814         SetTouchPaneButtons( EPhoneTwoSinglesButtons );
  1036         }       
   815         }       
  1037     EndUiUpdate();
   816     EndUiUpdate();
  1038     }
   817     }
  1039 
       
  1040 // -----------------------------------------------------------
       
  1041 // CPhoneConference::OpenParticipantsListL
       
  1042 // -----------------------------------------------------------
       
  1043 //    
       
  1044 void CPhoneConference::OpenParticipantsListL()
       
  1045     {
       
  1046     BeginUiUpdateLC();
       
  1047     
       
  1048     TPhoneCmdParamBoolean booleanParam;
       
  1049     booleanParam.SetBoolean( ETrue );
       
  1050     
       
  1051     iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenConferenceList,
       
  1052                                          &booleanParam );    
       
  1053 
       
  1054     SetTouchPaneButtons( EPhoneParticipantListButtons );
       
  1055                                          
       
  1056     EndUiUpdate();
       
  1057     
       
  1058     iCbaManager->SetCbaL( EPhoneParticipantListCBA );
       
  1059      
       
  1060     // Find out is conference held or not
       
  1061     TPhoneCmdParamCallStateData callStateData;
       
  1062     callStateData.SetCallId( KConferenceCallId );
       
  1063     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
       
  1064         &callStateData );
       
  1065     
       
  1066     if( callStateData.CallState() == EPEStateHeld )
       
  1067         {
       
  1068         //set Private button to Dimmed.        
       
  1069         SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate );
       
  1070         } 
       
  1071     else
       
  1072         {
       
  1073         //set Private button to UnDimmed.        
       
  1074          SetTouchPaneButtonEnabled( EPhoneInCallCmdPrivate );        
       
  1075         }   
       
  1076                                            
       
  1077     }
       
  1078 
       
  1079 // -----------------------------------------------------------
       
  1080 // CPhoneConference::IsConferenceBubbleInSelectionMode
       
  1081 // -----------------------------------------------------------
       
  1082 //
       
  1083 TBool CPhoneConference::IsConferenceBubbleInSelectionMode() const
       
  1084     {
       
  1085     TPhoneCmdParamBoolean booleanParam;
       
  1086     
       
  1087     iViewCommandHandle->ExecuteCommand( 
       
  1088         EPhoneViewGetIsConferenceInSelectionMode, &booleanParam );
       
  1089     
       
  1090     return booleanParam.Boolean();
       
  1091     }
       
  1092 
       
  1093 // ---------------------------------------------------------
       
  1094 // CPhoneState::HandleCreateNumberEntryL
       
  1095 // ---------------------------------------------------------
       
  1096 //
       
  1097 void CPhoneConference::HandleCreateNumberEntryL( const TKeyEvent& aKeyEvent,
       
  1098         TEventCode aEventCode )
       
  1099     {
       
  1100     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneConference::HandleCreateNumberEntryL() ");
       
  1101     if ( !IsConferenceBubbleInSelectionMode() )
       
  1102         {
       
  1103         CPhoneGsmInCall::HandleCreateNumberEntryL( aKeyEvent,aEventCode );
       
  1104         }
       
  1105     }
       
  1106     
   818     
  1107 // -----------------------------------------------------------
   819 // -----------------------------------------------------------
  1108 // CPhoneConference::UpdateConferenceSecurityStatusL
   820 // CPhoneConference::UpdateConferenceSecurityStatusL
  1109 // -----------------------------------------------------------
   821 // -----------------------------------------------------------
  1110 //
   822 //