2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #define UG_MODULE_API __attribute__ ((visibility("default")))
21 /*==================================================================================================
23 *==================================================================================================*/
25 #include "msg-smil-player-interface.h"
26 #include "msg-ui-common-utility.h"
27 #include "msg-ui-viewer-main.h"
28 #include "msg-ui-image-resource.h"
32 #include "msg-ui-common-utility.h"
34 /*==================================================================================================
35 * FUNCTION DECLARATIONS
36 *==================================================================================================*/
37 static void *__msg_ui_viewer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h svc_handle, void *priv);
38 static void __msg_ui_viewer_on_start(ui_gadget_h ug, service_h svc_handle, void *priv);
39 static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void *priv);
40 static void __msg_ui_viewer_on_resume(ui_gadget_h ug, service_h svc_handle, void *priv);
41 static void __msg_ui_viewer_on_destroy(ui_gadget_h ug, service_h svc_handle, void *priv);
42 static void __msg_ui_viewer_on_message(ui_gadget_h ug, service_h svc_msg_h, service_h svc_data_h, void *priv);
43 static void __msg_ui_viewer_on_event(ui_gadget_h ug, enum ug_event event, service_h svc_handle, void *priv);
44 static void __msg_ui_viewer_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h svc_handle, void *priv);
46 static void __msg_ui_viewer_reload_viewer_ug(void *data, service_h svc_handle);
47 static void __msg_ui_viewer_destroy_viewer_ug(void *data);
48 static unsigned int __msg_ui_viewer_convert_atoh(const char *string);
49 static void __msg_ui_viewer_rotate_play_window(void *data, int rotate);
51 /*==================================================================================================
52 * FUNCTION IMPLEMENTATIONS
53 *================================================================================================*/
54 static unsigned int __msg_ui_viewer_convert_atoh(const char *string)
56 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
57 MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, string == NULL, 0);
58 unsigned int value = 0;
59 unsigned int digit = 0;
62 while ((c = *string++) != '\0') {
63 if (c >= '0' && c <= '9')
64 digit = (unsigned int) (c - '0');
65 else if (c >= 'a' && c <= 'f')
66 digit = (unsigned int) (c - 'a') + 10;
67 else if (c >= 'A' && c <= 'F')
68 digit = (unsigned int) (c - 'A') + 10;
72 value = (value << 4) + digit;
78 static void __msg_ui_viewer_rotate_play_window(void *data, int rotate)
80 MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
81 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
82 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
84 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
85 if (viewer_main_data->player_view) {
86 MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
88 if ((Error = msg_smil_on_slide_event_handler(&(viewer_main_data->SmilHandle), PLAYER_EVENT_ROTATE_WINDOW)) != MSG_SMIL_SUCCESS)
89 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "PLAYER_EVENT_ROTATE_WINDOW failed : %d", Error);
94 static void *__msg_ui_viewer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h svc_handle, void *priv)
96 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
97 MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, ug == NULL, NULL);
98 MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, svc_handle == NULL, NULL);
99 MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, priv == NULL, NULL);
100 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
101 msg_error_t err = MSG_SUCCESS;
102 msg_handle_t msgHandle = NULL;
103 Evas_Object *layout = NULL;
105 /*Set Message Handler*/
106 err = msg_open_msg_handle(&msgHandle);
108 if (err != MSG_SUCCESS) {
109 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_open_msg_handle failed, Error = %d", err);
114 msg_ui_viewer_main_init(viewer_main_data);
116 viewer_main_data->viewer_ug = ug;
117 viewer_main_data->cbs.layout_cb = msg_ui_viewer_layout_cb;
118 viewer_main_data->cbs.result_cb = msg_ui_viewer_result_cb;
119 viewer_main_data->cbs.destroy_cb = msg_ui_viewer_destroy_cb;
120 viewer_main_data->cbs.priv = (void *)viewer_main_data;
121 viewer_main_data->msgHandle = msgHandle;
122 viewer_main_data->main_window = ug_get_window();
123 MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_main_data->main_window == NULL, NULL);
126 char *mode_value = NULL;
128 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, &mode_value);
131 if (!g_strcmp0(mode_value, MSG_BUNDLE_VALUE_PREVIEW_MODE)) {
132 unsigned int msg_t_pointer = 0;
133 char *preview_data = NULL;
135 viewer_main_data->launchmode = MSG_VIEWER_PREVIEW_MODE;
138 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_PREVIEW_DATA, &preview_data);
142 msg_t_pointer = __msg_ui_viewer_convert_atoh((const char*)preview_data);
143 viewer_main_data->msg_t = (msg_struct_t)msg_t_pointer;
146 viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
147 err = msg_get_mms_struct(viewer_main_data->msg_t, viewer_main_data->mms_t);
149 if (err != MSG_SUCCESS) {
150 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in get mms data handler");
154 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "preview_data is NULL");
157 } else { /*normal view mode*/
159 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msgid);
161 viewer_main_data->msgID = (int)atoi(msgid);
162 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgID = %d", viewer_main_data->msgID);
164 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no msgID");
168 /*get msg info struct handle */
169 viewer_main_data->msg_t = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
170 msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
172 if (viewer_main_data->msgID != -1) {
173 err = msg_get_message(viewer_main_data->msgHandle, viewer_main_data->msgID, viewer_main_data->msg_t, sendOpt);
174 if (err != MSG_SUCCESS) {
175 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
176 msg_release_struct(&viewer_main_data->msg_t);
177 msg_release_struct(&sendOpt);
182 msg_release_struct(&sendOpt);
185 viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
186 err = msg_get_mms_struct(viewer_main_data->msg_t, viewer_main_data->mms_t);
188 if (err != MSG_SUCCESS) {
189 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in get mms data handler");
193 char *msg_box_mode = NULL;
194 /* get mode if viewer should be displayed from message box */
195 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MESSAGE_BOX, &msg_box_mode);
198 if (!g_strcmp0(msg_box_mode, MSG_BUNDLE_VALUE_MSGBOX_PROTECTED) || !g_strcmp0(msg_box_mode, MSG_BUNDLE_VALUE_MSGBOX_SPAM))
199 viewer_main_data->msg_box_viewer = true;
203 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "data is NULL");
207 if (mode == UG_MODE_FULLVIEW) {
208 viewer_main_data->ug_launch_mode = MSG_UG_MODE_FULLVIEW;
210 Evas_Object *bg = msg_ui_viewer_create_bg(viewer_main_data, viewer_main_data->main_window);
212 bool show_indicator = true;
213 char *indicator_mode = NULL;
215 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_INDICATOR_MODE, &indicator_mode);
216 if (indicator_mode) {
217 if (!g_strcmp0(indicator_mode, MSG_BUNDLE_VALUE_NO_INDICATOR))
218 show_indicator = false;
221 layout = msg_ui_viewer_create_layout_main(viewer_main_data->main_window, show_indicator);
222 viewer_main_data->layout_main = layout;
225 elm_object_part_content_set(layout, "elm.swallow.bg", bg);
229 viewer_main_data->ug_launch_mode = MSG_UG_MODE_FRAMVIEW;
230 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "framview is not supported");
234 viewer_main_data->xdisplay = ecore_x_display_get();
235 if (viewer_main_data->xdisplay == NULL) {
236 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_x_display_get() is failed");
240 /* key grap setting */
241 int use_volume_key = 0;
242 vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
244 msg_ui_viewer_grab_key_setting(viewer_main_data);
249 static void __msg_ui_viewer_on_start(ui_gadget_h ug, service_h svc_handle, void *priv)
251 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
252 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
253 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
254 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
256 if (msg_ui_viewer_launch(viewer_main_data) == FALSE)
257 ug_destroy_me(viewer_main_data->viewer_ug);
260 static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void *priv)
262 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
263 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
264 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
265 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
266 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
268 msg_ui_viewer_ungrab_key_setting(viewer_main_data);
270 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
271 if (viewer_main_data->player_view) {
272 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);
273 /* viewer will be paused */
274 MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
275 msg_ui_viewer_disconnect_handler(viewer_main_data->player_view);
277 if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY) {
278 Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_PAUSE);
279 if (Error != MSG_SMIL_SUCCESS) {
280 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
283 viewer_main_data->player_view->status = MSG_VIEWER_PAUSE;
285 if (viewer_main_data->player_view->play_controller) {
286 edje_object_signal_emit(_EDJ(viewer_main_data->player_view->play_controller), "play", "*");
288 if (viewer_main_data->player_view->play_controller_progressbar_timer)
289 ecore_timer_freeze(viewer_main_data->player_view->play_controller_progressbar_timer);
296 static void __msg_ui_viewer_on_resume(ui_gadget_h ug, service_h svc_handle, void *priv)
298 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
299 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
300 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
301 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
302 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
304 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
305 if (viewer_main_data->player_view) {
306 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);
308 bool isHelpText = (!viewer_main_data->player_view->smil_eventStatus) ? false : ((viewer_main_data->player_view->smil_eventStatus->isHelpSlide) ? true : false);
309 MSG_VIEWER_ENTRY_TYPE_E entry_type = (isHelpText) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
310 msg_ui_viewer_set_font_size(viewer_main_data->player_view, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
312 if (!viewer_main_data->player_view->popup) {
313 /*connect handler again*/
314 msg_ui_viewer_connect_handler(viewer_main_data->player_view);
317 if (viewer_main_data->player_view->launch_cmd == MSG_VIEWER_LOAD_OTHER_APP_MODE) {
318 /*reset launch_cmd and cmd_type*/
319 viewer_main_data->player_view->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
320 viewer_main_data->player_view->cmd_type = MSG_VIEWER_CMD_NONE;
323 } else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
324 if (viewer_main_data->drm_list_view) {
325 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "drm list view drm_list_cmd : %d", viewer_main_data->drm_list_view->drm_list_cmd);
326 if (viewer_main_data->drm_list_view->drm_list_cmd == MSG_VIEWER_DRM_LIST_CMD_LAUNCH_BROWSER) {
327 if (msg_ui_viewer_drm_list_check_current_ro_valid(viewer_main_data->drm_list_view))
328 msg_ui_viewer_drm_list_delete_current_list(viewer_main_data->drm_list_view);
330 viewer_main_data->drm_list_view->drm_list_cmd = MSG_VIEWER_DRM_LIST_CMD_NONE;
331 viewer_main_data->drm_list_view->selected_file_info = NULL;
337 static void __msg_ui_viewer_on_destroy(ui_gadget_h ug, service_h svc_handle, void *priv)
339 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
340 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
341 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
342 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
345 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->SmilHandle : %x", viewer_main_data->SmilHandle);
347 if (viewer_main_data->player_view) {
348 msg_ui_viewer_destroy_play_view(viewer_main_data->player_view);
349 free(viewer_main_data->player_view);
350 viewer_main_data->player_view = NULL;
353 if (viewer_main_data->drm_list_view) {
354 msg_ui_viewer_destroy_drm_list_view(viewer_main_data->drm_list_view);
355 free(viewer_main_data->drm_list_view);
356 viewer_main_data->drm_list_view = NULL;
359 if (viewer_main_data->bg) {
360 evas_object_del(viewer_main_data->bg);
361 viewer_main_data->bg = NULL;
364 if (viewer_main_data->layout_main) {
365 evas_object_del(viewer_main_data->layout_main);
366 viewer_main_data->layout_main = NULL;
369 if (viewer_main_data->volkey_release_handler) {
370 ecore_event_handler_del(viewer_main_data->volkey_release_handler);
371 viewer_main_data->volkey_release_handler = NULL;
374 if (viewer_main_data->vol_up_key_longpress) {
375 ecore_timer_del(viewer_main_data->vol_up_key_longpress);
376 viewer_main_data->vol_up_key_longpress = NULL;
379 if (viewer_main_data->volkey_press_handler) {
380 ecore_event_handler_del(viewer_main_data->volkey_press_handler);
381 viewer_main_data->volkey_press_handler = NULL;
384 if (viewer_main_data->vol_down_key_longpress) {
385 ecore_timer_del(viewer_main_data->vol_down_key_longpress);
386 viewer_main_data->vol_down_key_longpress = NULL;
389 /*destroy viewer_main data*/
390 /*free the drm list*/
391 if (viewer_main_data->drm_list) {
392 MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
393 int ntotal = eina_list_count(viewer_main_data->drm_list);
396 for (index = 0; index < ntotal; index++) {
397 pmedia_info = eina_list_nth(viewer_main_data->drm_list, index);
403 eina_list_free(viewer_main_data->drm_list);
404 viewer_main_data->drm_list = NULL;
407 if (viewer_main_data->SmilHandle) {
408 msg_smil_destroy_smil_player(viewer_main_data->SmilHandle);
409 msg_ui_viewer_set_smilhandle(viewer_main_data, NULL);
412 /* release msg info struct handle */
413 if (viewer_main_data->msg_t) {
414 msg_release_struct(&viewer_main_data->msg_t);
415 viewer_main_data->msg_t = NULL;
418 /* release mms struct handle */
419 if (viewer_main_data->mms_t) {
420 msg_release_struct(&viewer_main_data->mms_t);
421 viewer_main_data->mms_t = NULL;
424 if ((err = msg_close_msg_handle(&viewer_main_data->msgHandle)) != MSG_SUCCESS)
425 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_close_msg_handle, err=[%d]", err);
427 MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
430 static void __msg_ui_viewer_on_message(ui_gadget_h ug, service_h svc_msg_h, service_h svc_data_h, void *priv)
432 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
433 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
434 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
436 __msg_ui_viewer_reload_viewer_ug(viewer_main_data, svc_msg_h);
438 MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
441 static void __msg_ui_viewer_on_event(ui_gadget_h ug, enum ug_event event, service_h svc_handle, void *priv)
443 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
444 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
445 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "event : %d", event);
446 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
449 case UG_EVENT_LOW_MEMORY:
451 case UG_EVENT_LOW_BATTERY:
453 int battey_level = 0;
454 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW , &battey_level);
455 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "battey_level = %d", battey_level);
456 if (battey_level == VCONFKEY_SYSMAN_BAT_POWER_OFF) {
457 int charger_status = -1;
458 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &charger_status);
461 __msg_ui_viewer_destroy_viewer_ug(priv);
466 case UG_EVENT_LANG_CHANGE:
467 msg_ui_viewer_change_language(viewer_main_data);
469 case UG_EVENT_ROTATE_PORTRAIT:
470 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_PORTRAIT");
471 __msg_ui_viewer_rotate_play_window(viewer_main_data, 0);
473 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
474 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN");
475 __msg_ui_viewer_rotate_play_window(viewer_main_data, 180);
477 case UG_EVENT_ROTATE_LANDSCAPE:
478 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_LANDSCAPE");
479 __msg_ui_viewer_rotate_play_window(viewer_main_data, 270);
481 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
482 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN");
483 __msg_ui_viewer_rotate_play_window(viewer_main_data, 90);
485 case UG_EVENT_REGION_CHANGE:
492 static void __msg_ui_viewer_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h svc_handle, void *priv)
494 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
495 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
496 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
497 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
498 MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
501 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
504 case UG_KEY_EVENT_END:
505 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
506 if (viewer_main_data->player_view) {
507 if (viewer_main_data->player_view->popup) {
508 evas_object_del(viewer_main_data->player_view->popup);
509 viewer_main_data->player_view->popup = NULL;
510 viewer_main_data->player_view->popup_type = MSG_VIEWER_POPUP_NONE;
514 if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY ||
515 viewer_main_data->player_view->status == MSG_VIEWER_PAUSE) {
516 Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_STOP);
517 if (Error != MSG_SMIL_SUCCESS) {
518 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
521 viewer_main_data->player_view->status = MSG_VIEWER_STOP;
522 msg_ui_viewer_update_play_controller(viewer_main_data->player_view, MSG_VIEWER_STOP);
526 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Not required case");
529 if (ispopup == FALSE) {
530 if (!viewer_main_data->del_idler)
531 viewer_main_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_main_data);
540 static void __msg_ui_viewer_reload_viewer_ug(void *data, service_h svc_handle)
542 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
543 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
544 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
546 if (viewer_main_data->msg_t) {
547 msg_release_struct(&viewer_main_data->msg_t);
548 viewer_main_data->msg_t = NULL;
551 if (viewer_main_data->mms_t) {
552 msg_release_struct(&viewer_main_data->mms_t);
553 viewer_main_data->mms_t = NULL;
558 service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msgid);
560 viewer_main_data->msgID = (int)atoi(msgid);
561 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgID = %d", viewer_main_data->msgID);
563 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no msgid");
568 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
569 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Reset play view mode");
571 if (viewer_main_data->player_view) {
572 msg_ui_viewer_destroy_play_view(viewer_main_data->player_view);
573 free(viewer_main_data->player_view);
574 viewer_main_data->player_view = NULL;
577 if (viewer_main_data->SmilHandle) {
578 msg_smil_destroy_smil_player(viewer_main_data->SmilHandle);
579 msg_ui_viewer_set_smilhandle(viewer_main_data, NULL);
582 if (msg_ui_viewer_launch(viewer_main_data) == FALSE) {
583 msg_common_reset_font_size("entry");
584 ug_destroy_me(viewer_main_data->viewer_ug);
586 } else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
587 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "DRM list view mode, come here to implement");
588 if (viewer_main_data->drm_list_view) {
589 msg_ui_viewer_destroy_drm_list_view(viewer_main_data->drm_list_view);
590 free(viewer_main_data->drm_list_view);
591 viewer_main_data->drm_list_view = NULL;
595 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d mode is not required anything", viewer_main_data->view_mode);
600 static void __msg_ui_viewer_destroy_viewer_ug(void *data)
602 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
603 MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
604 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
605 MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
607 if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
608 if (viewer_main_data->player_view) {
609 if (viewer_main_data->player_view->popup) {
610 evas_object_del(viewer_main_data->player_view->popup);
611 viewer_main_data->player_view->popup = NULL;
612 viewer_main_data->player_view->popup_type = MSG_VIEWER_POPUP_NONE;
615 if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY ||
616 viewer_main_data->player_view->status == MSG_VIEWER_PAUSE) {
617 Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_STOP);
618 if (Error != MSG_SMIL_SUCCESS) {
619 MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
621 viewer_main_data->player_view->status = MSG_VIEWER_STOP;
626 MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d mode is not required anything", viewer_main_data->view_mode);
629 if (!viewer_main_data->del_idler)
630 viewer_main_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_main_data);
633 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
635 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
636 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = NULL;
639 return MSG_UI_RET_ERR;
641 viewer_main_data = calloc(1, sizeof(MSG_VIEWER_MAIN_DATA_S));
642 if (!viewer_main_data)
643 return MSG_UI_RET_ERR;
645 ops->create = __msg_ui_viewer_on_create;
646 ops->start = __msg_ui_viewer_on_start;
647 ops->pause = __msg_ui_viewer_on_pause;
648 ops->resume = __msg_ui_viewer_on_resume;
649 ops->destroy = __msg_ui_viewer_on_destroy;
650 ops->message = __msg_ui_viewer_on_message;
651 ops->event = __msg_ui_viewer_on_event;
652 ops->key_event = __msg_ui_viewer_on_key_event;
653 ops->priv = (void *)viewer_main_data;
654 ops->opt = UG_OPT_INDICATOR_ENABLE;
656 return MSG_UI_RET_SUCCESS;
659 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
661 MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
662 MSG_VIEWER_MAIN_DATA_S *viewer_main_data = NULL;
667 viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)ops->priv;
669 if (viewer_main_data)
670 free(viewer_main_data);