tizen2.1 code merge
[apps/osp/Call.git] / src / CallBaseForm.cpp
index 66426bd..966b1bb 100644 (file)
@@ -125,18 +125,21 @@ BaseForm::HandleCallConnected(IListT<AppCallInfo>& pCallList)
                        if(pActiveCallInfo->IsConferenceCall() == true)
                        {
                                //single Conference call - goto active Conf. call form
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL,
+                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                        }
                        else
                        {
                                //single active call - goto active call form
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL), pCallInfoList);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL,
+                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                        }
                }
                else if(noOfCalls == 2)
                {
                        //goto multiple active call form
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                }
        }
        break;
@@ -173,7 +176,8 @@ BaseForm::HandleCallConnected(IListT<AppCallInfo>& pCallList)
                        *pCaller = callInfo;
                        pCallInfoList->Add(pCaller);
                        //single active call - goto active call form
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVE_EMERGENCYCALL), pCallInfoList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVE_EMERGENCYCALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                }
        }
        break;
@@ -186,11 +190,13 @@ BaseForm::HandleCallConnected(IListT<AppCallInfo>& pCallList)
 void
 BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCurrentActiveCallList)
 {
+       AppLogDebug("Enter");
        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.
+               AppLogDebug("IsIncomingorDialingCallPresent %d",__formType);
                switch (__formType)
                {
                case FORMTYPE_INCOMINGCALL:
@@ -249,9 +255,11 @@ BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCurrentA
                        {
                                //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)
+                       //      if (callInfo.IsConferenceCall() == false)
+                               if (1)
                                {
-                                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL), pCallInfoList);
+                                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL,
+                                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                                }
                                else
                                {
@@ -265,12 +273,14 @@ BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCurrentA
                                {
                                        if (callInfo.IsConferenceCall() == true)
                                        {
-                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL,
+                                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                                        }
                                        else
                                        {
                                                //goto Single Active Call form
-                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL), pCallInfoList);
+                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL,
+                                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                                        }
                                }
                        }
@@ -278,12 +288,37 @@ BaseForm::HandleCallDisconnected(bool isLastCall, IListT<AppCallInfo>& pCurrentA
                else
                {
                        //multiple active calls are present.
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                }
        }
        else
        {
-               pPhoneApp->Terminate();
+               //This is done to show end call form in missed call case also
+               //this was done on request received from HQ to solve a bug in
+               //camera application. In which if a call comes when camera is
+               //running and user disconnects before the ui is shown the camera
+               //application hangs
+               ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pCallInfoList->Construct(1);
+               AppCallInfo callInfo;
+               result r = pCurrentActiveCallList.GetAt(0, callInfo);
+               if (r == E_SUCCESS)
+               {
+                       //copy call information to new instance
+                       AppCallInfo* pCaller = new (std::nothrow) AppCallInfo();
+                       *pCaller = callInfo;
+                       pCallInfoList->Add(pCaller);
+                       //multiple active calls are present.
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
+
+               }
+               else
+               {
+                       pPhoneApp->Terminate();
+               }
+
        }
 }
 
@@ -303,7 +338,8 @@ BaseForm::HandleConferenceCall(AppCallInfo& pCallInfo)
        pCallInfoList->Add(pConfInfo);
 
        //Todo: create screens for single conf call and conf call with another held call
-       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL,
+                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
 }
 
 void
@@ -320,7 +356,8 @@ BaseForm::HandleIncomingCall(AppCallInfo& pCallInfo)
        *pIncomingCall = pCallInfo;
        pCallInfoList->Add(pIncomingCall);
 
-       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL), pCallInfoList);
+       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL,
+                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
 }
 
 void
@@ -336,6 +373,8 @@ BaseForm::HandleCallSwapOccured(IListT<AppCallInfo>& pCallList)
        {
                //update calls state
                pActiveCallForm->UpdateMultipleCallScreen(pCallList);
+               pActiveCallForm->SetSwapInProgress(false);
+
        }
 }