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);
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)
{
//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
//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()".