fix for 36237
[apps/osp/Call.git] / src / CallTelephonyManager.cpp
index e9dce02..f3d821b 100644 (file)
@@ -390,19 +390,21 @@ TelephonyManager::EndCall(AppCallInfo& endCallInfo)
 result
 TelephonyManager::AnswerAutoRejectCall(int callHandle)
 {
+       //Incoming call automatically blocked is handled here.
        AppLogDebug("Enter ");
        result r = E_FAILURE;
-       TelCallAnswerType_t answerType = TAPI_CALL_ANSWER_ACCEPT;
+       TelCallAnswerType_t answerType = TAPI_CALL_ANSWER_REJECT;
        int res = -1;
 
        AppLogDebug("tel_answer_call");
-       answerType = TAPI_CALL_ANSWER_REJECT;
+       //save to logs db.
        AppCallInfo rejectedCallInfo;
        rejectedCallInfo = *(__pIncomingCall);
        rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_BLOCKED);
        SaveCallInfoToLogsDb(rejectedCallInfo);
        delete __pIncomingCall;
        __pIncomingCall = null;
+
        // redirect to reject call back handler as the flow has to be handled
        res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleCallbackResponse, this);
 
@@ -1287,8 +1289,7 @@ void
 TelephonyManager::HandleRejectCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
 {
        AppLogDebug("ENTER");
-       // This callback comes only if user has either rejected an incoming call from IncomingCallForm.
-       // or the incoming call was automatically blocked.
+       // This callback comes only if user has rejected an incoming call from IncomingCallForm.
        TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
        if (pData != null && callBackResult == TAPI_API_SUCCESS)
        {
@@ -1298,65 +1299,48 @@ TelephonyManager::HandleRejectCallbackResponse(TapiHandle* pHandle, int callBack
                //Check if incoming call is rejected
                if (pTelManager->__pIncomingCall != null && (rejectedCallHandle == (unsigned int) pTelManager->__pIncomingCall->GetCallHandle()->ToLong()))
                {
+                       AppLogDebug("Call rejected by user");
                        AppCallInfo rejectedCallInfo;
                        rejectedCallInfo = *(pTelManager->__pIncomingCall);
                        delete pTelManager->__pIncomingCall;
                        pTelManager->__pIncomingCall = null;
 
-                       //Check if number was automatically rejected using settings, then don't give any notification to user.
-                       bool showIncomingCallRejectedNotification = true;
-                       if (((pTelManager->__pSettingsManager->GetUnknownRejectStatus() == true) && (rejectedCallInfo.GetContactInfo() == null))
-                                               || (pTelManager->__pSettingsManager->IsCallToBeRejected(rejectedCallInfo.GetContactNumber()) == true))
-                       {
-                               //blocked
-                               AppLogDebug("Call blocked");
-                               showIncomingCallRejectedNotification = false;
-                               rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_BLOCKED);
-                       }
-                       else
-                       {
-                               AppLogDebug("Call rejected");
-                               //rejected by user from incoming call form
-                               showIncomingCallRejectedNotification = true;
-                               rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_REJECTED);
-                       }
+                       //rejected by user from incoming call form
+                       rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_REJECTED);
                        //Save rejected incoming call to call log db.
                        pTelManager->SaveCallInfoToLogsDb(rejectedCallInfo);
 
-                       if (showIncomingCallRejectedNotification == true)
+                       //check if the ended call was the last call
+                       bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
+                       //Stop alert - started only for incoming calls which are not blocked.
+                       if(pTelManager->__pSoundManager != null)
                        {
-                               //check if the ended call was the last call
-                               bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
-                               //Stop alert - started only for incoming calls which are not blocked.
-                               if(pTelManager->__pSoundManager != null)
-                               {
-                                       pTelManager->__pSoundManager->StopAlert();
-                                       //Do not call stop session if there is already a call going on
-                                       if(isLastCall == true)
-                                       {
-                                               pTelManager->__pSoundManager->StopSession();
-                                       }
-                               }
-                               //Send notification to user
-                               ArrayListT<AppCallInfo>* pCallList = null;
-                               if (isLastCall)
+                               pTelManager->__pSoundManager->StopAlert();
+                               //Do not call stop session if there is already a call going on
+                               if(isLastCall == true)
                                {
-                                       //save 'RejectedCall' to list to show on EndCallForm
-                                       pCallList = new (std::nothrow) ArrayListT<AppCallInfo>();
-                                       pCallList->Construct(1);
-                                       AppCallInfo* pRejectedCall = new (std::nothrow) AppCallInfo();
-                                       *pRejectedCall = rejectedCallInfo;
-                                       pCallList->Add(*pRejectedCall);
+                                       pTelManager->__pSoundManager->StopSession();
                                }
-                               else
-                               {
-                                       //fetch active calls to show appropriate scene
-                                       pCallList = static_cast<ArrayListT<AppCallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
-                               }
-                               pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
-                               delete pCallList;
-                               pCallList = null;
                        }
+                       //Send notification to user
+                       ArrayListT<AppCallInfo>* pCallList = null;
+                       if (isLastCall)
+                       {
+                               //save 'RejectedCall' to list to show on EndCallForm
+                               pCallList = new (std::nothrow) ArrayListT<AppCallInfo>();
+                               pCallList->Construct(1);
+                               AppCallInfo* pRejectedCall = new (std::nothrow) AppCallInfo();
+                               *pRejectedCall = rejectedCallInfo;
+                               pCallList->Add(*pRejectedCall);
+                       }
+                       else
+                       {
+                               //fetch active calls to show appropriate scene
+                               pCallList = static_cast<ArrayListT<AppCallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+                       }
+                       pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+                       delete pCallList;
+                       pCallList = null;
                }
        }
        else
@@ -1811,7 +1795,7 @@ TelephonyManager::HandleIdleCallBack(void* pData)
        //This callback comes when any type of calls are ended
        //We do NOT handle below scenarios here -
        //1) In incoming call scenarios, if we end any active calls - handled in "AcceptCall()".
-       //2) Incoming call automatically blocked and rejection by user scenarios are handled in "HandleRejectCallbackResponse()".
+       //2) Incoming call automatically blocked is handled in "AnswerAutoRejectCall()" and rejection by user scenarios are handled in "HandleRejectCallbackResponse()".
        //3) End conference call is handled in "HandleEndConferenceCallbackResponse()".
        //4) End Single Call from Conference call by user is handled in "HandleEndFromConferenceCallbackResponse()".
        //5) End Single Call from Conference call using eventInjector is diverted to "HandleParticipantEndedFromConference()".