phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp
branchRCL_3
changeset 62 5266b1f337bd
parent 61 41a7f70b3818
child 69 8baf28733c3d
--- a/phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp	Tue Aug 31 15:14:29 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp	Wed Sep 01 12:30:10 2010 +0100
@@ -18,7 +18,8 @@
 
 // INCLUDES
 #include <featmgr.h>
-#include <StringLoader.h>
+#include <StringLoader.h> 
+#include <ScreensaverInternalPSKeys.h>
 #include <AknUtils.h>
 #include <mpeengineinfo.h>
 #include <mpeclientinformation.h>
@@ -82,8 +83,21 @@
         Panic( EPhoneCtrlInvariant ) );
     
     CPhoneState::BaseConstructL();
+    
+    // Enable the volume display
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNaviPaneAudioVolume );   
+    HandleAudioOutputChangedL();
 
-    HandleAudioOutputChangedL();
+    TPhoneCmdParamCallStateData callStateData;
+    callStateData.SetCallState( EPEStateDialing );
+    iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, &callStateData );
+    if ( callStateData.CallId() > KErrNotFound && IsVideoCall( callStateData.CallId() ) )
+        {
+        CPhonePubSubProxy::Instance()->ChangePropertyValue(
+                        KPSUidScreenSaver,
+                        KScreenSaverAllowScreenSaver,
+                        EPhoneScreensaverNotAllowed );
+        }
     }
 
 // -----------------------------------------------------------
@@ -119,10 +133,6 @@
     
     switch( aCommand )
         {
-        case EPhoneInCallCmdDialer:
-            iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenDialer );
-            break;
-            
         case EPhoneNumberAcqCmdAddToContacts:
             {
             // If call setup is ongoing then add to contacts query should
@@ -155,24 +165,34 @@
                 }
             iDtmfWaitCharTimer->ButtonPressedL();
             break;
-
+                
+        case EPhoneDialerCmdHelpDtmf:
+            {
+            if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+                {                
+                TPtrC contextName( KDATA_DIALER_HLP_SEND_DTMF );
+                iViewCommandHandle->ExecuteCommandL( 
+                    EPhoneViewLaunchHelpApplication,
+                    0,
+                    contextName );
+                }
+            }
+            break;
         
         case EPhoneCmdOptions:
+            OpenMenuBarL();
             break;
         
         case EPhoneInCallCmdDtmfManualQuery:
+             if ( iOnScreenDialer )
+                 {
+                 ShowDtmfDialerL();
+                 }
               break;    
             
         case EPhoneDtmfDialerExit:      // fall through
         case EPhoneDtmfDialerCancel:
-            break;
-
-        case EPhoneInCallCmdMute: // fall through
-        case EPhoneInCallCmdUnmute:
-            iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( 
-                ( aCommand == EPhoneInCallCmdMute ) );
-            iStateMachine->SendPhoneEngineMessage( 
-                MPEPhoneModel::EPEMessageSetAudioMute );
+            CloseDTMFEditorL();
             break;
                                    
         default:
@@ -183,6 +203,30 @@
     return commandStatus;
     }
 
+// -----------------------------------------------------------
+// CPhoneStateCallSetup::OpenMenuBarL   
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateCallSetup::OpenMenuBarL()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl,  
+        "CPhoneStateCallSetup::OpenMenuBarL()" );
+
+    if ( iOnScreenDialer )
+        {
+        if ( IsDTMFEditorVisibleL() && IsNumberEntryVisibleL() )
+            {
+            TInt resourceId = EPhoneDtmfDialerMenubar;
+            
+            TPhoneCmdParamInteger integerParam;
+            integerParam.SetInteger( 
+                CPhoneMainResourceResolver::Instance()->
+                ResolveResourceID( resourceId ) );
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
+                &integerParam );
+            }
+        }
+    }
 
 // -----------------------------------------------------------
 // CPhoneStateCallSetup::HandleNumberEntryClearedL()
@@ -198,6 +242,18 @@
     }
 
 // -----------------------------------------------------------
+// CPhoneStateCallSetup::HandleCreateNumberEntryL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateCallSetup::HandleCreateNumberEntryL( 
+        const TKeyEvent& /*aKeyEvent*/,
+        TEventCode /*aEventCode*/)
+    {
+    __LOGMETHODSTARTEND(EPhoneControl,  
+        "CPhoneStateCallSetup::HandleCreateNumberEntryL()" );
+    }
+
+// -----------------------------------------------------------
 // CPhoneStateCallSetup::UpdateInCallCbaL
 // -----------------------------------------------------------
 //
@@ -214,7 +270,14 @@
 EXPORT_C void CPhoneStateCallSetup::UpdateCbaL( TInt aResource )
     {
     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::UpdateCbaL() ");
-    iCbaManager->UpdateCbaL( aResource );   
+    if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
+        {
+        iCbaManager->SetCbaL( EPhoneDtmfDialerCBA );        
+        }
+    else
+        {
+        iCbaManager->UpdateCbaL( aResource );   
+        }
     }
 
 // -----------------------------------------------------------
@@ -310,8 +373,15 @@
                 // Remove number entry if long press
                 if ( IsNumberEntryUsedL() )
                     {
-                    iViewCommandHandle->ExecuteCommandL( 
-                        EPhoneViewRemoveNumberEntry );
+                    if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
+                        {
+                        CloseDTMFEditorL();
+                        } 
+                    else
+                        {
+                        iViewCommandHandle->ExecuteCommandL( 
+                            EPhoneViewRemoveNumberEntry );
+                        }
                     }
                 }
             else
@@ -334,7 +404,7 @@
             else // aMessage == EPhoneKeyLongPress
                 {
                 // Display call in progress information note
-                CPhoneState::SendGlobalInfoNoteL( EPhoneCallInProgress, ETrue );
+                CPhoneState::SendGlobalInfoNoteL( EPhoneCallInProgress );
                 }
             break;
 
@@ -500,21 +570,33 @@
 //
 void CPhoneStateCallSetup::HandleConnectedL( TInt aCallId )
     {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()");
-    // Keep Phone in the foreground
-    TPhoneCmdParamBoolean booleanParam;
-    booleanParam.SetBoolean( EFalse );
-    iViewCommandHandle->ExecuteCommandL( 
-        EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()");        
+
+    // Close menu bar, if it is displayed
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
     
     BeginUiUpdateLC();
- 
+        
+    // Remove the number entry if it isn't DTMF dialer
+    if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() )
+        {
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
+        }
+    
     // Update the single call
     CPhoneState::UpdateSingleActiveCallL( aCallId );
-            
+        
+    // Complete sat request
+    if ( iStateMachine->PhoneEngineInfo()->CallOrigin( aCallId ) == EPECallOriginSAT )
+        {
+        CompleteSatRequestL( aCallId );
+        }
+        
     // Update touch buttons
     SetTouchPaneButtons( EPhoneIncallButtons );        
 
+    SetToolbarDimming( EFalse );
+
     EndUiUpdate();
     
     // Go to single state
@@ -530,8 +612,16 @@
 void CPhoneStateCallSetup::HandleIdleL( TInt aCallId )
     {
     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleIdleL()");
-    
-    BeginUiUpdateLC ();
+    if ( !NeedToReturnToForegroundAppL() &&
+         IsNumberEntryUsedL() )
+        {
+        BeginTransEffectLC( ECallUiDisappear );
+        }
+    else 
+        {
+        BeginTransEffectLC( ENumberEntryOpen );
+        }
+    BeginUiUpdateLC();
     
     // Disable the volume display
     iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
@@ -544,10 +634,23 @@
       
     if ( IsNumberEntryUsedL() )
         {
-        // Show the number entry if it exists
-        SetNumberEntryVisibilityL(ETrue);    
+        if ( NeedToReturnToForegroundAppL() )
+            {
+            // Return phone to the background if send to background is needed.
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
+    
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
+    
+            // Set Number Entry CBA
+            iCbaManager->SetCbaL( EPhoneNumberAcqCBA );
+            }
+        else
+            {
+            // Show the number entry if it exists
+            SetNumberEntryVisibilityL(ETrue);
+            }
         }    
-    else if ( NeedToSendToBackgroundL() )
+    else if ( NeedToReturnToForegroundAppL() )
         {
         __PHONELOG( EBasic,EPhoneControl,"CPhoneStateCallSetup::elseif1");
         // Continue displaying current app but set up the 
@@ -562,7 +665,7 @@
         }
         
     EndUiUpdate();
-    // Go to idle state
+    EndTransEffect(); 
     // No need update cba
     iStateMachine->ChangeState( EPhoneStateIdle );
     }
@@ -571,17 +674,17 @@
 // CPhoneStateCallSetup::HandleRemoteTerminatedL
 // -----------------------------------------------------------------------------
 //
-void CPhoneStateCallSetup::HandleRemoteTerminatedL( TInt /*aCallId*/ )
+void CPhoneStateCallSetup::HandleRemoteTerminatedL( TInt aCallId )
     {
     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleRemoteTerminatedL( ) ");
 
     // Remove call header
-    /*iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
     
     TPhoneCmdParamBoolean globalNotifierParam;
     globalNotifierParam.SetBoolean( EFalse );
     iViewCommandHandle->ExecuteCommandL( 
-        EPhoneViewSetGlobalNotifiersDisabled, &globalNotifierParam );*/
+        EPhoneViewSetGlobalNotifiersDisabled, &globalNotifierParam );
 
     // Video call not possible note is shown by 
     // CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL method,
@@ -595,11 +698,11 @@
 void CPhoneStateCallSetup::HandleAudioOutputChangedL()
     {
     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleAudioOutputChangedL( ) ");
-       
-    CPhoneState::HandleAudioOutputChangedL();
+   
     // Update the call setup CBA
     UpdateInCallCbaL();
-    SetTouchPaneButtons(0);
+    
+    CPhoneState::HandleAudioOutputChangedL();
     }
  
 // -----------------------------------------------------------
@@ -619,12 +722,19 @@
     TPtr ptr( content->Des() );
     dtmfSequence.SetString( &ptr );
     
-    if ( iOnScreenDialer )
+    if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
         {
         iViewCommandHandle->ExecuteCommand(
             EPhoneViewGetNumberFromEntry,
             &dtmfSequence );  
-        }     
+                    
+        CloseDTMFEditorL();
+        }
+    else
+        {
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
+                                             &dtmfSequence );
+        }        
 
     // Send the DTMF
     if ( ptr.Length() )