phoneapp/phoneuicontrol/src/cphonecbamanager.cpp
changeset 65 2a5d4ab426d3
parent 50 377c906a8701
--- a/phoneapp/phoneuicontrol/src/cphonecbamanager.cpp	Mon Aug 23 15:42:12 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonecbamanager.cpp	Fri Sep 03 13:33:36 2010 +0300
@@ -52,7 +52,8 @@
          MPhoneStateMachine& aStateMachine )
    : iState ( aState ), 
      iViewCommandHandle ( aViewCommandHandle ),
-     iStateMachine ( aStateMachine )
+     iStateMachine ( aStateMachine ),
+     iSoftRejectStatus ( ETrue )
     {
     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCbaManager::CPhoneCbaManager() ");
     }
@@ -118,75 +119,23 @@
     btParam.SetBoolean( audioOutput == EPEBTAudioAccessory );        
     iViewCommandHandle.ExecuteCommand(EPhoneViewSetBlueToothFlag,&btParam);
 
+    SetSoftRejectDimmedFlag();
+    
     TPhoneCmdParamBoolean btAvailableParam;
     btAvailableParam.SetBoolean( btAvailable );        
     iViewCommandHandle.ExecuteCommand(
             EPhoneViewSetBluetoothAvailableFlag,&btAvailableParam);
-    
-    // Call setup cases
-    if ( EPhoneCallHandlingCallSetupCBA == aResource )
-        {
-        if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling) )
-            {
-            if ( audioOutput == EPELoudspeaker )
-                {
-                resourceId = EPhoneCallHandlingCallSetupToHandsetCBA;
-                }
-            else if ( audioOutput == EPEHandset )
-                {
-                resourceId = EPhoneCallHandlingCallSetupToIhfCBA;
-                }
-            }
-        }
-
-    // Is numberentry visible
-    else if ( iState->IsNumberEntryUsedL() )
-        {
-        if ( iState->IsAutoLockOn() || !(iState->IsSimOk()) )
-            {
-            resourceId = EPhoneEmptyBackCBA;
-            }
-        else
-            {
-            TPhoneCmdParamInteger activeCallCount;
-            iViewCommandHandle.ExecuteCommandL(
-                    EPhoneViewGetCountOfActiveCalls, &activeCallCount );
-            
-            TPhoneCmdParamCallStateData callStateData;
-            callStateData.SetCallState( EPEStateRinging );
-            iViewCommandHandle.HandleCommandL(
-                    EPhoneViewGetCallIdByState, &callStateData );
-            
-            TInt incomingCall = callStateData.CallId();
-
-            if( activeCallCount.Integer() == ENoActiveCalls )
-                {
-                resourceId = EPhoneNumberAcqCBA;
-                }
-            else if ( activeCallCount.Integer() > ENoActiveCalls &&  
-                      incomingCall > KErrNotFound )
-                {
-                resourceId = EPhoneCallHandlingCallWaitingCBA;
-                }
-            else
-                {
-                resourceId = EPhoneInCallNumberAcqCBA;
-                }
-            }
-        }
 
     // Check is Audio muted
-    else if ( iStateMachine.PhoneEngineInfo()->AudioMute() )
+    if ( iStateMachine.PhoneEngineInfo()->AudioMute() )
         {
         resourceId = EPhoneCallHandlingInCallUnmuteCBA;
         }
-
     // Multicall swap
     else if ( EPhoneCallHandlingNewCallSwapCBA == aResource )
         {
         resourceId = EPhoneCallHandlingNewCallSwapCBA;
         }
-
     // Call waiting cases
     else if ( EPhoneCallHandlingCallWaitingCBA == aResource )
         {
@@ -206,13 +155,11 @@
                 }
             }
         }
-
     // Check is call in hold
     else if ( hold.Boolean() )
         {
         resourceId = EPhoneCallHandlingInCallUnholdCBA;
         }
-
     // Is BT accessory connected
     else if ( audioOutput == EPEBTAudioAccessory &&
               IsVoiceCallAlertingOrActiveL() &&
@@ -220,13 +167,11 @@
         {
         resourceId = EPhoneCallHandlingInCallHandsetCBA;
         }
-
     else if ( audioOutput == EPEWiredAudioAccessory ||
               coverHideSendEndKey || iState->IsSwivelClosed() )
         {
         resourceId = EPhoneCallHandlingInCallNoIhfCBA;
         }
-
     // Check BT availability
     else if ( audioOutput == EPELoudspeaker )
         {
@@ -243,7 +188,6 @@
         {
         resourceId = EPhoneCallHandlingInCallBtaaCBA;
         }
-
     SetCbaL( resourceId );
     }
 
@@ -254,7 +198,6 @@
 EXPORT_C void CPhoneCbaManager::UpdateIncomingCbaL( TInt aCallId )
     {
     __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateIncomingCbaL()" );
-
     const TBool coverHideSendEndKey =
         CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported(
             KTelephonyLVFlagCoverHideSendEndKey );
@@ -267,14 +210,19 @@
               ( ringingType == EProfileRingingTypeBeepOnce ));
 
     // Update soft reject flag
-    TBool softRejectActivated( ETrue );
+    iSoftRejectStatus = ETrue;
     // VoIP calls do not support sms sending
     if ( iStateMachine.PhoneEngineInfo()->CallType( aCallId ) == EPECallTypeVoIP 
         || iStateMachine.PhoneEngineInfo()->RemotePhoneNumber( aCallId ).Length() == 0 )
         {
-        softRejectActivated = EFalse;
+        iSoftRejectStatus = EFalse;
         }
-
+    
+    TPhoneCmdParamBoolean dimSoftRejectParam;
+    dimSoftRejectParam.SetBoolean( !iSoftRejectStatus );        
+    iViewCommandHandle.ExecuteCommand(
+            EPhoneViewSetSoftRejectDimmed, &dimSoftRejectParam );
+    
     TInt incomingCbaResourceId;
 
     if ( iState->IsSwivelClosed() )
@@ -288,7 +236,6 @@
             incomingCbaResourceId = EPhoneCallHandlingIncomingSwivelClosedCBA;
             }
         }
-
     else if ( coverHideSendEndKey )
         {
         if ( callIsAlerting )
@@ -296,7 +243,7 @@
             // Set CBA to Options..Silence
             incomingCbaResourceId = EPhoneCallHandlingIncomingSliderCBA;
             }
-        else if ( softRejectActivated )
+        else if ( iSoftRejectStatus )
             {
             // Set CBA for soft reject
             incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectSliderCBA;
@@ -307,14 +254,13 @@
             incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSliderCBA;
             }
         }
-
     else
         {
         if ( callIsAlerting )
             {
-            incomingCbaResourceId = GetIncomingCallSilenceCBA( softRejectActivated );
+            incomingCbaResourceId = GetIncomingCallSilenceCBA( iSoftRejectStatus );
             }
-        else if ( softRejectActivated )
+        else if ( iSoftRejectStatus )
             {
             // Set CBA for soft reject
             incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectCBA;
@@ -324,7 +270,6 @@
             incomingCbaResourceId = EPhoneCallHandlingIncomingRejectCBA;
             }
         }
-
     SetCbaL( incomingCbaResourceId );
     }
 
@@ -335,10 +280,14 @@
 EXPORT_C void CPhoneCbaManager::SetCbaL( TInt aResource )
     {
     __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::SetCbaL()" );
-
     __PHONELOG1( EBasic, EPhoneControl,
             "CPhoneCbaManager::SetCbaL : %d",aResource );
-
+    if ( EPhoneCallHandlingIncomingRejectCBA == aResource ||
+         EPhoneCallHandlingIncomingSoftRejectCBA == aResource )
+        {
+        SetSoftRejectDimmedFlag();
+        }
+    
     TPhoneCmdParamInteger integerParam;
     integerParam.SetInteger(
         CPhoneMainResourceResolver::Instance()->ResolveResourceID(
@@ -354,7 +303,6 @@
 void CPhoneCbaManager::UpdateCbaSwivelStateChangedL()
     {
     __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateCbaSwivelStateChangedL()" );
-
     TPhoneCmdParamCallStateData callStateData;
     callStateData.SetCallState( EPEStateRinging );
     iViewCommandHandle.HandleCommandL(
@@ -391,7 +339,6 @@
     __LOGMETHODSTARTEND( EPhoneControl,
         "CPhoneCbaManager::IsVoiceCallAlertingOrActiveL()" );
     TBool retVal = EFalse;
-
     // Fetch alerting call's id from view
     TPhoneCmdParamCallStateData callStateData;
     callStateData.SetCallState( EPEStateConnecting );
@@ -402,7 +349,6 @@
         {
         TPECallType type = iStateMachine.PhoneEngineInfo()->CallType(
             callStateData.CallId() );
-
         if ( EPECallTypeCSVoice == type || EPECallTypeVoIP == type )
             {
             retVal = ETrue;
@@ -415,7 +361,6 @@
         callStateData.SetCallState( EPEStateConnected );
         iViewCommandHandle.HandleCommandL(
             EPhoneViewGetCallIdByState, &callStateData );
-
         if ( callStateData.CallId() > KErrNotFound )
             {
             TPECallType type = iStateMachine.PhoneEngineInfo()->CallType(
@@ -447,6 +392,31 @@
     }
 
 // -----------------------------------------------------------
+// CPhoneCbaManager::SetSoftRejectStatus
+// -----------------------------------------------------------
+//
+void CPhoneCbaManager::SetSoftRejectStatus( TBool aSoftRejectStatus )
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::SetSoftRejectStatus ()" );
+    // Set the internal TBool variable
+    iSoftRejectStatus = aSoftRejectStatus;
+    __PHONELOG1( 
+            EBasic, 
+            EPhoneControl, 
+            "CPhoneCbaManager::SetSoftRejectStatus - iSoftRejectStatus =%d", 
+            iSoftRejectStatus  );
+    }
+
+// -----------------------------------------------------------
+// CPhoneCbaManager::SoftRejectStatus
+// -----------------------------------------------------------
+//
+TBool CPhoneCbaManager::SoftRejectStatus()
+    {
+    return iSoftRejectStatus;
+    }
+
+// -----------------------------------------------------------
 // CPhoneCbaManager::GetIncomingCallSilenceCBA
 // -----------------------------------------------------------
 //
@@ -454,10 +424,35 @@
         const TBool /*aSoftRejectActivated*/ )
     {
     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::GetIncomingCallSilenceCBA ()" );
-    TInt ret = EPhoneCallHandlingIncomingCBA;
-    return ret;
+    return EPhoneCallHandlingIncomingCBA;
     }
 
-// ======== LOCAL FUNCTIONS ========
+// -----------------------------------------------------------
+// CPhoneCbaManager::SetSoftRejectDimmedFlag
+// -----------------------------------------------------------
+//
+void CPhoneCbaManager::SetSoftRejectDimmedFlag()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::GetIncomingCallSilenceCBA ()" );
+    TPhoneCmdParamCallStateData callStateData;
+    callStateData.SetCallState( EPEStateRinging );
+    iViewCommandHandle.HandleCommandL(
+        EPhoneViewGetCallIdByState, &callStateData );
+    TPhoneCmdParamBoolean dimSoftRejectParam;
+    if ( callStateData.CallId() > KErrNotFound )
+        {
+        TBool privateNumber = iStateMachine.PhoneEngineInfo()->
+                RemotePhoneNumber( callStateData.CallId() ).Length() == 0;
+        
+        dimSoftRejectParam.SetBoolean( privateNumber || !iSoftRejectStatus );        
+        }
+    else
+        {
+        iSoftRejectStatus = ETrue;
+        dimSoftRejectParam.SetBoolean( EFalse );
+        }
+    iViewCommandHandle.ExecuteCommand(
+            EPhoneViewSetSoftRejectDimmed, &dimSoftRejectParam );
+    }