Fixed jira issues(N_SE-34018)
authorDongseok JANG <dongseok.jang@samsung.com>
Fri, 12 Apr 2013 16:45:13 +0000 (01:45 +0900)
committerDongseok JANG <dongseok.jang@samsung.com>
Fri, 12 Apr 2013 16:45:13 +0000 (01:45 +0900)
Change-Id: If8b2303dc43eff486dd60da2cbbb3645493593b0
Signed-off-by: Dongseok JANG <dongseok.jang@samsung.com>
inc/CtContactEditorForm.h
src/CtContactEditorForm.cpp

index 7ff3b50..b7ca7d7 100644 (file)
@@ -177,6 +177,7 @@ private:
        bool __isMoreInformationContextMenuShowing;
        bool __isKeypadOpened;
        int __scrolledDistance;
+       Tizen::App::AppControl* __pAppControl;
        Tizen::Base::Collection::ArrayList* __pPhoneNumberFieldItem;
        Tizen::Base::Collection::ArrayList* __pEmailFieldItem;
        Tizen::Base::Collection::ArrayList* __pAddressFieldItem;
index a7be512..86460f2 100644 (file)
@@ -163,6 +163,7 @@ ContactEditorForm::ContactEditorForm(void)
 , __isMoreInformationContextMenuShowing(false)
 , __isKeypadOpened(false)
 , __scrolledDistance(0)
+, __pAppControl(null)
 , __pPhoneNumberFieldItem(null)
 , __pEmailFieldItem(null)
 , __pAddressFieldItem(null)
@@ -282,6 +283,7 @@ ContactEditorForm::OnTerminating(void)
                delete __pImAddressFieldItem;
        }
 
+       delete __pAppControl;
        delete __pNameFieldItem;
        delete __pNoteFieldItem;
        delete __pDefaultPhoneNumberContextMenu;
@@ -3299,6 +3301,12 @@ ContactEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId&
        SetEnabled(true);
        Invalidate(true);
 
+       if (__pAppControl != null)
+       {
+               delete __pAppControl;
+               __pAppControl = null;
+       }
+
        TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
        TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
 
@@ -3373,20 +3381,24 @@ ContactEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen:
                extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
        }
 
-       AppControl* pAppControl = AppManager::FindAppControlN(appId, operationId);
+       __pAppControl = AppManager::FindAppControlN(appId, operationId);
 
-       if (pAppControl != null)
+       if (__pAppControl != null)
        {
-               r = pAppControl->Start(&uri, &mimeType, &extraData, this);
+               r = __pAppControl->Start(&uri, &mimeType, &extraData, this);
                TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control.", GetErrorMessage(r));
 
                SetEnabled(false);
                Invalidate(true);
        }
+       extraData.RemoveAll(true);
+
+       return r;
 
 CATCH:
        extraData.RemoveAll(true);
-       delete pAppControl;
+       delete __pAppControl;
+       __pAppControl = null;
 
        return r;
 }
@@ -3400,7 +3412,20 @@ ContactEditorForm::OnContactsChanged(void)
        {
                if (__pPresentationModel->IsContactRemoved())
                {
-                       pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+                       ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+                       if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
+                       {
+                               __pPresentationModel->RemoveContactChangeListener(*this);
+                       }
+                       else
+                       {
+                               if (__pAppControl != null)
+                               {
+                                       __pAppControl->Stop();
+                               }
+                               pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+                       }
                }
 
                return;
@@ -3408,10 +3433,9 @@ ContactEditorForm::OnContactsChanged(void)
 
        SetFocus();
 
-       if (__isAppControl == true)
+       if (__isAppControl)
        {
-               UiApp* pApp = UiApp::GetInstance();
-               pApp->Terminate();
+               UiApp::GetInstance()->Terminate();
        }
        else
        {