phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp
branchRCL_3
changeset 62 5266b1f337bd
parent 61 41a7f70b3818
child 69 8baf28733c3d
--- a/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp	Tue Aug 31 15:14:29 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp	Wed Sep 01 12:30:10 2010 +0100
@@ -42,7 +42,6 @@
 #include "phonelogger.h"
 #include "cphonecenrepproxy.h"
 #include "cphonepubsubproxy.h"
-#include "mphonestorage.h"
 
 // ================= MEMBER FUNCTIONS =======================
 
@@ -66,7 +65,14 @@
 //
 CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
     {
-
+    if( iViewCommandHandle )
+        {
+        TPhoneCmdParamBoolean dtmfSendFlag;
+        dtmfSendFlag.SetBoolean( EFalse );
+        TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( 
+                        EPhoneViewSetVideoCallDTMFVisibilityFlag,
+                        &dtmfSendFlag ); )
+        }
     }
 
 // -----------------------------------------------------------
@@ -143,7 +149,7 @@
             break;
 
         case MEngineMonitor::EPEMessageDialing:
-            HandleDiallingL( aCallId );
+            HandleDialingL( aCallId );
             break;
             
         case MEngineMonitor::EPEMessageDisconnecting:
@@ -185,9 +191,11 @@
             }
 
         case EPhoneInCallCmdNewCall:
+            LaunchNewCallQueryL();
             break;
 
         case EPhoneInCallCmdNewCallCall:
+            CallFromNewCallQueryL();
             break;
 
         case EPhoneCallComingCmdReject: // fall through
@@ -210,10 +218,6 @@
                 MPEPhoneModel::EPEMessageReject );
             break;
 
-        case EPhoneCmdUpdateUiControls:
-            UpdateUiControlsL();
-            break;
-
         default:
             commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
             break;
@@ -222,6 +226,65 @@
     return commandStatus;
     }
 
+// -----------------------------------------------------------
+// CPhoneSingleAndWaiting::OpenMenuBarL
+// -----------------------------------------------------------
+//
+void CPhoneSingleAndWaiting::OpenMenuBarL()
+    {
+    __LOGMETHODSTARTEND( EPhoneUIStates,
+        "CPhoneSingleAndWaiting::OpenMenuBarL() ");
+    TInt resourceId ( KErrNone );
+
+
+    if ( !IsAutoLockOn() )
+        {
+         if( IsVideoCallActiveL() || IsVideoCallRingingL() )
+            {
+            //DTMF hiding will be set to TRUE
+            if( IsVideoCallActiveL() )
+                {
+                TPhoneCmdParamBoolean dtmfSendFlag;
+                dtmfSendFlag.SetBoolean( ETrue );
+                iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallDTMFVisibilityFlag,
+                        &dtmfSendFlag );
+                }
+            if ( IsNumberEntryVisibleL() )
+                {
+                resourceId = EPhoneVideoCallWaitingMenubarWithNumberEntry;
+                }
+            else
+                {
+                resourceId = EPhoneVideoCallWaitingMenubar;
+                }
+            }
+
+        else // single voice and waiting voice
+            {
+            if ( IsNumberEntryVisibleL() )
+                {
+                resourceId = EPhoneCallWaitingMenubarWithNumberEntry;
+                }
+            else
+                {
+                resourceId = EPhoneCallWaitingMenubar;
+                }
+            }
+        }
+    else
+        {
+        resourceId = EPhoneCallWaitingLockMenubar;
+        }
+
+
+    TPhoneCmdParamInteger integerParam;
+    integerParam.SetInteger(
+        CPhoneMainResourceResolver::Instance()->
+        ResolveResourceID( resourceId ) );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
+        &integerParam );
+    }
+
 // --------------------------------------------------------------
 // CPhoneSingleAndWaiting::HandleKeyMessageL
 // --------------------------------------------------------------
@@ -264,22 +327,6 @@
     }
 
 // -----------------------------------------------------------
-// CPhoneSingleAndWaiting::HandleKeyEventL
-// -----------------------------------------------------------
-//
-void CPhoneSingleAndWaiting::HandleKeyEventL(
-    const TKeyEvent& aKeyEvent,
-    TEventCode /*aEventCode*/ )
-    {
-    if( EKeyDeviceF == aKeyEvent.iCode )
-        {
-        __PHONELOG( EBasic, EPhoneUIStates,
-            "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" );
-        HandleHoldSwitchL();
-        }
-    }
-
-// -----------------------------------------------------------
 // CPhoneSingleAndWaiting::HandleIdleL
 // -----------------------------------------------------------
 //
@@ -287,6 +334,8 @@
     {
     __LOGMETHODSTARTEND( EPhoneUIStates,
         "CPhoneSingleAndWaiting::HandleIdleL() ");
+    // Close menu bar, if it is displayed
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
 
     if ( iSingleCallId == KErrNotFound )
         {
@@ -361,42 +410,38 @@
                 SetNumberEntryVisibilityL(EFalse);
                 }
 
-            // Check if HW Keys or Call UI should be disabled
-            CheckDisableHWKeysAndCallUIL();
-            
             SetTouchPaneButtons( EPhoneIncomingCallButtons );
+            SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent );
             
             // Bring up callhandling view
             BringIncomingToForegroundL();
 
             //Set incoming cba
             iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
+            UpdateSilenceButtonDimming();
             
             // Play ringtone
             SetRingingTonePlaybackL( callStateData.CallId() );
             }
-
-        SetBackButtonActive(EFalse);
         EndUiUpdate();
+        SetToolbarDimming( ETrue );
 
         iStateMachine->ChangeState( EPhoneStateIncoming );
         }
     else
         {
-
         BeginUiUpdateLC();
 
         // Remove call
         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
-
         // Idle message came for waiting call
         if ( IsNumberEntryUsedL() )
             {
-            if ( NeedToSendToBackgroundL() )
+            if ( NeedToReturnToForegroundAppL() )
                 {
                 // Return phone to the background if send to background is needed.
                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
-
+                iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
                 UpdateCbaL( EPhoneCallHandlingInCallCBA );
                 }
             else
@@ -408,32 +453,30 @@
         else
             {
             UpdateCbaL( EPhoneCallHandlingInCallCBA );
-            // If numberentry is not open just check NeedToSendToBackgroundL and
+            // If numberentry is not open just check NeedToReturnToForegroundAppL and
             // sendbackround if needed.
-            if ( NeedToSendToBackgroundL() )
+            if ( NeedToReturnToForegroundAppL() )
                 {
                 // Return phone to the background if send to background is needed.
                 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
                 }
             }
         
-        // Enable call UI
-        if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) 
-            && iStateMachine->PhoneStorage()->IsScreenLocked() )
+        if ( IsVideoCall( iSingleCallId ) )
             {
-            EnableCallUIL();
-            }
+            TPhoneCmdParamInteger uidParam;
+            uidParam.SetInteger( KVtUiAppUidValue.iUid );
 
-        // Reset blocked keys list
-        iStateMachine->PhoneStorage()->ResetBlockedKeysList();
-
+            // Set video Phone as the top application
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
+                &uidParam );
+            }
+        
         SetTouchPaneButtons( EPhoneIncallButtons );
         EndUiUpdate();
-
         // CBA updates in above if-else conditions
         iStateMachine->ChangeState( EPhoneStateSingle );
         }
-
     }
 
 // -----------------------------------------------------------
@@ -453,7 +496,7 @@
     TInt callLabelId = CPhoneMainResourceResolver::Instance()->
             ResolveResourceID( EPhoneCallOnHold );
 
-    StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );        
+    StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );
     callHeaderParam.SetLabelText( labelText );
 
     iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
@@ -470,8 +513,6 @@
         }
 
     UpdateInCallCbaL();
-    
-    SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
     }
 
 // -----------------------------------------------------------
@@ -507,6 +548,12 @@
     {
     __LOGMETHODSTARTEND( EPhoneUIStates,
         "CPhoneSingleAndWaiting::HandleUnholdL() ");
+    // Close menu if focus is somewhere else than number entry.
+    if ( !IsNumberEntryUsedL() )
+        {
+        // Close menubar
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
+        }
 
     // Show bubble
     TPhoneCmdParamCallHeaderData callHeaderParam;
@@ -525,9 +572,7 @@
         }
 
     // Set CBAs
-    UpdateInCallCbaL();
-    
-    SetTouchPaneButtons( EPhoneWaitingCallButtons ); 
+    UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
     }
 
 // -----------------------------------------------------------
@@ -538,12 +583,7 @@
     {
     __LOGMETHODSTARTEND( EPhoneUIStates,
         "CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
-    
-    // Reset blocked keys list
-    iStateMachine->PhoneStorage()->ResetBlockedKeysList();
-    
     BeginUiUpdateLC();
-
     UpdateRemoteInfoDataL ( aCallId );
     // Show bubble
     TPhoneCmdParamCallHeaderData callHeaderParam;
@@ -556,91 +596,83 @@
     holdFlag.SetBoolean( EFalse );
     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
 
-    if ( IsNumberEntryUsedL() )
+    // Close dtmf dialer if exist.
+    if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
+        {
+        CloseDTMFEditorL();
+        }
+    else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
         {
-        if ( NeedToSendToBackgroundL() )
-            {
-            // Return phone to the background if send to background is needed.
-            iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
-
-            UpdateCbaL( EPhoneCallHandlingInCallCBA );
-            }
-        else
-            {
-            // Show the number entry if it exists.
-            SetNumberEntryVisibilityL(ETrue);
-            }
+        CloseCustomizedDialerL();
+        }
+     
+    if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() )
+        {
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
+        UpdateCbaL( EPhoneCallHandlingInCallCBA );
         }
     else
         {
-        // Set Two singles softkeys
+        // Set Two singles state softkeys
         UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
         }
-
+    
     SetTouchPaneButtons( EPhoneTwoSinglesButtons );
     EndUiUpdate();
-
-    // Go to two singles state
     // CBA updates in above if-else conditions
     iStateMachine->ChangeState( EPhoneStateTwoSingles );
     }
 
-// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::HandleDiallingL
-// -----------------------------------------------------------
+// ---------------------------------------------------------
+// CPhoneSingleAndWaiting::CallFromNewCallQueryL
+// ---------------------------------------------------------
 //
-void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
+void CPhoneSingleAndWaiting::CallFromNewCallQueryL()
     {
     __LOGMETHODSTARTEND( EPhoneUIStates,
-        "CPhoneSingleAndWaiting::HandleDiallingL() ");
+        "CPhoneSingleAndWaiting::CallFromNewCallQueryL() ");
+    // First get the phone number from the dialog
+    TPhoneCmdParamString phoneNumberParam;
+    HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
+    TPtr ptr( content->Des() );
+    phoneNumberParam.SetString( &ptr );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
+        &phoneNumberParam );
 
-    BeginUiUpdateLC();
+    // Store the phone number
+    iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
 
-    // Hide number entry if it exists
-    SetNumberEntryVisibilityL(EFalse);
+    // clean up stack
+    CleanupStack::PopAndDestroy( content );
+
+    DialVoiceCallL();
+    }
 
+// -----------------------------------------------------------
+// CPhoneSingleAndWaiting::HandleDialingL
+// -----------------------------------------------------------
+//
+void CPhoneSingleAndWaiting::HandleDialingL( TInt aCallId )
+    {
+    __LOGMETHODSTARTEND( EPhoneUIStates,
+        "CPhoneSingleAndWaiting::HandleDialingL() ");
     // Display call setup
     DisplayCallSetupL( aCallId );
-
-    // Set Hold flag to view ( DTMF menu label have to present )
-    TPhoneCmdParamBoolean holdFlag;
-    holdFlag.SetBoolean( EFalse );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
-    SetTouchPaneButtons( EPhoneCallSetupButtons );
-
-    EndUiUpdate();
-
-    // Update call setup CBAs
-    UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
-
     // Go to Single And Waiting And Call Setup state
     iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
     }
 
 // -----------------------------------------------------------
-// CPhoneSingleAndWaiting::DisplayCallSetupL
+// CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL
 // -----------------------------------------------------------
 //
-void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
+EXPORT_C void CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL()
     {
-    __LOGMETHODSTARTEND( EPhoneUIStates,
-        "CPhoneSingleAndWaiting::DisplayCallSetupL() ");
-
-    // Remove dialogs if necessary
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
-
-    // Capture keys when the phone is dialling
-    CaptureKeysDuringCallNotificationL( ETrue );
-
-    // Force telephony to the foreground
-    TPhoneCmdParamInteger uidParam;
-    uidParam.SetInteger( KUidPhoneApplication.iUid );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
-        &uidParam );
-
-    // Display call setup header
-    DisplayHeaderForOutgoingCallL( aCallId );
+    // Set Hold flag to view ( DTMF menu label have to present )
+    TPhoneCmdParamBoolean holdFlag;
+    holdFlag.SetBoolean( EFalse );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
+    SetTouchPaneButtons( EPhoneCallSetupButtons );
     }
 
 // -----------------------------------------------------------
@@ -651,18 +683,7 @@
     {
     __LOGMETHODSTARTEND( EPhoneUIStates,
         "CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
-    TPhoneCmdParamInteger callIdParam;
-    iViewCommandHandle->ExecuteCommandL( 
-            EPhoneViewGetExpandedBubbleCallId, &callIdParam );
-
-    if ( callIdParam.Integer()==iSingleCallId )
-        {
-        CPhoneGsmInCall::UpdateInCallCbaL();
-        } 
-    else 
-        {
-        iCbaManager->SetCbaL(  EPhoneCallHandlingCallWaitingCBA );
-        }
+     UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
     }
 
 // -----------------------------------------------------------
@@ -690,33 +711,9 @@
 // CPhoneSingleAndWaiting::HandleDisconnectingL
 // -----------------------------------------------------------
 //
-void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt aCallId )
+void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt /*aCallId*/ )
     {
     __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) ");
-    
-    if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) )
-        {
-        __PHONELOG( EBasic, EPhoneControl, 
-            "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" );
-        
-        // Keep phone on the foreground
-        TPhoneCmdParamBoolean booleanParam;
-        booleanParam.SetBoolean( EFalse );
-        iViewCommandHandle->ExecuteCommandL(
-            EPhoneViewSetNeedToSendToBackgroundStatus,
-            &booleanParam );
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::UpdateUiControlsL
-// -----------------------------------------------------------
-//
-void CPhoneSingleAndWaiting::UpdateUiControlsL()
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
-    
-    UpdateInCallCbaL();
     }
 
 // End of File