* @brief Base class for all Call forms
*/
#include "CallActiveCallForm.h"
+#include "CallIncomingCallForm.h"
#include "CallBaseForm.h"
#include "CallInfo.h"
#include "CallPresentationModel.h"
void
BaseForm::HandleCallConnected(IListT<AppCallInfo>& pCallList)
{
+ if(__pCallPresentor->IsIncomingorDialingCallPresent() == true)
+ {
+ //This scenario will come, if 1 call is disconnected from conf. call having 2 participants.
+ //In this case, if there is any dialing call exists, then ignore.
+ //Else, if there is any incoming call exists, then update call option popup.
+ switch (__formType)
+ {
+ case FORMTYPE_INCOMINGCALL:
+ {
+ IncomingCallForm* pIncomingCallForm = dynamic_cast<IncomingCallForm*>(this);
+ if (pIncomingCallForm != null)
+ {
+ pIncomingCallForm->CallDisconnected();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ return;
+ }
+
SceneManager* pSceneManager = SceneManager::GetInstance();
switch (__formType)
}
void
-BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCallList)
+BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCurrentActiveCallList)
{
+ if(__pCallPresentor->IsIncomingorDialingCallPresent() == true)
+ {
+ //This scenario will come, if this disconnected call is neither incoming nor dialing call.
+ //In this case, if there is any dialing call exists, then ignore.
+ //Else, if there is any incoming call exists, then update call option popup.
+ switch (__formType)
+ {
+ case FORMTYPE_INCOMINGCALL:
+ {
+ IncomingCallForm* pIncomingCallForm = dynamic_cast<IncomingCallForm*>(this);
+ if (pIncomingCallForm != null)
+ {
+ pIncomingCallForm->CallDisconnected();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ return;
+ }
+
SceneManager* pSceneManager = SceneManager::GetInstance();
CallApp* pPhoneApp = static_cast<CallApp*>(UiApp::GetInstance());
- int callCount = pCallList.GetCount();
+ int callCount = pCurrentActiveCallList.GetCount();
if (callCount > 0)
{
//Ownership - To be deleted in 'OnSceneActivatedN' of next form
{
//fetch call info and add to list
AppCallInfo callInfo;
- result r = pCallList.GetAt(index, callInfo);
+ result r = pCurrentActiveCallList.GetAt(index, callInfo);
if (r == E_SUCCESS)
{
//copy call information to new instance
pCallInfoList->Add(pCaller);
}
}
+
if (callCount == 1)
{
//fetch call info and add to list
AppCallInfo callInfo;
- result r = pCallList.GetAt(0, callInfo);
+ result r = pCurrentActiveCallList.GetAt(0, callInfo);
if (r == E_SUCCESS)
{
//copy call information to new instance
if (isLastCall == true)
{
- //goto End Call form if single call. else terminate
+ //list contains 1 last ended call to show EndCall screen.
+ //goto End Call form if single call was ended else terminate
if (callInfo.IsConferenceCall() == false)
{
pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL), pCallInfoList);
}
else
{
- if (pCallList.GetCount() == 1)
+ //list contains 1 active call
+ if (pCurrentActiveCallList.GetCount() == 1)
{
if (callInfo.IsConferenceCall() == true)
{
}
else
{
+ //multiple active calls are present.
pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
}
}
void
BaseForm::HandleConferenceChange(void)
{
+ if(__pCallPresentor->IsIncomingorDialingCallPresent() == true)
+ {
+ //This scenario will come, if 1 call is disconnected from conf. call having more than 2 participants.
+ //In this case, if there is any dialing call exists, then ignore.
+ //Else, if there is any incoming call exists, then update call option popup.
+ switch (__formType)
+ {
+ case FORMTYPE_INCOMINGCALL:
+ {
+ IncomingCallForm* pIncomingCallForm = dynamic_cast<IncomingCallForm*>(this);
+ if (pIncomingCallForm != null)
+ {
+ pIncomingCallForm->CallDisconnected();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ return;
+ }
+
switch (__formType)
{
case FORMTYPE_CONFCALLLIST:
if (__pErrorMsgPopup == null)
{
__pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
}
- __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
}
void