phoneapp/phoneuicontrol/src/cphonestate.cpp
branchRCL_3
changeset 25 91c2fb4b78df
parent 19 544e34b3255a
child 31 ba54057fe027
--- a/phoneapp/phoneuicontrol/src/cphonestate.cpp	Wed Apr 14 15:56:42 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestate.cpp	Tue Apr 27 16:37:10 2010 +0300
@@ -1068,10 +1068,10 @@
 
     if ( numberEntryUsed && ( aKeyEvent.iRepeats == 0 ||
               aKeyEvent.iScanCode == EStdKeyBackspace ||
-              aKeyEvent.iScanCode ==EStdKeyLeftArrow  ||              
-              aKeyEvent.iScanCode == EStdKeyUpArrow  ||
-              aKeyEvent.iScanCode == EStdKeyDownArrow  ||              
-              aKeyEvent.iScanCode ==EStdKeyRightArrow ))
+              aKeyEvent.iScanCode == EStdKeyLeftArrow ||
+              aKeyEvent.iScanCode == EStdKeyUpArrow   ||
+              aKeyEvent.iScanCode == EStdKeyDownArrow ||
+              aKeyEvent.iScanCode == EStdKeyRightArrow ))
         {
         // Number entry exists but may be hidden
         KeyEventForExistingNumberEntryL( aKeyEvent, aEventCode );
@@ -1529,12 +1529,10 @@
             // this should be bypasses?
         case EPhoneDialerCallHandling:
         case EPhoneCmdBack:
-            BeginTransEffectLC( ENumberEntryClose );
             // Remove number entry from screen
             iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
             // Do state-specific behaviour if number entry is cleared
             HandleNumberEntryClearedL();
-            EndTransEffect();
             break;
 
         case EPhoneDialerCmdTouchInput:
@@ -1644,16 +1642,6 @@
             }
             break;
 
-        case EPhoneDialerCmdContacts:
-            {
-            // Launch Phonebook application
-            TPhoneCmdParamAppInfo appInfoParam;
-            appInfoParam.SetAppUid( KPhoneUidAppPhonebook );
-            iViewCommandHandle->ExecuteCommandL(
-                EPhoneViewActivateApp, &appInfoParam );
-            }
-            break;
-
         case EPhoneViewYesSingleItemFetch:
             {
             if ( IsOnScreenDialerSupported() )
@@ -2073,6 +2061,13 @@
     // Set Idle app as the top app
     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetIdleTopApplication );
 
+	// Go to Homescreen when application, which was open when answered incoming call,
+	// is closed during active call    
+    if( TopAppIsDisplayedL() )
+        {
+        DisplayIdleScreenL();
+        }
+
     // Set Empty CBA
     iCbaManager->SetCbaL( EPhoneEmptyCBA );
     }
@@ -2137,12 +2132,8 @@
         iStateMachine->PhoneEngineInfo()->SetPhoneNumber( *phoneNumber );
     
         if ( phoneNumber->Des().Length() < KPhoneValidPhoneNumberLength )
-            {
-            // Closing effect is shown when dialer exist.
-            BeginTransEffectLC( ENumberEntryClose );            
+            {        
             iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-            EndTransEffect();
-            
             HandleNumberEntryClearedL();
             }
     
@@ -3878,25 +3869,31 @@
 EXPORT_C void CPhoneState::BeginTransEffectLC(  TStateTransEffectType aType )
     {
     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::BeginTransEffectLC( ) ");
-    TPhoneCmdParamTransEffect effectParam;
-
-    switch ( aType )
+    
+    // Check if this particular effect can be used in the current state.
+    if ( CanTransEffectTypeBeUsed( aType ) )
         {
-        case ENumberEntryOpen:
-            effectParam.SetType( EPhoneTransEffectDialerOpen );
-            break;
-        case ENumberEntryClose:
-            effectParam.SetType( EPhoneTransEffectDialerClose );
-            break;
-        case ENumberEntryCreate:
-            effectParam.SetType( EPhoneTransEffectDialerCreate );
-            break;
-        default:
-            effectParam.SetType( EPhoneTransEffectNone );
+        TPhoneCmdParamTransEffect effectParam;
+        switch ( aType )
+            {
+            case ENumberEntryOpen:
+                effectParam.SetType( EPhoneTransEffectDialerOpen );
+                break;
+            case ENumberEntryClose:
+                effectParam.SetType( EPhoneTransEffectDialerClose );
+                break;
+            case ENumberEntryCreate:
+                effectParam.SetType( EPhoneTransEffectDialerCreate );
+                break;
+            default:
+                effectParam.SetType( EPhoneTransEffectNone );
+            }
+
+        iViewCommandHandle->ExecuteCommand( EPhoneViewBeginTransEffect,  
+                                            &effectParam );
         }
 
-    iViewCommandHandle->ExecuteCommand( EPhoneViewBeginTransEffect,  &effectParam );
-
+    // Always put the cleanup item into stack as expected by the caller.
     TCleanupItem operation( EffectCleanup, this );
     CleanupStack::PushL( operation );
     }
@@ -3974,7 +3971,7 @@
     {
     TPhoneCmdParamTransEffect effectParam;
     effectParam.SetType( EPhoneTransEffectStop );
-
+    // won't do anything if effect wasn't started
     static_cast<CPhoneState*>( aThis )->iViewCommandHandle->ExecuteCommand(
         EPhoneViewEndTransEffect, &effectParam );
     }
@@ -4006,10 +4003,7 @@
         iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfDialerViewVisible,
                                              &booleanParam );
 
-        // Closing effect is shown when DTMF dialer exist.
-        BeginTransEffectLC( ENumberEntryClose );
         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-        EndTransEffect();
         }
     else // Non-Touch
         {
@@ -4345,12 +4339,8 @@
     // Set dialer back to default mode.
     iViewCommandHandle->HandleCommandL( EPhoneViewHideCustomizedDialer );
 
-    // Closing effect is shown when customized dialer exist.
-    BeginTransEffectLC( ENumberEntryClose );
-
     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
 
-    EndTransEffect();
     // Do state-specific behaviour if number entry is cleared
     HandleNumberEntryClearedL();
     }
@@ -4402,8 +4392,6 @@
     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfDialerViewVisible,
                                          &booleanParam );
 
-    BeginTransEffectLC( ENumberEntryCreate );
-
     if ( IsNumberEntryUsedL() )
         {
         // Store the number entry content to cache
@@ -4421,8 +4409,6 @@
         NumberEntryManagerL()->CreateNumberEntryL();
         }
 
-    EndTransEffect();
-
     // Update CBA
     iCbaManager->UpdateInCallCbaL();
     }
@@ -4668,6 +4654,16 @@
     StartAlsLineChangeTimerL();
     }
 
+// ---------------------------------------------------------
+// CPhoneState::CanTransEffectTypeBeUsed
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CPhoneState::CanTransEffectTypeBeUsed( TStateTransEffectType /*aType*/ )
+    {
+    // State dependant so return EFalse by default.
+    return EFalse;
+    }
+
 // -----------------------------------------------------------
 // CPhoneState::NumberEntryClearL
 // -----------------------------------------------------------