phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp
branchRCL_3
changeset 9 8871b09be73b
parent 0 5f000ab63145
child 15 2a26698d78ba
--- a/phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp	Tue Feb 02 00:10:04 2010 +0200
+++ b/phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp	Fri Feb 19 22:50:26 2010 +0200
@@ -57,13 +57,15 @@
 //
 CPhoneConferenceAndSingle::~CPhoneConferenceAndSingle()
     {
-    // Reset flag 
+    // Need to check iViewCommandHandle validity here to not
+    // trigger a high/can panic error in a Codescanner run.
+    // coverity[var_compare_op]
     if ( iViewCommandHandle )
         {
         TPhoneCmdParamBoolean dtmfSendFlag;
         dtmfSendFlag.SetBoolean( EFalse );
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, 
-    	    &dtmfSendFlag );     	
+        TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, 
+    	    &dtmfSendFlag ) );     	
         }
     }
 
@@ -461,6 +463,12 @@
     
     BeginUiUpdateLC();  
     
+    // Hide the number entry if it exists
+    if ( IsNumberEntryUsedL() )
+        {
+        SetNumberEntryVisibilityL( EFalse );    
+        }
+    
     TPhoneCmdParamBoolean dialerParam;
     dialerParam.SetBoolean( ETrue );
     
@@ -653,4 +661,28 @@
     CleanupStack::PopAndDestroy( phoneNumber );
     }
 
+// -----------------------------------------------------------
+// CPhoneConferenceAndSingle::DisconnectCallL
+// -----------------------------------------------------------
+//
+void CPhoneConferenceAndSingle::DisconnectCallL()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndSingle::DisconnectCallL( ) ");
+    // Fetch active call's id from view
+    TPhoneCmdParamCallStateData callStateData;
+    callStateData.SetCallState( EPEStateConnected );
+    iViewCommandHandle->HandleCommandL(
+        EPhoneViewGetCallIdByState, &callStateData );
+  
+    if( callStateData.CallId() > KErrNotFound  && callStateData.CallId() == KConferenceCallId )
+        {
+        iStateMachine->SendPhoneEngineMessage(
+                      CPEPhoneModelIF::EPEMessageHangUpConference );  
+        }
+    else
+        {
+        CPhoneState::DisconnectCallL();
+        }
+    }
+
 // End of File