N_SE-25971 : Change the timing of disconnection handler when launching appsvc
authorDowon Park <dowon.park@samsung.com>
Mon, 25 Feb 2013 10:34:43 +0000 (19:34 +0900)
committerDowon Park <dowon.park@samsung.com>
Mon, 25 Feb 2013 10:34:43 +0000 (19:34 +0900)
Change-Id: I1fb9c00a06bab8214ce8f94f638bb063b23acbb3

viewer/include/msg-ui-viewer-play-view.h
viewer/src/msg-ui-viewer-callback.c
viewer/src/msg-ui-viewer-gadget.c
viewer/src/msg-ui-viewer-play-view-callback.c
viewer/src/msg-ui-viewer-play-view.c

index 27a421c..4104614 100755 (executable)
@@ -76,19 +76,10 @@ typedef enum {
 
 typedef enum {
        MSG_VIEWER_DEFAULT_MODE = 0,
-       MSG_VIEWER_LOAD_OTHER_UG_MODE,  /*launch other ug mode like calling contact ug*/
-       MSG_VIEWER_LOAD_OTHER_APP_MODE, /*launch other application mode like calling voice call*/
-} MSG_VIEWER_LAUNCH_CMD_TYPE_E;
-
-typedef enum {
-       MSG_VIEWER_CMD_NONE = 0,
-       MSG_VIEWER_CMD_LOAD_CONTACT,
-       MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER,
-       MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER,
-       MSG_VIEWER_CMD_LOAD_CALL,
-       MSG_VIEWER_CMD_LOAD_VIDEO_CALL,
-       MSG_VIEWER_CMD_LOAD_BROWSER
-} MSG_VIEWER_CMD_TYPE_E;
+       MSG_VIEWER_LOAD_CONTACT_UG,                     /* launching CONTACT UG */
+       MSG_VIEWER_LOAD_COMPOSER_UG,            /* launching COMPOSER UG */
+       MSG_VIEWER_HIDED_BY_OTHER_WINDOW,       /* launch other application like email/call/vcall/browser */
+} MSG_VIEWER_MODE_E;
 
 typedef enum {
        MSG_VIEWER_FILE_SAVE_SUCCESS = 0,
@@ -204,11 +195,10 @@ typedef struct _MSG_PLAY_DATA_S {
        msg_struct_t msg_t;
        msg_struct_t mms_t;
        int     msgID;
-       MSG_VIEWER_LAUNCH_CMD_TYPE_E launch_cmd;
        void *SmilHandle;
        MSG_VIEWER_PLAY_STATUS_E status;
        MSG_VIEWER_PLAY_STATUS_E previous_status;
-       MSG_VIEWER_CMD_TYPE_E cmd_type;
+       MSG_VIEWER_MODE_E mode;
        int font_size;
 
        Ecore_Idler *del_idler;
@@ -251,6 +241,8 @@ typedef struct _MSG_PLAY_DATA_S {
        /* for use volume key setting */
        Ecore_Event_Handler *volkey_release_handler;
        Ecore_Event_Handler *volkey_press_handler;
+       Ecore_Event_Handler *focus_in;
+       Ecore_Event_Handler *focus_out;
 
        Ecore_Timer *vol_up_key_longpress;
        Ecore_Timer *vol_down_key_longpress;
@@ -318,7 +310,8 @@ void msg_ui_viewer_destroy_volume_bar(void *data);
  */
 MSG_SMIL_ERROR_E msg_ui_viewer_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *appUserData);
 MSG_SMIL_ERROR_E msg_ui_viewer_set_entry_handle_cb(MSG_PLAY_DATA_S *data, void *entry);
-
+Eina_Bool msg_ui_viewer_focused_in_cb(void *data, int type, void *event);
+Eina_Bool msg_ui_viewer_focused_out_cb(void *data, int type, void *event);
 Eina_Bool msg_ui_viewer_mouse_down_cb(void *data, int type, void *event);
 Eina_Bool msg_ui_viewer_mouse_up_cb(void *data, int type, void *event);
 void msg_ui_viewer_play_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
index 34421e7..d0f1644 100755 (executable)
@@ -104,10 +104,9 @@ void msg_ui_viewer_destroy_cb(ui_gadget_h ug, void *priv)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
        if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
                if (viewer_main_data->player_view) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
-                       if (viewer_main_data->player_view->launch_cmd == MSG_VIEWER_LOAD_OTHER_UG_MODE &&
-                                       (viewer_main_data->player_view->cmd_type == MSG_VIEWER_CMD_LOAD_CONTACT)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER view mode : %d", viewer_main_data->player_view->mode);
 
+                       if (viewer_main_data->player_view->mode == MSG_VIEWER_LOAD_CONTACT_UG) {
                                /*update title button text after contact sync */
                                msg_ui_viewer_title_update(viewer_main_data->player_view, MSG_VIEWER_OPTION_CONTACT);
                        }
@@ -119,8 +118,7 @@ void msg_ui_viewer_destroy_cb(ui_gadget_h ug, void *priv)
                        /*connect handler again*/
                        msg_ui_viewer_connect_handler(viewer_main_data->player_view);
 
-                       viewer_main_data->player_view->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
-                       viewer_main_data->player_view->cmd_type = MSG_VIEWER_CMD_NONE;
+                       viewer_main_data->player_view->mode = MSG_VIEWER_DEFAULT_MODE;
                }
        }
 
index 1f51b33..17a9b86 100755 (executable)
@@ -254,7 +254,7 @@ static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void
 
        if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
                if (viewer_main_data->player_view) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view mode : %d", viewer_main_data->player_view->mode);
                        /* viewer will be paused */
                        MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
                        msg_ui_viewer_disconnect_handler(viewer_main_data->player_view);
@@ -288,22 +288,11 @@ static void __msg_ui_viewer_on_resume(ui_gadget_h ug, service_h svc_handle, void
 
        if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
                if (viewer_main_data->player_view) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view mode : %d", viewer_main_data->player_view->mode);
 
                        bool isHelpText = (!viewer_main_data->player_view->smil_eventStatus) ? false : ((viewer_main_data->player_view->smil_eventStatus->isHelpSlide) ? true : false);
                        MSG_VIEWER_ENTRY_TYPE_E entry_type = (isHelpText) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
                        msg_ui_viewer_set_font_size(viewer_main_data->player_view, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
-
-                       if (!viewer_main_data->player_view->popup) {
-                               /*connect handler again*/
-                               msg_ui_viewer_connect_handler(viewer_main_data->player_view);
-                       }
-
-                       if (viewer_main_data->player_view->launch_cmd == MSG_VIEWER_LOAD_OTHER_APP_MODE) {
-                               /*reset launch_cmd and cmd_type*/
-                               viewer_main_data->player_view->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
-                               viewer_main_data->player_view->cmd_type = MSG_VIEWER_CMD_NONE;
-                       }
                }
        } else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
                if (viewer_main_data->drm_list_view) {
index c519d3c..db3a3c0 100755 (executable)
@@ -333,6 +333,44 @@ void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const ch
        }
 }
 
+Eina_Bool msg_ui_viewer_focused_in_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, EINA_FALSE, "viewer_play_data is NULL!");
+
+       Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)event;
+
+       if (viewer_play_data->main_window != NULL && ev->win == elm_win_xwindow_get(viewer_play_data->main_window)) {
+               if (!viewer_play_data->popup)
+                       msg_ui_viewer_connect_handler(viewer_play_data);
+
+               if (viewer_play_data->mode == MSG_VIEWER_HIDED_BY_OTHER_WINDOW) {
+                       /*reset viewer mode*/
+                       viewer_play_data->mode = MSG_VIEWER_DEFAULT_MODE;
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+Eina_Bool msg_ui_viewer_focused_out_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, EINA_FALSE, "viewer_play_data is NULL!");
+
+       Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)event;
+
+       if ((viewer_play_data->main_window != NULL) && (ev->win == elm_win_xwindow_get(viewer_play_data->main_window))) {
+               msg_ui_viewer_disconnect_handler(viewer_play_data);
+               viewer_play_data->mode = MSG_VIEWER_HIDED_BY_OTHER_WINDOW;
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
 MSG_SMIL_ERROR_E msg_ui_viewer_set_entry_handle_cb(MSG_PLAY_DATA_S *data, void *entry)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -362,10 +400,10 @@ void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info
        MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
        MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->launch_cmd : %d", viewer_play_data->launch_cmd);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->mode : %d", viewer_play_data->mode);
 
        /*prevent invalid double pressing button event after launching ug or app(like call, vtcall)*/
-       if (viewer_play_data->launch_cmd != MSG_VIEWER_DEFAULT_MODE)
+       if (viewer_play_data->mode != MSG_VIEWER_DEFAULT_MODE)
                return;
 
        if (viewer_play_data->title_menu_opened)
@@ -598,8 +636,7 @@ void msg_ui_viewer_forward_button_cb(void *data, Evas_Object *obj, void *event_i
                if (loaded_ug) {
                        msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                        msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+                       viewer_play_data->mode = MSG_VIEWER_LOAD_COMPOSER_UG;
                }
 
                service_destroy(svc_handle);
@@ -697,8 +734,7 @@ void msg_ui_viewer_reply_button_cb(void *data, Evas_Object *obj, void *event_inf
                if (loaded_ug) {
                        msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                        msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+                       viewer_play_data->mode = MSG_VIEWER_LOAD_COMPOSER_UG;
                }
 
                service_destroy(svc_handle);
@@ -938,7 +974,7 @@ void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_in
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
 
-       service_error_e svc_err = SERVICE_ERROR_NONE;
+       service_error_e err = SERVICE_ERROR_NONE;
 
        msg_struct_list_s *addr_list = NULL;
        msg_get_list_handle(viewer_play_data->msg_t, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
@@ -960,8 +996,8 @@ void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_in
 
                memcpy(address, szAddress, strlen(szAddress));
 
-               svc_err = service_create(&svc_handle);
-               if (svc_err != SERVICE_ERROR_NONE || svc_handle == NULL) {
+               err = service_create(&svc_handle);
+               if (err != SERVICE_ERROR_NONE || svc_handle == NULL) {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create is failed");
                        free(address);
                        return;
@@ -975,14 +1011,8 @@ void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_in
                Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
                service_set_window(svc_handle, win_id);
 
-               svc_err = service_send_launch_request(svc_handle, NULL, NULL);
-
-               if (svc_err == SERVICE_ERROR_NONE) {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER;
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", svc_err);
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
                }
 
                free(address);
@@ -1006,7 +1036,7 @@ void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_inf
 
        if (addr_count == 1) {
                char telnum[255] = {0,};
-               int ret = 0;
+               int err = 0;
                service_h svc_handle = NULL;
 
                service_create(&svc_handle);
@@ -1029,13 +1059,10 @@ void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_inf
                        return;
                }
 
-               if ((ret = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request failed ret : %d", ret);
-               } else {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CALL;
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request failed, err = %d", err);
                }
+
                service_destroy(svc_handle);
        }
 
@@ -1080,14 +1107,8 @@ void msg_ui_viewer_toolbar_vcall_cb(void *data, Evas_Object *obj, void *event_in
                service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
                service_set_uri(svc_handle, telnum);
                service_add_extra_data(svc_handle, "ctindex", contact_id);
-               err = service_send_launch_request(svc_handle, NULL, NULL);
-
-               if (err == SERVICE_ERROR_NONE) {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_VIDEO_CALL;
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", err);
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
                }
 
                service_destroy(svc_handle);
@@ -1144,8 +1165,7 @@ void msg_ui_viewer_toolbar_add_to_contact_cb(void *data, Evas_Object *obj, void
                if (loaded_ug) {
                        msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                        msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+                       viewer_play_data->mode = MSG_VIEWER_LOAD_CONTACT_UG;
                }
 
                service_destroy(svc_handle);
@@ -1191,8 +1211,7 @@ void msg_ui_viewer_toolbar_view_contact_cb(void *data, Evas_Object *obj, void *e
                        if (loaded_ug) {
                                msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                                msg_ui_viewer_disconnect_handler(viewer_play_data);
-                               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+                               viewer_play_data->mode = MSG_VIEWER_LOAD_CONTACT_UG;
                        }
 
                        service_destroy(svc_handle);
@@ -1719,7 +1738,7 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
 
        if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
                char telnum[255] = {0,};
-               int ret = 0;
+               int err = 0;
                service_h svc_handle = NULL;
 
                service_create(&svc_handle);
@@ -1728,12 +1747,8 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
                service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
                snprintf(telnum, sizeof(telnum), "tel:%s", addrInfo->address);   /* Number to make a call */
                service_set_uri(svc_handle, telnum);
-               if ((ret = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "appsvc_run_service failed ret : %d", ret);
-               } else {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CALL;
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "appsvc_run_service failed, err = %d", err);
                }
 
                service_destroy(svc_handle);
@@ -1752,14 +1767,8 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
                service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
                service_set_uri(svc_handle, telnum);
                service_add_extra_data(svc_handle, "ctindex", contact_id);
-               err = service_send_launch_request(svc_handle, NULL, NULL);
-
-               if (err == SERVICE_ERROR_NONE) {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_VIDEO_CALL;
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", err);
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
                }
 
                service_destroy(svc_handle);
@@ -1786,8 +1795,7 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
                if (loaded_ug) {
                        msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                        msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+                       viewer_play_data->mode = MSG_VIEWER_LOAD_CONTACT_UG;
                }
 
                service_destroy(svc_handle);
@@ -1811,14 +1819,13 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
                if (loaded_ug) {
                        msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
                        msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+                       viewer_play_data->mode = MSG_VIEWER_LOAD_CONTACT_UG;
                }
 
                service_destroy(svc_handle);
        } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL")) == 0) {
                service_h svc_handle = NULL;
-               service_error_e svc_err = SERVICE_ERROR_NONE;
+               service_error_e err = SERVICE_ERROR_NONE;
 
                service_create(&svc_handle);
                MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
@@ -1831,14 +1838,8 @@ static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object
                Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
                service_set_window(svc_handle, win_id);
 
-               svc_err = service_send_launch_request(svc_handle, NULL, NULL);
-
-               if (svc_err == SERVICE_ERROR_NONE) {
-                       msg_ui_viewer_disconnect_handler(viewer_play_data);
-                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
-                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER;
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", svc_err);
+               if ((err = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
                }
 
                service_destroy(svc_handle);
index 1d197a0..6eded60 100755 (executable)
@@ -280,8 +280,8 @@ MSG_BOOL msg_ui_viewer_command_play_pause(void *data, MSG_VIEWER_ACTION_TYPE_E a
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
 
        /*prevent invalid double pressing button event after launching ug or app( call, vtcall)*/
-       if (viewer_play_data->launch_cmd != MSG_VIEWER_DEFAULT_MODE) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "launch_cmd is not MSG_VIEWER_DEFAULT_MODE (%d)", viewer_play_data->launch_cmd);
+       if (viewer_play_data->mode != MSG_VIEWER_DEFAULT_MODE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER view is not MSG_VIEWER_DEFAULT_MODE (%d)", viewer_play_data->mode);
                return FALSE;
        }
 
@@ -411,14 +411,13 @@ void msg_ui_viewer_play_view_init(void *data)
        viewer_play_data->mouse_up_event_handler = NULL;
        viewer_play_data->msgHandle = NULL;
        viewer_play_data->msgID = -1;
-       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+       viewer_play_data->mode = MSG_VIEWER_DEFAULT_MODE;
        viewer_play_data->status = MSG_VIEWER_UNKOWN;
        viewer_play_data->msg_t = NULL;
        viewer_play_data->mms_t = NULL;
        viewer_play_data->smil_eventStatus = NULL;
        viewer_play_data->popup = NULL;
        viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
-       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
        viewer_play_data->del_idler = NULL;
        viewer_play_data->play_controller_timer = NULL;
        viewer_play_data->ctrl_start_x = 0;
@@ -564,6 +563,16 @@ void msg_ui_viewer_destroy_play_view(void *data)
                viewer_play_data->vol_down_key_longpress = NULL;
        }
 
+       if (viewer_play_data->focus_in) {
+               ecore_event_handler_del(viewer_play_data->focus_in);
+               viewer_play_data->focus_in = NULL;
+       }
+
+       if (viewer_play_data->focus_out) {
+               ecore_event_handler_del(viewer_play_data->focus_out);
+               viewer_play_data->focus_out = NULL;
+       }
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
@@ -708,6 +717,10 @@ MSG_BOOL msg_ui_viewer_create_player_view(MSG_PLAY_DATA_S *data)
        /* connect handlers */
        msg_ui_viewer_connect_handler(viewer_play_data);
 
+       /* for checking focus */
+       viewer_play_data->focus_in = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, msg_ui_viewer_focused_in_cb, viewer_play_data);
+       viewer_play_data->focus_out = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, msg_ui_viewer_focused_out_cb, viewer_play_data);
+
        /* create smil rendering layout */
        if (msg_smil_create_smil_player_layout(viewer_play_data->SmilHandle, viewer_play_data->play_layout) == FALSE)
                return FALSE;
@@ -2015,7 +2028,7 @@ static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void
        service_set_uri(svc_handle, pAttach_info->pfile_path);
 
        err = service_send_launch_request(svc_handle, NULL, NULL);
-       if ( err == SERVICE_ERROR_NONE) {
+       if (err == SERVICE_ERROR_NONE) {
                if (pAttach_info->viewer_play_data) {
                        /* set player state to pause and update icon */
                        if (!msg_ui_viewer_command_play_pause(pAttach_info->viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
@@ -2024,7 +2037,7 @@ static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void
                        }
                }
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed");
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
        }
 
        service_destroy(svc_handle);