phoneapp/phoneuistates/src/cphoneconferenceandsingleandwaiting.cpp
changeset 56 5bcb308bd24d
parent 46 bc5a64e5bc3c
child 65 2a5d4ab426d3
equal deleted inserted replaced
46:bc5a64e5bc3c 56:5bcb308bd24d
    55 // (other items were commented in a header).
    55 // (other items were commented in a header).
    56 // -----------------------------------------------------------
    56 // -----------------------------------------------------------
    57 //
    57 //
    58 CPhoneConferenceAndSingleAndWaiting::~CPhoneConferenceAndSingleAndWaiting()
    58 CPhoneConferenceAndSingleAndWaiting::~CPhoneConferenceAndSingleAndWaiting()
    59     {
    59     {
    60     // Reset flag
       
    61     if ( iViewCommandHandle )
       
    62         {
       
    63         TPhoneCmdParamBoolean dtmfSendFlag;
       
    64         dtmfSendFlag.SetBoolean( EFalse );
       
    65         iViewCommandHandle->ExecuteCommand( EPhoneViewSetDtmfOptionsFlag,
       
    66             &dtmfSendFlag );
       
    67         }
       
    68     }
    60     }
    69 
    61 
    70 // -----------------------------------------------------------
    62 // -----------------------------------------------------------
    71 // CPhoneConferenceAndSingleAndWaiting::ConstructL()
    63 // CPhoneConferenceAndSingleAndWaiting::ConstructL()
    72 // Constructor
    64 // Constructor
   124             break;
   116             break;
   125         }
   117         }
   126     }
   118     }
   127 
   119 
   128 // -----------------------------------------------------------
   120 // -----------------------------------------------------------
   129 // CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL
       
   130 // -----------------------------------------------------------
       
   131 //
       
   132 void CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL()
       
   133     {
       
   134     __LOGMETHODSTARTEND( EPhoneUIStates,
       
   135         "CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL()");
       
   136     TInt resourceId = NULL;
       
   137 
       
   138    // Set specific flag to view so that DTMF menu item available
       
   139     TPhoneCmdParamBoolean dtmfSendFlag;
       
   140     dtmfSendFlag.SetBoolean( ETrue );
       
   141     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag,
       
   142         &dtmfSendFlag );
       
   143 
       
   144 
       
   145     TPhoneCmdParamCallStateData callStateData;
       
   146     callStateData.SetCallState( EPEStateHeld );
       
   147     iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState,
       
   148         &callStateData );
       
   149     if( callStateData.CallId() == KConferenceCallId )
       
   150         {
       
   151         // Conference call is on hold and single is active
       
   152         if ( IsNumberEntryVisibleL() )
       
   153             {
       
   154             resourceId = EPhoneCallActiveHeldConfAndWaitingMenubarWithNumberEntry;
       
   155             }
       
   156         else if ( IsConferenceBubbleInSelectionMode() )
       
   157             {
       
   158             resourceId = EPhoneConfCallParticipantsDropMenubar;
       
   159             }
       
   160         else
       
   161             {
       
   162             resourceId = EPhoneCallActiveHeldConfAndWaitingMenubar;
       
   163             }
       
   164         }
       
   165     else if( callStateData.CallId() >= 0 )
       
   166         {
       
   167         // Single call is on hold and conference is active
       
   168         if ( IsNumberEntryVisibleL() )
       
   169             {
       
   170             resourceId = EPhoneConfCallActiveHeldAndWaitingMenubarWithNumberEntry;
       
   171             }
       
   172         else if ( IsConferenceBubbleInSelectionMode() )
       
   173             {
       
   174             resourceId = EPhoneConfCallParticipantsDropMenubar;
       
   175             }
       
   176         else
       
   177             {
       
   178             resourceId = EPhoneConfCallActiveHeldAndWaitingMenubar;
       
   179             }
       
   180         }
       
   181     else
       
   182         {
       
   183         return; // negative call id, don't do anything
       
   184         }
       
   185 
       
   186     TPhoneCmdParamInteger integerParam;
       
   187     integerParam.SetInteger(
       
   188         CPhoneMainResourceResolver::Instance()->
       
   189         ResolveResourceID( resourceId ) );
       
   190     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
       
   191         &integerParam );
       
   192     }
       
   193 
       
   194 // -----------------------------------------------------------
       
   195 // CPhoneConferenceAndSingleAndWaiting::HandleIdleL
   121 // CPhoneConferenceAndSingleAndWaiting::HandleIdleL
   196 // -----------------------------------------------------------
   122 // -----------------------------------------------------------
   197 //
   123 //
   198 void CPhoneConferenceAndSingleAndWaiting::HandleIdleL( TInt aCallId )
   124 void CPhoneConferenceAndSingleAndWaiting::HandleIdleL( TInt aCallId )
   199     {
   125     {
   200     __LOGMETHODSTARTEND( EPhoneUIStates,
   126     __LOGMETHODSTARTEND( EPhoneUIStates,
   201         "CPhoneConferenceAndSingleAndWaiting::HandleIdleL()");
   127         "CPhoneConferenceAndSingleAndWaiting::HandleIdleL()");
   202 
   128 
   203     // Effect is shown when dialer exist.
       
   204     TBool effectStarted ( EFalse );
       
   205     if ( !NeedToSendToBackgroundL() )
       
   206         {
       
   207         BeginTransEffectLC( ENumberEntryOpen );
       
   208         effectStarted = ETrue;
       
   209         }
       
   210 
       
   211     BeginUiUpdateLC();
   129     BeginUiUpdateLC();
   212     // Set touch controls
   130     // Set touch controls
   213     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   214     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   131     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   215 
   132 
   216 
   133 
   217     TPhoneCmdParamBoolean conferenceExistsForCallId;
   134     TPhoneCmdParamBoolean conferenceExistsForCallId;
   218     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference,
   135     iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference,
   254                 MakeStateTransitionToConferenceAndSingleL( aCallId );
   171                 MakeStateTransitionToConferenceAndSingleL( aCallId );
   255                 }
   172                 }
   256             }
   173             }
   257         }
   174         }
   258     EndUiUpdate();
   175     EndUiUpdate();
   259     if ( effectStarted )
       
   260         {
       
   261         EndTransEffect();
       
   262         }
       
   263     }
   176     }
   264 
   177 
   265 // -----------------------------------------------------------
   178 // -----------------------------------------------------------
   266 // CPhoneConferenceAndSingleAndWaiting::HandleAddedConferenceMemberL
   179 // CPhoneConferenceAndSingleAndWaiting::HandleAddedConferenceMemberL
   267 // -----------------------------------------------------------
   180 // -----------------------------------------------------------
   283 //
   196 //
   284 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL( TInt /*aCallId*/ )
   197 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL( TInt /*aCallId*/ )
   285     {
   198     {
   286     __LOGMETHODSTARTEND( EPhoneUIStates,
   199     __LOGMETHODSTARTEND( EPhoneUIStates,
   287         "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL()");
   200         "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL()");
   288     if ( !IsNumberEntryUsedL() )
       
   289         {
       
   290         // Close menu bar, if number entry isnt open.
       
   291         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   292         }
       
   293 
   201 
   294     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   202     SetTouchPaneButtons( EPhoneWaitingCallButtons );
   295     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   296 
   203 
   297     // Check if HW Keys or Call UI should be disabled
   204     // Check if HW Keys or Call UI should be disabled
   298     CheckDisableHWKeysAndCallUIL();
   205     CheckDisableHWKeysAndCallUIL();
   299 
   206 
   300     // Go to Conference And Waiting state
   207     // Go to Conference And Waiting state
   318         }
   225         }
   319 
   226 
   320     // Reset blocked keys list
   227     // Reset blocked keys list
   321     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   228     iStateMachine->PhoneStorage()->ResetBlockedKeysList();
   322 
   229 
   323     if ( !IsNumberEntryUsedL() )
       
   324         {
       
   325         // Close menu bar, if number entry isnt open.
       
   326         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   327         }
       
   328 
       
   329     if ( IsNumberEntryUsedL() )
   230     if ( IsNumberEntryUsedL() )
   330         {
   231         {
   331         if ( NeedToSendToBackgroundL() )
   232         if ( NeedToSendToBackgroundL() )
   332             {
   233             {
   333             // Return phone to the background if send to background is needed.
   234             // Return phone to the background if send to background is needed.
   334             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   235             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   335 
       
   336             iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
       
   337 
   236 
   338             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   237             UpdateCbaL( EPhoneCallHandlingInCallCBA );
   339             }
   238             }
   340         else
   239         else
   341             {
   240             {
   354             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   253             iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
   355             }
   254             }
   356         }
   255         }
   357 
   256 
   358     SetTouchPaneButtons( EPhoneConferenceAndSingleButtons );
   257     SetTouchPaneButtons( EPhoneConferenceAndSingleButtons );
   359     SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   360     SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate );
       
   361     // Go to conference and single state
   258     // Go to conference and single state
   362     // CBA updates in above if-else conditions
   259     // CBA updates in above if-else conditions
   363     iStateMachine->ChangeState( EPhoneStateConferenceAndSingle );
   260     iStateMachine->ChangeState( EPhoneStateConferenceAndSingle );
   364     }
   261     }
   365 
   262 
   373         "CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL()");
   270         "CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL()");
   374 
   271 
   375     BeginUiUpdateLC();
   272     BeginUiUpdateLC();
   376 
   273 
   377     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble );
   274     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble );
   378 
       
   379     // Close menu bar, if it is displayed
       
   380     iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
       
   381 
   275 
   382     // Remove any phone dialogs if they are displayed
   276     // Remove any phone dialogs if they are displayed
   383     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   277     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
   384 
   278 
   385     MakeTransitionAccordingToActiveCallsL();
   279     MakeTransitionAccordingToActiveCallsL();
   487 
   381 
   488                 // Check if HW Keys or Call UI should be disabled
   382                 // Check if HW Keys or Call UI should be disabled
   489                 CheckDisableHWKeysAndCallUIL();
   383                 CheckDisableHWKeysAndCallUIL();
   490 
   384 
   491                 SetTouchPaneButtons( EPhoneIncomingCallButtons );
   385                 SetTouchPaneButtons( EPhoneIncomingCallButtons );
   492                 UpdateSilenceButtonDimming();
       
   493                 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   494                 SetRingingTonePlaybackL( callStateData.CallId() );
   386                 SetRingingTonePlaybackL( callStateData.CallId() );
   495                 SetToolbarDimming( ETrue );
       
   496                 SetBackButtonActive(EFalse);
   387                 SetBackButtonActive(EFalse);
   497                 iStateMachine->ChangeState( EPhoneStateIncoming );
   388                 iStateMachine->ChangeState( EPhoneStateIncoming );
   498                 }
   389                 }
   499             else
   390             else
   500                 {
   391                 {
   507          case EOneActiveCall:
   398          case EOneActiveCall:
   508             {
   399             {
   509             // Go to Single And Waiting state
   400             // Go to Single And Waiting state
   510             UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   401             UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
   511             SetTouchPaneButtons( EPhoneWaitingCallButtons );
   402             SetTouchPaneButtons( EPhoneWaitingCallButtons );
   512             SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
       
   513 
   403 
   514             // Check if HW Keys or Call UI should be disabled
   404             // Check if HW Keys or Call UI should be disabled
   515             CheckDisableHWKeysAndCallUIL();
   405             CheckDisableHWKeysAndCallUIL();
   516 
   406 
   517             iStateMachine->ChangeState( EPhoneStateWaitingInSingle );
   407             iStateMachine->ChangeState( EPhoneStateWaitingInSingle );