Eina_Strbuf *font_buf = NULL;
char *token = NULL;
char *tmp_buf = NULL;
- char *remained_string = NULL;
+ char *tmp_str = NULL;
+ int tmp_str_len = 0;
int src_text_len = 0;
+ size_t start = 0;
+ size_t end = 0;
src_text_len = strlen(src_text);
D_MSG("src_text_len : %d", src_text_len);
snprintf(tmp_buf, src_text_len + 1, "%s\n", (char *) src_text);
- token = strtok_r(tmp_buf, "\n", &remained_string);
+ while (tmp_buf[start] != '\0') {
+ end = strcspn(tmp_buf + start, "\n");
- int token_len = 0;
+ if (end == 0) {
+ eina_strbuf_append(markup_text, "<br>");
+ start += (tmp_buf[start + end] != '\0') ? end + 1 : end;
+ continue;
+ }
+
+ token = (char *)calloc(1, sizeof(char) * (end + 1));
+ if (token == NULL) {
+ D_EMSG("calloc is failed");
+ break;
+ }
+
+ strncpy(token, tmp_buf + start, end);
- while (token) {
char *tmp_str = elm_entry_utf8_to_markup(token);
if (!tmp_str) {
D_EMSG("elm_entry_utf8_to_markup() is failed, [%s]. Stop parsing entry text", token);
+ free(token);
break;
}
- token_len = strlen(tmp_str);
+ tmp_str_len = strlen(tmp_str);
- if (tmp_str[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */
+ if (tmp_str[tmp_str_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */
D_MSG("CR length is decreased");
- token_len = token_len - 1;
+ tmp_str_len = tmp_str_len - 1;
}
- if (!__msg_common_make_normal_markup_text(markup_text, font_buf, tmp_str, token_len))
+ if (!__msg_common_make_normal_markup_text(markup_text, font_buf, tmp_str, tmp_str_len))
D_MSG("__msg_common_make_normal_markup_text is failed");
if (tmp_str)
free(tmp_str);
- token = strtok_r(NULL, "\n", &remained_string);
if (token)
+ free(token);
+
+ start += (tmp_buf[start+end] != '\0') ? end + 1 : end;
+
+ if (start != end)
eina_strbuf_append(markup_text, "<br>");
}
msg_struct_list_s report_list = {0,};
MSG_DETAIL_REPORT_LIST_S *report_data_list = NULL;
msg_struct_t mms_send_opt = NULL;
- msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mms_send_opt);
- msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &delivery_flag);
- msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &read_flag);
+ msg_get_bool_value(sendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, &delivery_flag);
+ msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mms_send_opt);
+ msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPTION_READ_REQUEST_BOOL, &read_flag);
// getting delivery & read report information
if (delivery_flag || read_flag) {
PROJECT(ug-msg-viewer-efl C)
SET (MSG_VIEWER msg_viewer)
+SET (MSG_VIEWER_DEFINES msg_viewer_defines)
#################################
# Message Viewer #
./src/msg-ui-viewer-callback.c
./src/msg-ui-viewer-drm-list.c
./src/msg-ui-viewer-drm-utility.c
- ./src/msg-ui-viewer-play-view.c
- ./src/msg-ui-viewer-play-view-callback.c
+ ./src/msg-ui-viewer-play-view-main.c
+ ./src/msg-ui-viewer-play-view-attachment.c
+ ./src/msg-ui-viewer-play-view-help-page.c
+ ./src/msg-ui-viewer-play-view-options.c
+ ./src/msg-ui-viewer-play-view-play-controller.c
+ ./src/msg-ui-viewer-play-view-volume-bar.c
./src/msg-ui-viewer-utility.c
./smil-player/src/msg-smil-player.c
./smil-player/src/msg-smil-content-manager.c
ADD_DEFINITIONS("-DSLP_PROF")
ADD_CUSTOM_TARGET(${MSG_VIEWER}.edj
- COMMAND edje_cc -id
+ COMMAND edje_cc ${EDJE_CC_DEFINITIONS} -id
${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edc ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edj
DEPENDS ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edc
)
+ADD_CUSTOM_TARGET(${MSG_VIEWER_DEFINES}.edj
+ COMMAND edje_cc ${EDJE_CC_DEFINITIONS} -id
+ ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+ ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER_DEFINES}.edc ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER_DEFINES}.edj
+ DEPENDS ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER_DEFINES}.edc
+)
+
ADD_LIBRARY(${PROJECT_NAME} SHARED ${VIEWER_SRCS})
ADD_DEPENDENCIES(${PROJECT_NAME} ${MSG_VIEWER}.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} ${MSG_VIEWER_DEFINES}.edj)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -L${CMAKE_SOURCE_COMMON_DIR} -lmsg-common)
# Install executable and .edj files.
#INSTALL(DIRECTORY ${CMAKE_SOURCE_VIEWER_DIR}/data/images/ DESTINATION ${IMGDIR} FILES_MATCHING PATTERN "*.png")
INSTALL(FILES ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER_DEFINES}.edj DESTINATION ${EDJDIR})
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})
#i18n
*==================================================================================================*/
#define VIEWER_BUFFER_SIZE_64 64
#define VIEWER_TITLE_MENU_GENLIST_MAX_ITEM 3
-#define VIEWER_TITLE_MENU_LINE_HEIGHT 129
-#define VIEWER_ATTACH_GL_ITEM_HEIGHT 112
+#define VIEWER_TITLE_MENU_1TEXT_HEIGHT 112
+#define VIEWER_TITLE_MENU_2TEXT_HEIGHT 129
+#define VIEWER_ATTACH_GL_ITEM_HEIGHT 100
#define VIEWER_TITLE_FONT_LEN 100
#define VIEWER_NAVI_FRAME_HEIGHT 98
#define VIEWER_NAVIFRAME_BOTTOM_H 114
-
#define VIEWER_PLAY_CONTROLLER_LIFETIME (3.0)
#define VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME (1.0)
#define VIEWER_PLAY_CONTROLLER_HEIGHT 218
MSG_VIEWER_VOLUME_EVENT_DRAG_STOP,
} MSG_VIEWER_VOLUME_BAR_EVENT_E;
+typedef enum {
+ VIEWER_HELP_PAGE_FONT_SMALL = 24,
+ VIEWER_HELP_PAGE_FONT_NORMAL= 30,
+ VIEWER_HELP_PAGE_FONT_LARGE = 44,
+ VIEWER_HELP_PAGE_FONT_HUGE = 60,
+ VIEWER_HELP_PAGE_FONT_GIANT = 76,
+ VIEWER_HELP_PAGE_FONT_MAX
+
+} MSG_VIEWER_HELP_PAGE_FONT_SIZE_E;
+
+
typedef void (*MSG_VIEWER_VOLUMEBAR_CB)(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event);
+
/*==================================================================================================
* STRUCTURES
*==================================================================================================*/
-typedef struct _MSG_VIEWER_ADDR_INFO_S{
+typedef struct _MSG_VIEWER_ADDR_INFO_S {
int contact_id;
char address[MAX_ADDRESS_VAL_LEN+1];
char name[MAX_DISPLAY_NAME_LEN+1];
} MSG_VIEWER_ADDR_INFO;
-typedef struct _MSG_VIEWER_ADDR_LIST_S{
+typedef struct _MSG_VIEWER_ADDR_LIST_S {
int addr_cnt;
MSG_VIEWER_ADDR_INFO addr_info[MAX_TO_ADDRESS_CNT];
} MSG_VIEWER_ADDR_LIST;
Evas_Object *volumebar; /* volumebar */
Evas_Object *volume_slider; /* volumebar_slider */
- Evas_Object *help_page_gl; /* help page genlist */
Evas_Object *save_attachment_gl; /* save attachments genlist(controlbar menu) */
Evas_Object *render_entry; /* entry handle of SMIL render */
Ecore_Timer *play_controller_timer;
Ecore_Timer *play_controller_progressbar_timer;
Ecore_Timer *volumebar_timer;
-
MSG_VIEWER_VOLUMEBAR_CB volumebar_event_cb;
int ctrl_start_x; /* play controller mouse pointer */
bool auto_resume_state; /* check state of auto resume availablity */
bool msg_box_viewer; /* TRUE is viewer is launched from message box */
bool drag_volume_slider; /* check do not navigate multiple page when volume bar is displayed */
+ bool is_rotated; /* TRUE if horizontal or reverse horizontal */
+ bool drm_ro_check; /* whether showing drm cotents popup or not - before SMIL START*/
int totalProgressTime; /* total progress time for all slide*/
int elapsedProgressTime; /*progress time from 1st slide to current slide*/
char pfile_name[MSG_VIEWER_FILENAME_MAX_LEN + 1];
char pfile_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1];
int pfile_size;
- bool isSaveAll; /* for select all item */
Eina_Bool isChecked; /* check object status of save attachment genlist */
Evas_Object *check_item; /* check object for save attachments genlist */
MSG_VIEWER_MEDIA_TYPE_E media_type;
} MSG_VIEWER_ATTACH_MEDIA_INFO_S;
/*==================================================================================================
* FUNCTION DECLARATIONS
- *==================================================================================================*/
-MSG_BOOL msg_ui_viewer_create_player_view(MSG_PLAY_DATA_S *data);
+ *=================================================================================================*/
-/*
- *@fn msg_ui_viewer_show_player_view(MSG_PLAY_DATA_S *data);
- *@brief This function is used to show player view again when player view is already ready.
- * @param[in] data MSG_PLAY_DATA_S structure
- * @return return TRUE if player view is playing, else FALSE
- */
+/* main */
+MSG_BOOL msg_ui_viewer_create_player_view(MSG_PLAY_DATA_S *data);
MSG_BOOL msg_ui_viewer_show_player_view(MSG_PLAY_DATA_S *data);
-
void msg_ui_viewer_play_view_init(void *data);
void msg_ui_viewer_destroy_play_view(void *data);
void msg_ui_viewer_connect_handler(void *data);
void msg_ui_viewer_disconnect_handler(void *data);
-
-/*
- *@fn msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status);
- *@brief This function is used to enable/disable prev & next button
- * @param[in] data MSG_PLAY_DATA_S structure
- * @param[in] status viewer play status.
- */
-void msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status);
-Evas_Object *msg_ui_viewer_create_navigation_layout(Evas_Object *parent);
-Evas_Object *msg_ui_viewer_create_navi_title_layout(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_apply_font_size(void *data);
+Evas_Object *msg_ui_viewer_create_navigation_layout(MSG_PLAY_DATA_S *viewer_play_data, Evas_Object *parent);
+Evas_Object *msg_ui_viewer_create_navi_title_layout(MSG_PLAY_DATA_S *data);
void msg_ui_viewer_set_navi_title_layout(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_open_title_menu_genlist(void *data);
-void msg_ui_viewer_close_title_menu_genlist(void *data);
void msg_ui_viewer_show_popup(void *data, Evas_Object *parent, char *pcontent);
-void msg_ui_viewer_create_msg_detail_popup(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_create_play_controller_timer(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx);
-void msg_ui_viewer_destroy_play_controller_progressbar_timer(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_destroy_play_controller_timer(MSG_PLAY_DATA_S *data);
void msg_ui_viewer_copy_message_text_to_clipboard(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_create_volume_bar(void *data);
-void msg_ui_viewer_destroy_volume_bar(void *data);
-
-/* ========================VIEWER CALLBACK========================*/
-/*
- *@fn msg_ui_viewer_smil_cb(SMIL_SLIDE_EVENT_PARAM_S *eventStatus, void *appUserData);
- *@brief This function is SMIL callback function
- * @param[in] eventStatus this is the slide info to be used by the application.
- * @param[in] appUserData appdata structure
- * @return MSG_SMIL_ERROR_E
- */
+MSG_BOOL msg_ui_viewer_command_play_pause(void *data, MSG_VIEWER_ACTION_TYPE_E action_type);
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);
+MSG_SMIL_ERROR_E msg_ui_viewer_set_entry_handle_cb(MSG_PLAY_DATA_S *data, void *entry);
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);
void msg_ui_viewer_play_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
void msg_ui_viewer_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_save_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_delete_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_forward_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_resend_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_reply_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_more_button_cb(void *data, Evas_Object *obj, void *event_info);
void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_vcall_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_view_contact_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_block_address_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_toolbar_unblock_address_cb(void *data, Evas_Object *obj, void *event_info);
+int msg_ui_viewer_get_thread_address_count(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_get_thread_address_nth_address(MSG_PLAY_DATA_S *data, int number, char **address, int *contact_id);
+void msg_ui_viewer_title_update(MSG_PLAY_DATA_S *data, MSG_VIEWER_OPTION_CHANGE_TYPE_E option_type);
+void msg_ui_viewer_set_font_size(MSG_PLAY_DATA_S *data, MSG_VIEWER_ENTRY_TYPE_E entry_type, MSG_VIEWER_FONT_CHANGE_TYPE_E change_type);
+void msg_ui_viewer_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_display_drm_list_popup(MSG_PLAY_DATA_S *data);
+
+/* options */
+void msg_ui_viewer_option_create_title_menu(void *data);
+void msg_ui_viewer_option_destroy_title_menu(void *data);
+void msg_ui_viewer_option_save_attachment_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_create_more_popup(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_create_delete_popup(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_forward_menu_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_resend_menu_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_create_msg_detail_popup(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_option_email_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_call_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_vcall_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_add_to_contact_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_view_contact_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_block_address_menu(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_option_unblock_address_menu(void *data, Evas_Object *obj, void *event_info);
/* Play controller */
-void msg_ui_viewer_volume_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
-void msg_ui_viewer_prev_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
-void msg_ui_viewer_play_pause_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
-void msg_ui_viewer_next_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
-Eina_Bool msg_ui_viewer_play_controller_progressbar_timer_cb(void *data);
+void msg_ui_viewer_play_controller_create(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_play_controller_update(void *data, MSG_VIEWER_PLAY_STATUS_E status);
+void msg_ui_viewer_play_controller_volume_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_play_controller_prev_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_play_controller_play_pause_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_play_controller_next_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_play_controller_create_timer(MSG_PLAY_DATA_S *data);
Eina_Bool msg_ui_viewer_play_controller_timer_cb(void *data);
-MSG_BOOL msg_ui_viewer_command_play_pause(void *data, MSG_VIEWER_ACTION_TYPE_E action_type);
+void msg_ui_viewer_play_controller_destroy_timer(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_play_controller_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx);
+Eina_Bool msg_ui_viewer_play_controller_progressbar_timer_cb(void *data);
-/* help page create cb - called from SMIL renderer */
-MSG_SMIL_ERROR_E msg_ui_viewer_help_page_smilrenderer_cb(MSG_PLAY_DATA_S *data, void **attach_list, void *box);
+/* volume bar */
+void msg_ui_viewer_grab_volume_key(void *data);
+void msg_ui_viewer_ungrab_volume_key(void *data);
+Eina_Bool msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event);
+Eina_Bool msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event);
+void msg_ui_viewer_create_volume_bar(void *data);
+void msg_ui_viewer_destroy_volume_bar(void *data);
+
+/* help page */
+MSG_SMIL_ERROR_E msg_ui_viewer_help_page_create_list(MSG_PLAY_DATA_S *data, void **attach_list, void *box);
+void msg_ui_viewer_help_page_save_all_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
void msg_ui_viewer_help_page_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-/* popup */
+/* attachment */
void msg_ui_viewer_create_save_attachments_popup(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_viewer_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
-/* message info */
-int msg_ui_viewer_get_thread_address_count(MSG_PLAY_DATA_S *data);
-void msg_ui_viewer_get_thread_address_nth_address(MSG_PLAY_DATA_S *data, int number, char **address, int *contact_id);
-void msg_ui_viewer_title_update(MSG_PLAY_DATA_S *data, MSG_VIEWER_OPTION_CHANGE_TYPE_E option_type);
-MSG_BOOL msg_ui_viewer_check_address_is_blocked(void *data, char *address, int *filter_id);
-void msg_ui_viewer_set_font_size(MSG_PLAY_DATA_S *data, MSG_VIEWER_ENTRY_TYPE_E entry_type, MSG_VIEWER_FONT_CHANGE_TYPE_E change_type);
#endif /* __MSG_UI_VIEWER_PLAY_VIEW_H__*/
*@Caution Caller should free returned temp path after using it.
*/
char *msg_ui_viewer_util_create_working_dir(void);
+
+/*
+ *@fn msg_ui_viewer_check_address_is_blocked(void *data, char *address, int *filter_id)
+ *@brief checking address block status with specific condition
+ */
+MSG_BOOL msg_ui_viewer_check_address_is_blocked(msg_handle_t msg_handle, char *address, int *filter_id);
+
#endif
typedef struct _SMIL_EVENT_MGR_HANDLE_S {
SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData;
- void *smilhandle;
+ void *smilhandle;
} SMIL_EVENT_MGR_HANDLE_S;
/*==================================================================================================
void _msg_smil_destroy_event_mgr(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
/**
+*@fn _msg_smil_event_mgr_ready(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief This function fetches the slide info from the Content Manager and wait for START event of UI signals
+*@return MSG_SUCCESS on success , else failure return code
+*@param[in] smilEvntMgrHndle This is the handler to the SMILEvent Manager.
+*@param[out] None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_ready(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
+*@fn _msg_smil_event_mgr_start(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief This function start the timer event of event manager for response of UI callback at the first launching SMIL
+*@return MSG_SUCCESS on success , else failure return code
+*@param[in] smilEvntMgrHndle This is the handler to the SMILEvent Manager.
+*@param[out] None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_start(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
*@fn _msg_smil_event_mgr_play_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx);
*@brief This function fetches the slide info from the Content Manager,sends to the Call Back from the Client
*@return MSG_SUCCESS on success , else failure return code
MSG_BOOL _msg_smil_event_mgr_get_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
MSG_BOOL _msg_smil_event_mgr_set_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isinvalid_ro);
+MSG_BOOL _msg_smil_event_mgr_get_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
MSG_BOOL _msg_smil_event_mgr_set_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL islast_slide);
+
+MSG_BOOL _msg_smil_event_mgr_get_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
MSG_BOOL _msg_smil_event_mgr_set_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL ishelp_page);
+
MSG_BOOL _msg_smil_event_mgr_set_render_event(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_PLAYER_RENDER_EVENT_E render_event);
#endif
*@param[out] None.
*/
MSG_BOOL msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime);
+
+/**
+*@fn msg_smil_request_player_start(void *hSmilHandle);
+*@brief This API request PLAYER handle in page to start play media that they have
+*@return TRUE on success , else FALSE return
+*@param[in] hSmilHandle This is the handler to the SMILMessage.
+*@param[out] None.
+*/
+MSG_BOOL msg_smil_request_player_start(void * hSmilHandle);
#endif
*/
MSG_BOOL _msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime);
+/**
+*@fn _msg_smil_request_player_start(void *hSmilHandle);
+*@brief This API request PLAYER handle in page to start play media that they have
+*@return TRUE on success , else FALSE return
+*@param[in] hSmilHandle This is the handler to the SMILMessage.
+*@param[out] None.
+*/
+MSG_BOOL _msg_smil_request_player_start(void *hSmilHandle);
+
#endif
unsigned char *video_image_buffer; /*Evas Object Image buffer*/
Ecore_Timer *video_update_timer;
MSG_BOOL is_skip_frame; /*it is used to skip 1 frame of videostream cb*/
+ MSG_BOOL render_status; /*status of rendering*/
int video_width;
int video_height;
int video_duration; /*video content's duration*/
/*Create and set layout to display viewer*/
MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout);
MSG_BOOL _msg_smil_render_set_layout_size(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+MSG_BOOL _msg_smil_render_get_status(SMIL_RENDERER_DATA_S *viewerRenderData);
+void _msg_smil_render_set_status(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL status);
MSG_BOOL _msg_smil_render_set_mute(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL ismute);
MSG_BOOL _msg_smil_render_set_help_page_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack, void *userData);
MSG_BOOL _msg_smil_render_set_entry_handle_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack);
MSG_BOOL _msg_smil_render_resume(void *data, int mediaType);
/**
+*@fn _msg_smil_render_mgr_request_player_start(void *data)
+*@brief This API shall request player to start its media
+*@return TRUE on success , else FALSE return code
+*@param[in] data This is the smil render structure
+*/
+MSG_BOOL _msg_smil_render_mgr_request_player_start(void *data);
+
+/**
*@fn _msg_smil_render_stop_playing_file(void *data)
*@brief This API shall stop and destroy mm player
*@return TRUE on success , else FALSE return code
typedef enum _SMIL_PLAYER_EVENT_E {
PLAYER_EVENT_NONE = 0,
PLAYER_EVENT_INIT,
+ PLAYER_EVENT_READY, /* ready to starting SMIL */
+ PLAYER_EVENT_PREVIEW_READY, /* ready to starting SMIL for preview */
+ PLAYER_EVENT_START, /* play SMIL firstly after READY event */
PLAYER_EVENT_PLAY,
- PLAYER_EVENT_PREVIEW_PLAY,
PLAYER_EVENT_STOP,
PLAYER_EVENT_PAUSE,
PLAYER_EVENT_RESUME,
double maximum_time = 0.0;
curSlide =_msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx);
- if (curSlide->pageInfo == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "page of current slide is NULL!");
+
+ if (curSlide == NULL || curSlide->pageInfo == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "curSlide is NULL or pageInfo in curSlide is NULL!");
return FALSE;
}
*/
static MSG_SMIL_ERROR_E __msg_smil_event_mgr_register_timer(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, void *cb, double duration);
-MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_idx(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int slideIdx);
-MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_count(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int pageCnt);
+static MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_idx(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int slideIdx);
+static MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_count(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int pageCnt);
/*================================================================================================
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_ready(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->smilhandle == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+
+ double timerDuration = 0;
+ SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+ SMIL_SLIDE_INFO_S *singleSlideInfo = NULL;
+ SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+
+ /*fetching the slide data for the first slide*/
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Getting Slide info from content mgr");
+ singleSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, 0);
+ if (singleSlideInfo == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide info fetch failed.");
+ return MSG_ERR_SMIL_INVALID_SLIDE;
+ }
+ _msg_smil_event_mgr_set_current_slide(smilEvntMgrHndle, singleSlideInfo);
+
+ if (_msg_smil_cont_mgr_set_cur_slide_idx(smilContMgrHndle, 0) == FALSE)
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_cur_slide_idx is failed");
+
+ int pageCnt = _msg_smil_cont_mgr_get_total_slide_count(smilContMgrHndle);
+ __msg_smil_event_mgr_set_client_cb_page_idx(smilEvntMgrHndle, 0);
+ __msg_smil_event_mgr_set_client_cb_page_count(smilEvntMgrHndle, pageCnt);
+
+ /* READY event manage only actiontype for PLAY, (->)INTERNAL MEDIA, (->)END */
+ if (pageCnt > 0) {
+ while (1) {
+ if (singleSlideInfo && singleSlideInfo->pageInfo) {
+ int durTime = 0;
+ int endTime = 0;
+ SMIL_PLAYER_PAGE_EVENT_E actionTypeOnPage = _msg_smil_event_mgr_get_page_action_type(smilEvntMgrHndle);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+ switch (actionTypeOnPage) {
+ case PAGE_EVENT_PLAY:
+ /* Check for validity of Page Timer Values and Assign Default Values if required */
+ __msg_smil_event_mgr_set_page_time(smilEvntMgrHndle, singleSlideInfo);
+ _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_PLAY_START);
+
+ /* check current page is help page and skip internal media play */
+ if (_msg_smil_cont_mgr_is_cur_slide_help_page(singleSlideInfo)) {
+ /* set last page to play */
+ _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+ _msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
+ break;
+ }
+
+ _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_INTERNAL_MEDIA);
+ continue;
+ case PAGE_EVENT_INTERNAL_MEDIA:
+ /*Populate and sort Media Timer Info into the slideTimerInfo Array*/
+ __msg_smil_event_mgr_set_media_time_info(smilEvntMgrHndle, slideTimerCbData);
+ _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START);
+ /*Considering the fact that there can be less than three media, we need to perform a check for
+ * if there is any media related information in the array for the sake of a boundary condition check.
+ * Also we need to take the Begin and End time of the Page into consideration*/
+ _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_NONE);
+ __msg_smil_event_mgr_check_media_type(smilEvntMgrHndle, slideTimerCbData);
+ timerDuration = __msg_smil_event_mgr_fill_media_time_data(smilEvntMgrHndle, slideTimerCbData);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "timerDuration = %lf", timerDuration);
+
+ /*Get page handle - Do not null check, it is not needed from here*/
+ msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+ msg_struct_t page_info =_msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, singleSlideInfo->pageIdx);
+
+ durTime = _msg_smil_cont_mgr_get_page_time_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT);
+ if (timerDuration == 0) {
+ /* If there is no media Handle - Show the blank slide for the duration of the slide and then move to the next slide if the page->nDur is Valid. */
+ if (durTime != MSG_MMS_SMIL_TIMER_DUR_INDEFINITE) {
+ timerDuration = durTime;
+ } else {
+ /* if the page->nDur is Invalid do no timer interacton and wait for user action.*/
+ }
+ }
+
+ /* Calculation of timerDuration basing on the End Time/Duration of the page - This case arises if there is no media or in case the end time of all media > the end time of the slide. */
+ endTime = _msg_smil_cont_mgr_get_page_time_value(page_info, MSG_MMS_PAGE_END_TIME_INT);
+ if (endTime > 0) {
+ if (timerDuration > durTime) {
+ timerDuration = durTime;
+ }
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "timerDuration = %lf", timerDuration);
+
+ if (singleSlideInfo->nextSlide == NULL)/* If the current slide is the last slide */
+ _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+
+ _msg_smil_event_mgr_set_slide_time(smilEvntMgrHndle, timerDuration);
+ _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_END);
+ break;
+ case PAGE_EVENT_END:
+ break;
+ default:
+ break;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "slide page is NULL");
+ }
+ break;
+ }
+ } else {
+ /*invalide message without page info or multipart.mixed message*/
+ _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_PLAY_START);
+ _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+ _msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
+ }
+
+ if (slideTimerCbData->slideTimerInfo.actionTypeOnPage != PAGE_EVENT_NONE) {
+ MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+ int slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+
+ _msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_PLAYING);
+
+ /*calling renderhandler to draw content*/
+ SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
+ if (smilRenderer) {
+ err = _msg_smil_render_on_slide_render_handler(smilRenderer, slideTimerCbData->curSlideParam);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_on_slide_render_handler failed err = %d", err);
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilRenderer is NULL");
+ }
+
+ SMIL_SLIDE_INFO_S *curSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx);
+ if (curSlideInfo && curSlideInfo->slideStatus == PLAYER_STATUS_PAUSED)
+ _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED);
+
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Page event is error actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+ return MSG_SMIL_SUCCESS;
+}
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_start(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+ SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->smilhandle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+ SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, EINA_FALSE);
+
+ int slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+
+ /*Calling the callback function of Client.*/
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Calling the Client callback");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Current Slide Idx = %d", slideIdx);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "RENDEREVENT = %d", slideTimerCbData->curSlideParam->renderEvent);
+
+ MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+
+ err = slideTimerCbData->appSmilCb(&(slideTimerCbData->curSlideParam->clientCbParam), slideTimerCbData->appUserData);
+ _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_NONE);
+
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Client CB failed with error = %d", err);
+ _msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_NONE);
+ return err;
+ }
+
+ double timerDuration = _msg_smil_event_mgr_get_slide_time(smilEvntMgrHndle);
+
+ /*Timer Registration -- needed for Multipart Related MMS only.*/
+ MSG_BOOL is_video_media = _msg_smil_event_mgr_get_is_video_media(smilEvntMgrHndle);
+ MSG_BOOL binvalid_ro = _msg_smil_event_mgr_get_invalid_video_ro(smilEvntMgrHndle);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "binvalid_ro = %d", binvalid_ro);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isVideoMedia = %d", is_video_media);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timerDuration = %lf", timerDuration);
+
+ //for UI progressbar. ceiling duration time to second
+ double ceiled_duration = ceil(timerDuration/1000)*1000;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ceiling timerDuration = %lf", ceiled_duration);
+
+ if (is_video_media) { /*video*/
+ SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
+ if (!smilRenderer || !_msg_smil_render_get_status(smilRenderer)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for invalid case of video content or etc");
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ } else if (binvalid_ro == TRUE) { /*video is an invalid ro drm content*/
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for invalid ro drm video content");
+ double time_dur = _msg_smil_event_mgr_get_slide_time(smilEvntMgrHndle);
+ double ceiled_duration = ceil(time_dur/1000)*1000;
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ } else { //valid ro video file. now we insure page duration for at least video duration
+ double remain_current_slide = 0.0;
+ double remain_next_Slide = 0.0;
+ double current_slide_time = 0.0;
+ if (_msg_smil_cont_mgr_get_slide_time(smilContMgrHndle, slideIdx, FALSE, &remain_current_slide)) {
+ if (_msg_smil_cont_mgr_get_slide_time(smilContMgrHndle, slideIdx+1, FALSE, &remain_next_Slide))
+ current_slide_time = remain_current_slide - remain_next_Slide;
+ else
+ current_slide_time = remain_current_slide;
+ }
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current slide(include video) time is %f", current_slide_time);
+
+ double duration_time = (current_slide_time >= ceiled_duration) ? current_slide_time : ceiled_duration;
+
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, duration_time)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ }
+ } else if (timerDuration > 0) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for normal case");
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timer is not created. PLAYSLIDEEVENT : timerDuration = %lf", timerDuration);
+
+ _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+ _msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
+ if (_msg_smil_event_mgr_get_last_slide(smilEvntMgrHndle) && _msg_smil_event_mgr_get_last_slide_is_help_page(smilEvntMgrHndle)) { /*for invalid page info message or multipart.mixed message*/
+ _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_END);
+ timerDuration = MSG_MMS_SMIL_TIMER_DEFAULT_DUR;
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, timerDuration)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ } else if (_msg_smil_event_mgr_get_unsupported_content(smilEvntMgrHndle)) { /*if unsupported content has no duration time*/
+ timerDuration = MSG_MMS_SMIL_TIMER_DEFAULT_DUR;
+ if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, timerDuration)) != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+ return err;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timer is not registerd actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+ }
+ }
+
+ return err;
+}
MSG_SMIL_ERROR_E _msg_smil_event_mgr_play_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx)
{
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->smilhandle == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
double timerDuration = 0;
- MSG_BOOL haspageinfo = TRUE;
SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
SMIL_SLIDE_INFO_S *singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
/* set last page to play */
_msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
_msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
- haspageinfo = FALSE;
break;
}
_msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_PLAY_START);
_msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
_msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
- haspageinfo = FALSE;
}
if (slideTimerCbData->slideTimerInfo.actionTypeOnPage != PAGE_EVENT_NONE) {
_msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_PLAYING);
/*calling renderhandler to draw content*/
- MSG_BOOL rendering_failed = FALSE;
SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
if (smilRenderer) {
err = _msg_smil_render_on_slide_render_handler(smilRenderer, slideTimerCbData->curSlideParam);
if (err != MSG_SMIL_SUCCESS) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_on_slide_render_handler failed err = %d", err);
- rendering_failed = TRUE;
}
} else {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilRenderer is NULL");
- rendering_failed = TRUE;
}
SMIL_SLIDE_INFO_S *curSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx);
+
+ if (!curSlideInfo) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_get_slide is failed");
+ return MSG_ERR_SMIL_INVALID_SLIDE;
+ }
+
if (curSlideInfo->slideStatus == PLAYER_STATUS_PAUSED)
_msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED);
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ceiling timerDuration = %lf", ceiled_duration);
if (is_video_media) { /*video*/
- if (rendering_failed) {
+ SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
+ if (!smilRenderer || !_msg_smil_render_get_status(smilRenderer)) {
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for invalid case of video content or etc");
if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
}
} else {
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timer is not created. PLAYSLIDEEVENT : timerDuration = %lf", timerDuration);
- if (haspageinfo == FALSE) { /*for invalid page info message or multipart.mixed message*/
+ if (_msg_smil_event_mgr_get_last_slide(smilEvntMgrHndle) && _msg_smil_event_mgr_get_last_slide_is_help_page(smilEvntMgrHndle)) { /*for invalid page info message or multipart.mixed message*/
_msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_END);
timerDuration = MSG_MMS_SMIL_TIMER_DEFAULT_DUR;
if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, timerDuration)) != MSG_SMIL_SUCCESS) {
}
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
return MSG_SMIL_SUCCESS;
}
return TRUE;
}
+MSG_BOOL _msg_smil_event_mgr_get_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+ return smilEvntMgrHndle->slideTimerCbData->curSlideParam->isLastSlide;
+}
MSG_BOOL _msg_smil_event_mgr_set_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL islast_slide)
{
return TRUE;
}
+MSG_BOOL _msg_smil_event_mgr_get_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+ return smilEvntMgrHndle->slideTimerCbData->curSlideParam->isHelpSlide;
+}
+
MSG_BOOL _msg_smil_event_mgr_set_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL ishelp_page)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
return TRUE;
}
-
static MSG_BOOL __msg_smil_render_player_mgr_pause(void *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
- int err = PLAYER_ERROR_NONE;
if (!__msg_smil_render_is_player_active())
return FALSE;
- if (viewerRenderData->player_state == MEDIA_PLAYER_STATE_INIT) { //not ready status, in other words, page is started with paused state
- if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
- return FALSE;
-
- if (__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
- if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
- SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
- SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
+ if (__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
+ if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
+ SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+ SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
- if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo)
- __msg_smil_render_start_video_timer(viewerRenderData);
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_play is failed");
- return FALSE;
+ if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo)
+ __msg_smil_render_start_video_timer(viewerRenderData);
}
} else {
- if ((err = player_start(_player)) != PLAYER_ERROR_NONE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_start is failed err = %d", err);
- return FALSE;
- }
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_play is failed");
+ return FALSE;
}
- viewerRenderData->player_state = MEDIA_PLAYER_STATE_PLAYING;
return TRUE;
}
if (!__msg_smil_render_player_mgr_set_player_cb((void *)viewerRenderData))
return FALSE;
- if (status == PLAYER_STATUS_PLAYING) {
- if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
- return FALSE;
-
- if (!__msg_smil_render_player_mgr_play((void *)viewerRenderData))
- return FALSE;
+ if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
+ return FALSE;
- /*if silent and mute mode*/
- if (viewerRenderData->ismute) {
- if (!__msg_smil_render_player_mgr_mute((void *)viewerRenderData))
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_mute is Fail");
- }
- }
+ /* Don't start PLAYER until UI Callback request is received */
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
return TRUE;
}
return FALSE;
}
- if (status == PLAYER_STATUS_PLAYING) {
- if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_realize is failed");
- return FALSE;
- }
-
- if (__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
- SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
- SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
-
- if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo)
- __msg_smil_render_start_video_timer(viewerRenderData);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_play is failed");
- return FALSE;
- }
+ if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_realize is failed");
+ return FALSE;
}
+ /* Don't start PLAYER until UI Callback request is received */
+
return TRUE;
}
return TRUE;
}
+MSG_BOOL _msg_smil_render_mgr_request_player_start(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+
+ SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+ if (__msg_smil_render_player_mgr_play(viewerRenderData)) {
+ SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_get_current_slide_info(viewerRenderData->smilhandle);
+
+ if (current_slide_data->pageInfo) {
+ if (current_slide_data->pageInfo->hasVideo) {
+ __msg_smil_render_start_video_timer(viewerRenderData);
+ } else if (current_slide_data->pageInfo->hasAudio) {
+ if (viewerRenderData->ismute) {
+ if (!__msg_smil_render_player_mgr_mute((void *)viewerRenderData))
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_mute is Fail");
+ }
+ }
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_player_mgr_play is failed");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
{
return _msg_smil_get_slide_time(hSmilHandle, slideIdx, bExcludeHp, slideTime);
}
+
+MSG_BOOL msg_smil_request_player_start(void * hSmilHandle)
+{
+ return _msg_smil_request_player_start(hSmilHandle);
+}
\ No newline at end of file
_msg_smil_render_rotate_video_window(smilPlayerHndle->smilRenderer);
err = MSG_SMIL_SUCCESS;
break;
- case PLAYER_EVENT_PLAY:
- _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
- if (slideTimerCbData->timerHandle) {
- err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_PLAY_SLIDE");
- return err;
- }
-
- _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
- }
+ case PLAYER_EVENT_READY:
+ case PLAYER_EVENT_PREVIEW_READY:
+ if (playerEvent == PLAYER_EVENT_PREVIEW_READY)
+ _msg_smil_cont_mgr_delete_help_page(smilPlayerHndle->smilRenderer->msg_info_t, smilPlayerHndle->smilContMgrHndle); //delete help page
_msg_smil_event_mgr_set_current_slide(smilPlayerHndle->smilEvntMgrHndle, NULL);
_msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_PLAY);
- err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
+ err = _msg_smil_event_mgr_ready(smilPlayerHndle->smilEvntMgrHndle);
if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_PLAY");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_READY");
return err;
}
break;
- case PLAYER_EVENT_PREVIEW_PLAY:
+ case PLAYER_EVENT_START:
+ err = _msg_smil_event_mgr_start(smilPlayerHndle->smilEvntMgrHndle);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_start_slide_event is failed: PLAYER_EVENT_START");
+ return err;
+ }
+ break;
+ case PLAYER_EVENT_PLAY:
_msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
if (slideTimerCbData->timerHandle) {
err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_PLAY_SLIDE");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_PLAY");
return err;
}
_msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
}
- _msg_smil_cont_mgr_delete_help_page(smilPlayerHndle->smilRenderer->msg_info_t, smilPlayerHndle->smilContMgrHndle); //delete help page
_msg_smil_event_mgr_set_current_slide(smilPlayerHndle->smilEvntMgrHndle, NULL);
_msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_PLAY);
err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_PREVIEW_PLAY");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_PLAY");
return err;
}
break;
MSG_BOOL _msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, PLAYER_STATUS_NONE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
return _msg_smil_cont_mgr_get_slide_time(smilPlayerHndle->smilContMgrHndle, slideIdx, bExcludeHp, slideTime);
+}
+
+MSG_BOOL _msg_smil_request_player_start(void *hSmilHandle)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
+ SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+ return _msg_smil_render_mgr_request_player_start((void *)smilPlayerHndle->smilRenderer);
}
\ No newline at end of file
/*==================================================================================================
* FUNCTION DECLARATIONS
*==================================================================================================*/
-static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData);
+static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData, bool is_helppage);
static char *__msg_smil_render_get_cur_page_media_file_name(SMIL_RENDERER_DATA_S *viewerRenderData, int media_type);
/*================================================================================================
* FUNCTION IMPLEMENTATIONS
return TRUE;
}
+MSG_BOOL _msg_smil_render_get_status(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+
+ return viewerRenderData->render_status;
+}
+
+void _msg_smil_render_set_status(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL status)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
+
+ viewerRenderData->render_status = status;
+}
MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout)
{
/*create smil rendering layout again*/
if (_msg_smil_render_create_layout(viewerRenderData, viewerRenderData->layout_main) == FALSE) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_create_layout is failed");
+ _msg_smil_render_set_status(viewerRenderData, FALSE);
return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
}
}
/* set viewer bg color */
- __msg_smil_render_set_bg_color(viewerRenderData);
+ __msg_smil_render_set_bg_color(viewerRenderData, false);
break;
case SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START:
/*create smil rendering layout again*/
if (_msg_smil_render_create_layout(viewerRenderData, viewerRenderData->layout_main) == FALSE) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_create_layout is failed");
+ _msg_smil_render_set_status(viewerRenderData, FALSE);
return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
}
}
/* set viewer bg color */
- __msg_smil_render_set_bg_color(viewerRenderData);
+ __msg_smil_render_set_bg_color(viewerRenderData, false);
/*move scroll to top*/
elm_scroller_region_show(viewerRenderData->viewer_scroller, 0, 0, 0, 0);
break;
case SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE:
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE");
_msg_smil_render_stop_playing_file((void *)viewerRenderData);
+ _msg_smil_render_set_status(viewerRenderData, TRUE);
return MSG_SMIL_SUCCESS;
case SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE:
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE");
+ _msg_smil_render_set_status(viewerRenderData, TRUE);
return MSG_SMIL_SUCCESS;
case SMIL_RENDER_EVENT_DESTROY_SCREEN:
evas_object_del(viewerRenderData->insert_unsupported_icon);
viewerRenderData->insert_unsupported_icon = NULL;
}
+
+ _msg_smil_render_set_status(viewerRenderData, TRUE);
+
return MSG_SMIL_SUCCESS;
default:
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "abnormal renderEvent : %d", eventStatus->renderEvent);
+ _msg_smil_render_set_status(viewerRenderData, FALSE);
return MSG_ERR_SMIL_EVENT_NONE;
}
if (pageCnt > 0) { //Multipart related
if (_msg_smil_cont_mgr_is_cur_slide_help_page(eventStatus->singleSlideInfo)) {
char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
- snprintf(buf_font, sizeof(buf_font), "<color=#6ca8c7>%s",
- ((nAttachCnt > 1) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE")));
+ snprintf(buf_font, sizeof(buf_font), "<color=#808080>%s", ((nAttachCnt > 1) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE")));
_msg_smil_render_set_entry_handle(viewerRenderData);
elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
}
+ __msg_smil_render_set_bg_color(viewerRenderData, true);
} else {
if (_msg_smil_render_reload_mms(viewerRenderData, eventStatus) == FALSE) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_reload_mms is failed");
+ _msg_smil_render_set_status(viewerRenderData, FALSE);
return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
}
}
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Attachment is not TEXT type, Display help page");
char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
- snprintf(buf_font, sizeof(buf_font), "<color=#6ca8c7>%s",
- dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"));
+ snprintf(buf_font, sizeof(buf_font), "<color=#808080>%s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"));
_msg_smil_render_set_entry_handle(viewerRenderData);
elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
}
+
+ __msg_smil_render_set_bg_color(viewerRenderData, true);
}
} else { //nAttachCnt > 1
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Attachment count is over than 1, Display help page");
char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
- snprintf(buf_font, sizeof(buf_font), "<font_size=%d color=#6ca8c7>%s",
- MMS_SMIL_FONT_SIZE_NORMAL,
- dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE"));
+ snprintf(buf_font, sizeof(buf_font), "<color=#808080>%s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE"));
_msg_smil_render_set_entry_handle(viewerRenderData);
elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
}
+
+ __msg_smil_render_set_bg_color(viewerRenderData, true);
}
} else {
if (viewerRenderData->viewer_body)
}
}
+ _msg_smil_render_set_status(viewerRenderData, TRUE);
+
return MSG_SMIL_SUCCESS;
}
}
-static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData)
+static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData, bool is_helppage)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
SMIL_HANDLER_S *smilHandle = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilHandle == NULL);
- /*Get contentMgr */
- SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilHandle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL);
+ if (!is_helppage) {
+ /*Get contentMgr */
+ SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilHandle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL);
- /*Get Mms body data */
- msg_struct_t msgMmsBody = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
- int bgColor = 0;
+ /*Get Mms body data */
+ msg_struct_t msgMmsBody = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
+ int bgColor = 0;
- msg_list_handle_t page_list_t = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+ msg_list_handle_t page_list_t = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
- if (page_list_t)
- msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, &bgColor);
- else //Mixed msg
- bgColor = 0xffffff; // set WHITE directly
+ if (page_list_t)
+ msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, &bgColor);
+ else //Mixed msg
+ bgColor = 0xffffff; // set WHITE directly
- SMIL_RGB_UNION rgbUnion;
+ SMIL_RGB_UNION rgbUnion;
- memset(&rgbUnion, 0x00, sizeof(SMIL_RGB_UNION));
- rgbUnion.rgbColor = bgColor;
+ memset(&rgbUnion, 0x00, sizeof(SMIL_RGB_UNION));
+ rgbUnion.rgbColor = bgColor;
- memset(&viewerRenderData->bgcolor, 0x00, sizeof(VIEWER_COLORREF));
- viewerRenderData->bgcolor = bgColor;
+ memset(&viewerRenderData->bgcolor, 0x00, sizeof(VIEWER_COLORREF));
+ viewerRenderData->bgcolor = bgColor;
+
+ evas_object_color_set(viewerRenderData->viewer_bg_rect, rgbUnion.rgbQuad.rgbRed, rgbUnion.rgbQuad.rgbGreen, rgbUnion.rgbQuad.rgbBlue, 255);
+ } else {
+ evas_object_color_set(viewerRenderData->viewer_bg_rect, 248, 246, 239, 255); //default BG
+ }
- evas_object_color_set(viewerRenderData->viewer_bg_rect, rgbUnion.rgbQuad.rgbRed, rgbUnion.rgbQuad.rgbGreen, rgbUnion.rgbQuad.rgbBlue, 255);
evas_object_show(viewerRenderData->viewer_bg_rect);
}
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 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);
}
- 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;
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_main_data->player_view->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? 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);
/*connect handler again*/
* FUNCTION DECLARATIONS
*==================================================================================================*/
static void __drm_list_back_button_cb(void *data, Evas_Object *obj, void *event_info);
-static void __drm_list_play_button_cb(void *data, Evas_Object *obj, void *event_info);
static char *__drm_list_genlist_text_get(void *data, Evas_Object *obj, const char *part);
static Evas_Object *__drm_list_genlist_content_get(void *data, Evas_Object *obj, const char *part);
static void __drm_list_genlist_del(void *data, Evas_Object *obj);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
-static void __drm_list_play_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
- MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
-
- msg_ui_viewer_show_view_by_mode(drm_list_data->viewer_main, MSG_VIEWER_PLAYER_VIEW, MSG_VIEWER_VIEW_CMD_NONE);
- elm_object_disabled_set(obj, TRUE);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
static char *__drm_list_genlist_text_get(void *data, Evas_Object *obj, const char *part)
{
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
if (viewer_main_data->player_view) {
MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+ if (rotate == 90 || rotate == 270)
+ viewer_main_data->player_view->is_rotated = true;
+ else
+ viewer_main_data->player_view->is_rotated = false;
+
if ((Error = msg_smil_on_slide_event_handler(&(viewer_main_data->SmilHandle), PLAYER_EVENT_ROTATE_WINDOW)) != MSG_SMIL_SUCCESS)
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "PLAYER_EVENT_ROTATE_WINDOW failed : %d", Error);
}
if (msg_ui_viewer_launch(viewer_main_data) == FALSE)
ug_destroy_me(viewer_main_data->viewer_ug);
+
+ /* start SMIL PLAYER event after UG STARTED */
+ if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+ if (viewer_main_data->player_view->drm_ro_check) {
+ msg_ui_viewer_display_drm_list_popup(viewer_main_data->player_view);
+ } else {
+ if (viewer_main_data->player_view && viewer_main_data->player_view->SmilHandle) {
+ /* create play controller */
+ msg_ui_viewer_play_controller_create(viewer_main_data->player_view);
+
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+ err = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_START);
+ if (err != MSG_SMIL_SUCCESS)
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler is failed! : %d", err);
+ }
+ }
+ }
}
static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void *priv)
if (viewer_main_data->player_view) {
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_apply_font_size(viewer_main_data->player_view);
+
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_main_data->player_view->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? 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);
}
} else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
}
viewer_main_data->player_view->status = MSG_VIEWER_STOP;
- msg_ui_viewer_update_play_controller(viewer_main_data->player_view, MSG_VIEWER_STOP);
+ msg_ui_viewer_play_controller_update(viewer_main_data->player_view, MSG_VIEWER_STOP);
}
}
} else {
static MSG_SMIL_ERROR_E __msg_ui_viewer_main_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *data);
static MSG_BOOL __msg_ui_vewer_get_smil_handle(void *data);
static MSG_BOOL __msg_ui_viewer_launch_drm_list(void *data);
-static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data);
+static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data, bool invalid_drm);
static MSG_BOOL __msg_ui_viewer_show_play_view(void *data);
-
/*==================================================================================================
* FUNCTION IMPLEMENTATIONS
*================================================================================================*/
}
if (viewer_main_data->launchmode == MSG_VIEWER_FULLVIEW_MODE) {
- if (__msg_ui_viewer_check_drm_content(viewer_main_data)) {
- ret = __msg_ui_viewer_launch_drm_list(viewer_main_data);
- viewer_main_data->view_mode = MSG_VIEWER_DRM_LIST_VIEW;
- } else {
- ret = __msg_ui_viewer_launch_play_view(viewer_main_data);
- viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
- }
+ if (__msg_ui_viewer_check_drm_content(viewer_main_data))
+ ret = __msg_ui_viewer_launch_play_view(viewer_main_data, true);
+ else
+ ret = __msg_ui_viewer_launch_play_view(viewer_main_data, false);
+ viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
} else {
- ret = __msg_ui_viewer_launch_play_view(viewer_main_data);
+ ret = __msg_ui_viewer_launch_play_view(viewer_main_data, false);
viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
}
if (__msg_ui_viewer_show_play_view(viewer_main_data))
viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
} else {
- __msg_ui_viewer_launch_play_view(viewer_main_data);
+ __msg_ui_viewer_launch_play_view(viewer_main_data, false);
viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
}
} else if (viewMode == MSG_VIEWER_DRM_LIST_VIEW) {
return msg_ui_viewer_show_player_view(viewer_play_data);
}
-static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data)
+static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data, bool invalid_drm)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
viewer_play_data->mms_t = viewer_main_data->mms_t;
viewer_play_data->main_window = viewer_main_data->main_window;
viewer_play_data->msg_box_viewer = viewer_main_data->msg_box_viewer;
+ viewer_play_data->drm_ro_check = invalid_drm;
if (viewer_main_data->navi_frame)
viewer_play_data->navi_frame = viewer_main_data->navi_frame;
if (viewer_main_data->bg == NULL) {
bg = elm_bg_add(parent);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, bg == NULL, NULL);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(parent, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(parent, bg);
evas_object_show(bg);
viewer_main_data->bg = bg;
} else {
if (viewer_play_data->popup) {
switch (viewer_play_data->popup_type) {
case MSG_VIEWER_DELETE_POPUP:
- msg_ui_viewer_delete_button_cb(viewer_play_data, NULL, NULL);
+ msg_ui_viewer_option_create_delete_popup(viewer_play_data, NULL, NULL);
break;
case MSG_VIEWER_ATTACHMENTS_POPUP:
msg_ui_viewer_create_save_attachments_popup(viewer_play_data);
break;
case MSG_VIEWER_DETAILS_POPUP:
- msg_ui_viewer_create_msg_detail_popup(viewer_play_data);
+ msg_ui_viewer_option_create_msg_detail_popup(viewer_play_data);
break;
case MSG_VIEWER_MENU_CTX_POPUP:
- msg_ui_viewer_more_button_cb(viewer_play_data, NULL, NULL);
+ msg_ui_viewer_option_create_more_popup(viewer_play_data, NULL, NULL);
break;
case MSG_VIEWER_CUTLINK_POPUP:
case MSG_VIEWER_TITLE_MENU_POPUP:
if (viewer_play_data->title_menu_opened) {
/* close and open again */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
- msg_ui_viewer_open_title_menu_genlist(viewer_play_data);
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+ msg_ui_viewer_option_create_title_menu(viewer_play_data);
}
if (viewer_play_data->render_entry && viewer_play_data->smil_eventStatus->isHelpSlide) {
--- /dev/null
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ * INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+#include "msg-ui-image-resource.h"
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+#include <status.h>
+
+/*==================================================================================================
+ * FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/* save attachment popup */
+static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info);
+
+/*==================================================================================================
+ * FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_create_save_attachments_popup(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Evas_Object *popup = NULL;
+ Evas_Object *box = NULL;
+ Evas_Object *genlist = NULL;
+ Evas_Object *btn_save = NULL;
+ Evas_Object *btn_close = NULL;
+ int index = 0;
+ int total_media_count = 0;
+ int popup_height = 0;
+
+ /* destroy previous popup */
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ total_media_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+ /* create popup */
+ popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ if (total_media_count > 3 )
+ elm_object_style_set(popup, "menustyle");
+ else
+ elm_object_style_set(popup, "min_menustyle");
+
+ /* set popup title */
+ elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_ATTACHMENTS"));
+
+ /* set select all genlist item style */
+ viewer_play_data->attach_sa_class.item_style = "1text.1icon.2";
+ viewer_play_data->attach_sa_class.func.text_get = __msg_ui_viewer_save_attachments_sa_gl_text_get;
+ viewer_play_data->attach_sa_class.func.content_get = __msg_ui_viewer_save_attachments_sa_gl_content_get;
+ viewer_play_data->attach_sa_class.func.state_get = NULL;
+ viewer_play_data->attach_sa_class.func.del = NULL;
+
+ /* set genlist style */
+ viewer_play_data->attach_item_class.item_style = "1text.2icon.2";
+ viewer_play_data->attach_item_class.func.text_get = __msg_ui_viewer_save_attachments_gl_text_get;
+ viewer_play_data->attach_item_class.func.content_get = __msg_ui_viewer_save_attachments_gl_content_get;
+ viewer_play_data->attach_item_class.func.state_get = NULL;
+ viewer_play_data->attach_item_class.func.del = NULL;
+
+ /* create genlist */
+ genlist = elm_genlist_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
+
+ /* add genlist item based on media count, if item's count is over 1 then 'select all' item should be inserted*/
+ if (total_media_count > 1) {
+ /* add Select all item */
+ elm_genlist_item_append(genlist, &viewer_play_data->attach_sa_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_sa_gl_sel, NULL);
+
+ /* add each item (order is inserted + attached) */
+ for (index = 1; index < total_media_count+1; index++) {
+ elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
+ }
+ } else {
+ /* add each item (order is inserted + attached) */
+ for (index = 0; index < total_media_count; index++) {
+ elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
+ }
+ }
+
+ /* add save button */
+ btn_save = elm_button_add(popup);
+ elm_object_style_set(btn_save, "popup_button/default");
+ elm_object_text_set(btn_save, dgettext("sys_string", "IDS_COM_SK_SAVE"));
+ elm_object_part_content_set(popup, "button1", btn_save);
+ evas_object_smart_callback_add(btn_save, "clicked", __msg_ui_viewer_save_attachments_popup_save_clicked_cb, viewer_play_data);
+ viewer_play_data->save_button = btn_save;
+ elm_object_disabled_set(viewer_play_data->save_button, EINA_TRUE);
+
+ /* add close button */
+ btn_close = elm_button_add(popup);
+ elm_object_style_set(btn_close, "popup_button/default");
+ elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn_close);
+ evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb, viewer_play_data);
+
+ /* set popup style */
+ box = elm_box_add(viewer_play_data->main_window);
+ popup_height = VIEWER_ATTACH_GL_ITEM_HEIGHT * ((total_media_count > 3) ? 4 : ((total_media_count > 1) ? total_media_count + 1 : total_media_count));
+ evas_object_size_hint_min_set(box, 0, popup_height * elm_config_scale_get());
+ evas_object_show(genlist);
+ elm_box_pack_end(box, genlist);
+ elm_object_content_set(popup, box);
+
+ /* show popup */
+ evas_object_show(popup);
+ viewer_play_data->save_attachment_gl= genlist;
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_ATTACHMENTS_POPUP;
+
+ /*disconnect mouse handler*/
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ int index = 0;
+ int total_count = 0;
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->save_button);
+ viewer_play_data->save_button = NULL;
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ viewer_play_data->popup = NULL;
+ viewer_play_data->sa_check = NULL;
+ }
+
+ total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+ while (index < total_count) {
+ if (index < viewer_play_data->insert_count)
+ media_info = eina_list_nth(viewer_play_data->insert_list, index);
+ else if (index < total_count)
+ media_info = eina_list_nth(viewer_play_data->attach_list, index-viewer_play_data->insert_count);
+ else
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!", index);
+
+ if (media_info ) // disable check status
+ media_info->isChecked = FALSE;
+
+ index++;
+ }
+
+ viewer_play_data->isSelectAll = FALSE;
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+
+ int attach_count = 0;
+ int insert_count = 0;
+ int total_count = 0;
+ int selected_count = 0;
+
+ int index = 0;
+ int insert_index = 0;
+ int attach_index = 0;
+ int failed_count = 0;
+ int saved_count = 0;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->save_button);
+ viewer_play_data->save_button = NULL;
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ viewer_play_data->popup = NULL;
+ viewer_play_data->sa_check = NULL;
+ }
+
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_Info = NULL;
+
+ insert_count = eina_list_count(viewer_play_data->insert_list);
+ attach_count = eina_list_count(viewer_play_data->attach_list);
+ total_count = insert_count + attach_count;
+
+ while (index < total_count) {
+ if (index < insert_count)
+ media_Info = eina_list_nth(viewer_play_data->insert_list , insert_index++);
+ else if (index < total_count)
+ media_Info = eina_list_nth(viewer_play_data->attach_list , attach_index++);
+
+ if (media_Info) {
+ bool saveCondition = (viewer_play_data->isSelectAll) ? TRUE : (media_Info->isChecked ? TRUE : FALSE);
+
+ if (saveCondition) {
+ selected_count++;
+
+ /*get default file path*/
+ MSG_BOOL result = FALSE;
+ char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+ result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+ if (result) {
+ char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+ snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, media_Info->pfile_name);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", media_Info->pfile_path);
+
+ char *result_path = msg_ui_viewer_util_copy_file(media_Info->pfile_path, dst_path);
+ if (result_path) {
+ saved_count++;
+ free(result_path);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
+ failed_count++;
+ }
+ } else {
+ failed_count++;
+ }
+
+ //release check status
+ media_Info->isChecked = FALSE;
+ if (viewer_play_data->isSelectAll)
+ viewer_play_data->isSelectAll = FALSE;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
+ }
+
+ media_Info = NULL;
+
+ index++;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Selected(%d) / Total(%d) [inserted(%d),attached(%d)]", selected_count, total_count, insert_count, attach_count);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Saved(%d), Failed(%d)", saved_count, failed_count);
+
+ /* show indicator status text */
+ if (failed_count == selected_count) {
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+ } else {
+ if (selected_count == 1 && saved_count == 1) {
+ status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+ } else {
+ char buf[DEF_BUF_LEN_S + 1] = {0, };
+ snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, selected_count);
+ status_message_post(buf);
+ }
+ }
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ int index = (int)data;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+ if (!strcmp(part, "elm.text")) {
+ if (index == 0) {
+ return strdup(dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid index of select all(%d)", index);
+ return NULL;
+ }
+ }
+ return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ int index = (int)data;
+ Evas_Object *check;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+ if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
+ check = elm_check_add(obj);
+ elm_check_state_pointer_set(check, &(viewer_play_data->isSelectAll));
+ evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(check, "changed", __msg_ui_viewer_save_attachments_sa_check_changed_cb, viewer_play_data);
+ viewer_play_data->sa_check = check;
+
+ return check;
+ }
+
+ return NULL;
+}
+
+static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ int i = 0;
+ Eina_List * realized_list;
+ Elm_Object_Item *it;
+ Eina_List *l;
+ Eina_Bool checked;
+
+ int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "total Count = %d", total_count);
+ checked = elm_check_state_get(obj);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "checked status = %d", checked);
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+ for (i = 0; i < total_count; i++) {
+ if (i < viewer_play_data->insert_count) {
+ media_info = eina_list_nth(viewer_play_data->insert_list, i);
+ media_info->isChecked = checked;
+ } else if (i < total_count) {
+ media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+ media_info->isChecked = checked;
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+ }
+ }
+
+ // Update realized items only
+ realized_list = elm_genlist_realized_items_get(viewer_play_data->save_attachment_gl);
+ EINA_LIST_FOREACH(realized_list, l, it) {
+ elm_genlist_item_update(it);
+ }
+
+}
+
+static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+ int index = 0;
+ int i = 0;
+ int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
+
+ if (item != NULL) {
+ index = (int)elm_object_item_data_get(item);
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ viewer_play_data->isSelectAll = !viewer_play_data->isSelectAll;
+
+ //check state changed cb will be called
+ elm_check_state_set(viewer_play_data->sa_check, viewer_play_data->isSelectAll);
+ elm_genlist_item_update(item);
+
+ if (total_count > 1) {
+ for (i = 0; i < total_count; i++) {
+ if (i < viewer_play_data->insert_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+
+ } else if (i < total_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+ continue;
+ }
+ elm_check_state_set(tmp_media_info->check_item, (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE);
+ tmp_media_info->isChecked = (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE;
+ }
+ }
+ elm_object_disabled_set(viewer_play_data->save_button, (viewer_play_data->isSelectAll) ? EINA_FALSE : EINA_TRUE);
+ }
+}
+
+static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
+
+ int index = (int) data;
+ int realIndex = 0;
+ int insert_count = viewer_play_data->insert_count;
+ int attach_count = viewer_play_data->attach_count;
+ int total_count = insert_count + attach_count;
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+ realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
+
+ // check boundary
+ if (realIndex < 0 ) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ if (realIndex < insert_count) {
+ media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[INSERT MEDIA] name is = %s", media_info->pfile_name);
+ } else if (realIndex < insert_count+attach_count) {
+ media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[ATTACH MEDIA] name is = %s", media_info->pfile_name);
+ }
+
+ return strdup(media_info->pfile_name);
+ }
+ return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+ int index = (int)data;
+ Evas_Object *check;
+ int realIndex = index-1;
+ int insert_count = viewer_play_data->insert_count;
+ int attach_count = viewer_play_data->attach_count;
+ int total_count = insert_count + attach_count;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+ realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
+
+ // check boundary
+ if (realIndex < 0 ) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+ return NULL;
+ }
+
+ if (realIndex < insert_count) {
+ media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
+ } else if (realIndex < total_count) {
+ media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
+ }
+
+ if (strcmp(part, "elm.icon.1") == 0) {
+ check = elm_check_add(obj);
+ //set the State pointer to keep the current UI state of Checkbox.
+ elm_check_state_pointer_set(check, &media_info->isChecked);
+ evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ media_info->check_item = check;
+
+ return check;
+ } else if (strcmp(part, "elm.icon.2") == 0) {
+ Evas_Object *image = NULL;
+
+ image = elm_icon_add(obj);
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info->pfile_path = %s", media_info->pfile_path);
+
+ /*set attach file icon*/
+ if (media_info->media_type == MSG_VIEWER_MEDIA_IMG ||
+ media_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
+ elm_image_file_set(image, media_info->pfile_path, NULL);
+ } else if (media_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+ elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
+ } else {
+ if (strlen(media_info->pfile_path)) {
+ const char *icon_path = NULL;
+
+ icon_path = msg_common_get_file_icon(media_info->pfile_path);
+ if (icon_path) {
+ elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
+ } else {
+ D_EMSG("icon_path is NULL");
+ elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
+ return NULL;
+ }
+ }
+
+ if (image)
+ evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ return image;
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
+ }
+
+ return NULL;
+}
+
+static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+
+ int i = 0;
+ int index = 0;
+ int realIndex = 0;
+ int insert_count = viewer_play_data->insert_count;
+ int attach_count = viewer_play_data->attach_count;
+ int total_count = insert_count + attach_count;
+ bool isAllSelected = TRUE;
+ bool isNoneSelected = TRUE;
+
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *sel_media_info = NULL;
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
+
+ if (item != NULL) {
+ index = (int)elm_object_item_data_get(item);
+ realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
+
+ // check boundary
+ if (realIndex < 0 ) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+ return;
+ }
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (realIndex < insert_count) {
+ sel_media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
+ } else {
+ sel_media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
+ }
+
+ // toggle check status
+ sel_media_info->isChecked = !sel_media_info->isChecked;
+
+ elm_genlist_item_update(item);
+
+ //check condition for set select all item
+ if (total_count > 1 && sel_media_info->isChecked) {
+ i =0;
+ for (i = 0; i < total_count; i++) {
+ if (i < viewer_play_data->insert_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+ if (!tmp_media_info->isChecked) {
+ isAllSelected = FALSE;
+ break;
+ }
+ } else if (i < total_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+ if (!tmp_media_info->isChecked) {
+ isAllSelected = FALSE;
+ break;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+ }
+ }
+
+ if (isAllSelected) {
+ elm_check_state_set(viewer_play_data->sa_check, EINA_TRUE);
+ viewer_play_data->isSelectAll = EINA_TRUE;
+ }
+ }
+
+ // check condition for release select all item
+ if (total_count > 1 && !sel_media_info->isChecked && viewer_play_data->isSelectAll) {
+ elm_check_state_set(viewer_play_data->sa_check, EINA_FALSE);
+ viewer_play_data->isSelectAll = EINA_FALSE;
+ }
+
+ // check condition for enable save button item
+ for (i = 0; i < total_count; i++) {
+ if (i < viewer_play_data->insert_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+ if (tmp_media_info->isChecked) {
+ isNoneSelected = FALSE;
+ break;
+ }
+ } else if (i < total_count) {
+ tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+ if (tmp_media_info->isChecked) {
+ isNoneSelected = FALSE;
+ break;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+ }
+ }
+ elm_object_disabled_set(viewer_play_data->save_button, (isNoneSelected) ? EINA_TRUE : EINA_FALSE);
+ }
+}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "msg-ui-viewer-play-view.h"
-#include "msg-ui-viewer-main.h"
-#include "msg-ui-viewer-utility.h"
-#include "msg-ui-common-utility.h"
-#include "msg-ui-image-resource.h"
-
-#include <contacts.h>
-#include "appsvc.h"
-#include <utilX.h>
-#include <app_service.h>
-#include <syspopup_caller.h>
-#include <status.h>
-
-/*==================================================================================================
- * DEFINITIONS
- *==================================================================================================*/
-Elm_Genlist_Item_Class itc_popup = {0,}; /** itc for list style popup */
-
-/*==================================================================================================
- * FUNCTION DECLARATIONS
- *==================================================================================================*/
-/* genlist for multirecipients in title button */
-static char *__msg_ui_viewer_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object * __msg_ui_viewer_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_viewer_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_title_menu_del(void *data, Evas_Object *obj);
-static void __msg_ui_viewer_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-
-/*attachment list for help page */
-static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data);
-
-/* controllbar toolbar option */
-static void __msg_ui_viewer_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-
-/* save attachment popup */
-static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_protection_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-
-/*==================================================================================================
- * FUNCTION IMPLEMENTATIONS
- *================================================================================================*/
-Eina_Bool msg_ui_viewer_mouse_up_cb(void *data, int type, void *event)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
- MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
- SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
- int start_point = 0;
- int end_point = 0;
- int screen_width = 0;
- int rotate = 0;
-
- if (viewer_play_data->drag_volume_slider) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "volume slider is dragging, do not navigate page!");
- return FALSE;
- }
-
- play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
-
- /*get start and end point according to rotation*/
- rotate = elm_win_rotation_get(viewer_play_data->main_window);
- if (rotate == 0) { /*PORTRAIT mode*/
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT mode");
- start_point = viewer_play_data->m_x;
- end_point = ev->x;
- screen_width = viewer_play_data->window_width;
- } else if (rotate == 180) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT reverse mode");
- start_point = ev->x;
- end_point = viewer_play_data->m_x;
- screen_width = viewer_play_data->window_width;
- } else if (rotate == 90) { /*LANDSCAPE mode*/
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE mode");
- start_point = ev->y;
- end_point = viewer_play_data->m_y;
- screen_width = viewer_play_data->window_height;
- } else if (rotate == 270) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE reverse mode");
- start_point = viewer_play_data->m_y;
- end_point = ev->y;
- screen_width = viewer_play_data->window_height;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
- return FALSE;
- }
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "start_point = %d, end_point = %d, screen_width = %d", start_point, end_point, screen_width);
-
- if (end_point - start_point > screen_width / 4) {
- /* prev*/
- int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
- if (pageIdx >= 0) {
- if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
- } else {
- /* hide menu title genlist if player status is changed to play */
- if (viewer_play_data->title_menu_opened) {
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return EINA_FALSE;
- }
- }
- }
- /* show play controller */
- if (viewer_play_data->play_controller) {
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
- evas_object_show(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = true;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
-
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
- }
- /* set progressbar and progress text sync */
- if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
- msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx-1);
- }
- }
- }
- } else if (start_point - end_point > screen_width / 4) {
- /*next*/
- int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
- int total_page = viewer_play_data->smil_eventStatus->pageCnt;
- if (total_page >= pageIdx) {
- if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
- } else {
- /* hide menu title genlist if player status is changed to play */
- if (viewer_play_data->title_menu_opened) {
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return EINA_FALSE;
- }
- }
- }
- /* show play controller */
- if (viewer_play_data->play_controller) {
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
- evas_object_show(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = true;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
-
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
- }
- /* set progressbar and progress text sync */
- if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
- msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx);
- }
- }
- }
- }
-
- return EINA_TRUE;
-}
-
-Eina_Bool msg_ui_viewer_mouse_down_cb(void *data, int type, void *event)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
-
- viewer_play_data->m_x = ev->x;
- viewer_play_data->m_y = ev->y;
-
- if (viewer_play_data->mouse_up_event_handler) {
- ecore_event_handler_del(viewer_play_data->mouse_up_event_handler);
- viewer_play_data->mouse_up_event_handler = NULL;
- }
- viewer_play_data->mouse_up_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, msg_ui_viewer_mouse_up_cb, (void *) viewer_play_data);
-
- return EINA_TRUE;
-}
-
-void msg_ui_viewer_play_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Evas_Event_Mouse_Down *ev = event_info;
-
- viewer_play_data->ctrl_start_x = ev->canvas.x;
- viewer_play_data->ctrl_start_y = ev->canvas.y;
-}
-
-void msg_ui_viewer_play_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Evas_Event_Mouse_Up *ev = event_info;
-
- viewer_play_data->ctrl_end_x = ev->canvas.x;
- viewer_play_data->ctrl_end_y = ev->canvas.y;
-
- int screen_width = 0;
- int screen_height = 0;
- int rotate = 0;
-
- //get screen size
- rotate = elm_win_rotation_get(viewer_play_data->main_window);
- if (rotate == 0 || rotate == 180) {
- screen_width = viewer_play_data->window_width;
- screen_height = viewer_play_data->window_height;
- } else if (rotate == 90 || rotate == 270) {
- screen_width = viewer_play_data->window_height;
- screen_height = viewer_play_data->window_width;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
- return;
- }
-
- //check only case for playcontroller is not opened, the other case is checked within msg_ui_viewer_play_layout_clicked_cb
- if (!viewer_play_data->playcontroller_opened && !viewer_play_data->title_menu_opened) {
- if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 && abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 ) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is tapped and play controller should be displayed");
-
- if (viewer_play_data->play_controller) {
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
- evas_object_show(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = true;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
- //create play controller timer
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
- }
- }
- } else if (viewer_play_data->playcontroller_opened) {
- /* up/down drag condition - close play controller */
- if (abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) > screen_height / 5) {
- elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
- evas_object_hide(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = false;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
-
- msg_ui_viewer_destroy_play_controller_timer(viewer_play_data);
- }
- }
-}
-
-void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
-
- if (viewer_play_data->title_menu_opened) {
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
- } else if (viewer_play_data->playcontroller_opened) {
- int screen_width = 0;
- int screen_height = 0;
- int rotate = 0;
-
- //get screen size
- rotate = elm_win_rotation_get(viewer_play_data->main_window);
- if (rotate == 0 || rotate == 180) {
- screen_width = viewer_play_data->window_width;
- screen_height = viewer_play_data->window_height;
- } else if (rotate == 90 || rotate == 270) {
- screen_width = viewer_play_data->window_height;
- screen_height = viewer_play_data->window_width;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
- return;
- }
-
- if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 &&
- abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 &&
- viewer_play_data->ctrl_end_y < screen_height-(VIEWER_NAVIFRAME_BOTTOM_H+VIEWER_PLAY_CONTROLLER_HEIGHT)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is now displayed and play controller should be hided");
-
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
- elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
- evas_object_hide(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = false;
- //destroy play controller timer
- msg_ui_viewer_destroy_play_controller_timer(viewer_play_data);
- }
- }
-}
-
-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);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ASSERT, data == NULL, MSG_ERR_SMIL_UNKNOWN);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- bool isHelpText = false;
-
- viewer_play_data->render_entry = (Evas_Object *)entry;
-
- if (viewer_play_data->render_entry) {
- if (viewer_play_data->smil_eventStatus) {
- isHelpText = (viewer_play_data->smil_eventStatus->isHelpSlide) ? true : false;
- } else {
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
- isHelpText = (!slide || !slide->commonData) ? false : ((slide->commonData->pageCnt == 0) ? 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_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
- }
-
- return MSG_SMIL_SUCCESS;
-}
-
-void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- 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->mode : %d", viewer_play_data->mode);
-
- /*prevent invalid double pressing button event after launching ug or app(like call, vtcall)*/
- if (viewer_play_data->mode != MSG_VIEWER_DEFAULT_MODE)
- return;
-
- if (viewer_play_data->title_menu_opened)
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- if (viewer_play_data->status == MSG_VIEWER_PLAY || viewer_play_data->status == MSG_VIEWER_PAUSE) {
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_STOP);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
- }
-
- viewer_play_data->status = MSG_VIEWER_STOP;
- msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_STOP);
- }
-
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- if (!viewer_play_data->del_idler)
- viewer_play_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_play_data->viewer_main);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_title_button_clicked_cb(void * data, Evas_Object * obj, void * event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->title_menu_opened) {
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
- } else {
- msg_ui_viewer_open_title_menu_genlist(viewer_play_data);
-
- viewer_play_data->previous_status = viewer_play_data->status;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
-
- /* set player state to pause and update icon */
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_save_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
-
- /* check media count */
- if (viewer_play_data->insert_count + viewer_play_data->attach_count == 0) {
- msg_ui_viewer_show_popup(viewer_play_data, viewer_play_data->main_window, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NO_ATTACHMENTS"));
- return;
- }
-
- /* close title menu list if exist, else pause SMIL and save previous status */
- if (viewer_play_data->title_menu_opened) {
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
- } else {
- viewer_play_data->previous_status = viewer_play_data->status;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
-
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) { // pause
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- /* create popup for save attachments and insert items */
- msg_ui_viewer_create_save_attachments_popup(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_delete_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- 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);
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- /* Add protection on/off menu */
- bool is_protected = false;
- msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
- elm_object_text_set(popup, (is_protected) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
-
- Evas_Object *btn_ok = elm_button_add(popup);
- elm_object_style_set(btn_ok, "popup_button/default");
- elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
- elm_object_part_content_set(popup, "button1", btn_ok);
- evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_delete_ok_clicked_cb, viewer_play_data);
-
- Evas_Object *btn_cancel = elm_button_add(popup);
- elm_object_style_set(btn_cancel, "popup_button/default");
- elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
- elm_object_part_content_set(popup, "button2", btn_cancel);
- evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
-
- evas_object_show(popup);
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_DELETE_POPUP;
-
- /*disconnect mouse handler*/
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
-
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
- char str_id[DEF_BUF_LEN] = {0,};
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete msg-id is %d", viewer_play_data->msgID);
-
- if (viewer_play_data->msg_box_viewer) {
- if (msg_delete_message(viewer_play_data->msgHandle, viewer_play_data->msgID) == MSG_SUCCESS) {
- status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_message is failed");
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
- return;
- }
-
- } else {
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_DELETE_MSG);
-
- snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
-
- ug_send_result(viewer_main_data->viewer_ug, svc_handle);
- service_destroy(svc_handle);
- }
-
- /*destroy viewer*/
- ug_destroy_me(viewer_main_data->viewer_ug);
-
- return;
-}
-
-static void __msg_ui_viewer_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
-
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* connect handler again*/
- msg_ui_viewer_connect_handler(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-}
-
-void msg_ui_viewer_forward_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- char buf[DEF_BUF_LEN_S] = { 0, };
- service_h svc_handle;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* create and call composer-ug */
- if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
- } else {
- snprintf(buf, sizeof(buf), "%d", viewer_play_data->msgID);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, buf);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_FORWARD);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
- ui_gadget_h loaded_ug;
-
- loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->mode = MSG_VIEWER_LOAD_COMPOSER_UG;
- }
-
- service_destroy(svc_handle);
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_resend_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
- char str_id[DEF_BUF_LEN] = {0,};
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed msg-id is %d", viewer_play_data->msgID);
-
- service_h svc_handle = NULL;
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_RESEND);
-
- snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
-
- ug_send_result(viewer_main_data->viewer_ug, svc_handle);
- service_destroy(svc_handle);
-
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- /*destroy viewer*/
- ug_destroy_me(viewer_main_data->viewer_ug);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_reply_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
-
- int thread_id;
- msg_error_t err = MSG_SUCCESS;
- service_h svc_handle;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* get thread id value to check whether viewer is launched from bubble-composer or other external app(ug) */
- err = msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
-
- /* back to bubble-composer and request to show keypad */
- if (err == MSG_SUCCESS && thread_id > 0) {
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_REPLY);
- ug_send_result(viewer_main_data->viewer_ug, svc_handle);
-
- service_destroy(svc_handle);
-
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- /*destroy viewer*/
- ug_destroy_me(viewer_main_data->viewer_ug);
- } else { /* create new composer with reply number */
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- char *reply_addr = NULL;
- int contact_id = 0;
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &reply_addr, &contact_id);
-
- if (reply_addr) {
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, reply_addr);
- free(reply_addr);
- }
-
- ui_gadget_h loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->mode = MSG_VIEWER_LOAD_COMPOSER_UG;
- }
-
- service_destroy(svc_handle);
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_more_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- 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);
-
- MSG_BOOL hasText = FALSE;
- int page_count = 0;
- int media_count = 0;
- int folder_id = MSG_MAX_FOLDER_ID;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* set current status to previous status */
- viewer_play_data->previous_status = viewer_play_data->status;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
-
- /* set player state to pause*/
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
-
- Evas_Object *ctx_popup = NULL;
- ctx_popup = elm_ctxpopup_add(viewer_play_data->navi_frame);
- evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_viewer_more_ctxpopup_dismissed_cb, (void *)viewer_play_data);
-
- /* add delete menu */
- elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_OPT_DELETE"), NULL, msg_ui_viewer_delete_button_cb, (void *)viewer_play_data);
-
- /* Get folder ID and Add Resend / Reply menu */
- msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
-
- if (folder_id == MSG_OUTBOX_ID)
- elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESEND"), NULL, msg_ui_viewer_resend_button_cb, (void *)viewer_play_data);
- else if (folder_id == MSG_INBOX_ID)
- elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_REPLY"), NULL, msg_ui_viewer_reply_button_cb, (void *)viewer_play_data);
-
- /* Add FORWARD menu */
- elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), NULL, msg_ui_viewer_forward_button_cb, (void *)viewer_play_data);
-
- /* Add protection on/off menu */
- bool is_protected = false;
- msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Lock status of current message %d", is_protected);
-
- if (is_protected)
- elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_OFF"), NULL, __msg_ui_viewer_protection_cb, (void *)viewer_play_data);
- else
- elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_ON"), NULL, __msg_ui_viewer_protection_cb, (void *)viewer_play_data);
-
- /* Add Copy Message text menu */
- if (viewer_play_data->smil_eventStatus != NULL) {
- /* get msg body */
- msg_list_handle_t pagelist_info = NULL;
- msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
- page_count = msg_list_length(pagelist_info);
-
- msg_struct_t page_info = NULL;
- page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, viewer_play_data->smil_eventStatus->pageIdx);
- if (page_info) {
- int i = 0;
- msg_list_handle_t medialist_info = NULL;
- msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
- media_count = msg_list_length(medialist_info);
-
- for (i = 0; i < media_count; i++) {
- int mediaType;
- msg_struct_t media_info = NULL;
- media_info = (msg_struct_t)msg_list_nth_data(medialist_info, i);
-
- if (media_info == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "getting media has failed");
- continue;
- }
-
- msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
- if (mediaType != MMS_SMIL_MEDIA_TEXT)
- continue;
-
- hasText = TRUE;
- }
- }
- }
-
- if (hasText)
- elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"), NULL, __msg_ui_viewer_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
-
- /* Add view message details menu */
- elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"), NULL, __msg_ui_viewer_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
-
- // move ctx popup
- Evas_Coord x, y, w, h;
- evas_object_geometry_get(viewer_play_data->more_btn, &x, &y, &w, &h);
- evas_object_move(ctx_popup, x, y);
- evas_object_show(ctx_popup);
-
- viewer_play_data->popup = ctx_popup;
- viewer_play_data->popup_type = MSG_VIEWER_MENU_CTX_POPUP;
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_volume_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (!viewer_play_data->volumebar)
- msg_ui_viewer_create_volume_bar((void *)viewer_play_data);
- else
- msg_ui_viewer_destroy_volume_bar((void *)viewer_play_data);
-
- //create play controller timer repeatedly
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
-}
-
-void msg_ui_viewer_prev_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
-
- play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
-
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
-
- if (!strcmp(emission, "prev_clicked")) {
- /* prev*/
- int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
- if (pageIdx >= 0) {
- if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
- MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
- } else {
- //set progressbar and progress text sync
- if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
- msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx-1);
- }
- }
- }
-
- //create play controller timer repeatedly
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
-
- /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
- if (viewer_play_data->status == MSG_VIEWER_PLAY) {
- if (viewer_play_data->title_menu_opened)
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_play_pause_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, (viewer_play_data->status == MSG_VIEWER_PLAY) ? MSG_VIEWER_ACTION_TOOLBAR_PAUSE : MSG_VIEWER_ACTION_TOOLBAR_PLAY))
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_next_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (!strcmp(emission, "next_clicked"))
- {
- SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
-
- play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
-
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
- /*next*/
- int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
- int total_page = viewer_play_data->smil_eventStatus->pageCnt;
- if (total_page >= pageIdx) {
- if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
- MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
- if (err != MSG_SMIL_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
- } else {
- //set progressbar and progress text sync
- if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
- msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx);
- }
- }
- }
-
- //create play controller timer repeatedly
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
-
- /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
- if (viewer_play_data->status == MSG_VIEWER_PLAY) {
- if (viewer_play_data->title_menu_opened)
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
- }
- }
-}
-
-void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
- 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 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);
-
- int addr_count = addr_list->nCount; //get address count
-
- if (addr_count == 1) {
- service_h svc_handle = NULL;
- msg_struct_t addr_info = NULL;
- char szAddress[MAX_ADDRESS_VAL_LEN + 1] = {0,};
- addr_info = addr_list->msg_struct_info[0];
- msg_get_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, szAddress, MAX_ADDRESS_VAL_LEN);
-
- char *address = (char*)calloc(1, strlen(szAddress)+1);
- if (address == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
- return;
- }
-
- memcpy(address, szAddress, strlen(szAddress));
-
- 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;
- }
-
- service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
- service_set_app_id(svc_handle, "email-composer-efl");
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
- service_add_extra_data(svc_handle, SERVICE_DATA_TO, address);
-
- Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
- service_set_window(svc_handle, win_id);
-
- 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);
- service_destroy(svc_handle);
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- char telnum[255] = {0,};
- int err = 0;
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
-
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- snprintf(telnum, sizeof(telnum), "tel:%s", address); /* Number to make a call */
- service_set_uri(svc_handle, telnum);
- free(address);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
- service_destroy(svc_handle);
- return;
- }
-
- 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);
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_vcall_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- service_error_e err = SERVICE_ERROR_NONE;
- service_h svc_handle = NULL;
- char telnum[MAX_ADDRESS_VAL_LEN+5] = {0,};
- char contact_id[VIEWER_BUFFER_SIZE_64] = {0,};
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- snprintf(telnum, sizeof(telnum), "tel:%s", address);
- snprintf(contact_id, sizeof(contact_id), "%d", contactid);
- free(address);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
- service_destroy(svc_handle);
- return;
- }
-
- 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);
- 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);
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- ui_gadget_h loaded_ug = NULL;
- char buf[DEF_BUF_LEN_D] = { 0, };
-
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- if (strstr(address, "@")) {
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, address);
- } else {
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, address);
- }
- free(address);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
- service_destroy(svc_handle);
- return;
- }
-
- loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
- }
-
- service_destroy(svc_handle);
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_view_contact_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- ui_gadget_h loaded_ug = NULL;
- char contactId[DEF_BUF_LEN_S] = { 0, };
- char buf[DEF_BUF_LEN_D] = { 0, };
- char *address = NULL;
- int contact_id = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
-
- if (contact_id > 0 ) {
- service_h svc_handle = NULL;
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- snprintf(contactId, sizeof(contactId), "%d", contact_id);
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
-
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
-
- loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
- }
-
- service_destroy(svc_handle);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid contact_id = %d", contact_id);
- }
-
- if (address)
- free(address);
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_block_address_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
-
- Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- char *popup_text = NULL;
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- popup_text = g_strdup_printf(szbuf, address);
- free(address);
- if (!popup_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
- return;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
- return;
- }
-
- elm_object_text_set(popup, popup_text);
- free(popup_text);
-
- Evas_Object *btn_ok = elm_button_add(popup);
- elm_object_style_set(btn_ok, "popup_button/default");
- elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
- elm_object_part_content_set(popup, "button1", btn_ok);
- evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_block_ok_clicked_cb, viewer_play_data);
-
- Evas_Object *btn_cancel = elm_button_add(popup);
- elm_object_style_set(btn_cancel, "popup_button/default");
- elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
- elm_object_part_content_set(popup, "button2", btn_cancel);
- /* use same cb function with delete cancel button */
- evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
-
- evas_object_show(popup);
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
-
- /*disconnect mouse handler*/
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_toolbar_unblock_address_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
- int filter_id = 0;
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, address, &filter_id)) {
- msg_error_t err = MSG_SUCCESS;
- err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
- free(address);
- return;
- }
-
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
- char *message_text = g_strdup_printf(szbuf, address);
- if (!message_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
- free(address);
- return;
- }
- status_message_post(message_text);
- free(message_text);
-
- msg_ui_viewer_title_update(viewer_play_data, MSG_VIEWER_OPTION_BLOCK);
- }
- free(address);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
- return;
- }
-
- /* close title menu list */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
-
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
- msg_error_t err = MSG_SUCCESS;
-
- err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
- msg_release_struct(&filter);
- return;
- }
-
- char *address = NULL;
- int contactid = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
-
- if (address) {
- err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, address, strlen(address));
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
- msg_release_struct(&filter);
- free(address);
- return;
- }
-
- err = msg_add_filter(viewer_play_data->msgHandle, filter);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
- msg_release_struct(&filter);
- free(address);
- return;
- }
-
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
- char *message_text = g_strdup_printf(szbuf, address);
- if (!message_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
- msg_release_struct(&filter);
- free(address);
- return;
- }
-
- status_message_post(message_text);
- free(message_text);
- free(address);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
- msg_release_struct(&filter);
- return;
- }
-
- msg_release_struct(&filter);
- }
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- return;
-}
-
-
-void msg_ui_viewer_open_title_menu_genlist(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
- MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
- int i = 0;
-
- /* create box (for setting min size of genlist)*/
- Evas_Object *box = elm_box_add(viewer_play_data->play_layout);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(box);
-
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.title.menu", box);
-
- /* create genlist */
- Evas_Object *genlist = elm_genlist_add(box);
- elm_object_theme_set(genlist, viewer_play_data->title_th);
- evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_genlist_homogeneous_set(genlist, EINA_TRUE);
- evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
- evas_object_show(genlist);
-
- elm_box_pack_end(box, genlist);
-
- viewer_play_data->title_box_layout = box;
-
- int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
-
- if (addr_count == 1) {
- /* set genlist styles */
- viewer_play_data->itc_title_single.item_style = "1text.custom";
- viewer_play_data->itc_title_single.func.text_get = __msg_ui_viewer_title_menu_gl_text_get;
- viewer_play_data->itc_title_single.func.content_get = NULL;
- viewer_play_data->itc_title_single.func.state_get = NULL;
- viewer_play_data->itc_title_single.func.del = NULL;
-
- /* genlist list load */
- char *address = NULL;
- int contact_id = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
-
- if (!address) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
- return;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address = %s, contact_id = %d", address, contact_id);
-
- if (msg_common_is_valid_phone_number(address)) {
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_call_cb, viewer_play_data);
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_vcall_cb, viewer_play_data);
- } else if (msg_common_is_valid_email_addr(address)) {
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_email_cb, viewer_play_data);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
- }
-
- if (contact_id > 0)
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_view_contact_cb, viewer_play_data);
- else
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_add_to_contact_cb, viewer_play_data);
-
- if (msg_common_is_valid_phone_number(address)) {
- int filter_id = 0;
- if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, address, &filter_id))
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_unblock_address_cb, viewer_play_data);
- else
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_block_address_cb, viewer_play_data);
- }
-
- evas_object_size_hint_min_set(box, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * elm_genlist_items_count(genlist));
- free(address);
- } else {
- /* set genlist styles */
- viewer_play_data->itc_title.item_style = "2text.1icon.2.custom";
- viewer_play_data->itc_title.func.text_get = __msg_ui_viewer_title_menu_gl_text_get;
- viewer_play_data->itc_title.func.content_get = __msg_ui_viewer_title_menu_gl_content_get;
- viewer_play_data->itc_title.func.state_get = NULL;
- viewer_play_data->itc_title.func.del = __msg_ui_viewer_title_menu_del;
-
- /* genlist list load */
- for (i = 0; i < addr_count; i++) {
- addrInfo = (MSG_VIEWER_ADDR_INFO *)calloc(1, sizeof(MSG_VIEWER_ADDR_INFO));
- if (!addrInfo) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "addrInfo calloc failed");
- return;
- }
-
- char *address = NULL;
- int contact_id = 0;
-
- msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, i, &address, &contact_id);
-
- if (!address) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is null");
- free(addrInfo);
- return;
- }
- strncpy(addrInfo->address, address, MAX_ADDRESS_VAL_LEN);
- free(address);
-
- char *display_name = msg_viewer_util_get_display_name_by_index(contact_id);
- if (display_name) {
- strncpy(addrInfo->name, display_name, MAX_DISPLAY_NAME_LEN);
- free(display_name);
- }
-
- addrInfo->contact_id = contact_id;
-
- elm_genlist_item_append(genlist, &(viewer_play_data->itc_title), addrInfo, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_title_menu_gl_sel, viewer_play_data);
- }
-
- /* set genlist size */
- if (addr_count >= VIEWER_TITLE_MENU_GENLIST_MAX_ITEM)
- evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_LINE_HEIGHT * VIEWER_TITLE_MENU_GENLIST_MAX_ITEM * elm_config_scale_get());
- else
- evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_LINE_HEIGHT * addr_count * elm_config_scale_get());
- }
-
- /** emit signal for changing state of title menu list to open */
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,open", "");
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
-
- viewer_play_data->title_menu_opened = true;
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_close_title_menu_genlist(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
-
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,close", "");
-
- if (!viewer_play_data->playcontroller_opened)
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
-
- Evas_Object *layout = elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.title.menu");
- if (layout) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete box layout");
- evas_object_del(layout);
- }
-
- viewer_play_data->title_menu_opened = false;
- viewer_play_data->title_box_layout = NULL;
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static char *__msg_ui_viewer_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !addrInfo, NULL);
-
- if (g_strcmp0(part, "elm.text") == 0) {
- return strdup((char *)data);
- } else if (g_strcmp0(part, "elm.text.1") == 0) {
- if (addrInfo->contact_id > 0 && addrInfo->name[0] != '\0')
- return strdup(addrInfo->name);
- else if (addrInfo->address[0] != '\0')
- return strdup (addrInfo->address);
- else
- return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
- } else if (g_strcmp0(part, "elm.text.2") == 0) {
- if (addrInfo->address[0] != '\0')
- return strdup(addrInfo->address);
- else
- return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
- return NULL;
-}
-
-
-static Evas_Object * __msg_ui_viewer_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
- // Currently, this function do nothing, caller_id concept is not determined
- return NULL;
-}
-
-static void __msg_ui_viewer_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
-
- Elm_Object_Item *item = NULL;
- MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
-
- item = (Elm_Object_Item *)event_info;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !item, "Item is NULL or Item is not Message item\n");
-
- addrInfo = (MSG_VIEWER_ADDR_INFO *)elm_object_item_data_get(item);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, addrInfo == NULL, "item_data is NULL");
-
- elm_genlist_item_selected_set(item, 0);
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- Evas_Object *popup = NULL;
- Evas_Object *list = NULL;
- Evas_Object *btn_close = NULL;
-
- popup = elm_popup_add(viewer_play_data->main_window);
- elm_object_style_set(popup, "min_menustyle");
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- btn_close = elm_button_add(popup);
- elm_object_style_set(btn_close, "popup_button/default");
- elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
- elm_object_part_content_set(popup, "button1", btn_close);
- evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_title_menu_popup_close_clicked_cb, viewer_play_data);
-
- list = elm_list_add(popup);
- elm_list_mode_set(list, ELM_LIST_EXPAND);
-
- evas_object_data_set(list, "viewer_play_data", viewer_play_data);
-
- if (msg_common_is_valid_phone_number(addrInfo->address)) {
- elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- } else if (msg_common_is_valid_email_addr(addrInfo->address)) {
- elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
- }
-
- if (addrInfo->contact_id> 0) {
- elm_object_part_text_set(popup, "title,text", addrInfo->name);
- elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- } else {
- elm_object_part_text_set(popup, "title,text", addrInfo->address);
- elm_list_item_append(list, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- }
-
- if (msg_common_is_valid_phone_number(addrInfo->address)) {
- int filter_id = 0;
- if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, addrInfo->address, &filter_id))
- elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- else
- elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
- }
-
- elm_list_go(list);
- elm_object_content_set(popup, list);
- evas_object_show(popup);
-
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_TITLE_MENU_POPUP;
-
- /*disconnect mouse handler*/
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_title_menu_del(void *data, Evas_Object *obj)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL!");
-
- if (addrInfo)
- free(addrInfo);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* connect handler again*/
- msg_ui_viewer_connect_handler(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL");
- MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
- addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL");
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
-
- if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
- char telnum[255] = {0,};
- int err = 0;
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- 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 ((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);
- } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0) {
- service_error_e err = SERVICE_ERROR_NONE;
- service_h svc_handle = NULL;
- char telnum[MAX_ADDRESS_VAL_LEN+5] = {0,};
- char contact_id[VIEWER_BUFFER_SIZE_64] = {0,};
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- snprintf(telnum, sizeof(telnum), "tel:%s", addrInfo->address);
- snprintf(contact_id, sizeof(contact_id), "%d", addrInfo->contact_id);
-
- 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);
- 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);
- } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS")) == 0) { /* Add to contact with phone number string... */
- ui_gadget_h loaded_ug = NULL;
- char buf[DEF_BUF_LEN_D] = { 0, };
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- if (strstr(addrInfo->address, "@")) {
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, addrInfo->address);
- } else {
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, addrInfo->address);
- }
-
- loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
- }
-
- service_destroy(svc_handle);
- } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT")) == 0) {
- ui_gadget_h loaded_ug = NULL;
- char contactId[DEF_BUF_LEN_S] = { 0, };
- char buf[DEF_BUF_LEN_D] = { 0, };
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- snprintf(contactId, sizeof(contactId), "%d", addrInfo->contact_id);
- snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
-
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
- service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
-
- loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
-
- 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->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 err = SERVICE_ERROR_NONE;
-
- service_create(&svc_handle);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
-
- service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
- service_set_app_id(svc_handle, "email-composer-efl");
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
- service_add_extra_data(svc_handle, SERVICE_DATA_TO, addrInfo->address);
-
- Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
- service_set_window(svc_handle, win_id);
-
- 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);
- } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
- int filter_id = 0;
- if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, addrInfo->address, &filter_id)) {
- msg_error_t err = MSG_SUCCESS;
- err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
- return;
- }
-
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
-
- char *message_text = g_strdup_printf(szbuf, addrInfo->address);
- if (!message_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
- return;
- }
-
- status_message_post(message_text);
- free(message_text);
- }
- } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK")) == 0) {
- Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- char *popup_text = NULL;
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
-
- popup_text = g_strdup_printf(szbuf, addrInfo->address);
- if (!popup_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
- return;
- }
- elm_object_text_set(popup, popup_text);
- free(popup_text);
-
- Evas_Object *btn_ok = elm_button_add(popup);
- elm_object_style_set(btn_ok, "popup_button/default");
- elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
- elm_object_part_content_set(popup, "button1", btn_ok);
- evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_title_menu_block_ok_clicked_cb, viewer_play_data);
- evas_object_data_set(btn_ok, "addrInfo", addrInfo);
-
- Evas_Object *btn_cancel = elm_button_add(popup);
- elm_object_style_set(btn_cancel, "popup_button/default");
- elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
- elm_object_part_content_set(popup, "button2", btn_cancel);
- evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
-
- evas_object_show(popup);
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
-
- /* disconnect mouse handler */
- msg_ui_viewer_disconnect_handler(viewer_play_data);
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
-
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)evas_object_data_get(obj, "addrInfo");
- msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
- msg_error_t err = MSG_SUCCESS;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
- msg_release_struct(&filter);
- return;
- }
-
- err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, addrInfo->address, strlen(addrInfo->address));
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
- msg_release_struct(&filter);
- return;
- }
-
- err = msg_add_filter(viewer_play_data->msgHandle, filter);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
- msg_release_struct(&filter);
- return;
- }
-
- char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
- char *message_text = g_strdup_printf(szbuf, addrInfo->address);
- if (!message_text) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
- msg_release_struct(&filter);
- return;
- }
-
- status_message_post(message_text);
- free(message_text);
-
- msg_release_struct(&filter);
-
- /* close title menu popup */
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
-
- return;
-}
-
-void msg_ui_viewer_create_save_attachments_popup(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Evas_Object *popup = NULL;
- Evas_Object *box = NULL;
- Evas_Object *genlist = NULL;
- Evas_Object *btn_save = NULL;
- Evas_Object *btn_close = NULL;
- int index = 0;
- int total_media_count = 0;
- int popup_height = 0;
-
- /* destroy previous popup */
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- total_media_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
-
- /* create popup */
- popup = elm_popup_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- if (total_media_count > 3 )
- elm_object_style_set(popup, "menustyle");
- else
- elm_object_style_set(popup, "min_menustyle");
-
- /* set popup title */
- elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_ATTACHMENTS"));
-
- /* set select all genlist item style */
- viewer_play_data->attach_sa_class.item_style = "1text.1icon.2";
- viewer_play_data->attach_sa_class.func.text_get = __msg_ui_viewer_save_attachments_sa_gl_text_get;
- viewer_play_data->attach_sa_class.func.content_get = __msg_ui_viewer_save_attachments_sa_gl_content_get;
- viewer_play_data->attach_sa_class.func.state_get = NULL;
- viewer_play_data->attach_sa_class.func.del = NULL;
-
- /* set genlist style */
- viewer_play_data->attach_item_class.item_style = "1text.2icon.2";
- viewer_play_data->attach_item_class.func.text_get = __msg_ui_viewer_save_attachments_gl_text_get;
- viewer_play_data->attach_item_class.func.content_get = __msg_ui_viewer_save_attachments_gl_content_get;
- viewer_play_data->attach_item_class.func.state_get = NULL;
- viewer_play_data->attach_item_class.func.del = NULL;
-
- /* create genlist */
- genlist = elm_genlist_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
-
- /* add genlist item based on media count, if item's count is over 1 then 'select all' item should be inserted*/
- if (total_media_count > 1) {
- /* add Select all item */
- elm_genlist_item_append(genlist, &viewer_play_data->attach_sa_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_sa_gl_sel, NULL);
-
- /* add each item (order is inserted + attached) */
- for (index = 1; index < total_media_count+1; index++) {
- elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
- }
- } else {
- /* add each item (order is inserted + attached) */
- for (index = 0; index < total_media_count; index++) {
- elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
- }
- }
-
- /* add save button */
- btn_save = elm_button_add(popup);
- elm_object_style_set(btn_save, "popup_button/default");
- elm_object_text_set(btn_save, dgettext("sys_string", "IDS_COM_SK_SAVE"));
- elm_object_part_content_set(popup, "button1", btn_save);
- evas_object_smart_callback_add(btn_save, "clicked", __msg_ui_viewer_save_attachments_popup_save_clicked_cb, viewer_play_data);
- viewer_play_data->save_button = btn_save;
- elm_object_disabled_set(viewer_play_data->save_button, EINA_TRUE);
-
- /* add close button */
- btn_close = elm_button_add(popup);
- elm_object_style_set(btn_close, "popup_button/default");
- elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
- elm_object_part_content_set(popup, "button2", btn_close);
- evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb, viewer_play_data);
-
- /* set popup style */
- box = elm_box_add(viewer_play_data->main_window);
- popup_height = VIEWER_ATTACH_GL_ITEM_HEIGHT * ((total_media_count > 3) ? 4 : ((total_media_count > 1) ? total_media_count + 1 : total_media_count));
- evas_object_size_hint_min_set(box, 0, popup_height * elm_config_scale_get());
- evas_object_show(genlist);
- elm_box_pack_end(box, genlist);
- elm_object_content_set(popup, box);
-
- /* show popup */
- evas_object_show(popup);
- viewer_play_data->save_attachment_gl= genlist;
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_ATTACHMENTS_POPUP;
-
- /*disconnect mouse handler*/
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- int index = 0;
- int total_count = 0;
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->save_button);
- viewer_play_data->save_button = NULL;
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- viewer_play_data->popup = NULL;
- viewer_play_data->sa_check = NULL;
- }
-
- total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
-
- while (index < total_count) {
- if (index < viewer_play_data->insert_count)
- media_info = eina_list_nth(viewer_play_data->insert_list, index);
- else if (index < total_count)
- media_info = eina_list_nth(viewer_play_data->attach_list, index-viewer_play_data->insert_count);
- else
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!", index);
-
- if (media_info ) // disable check status
- media_info->isChecked = FALSE;
-
- index++;
- }
-
- viewer_play_data->isSelectAll = FALSE;
-
- /* connect handler again*/
- msg_ui_viewer_connect_handler(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
-
- int attach_count = 0;
- int insert_count = 0;
- int total_count = 0;
- int selected_count = 0;
-
- int index = 0;
- int insert_index = 0;
- int attach_index = 0;
- int failed_count = 0;
- int saved_count = 0;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->save_button);
- viewer_play_data->save_button = NULL;
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- viewer_play_data->popup = NULL;
- viewer_play_data->sa_check = NULL;
- }
-
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_Info = NULL;
-
- insert_count = eina_list_count(viewer_play_data->insert_list);
- attach_count = eina_list_count(viewer_play_data->attach_list);
- total_count = insert_count + attach_count;
-
- while (index < total_count) {
- if (index < insert_count)
- media_Info = eina_list_nth(viewer_play_data->insert_list , insert_index++);
- else if (index < total_count)
- media_Info = eina_list_nth(viewer_play_data->attach_list , attach_index++);
-
- if (media_Info) {
- bool saveCondition = (viewer_play_data->isSelectAll) ? TRUE : (media_Info->isChecked ? TRUE : FALSE);
-
- if (saveCondition) {
- selected_count++;
-
- /*get default file path*/
- MSG_BOOL result = FALSE;
- char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
-
- result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
- if (result) {
- char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
- snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, media_Info->pfile_name);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", media_Info->pfile_path);
-
- char *result_path = msg_ui_viewer_util_copy_file(media_Info->pfile_path, dst_path);
- if (result_path) {
- saved_count++;
- free(result_path);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
- failed_count++;
- }
- } else {
- failed_count++;
- }
-
- //release check status
- media_Info->isChecked = FALSE;
- if (viewer_play_data->isSelectAll)
- viewer_play_data->isSelectAll = FALSE;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
- }
-
- media_Info = NULL;
-
- index++;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Selected(%d) / Total(%d) [inserted(%d),attached(%d)]", selected_count, total_count, insert_count, attach_count);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Saved(%d), Failed(%d)", saved_count, failed_count);
-
- /* show indicator status text */
- if (failed_count == selected_count) {
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
- } else {
- if (selected_count == 1 && saved_count == 1) {
- status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
- } else {
- char buf[DEF_BUF_LEN_S + 1] = {0, };
- snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, selected_count);
- status_message_post(buf);
- }
- }
-
- /* connect handler again*/
- msg_ui_viewer_connect_handler(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- int index = (int)data;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
- if (!strcmp(part, "elm.text")) {
- if (index == 0) {
- return strdup(dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid index of select all(%d)", index);
- return NULL;
- }
- }
- return NULL;
-}
-
-static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- int index = (int)data;
- Evas_Object *check;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
- if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
- check = elm_check_add(obj);
- elm_check_state_pointer_set(check, &(viewer_play_data->isSelectAll));
- evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(check, "changed", __msg_ui_viewer_save_attachments_sa_check_changed_cb, viewer_play_data);
- viewer_play_data->sa_check = check;
-
- return check;
- }
-
- return NULL;
-}
-
-static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- int i = 0;
- Eina_List * realized_list;
- Elm_Object_Item *it;
- Eina_List *l;
- Eina_Bool checked;
-
- int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "total Count = %d", total_count);
- checked = elm_check_state_get(obj);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "checked status = %d", checked);
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
-
- for (i = 0; i < total_count; i++) {
- if (i < viewer_play_data->insert_count) {
- media_info = eina_list_nth(viewer_play_data->insert_list, i);
- media_info->isChecked = checked;
- } else if (i < total_count) {
- media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
- media_info->isChecked = checked;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
- }
- }
-
- // Update realized items only
- realized_list = elm_genlist_realized_items_get(viewer_play_data->save_attachment_gl);
- EINA_LIST_FOREACH(realized_list, l, it) {
- elm_genlist_item_update(it);
- }
-
-}
-
-static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
- int index = 0;
- int i = 0;
- int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
-
- Elm_Object_Item *item = (Elm_Object_Item *)event_info;
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
-
- if (item != NULL) {
- index = (int)elm_object_item_data_get(item);
- elm_genlist_item_selected_set(item, EINA_FALSE);
-
- viewer_play_data->isSelectAll = !viewer_play_data->isSelectAll;
-
- //check state changed cb will be called
- elm_check_state_set(viewer_play_data->sa_check, viewer_play_data->isSelectAll);
- elm_genlist_item_update(item);
-
- if (total_count > 1) {
- for (i = 0; i < total_count; i++) {
- if (i < viewer_play_data->insert_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
-
- } else if (i < total_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
- continue;
- }
- elm_check_state_set(tmp_media_info->check_item, (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE);
- tmp_media_info->isChecked = (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE;
- }
- }
- elm_object_disabled_set(viewer_play_data->save_button, (viewer_play_data->isSelectAll) ? EINA_FALSE : EINA_TRUE);
- }
-}
-
-static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
-
- int index = (int) data;
- int realIndex = 0;
- int insert_count = viewer_play_data->insert_count;
- int attach_count = viewer_play_data->attach_count;
- int total_count = insert_count + attach_count;
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
- realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
-
- // check boundary
- if (realIndex < 0 ) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
- return NULL;
- }
-
- if (!strcmp(part, "elm.text")) {
- if (realIndex < insert_count) {
- media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[INSERT MEDIA] name is = %s", media_info->pfile_name);
- } else if (realIndex < insert_count+attach_count) {
- media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[ATTACH MEDIA] name is = %s", media_info->pfile_name);
- }
-
- return strdup(media_info->pfile_name);
- }
- return NULL;
-}
-
-static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
- int index = (int)data;
- Evas_Object *check;
- int realIndex = index-1;
- int insert_count = viewer_play_data->insert_count;
- int attach_count = viewer_play_data->attach_count;
- int total_count = insert_count + attach_count;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
- realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
-
- // check boundary
- if (realIndex < 0 ) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
- return NULL;
- }
-
- if (realIndex < insert_count) {
- media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
- } else if (realIndex < total_count) {
- media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
- }
-
- if (strcmp(part, "elm.icon.1") == 0) {
- check = elm_check_add(obj);
- //set the State pointer to keep the current UI state of Checkbox.
- elm_check_state_pointer_set(check, &media_info->isChecked);
- evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- media_info->check_item = check;
-
- return check;
- } else if (strcmp(part, "elm.icon.2") == 0) {
- Evas_Object *image = NULL;
-
- image = elm_icon_add(obj);
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info->pfile_path = %s", media_info->pfile_path);
-
- /*set attach file icon*/
- if (media_info->media_type == MSG_VIEWER_MEDIA_IMG ||
- media_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
- elm_image_file_set(image, media_info->pfile_path, NULL);
- } else if (media_info->media_type == MSG_VIEWER_MEDIA_DRM) {
- elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
- } else {
- if (strlen(media_info->pfile_path)) {
- const char *icon_path = NULL;
-
- icon_path = msg_common_get_file_icon(media_info->pfile_path);
- if (icon_path) {
- elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
- } else {
- D_EMSG("icon_path is NULL");
- elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
- return NULL;
- }
- }
-
- if (image)
- evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
- return image;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
- }
-
- return NULL;
-}
-
-static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
-
- int i = 0;
- int index = 0;
- int realIndex = 0;
- int insert_count = viewer_play_data->insert_count;
- int attach_count = viewer_play_data->attach_count;
- int total_count = insert_count + attach_count;
- bool isAllSelected = TRUE;
- bool isNoneSelected = TRUE;
-
- Elm_Object_Item *item = (Elm_Object_Item *)event_info;
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *sel_media_info = NULL;
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
-
- if (item != NULL) {
- index = (int)elm_object_item_data_get(item);
- realIndex = (total_count > 1) ? index-1 : index; // calculate item index considering 'select all' item
-
- // check boundary
- if (realIndex < 0 ) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
- return;
- }
-
- elm_genlist_item_selected_set(item, EINA_FALSE);
-
- if (realIndex < insert_count) {
- sel_media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
- } else {
- sel_media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
- }
-
- // toggle check status
- sel_media_info->isChecked = !sel_media_info->isChecked;
-
- elm_genlist_item_update(item);
-
- //check condition for set select all item
- if (total_count > 1 && sel_media_info->isChecked) {
- i =0;
- for (i = 0; i < total_count; i++) {
- if (i < viewer_play_data->insert_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
- if (!tmp_media_info->isChecked) {
- isAllSelected = FALSE;
- break;
- }
- } else if (i < total_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
- if (!tmp_media_info->isChecked) {
- isAllSelected = FALSE;
- break;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
- }
- }
-
- if (isAllSelected) {
- elm_check_state_set(viewer_play_data->sa_check, EINA_TRUE);
- viewer_play_data->isSelectAll = EINA_TRUE;
- }
- }
-
- // check condition for release select all item
- if (total_count > 1 && !sel_media_info->isChecked && viewer_play_data->isSelectAll) {
- elm_check_state_set(viewer_play_data->sa_check, EINA_FALSE);
- viewer_play_data->isSelectAll = EINA_FALSE;
- }
-
- // check condition for enable save button item
- for (i = 0; i < total_count; i++) {
- if (i < viewer_play_data->insert_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
- if (tmp_media_info->isChecked) {
- isNoneSelected = FALSE;
- break;
- }
- } else if (i < total_count) {
- tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
- if (tmp_media_info->isChecked) {
- isNoneSelected = FALSE;
- break;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
- }
- }
- elm_object_disabled_set(viewer_play_data->save_button, (isNoneSelected) ? EINA_TRUE : EINA_FALSE);
- }
-}
-
-static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->attach_list == NULL);
-
- int attach_count = eina_list_count(viewer_play_data->attach_list);
- int index = 0;
- int attach_index = 0;
- int failed_count = 0;
- int saved_count = 0;
-
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttachInfo = NULL;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attach_cnt = %d", attach_count);
-
- while (index < attach_count) {
- pAttachInfo = eina_list_nth(viewer_play_data->attach_list , attach_index++);
-
- if (pAttachInfo) {
- /*get default file path*/
- MSG_BOOL result = FALSE;
- char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
-
- result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
- if (result) {
- char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
- snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttachInfo->pfile_name);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", pAttachInfo->pfile_path);
-
- char *result_path = msg_ui_viewer_util_copy_file(pAttachInfo->pfile_path, dst_path);
- if (result_path) {
- saved_count++;
- free(result_path);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
- failed_count++;
- }
- } else {
- failed_count++;
- }
-
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
- failed_count++;
- }
-
- pAttachInfo = NULL;
-
- index++;
- }
-
- /* show indicator status text */
- if (failed_count == attach_count) {
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
- } else {
- if (attach_count == 1 && failed_count == 0) {
- status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
- } else {
- char buf[DEF_BUF_LEN_S + 1] = {0, };
- snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, attach_count);
- status_message_post(buf);
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_help_page_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
- MSG_PLAY_DATA_S *viewer_play_data = pAttach_info->viewer_play_data;
-
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, "viewer_play_data is NULL");
-
- if (strlen(pAttach_info->pfile_path) == 0) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pfile_path is NULL");
- if (pAttach_info->isSaveAll == FALSE) {
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
- } else { //Save all
- __msg_ui_viewer_help_page_save_all_item(viewer_play_data);
- }
- return;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "source pfile_path = [%s]", pAttach_info->pfile_path);
- MSG_BOOL result = 0;
- MSG_BOOL issave = TRUE;
- char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
-
- /*get default file path*/
- result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
- if (result) {
- char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
- snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttach_info->pfile_name);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = [%s]", dst_path);
-
- char *result_path = msg_ui_viewer_util_copy_file(pAttach_info->pfile_path, dst_path);
- if (result_path) {
- free(result_path);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed, [src] = %s, [dst] = %s", pAttach_info->pfile_path, dst_path);
- issave = FALSE;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_viewer_util_get_default_path is failed");
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
- return;
- }
-
- if (issave)
- status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
- else
- status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB")) == 0) {
- msg_ui_viewer_copy_message_text_to_clipboard(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
- } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB")) == 0) {
- msg_ui_viewer_create_msg_detail_popup(viewer_play_data);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid list type");
- return;
- }
-
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_protection_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
-
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- 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);
-
- MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_main_data == NULL);
-
- msg_error_t err = MSG_SUCCESS;
- bool is_protected = false;
-
- msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
-
- /* get lock status and change status */
- err = msg_update_protected_status(viewer_play_data->msgHandle, viewer_play_data->msgID, ((is_protected) ? false : true));
-
- /* update message info */
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_update_protected_status is failed");
- return;
- }
-
- msg_set_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, !is_protected);
-
- /* delete ctx popup */
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* signal emit for showing/hiding lock icon */
- if (is_protected)
- edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/hide", "*");
- else
- edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/show", "*");
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-
- /* send refresh conversation result to bubble-composer ug */
- char str_id[DEF_BUF_LEN] = {0,};
- service_h svc_handle = NULL;
-
- service_create(&svc_handle);
- if (svc_handle < 0 || svc_handle == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create is failed");
- return;
- }
-
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_REFRESH_CONV);
-
- snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
- service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
-
- ug_send_result(viewer_main_data->viewer_ug, svc_handle);
-
- service_destroy(svc_handle);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-
-}
--- /dev/null
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ * INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+#include <status.h>
+
+/*==================================================================================================
+ * FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/*attachment list for help page */
+static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data);
+
+/* help page genlist */
+static void __msg_ui_viewer_help_page_item_selected_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+/*==================================================================================================
+ * FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E msg_ui_viewer_help_page_create_list(MSG_PLAY_DATA_S *data, void **attach_list, void *box)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Evas_Object *renderBox = (Evas_Object *)box;
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+ int attach_count = viewer_play_data->attach_count;
+ int attach_index = 0;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "attachment_count = %d", attach_count);
+
+ /* create box (for setting min size of genlist)*/
+ Evas_Object *box2 = elm_box_add(renderBox);
+ evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(box2);
+
+ if (attach_count > 0) {
+ if (attach_count > 1)
+ evas_object_size_hint_min_set(box2, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * (attach_count + 1) * elm_config_scale_get());
+ else
+ evas_object_size_hint_min_set(box2, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * attach_count * elm_config_scale_get());
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "No Attachment in message!");
+ }
+
+ if (attach_count > 1) {
+ Evas_Object *attach_item = elm_layout_add(box2);
+
+ elm_layout_file_set(attach_item, MSG_VIEWER_EDJ, "help_page_save_all");
+ evas_object_size_hint_weight_set(attach_item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(attach_item, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ /* add layout */
+ Evas_Object *attach_layout = elm_layout_add(box2);
+ elm_layout_theme_set(attach_layout, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(attach_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(attach_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(attach_layout);
+ elm_object_part_content_set(attach_layout, "elm.swallow.content", attach_item);
+
+ elm_box_pack_end(box2, attach_layout);
+ evas_object_show(attach_layout);
+
+ /* Add file name - Save All */
+ edje_object_part_text_set(_EDJ(attach_item), "item.filename.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"));
+
+ /* add Save icon */
+ Evas_Object *button = elm_button_add(attach_item);
+ Evas_Object *icon = elm_icon_add(attach_item);
+
+ elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_SAVE_ICON);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ elm_object_part_content_set(button, "icon", icon);
+ elm_object_style_set(button, "circle/empty");
+ elm_object_part_content_set(attach_item, "item.save.icon", button);
+
+ evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_help_page_save_all_button_clicked_cb, viewer_play_data);
+ evas_object_show(button);
+ }
+
+ /* add normal attach items */
+ for (attach_index = 0; attach_index < attach_count; attach_index++) {
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, attach_index);
+ if (pAttach_info == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info is NULL");
+ break;
+ } else {
+ Evas_Object *attach_item = elm_layout_add(box2);
+
+ elm_layout_file_set(attach_item, MSG_VIEWER_EDJ, "help_page_item");
+ evas_object_size_hint_weight_set(attach_item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(attach_item, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ /* add layout */
+ Evas_Object *attach_layout = elm_layout_add(box2);
+ elm_layout_theme_set(attach_layout, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(attach_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(attach_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(attach_layout);
+ elm_object_part_content_set(attach_layout, "elm.swallow.content", attach_item);
+
+ elm_box_pack_end(box2, attach_layout);
+ evas_object_show(attach_layout);
+
+ /* Add file thumbnail */
+ Evas_Object *thumb_nail = elm_icon_add(attach_item);
+
+ /*set attach file icon*/
+ if (pAttach_info->media_type == MSG_VIEWER_MEDIA_IMG || pAttach_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
+ elm_image_file_set(thumb_nail, pAttach_info->pfile_path, NULL);
+ } else if (pAttach_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+ elm_image_file_set(thumb_nail, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
+ } else {
+ if (strlen(pAttach_info->pfile_path)) {
+ const char *icon_path = NULL;
+
+ icon_path = msg_common_get_file_icon(pAttach_info->pfile_path);
+ if (icon_path) {
+ elm_image_file_set(thumb_nail, MSG_IMAGES_EDJ, icon_path);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "icon_path is NULL");
+ elm_image_file_set(thumb_nail, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
+ }
+ }
+
+ if (thumb_nail) evas_object_size_hint_aspect_set(thumb_nail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ elm_object_part_content_set(attach_item, "item.thumbnail.icon", thumb_nail);
+
+ /* Add file name */
+ edje_object_part_text_set(_EDJ(attach_item), "item.filename.text", pAttach_info->pfile_name);
+
+ /* Total file size */
+ Eina_Strbuf *text_buf = eina_strbuf_new();
+ eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+
+ char size[DEF_BUF_LEN] = {0,};
+ long long sizeKB = 0;
+ long long sizeB = 0;
+
+ if (pAttach_info->pfile_size < VIEWER_DETAILS_TEXT_MSG_SIZE_KB) {
+ snprintf(size, sizeof(size), "1 %s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+ } else {
+ sizeKB = (long long)(pAttach_info->pfile_size)/VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+ sizeB = (long long)(pAttach_info->pfile_size)%VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+
+ if (sizeB >= (VIEWER_DETAILS_TEXT_MSG_SIZE_KB/2))
+ sizeKB++;
+
+ snprintf(size, sizeof(size), "%lld %s", sizeKB, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+ }
+
+ eina_strbuf_append(text_buf, size);
+ eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+
+ char *size_text = strdup(eina_strbuf_string_get(text_buf));
+ eina_strbuf_free(text_buf);
+
+ edje_object_part_text_set(_EDJ(attach_item), "item.filesize.text", size_text);
+ free(size_text);
+
+ /* add Save icon */
+ Evas_Object *button = elm_button_add(attach_item);
+ Evas_Object *icon = elm_icon_add(attach_item);
+
+ elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_SAVE_ICON);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ elm_object_part_content_set(button, "icon", icon);
+ elm_object_style_set(button, "circle/empty");
+ elm_object_part_content_set(attach_item, "item.save.icon", button);
+
+ evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_help_page_save_button_clicked_cb, pAttach_info);
+ evas_object_show(button);
+
+ /* add signal */
+ edje_object_signal_callback_add(_EDJ(attach_item), "clicked", "*", __msg_ui_viewer_help_page_item_selected_cb, pAttach_info);
+ }
+ }
+
+ elm_box_pack_end(renderBox, box2);
+
+ return err;
+}
+
+static void __msg_ui_viewer_help_page_item_selected_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+
+ service_h svc_handle = NULL;
+ service_error_e err = MSG_SUCCESS;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name = [%s]", pAttach_info->pfile_name);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path = [%s]", pAttach_info->pfile_path);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "emedia_type = %d", pAttach_info->media_type);
+
+ //Save all item
+ if (!strcmp(pAttach_info->pfile_name, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"))) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Save all item");
+ return;
+ }
+
+ if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+ return;
+ }
+
+ service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+ service_set_uri(svc_handle, pAttach_info->pfile_path);
+
+ err = service_send_launch_request(svc_handle, NULL, NULL);
+ 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)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
+ }
+
+ service_destroy(svc_handle);
+
+ return;
+}
+
+
+static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->attach_list == NULL);
+
+ int attach_count = eina_list_count(viewer_play_data->attach_list);
+ int index = 0;
+ int attach_index = 0;
+ int failed_count = 0;
+ int saved_count = 0;
+
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttachInfo = NULL;
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attach_cnt = %d", attach_count);
+
+ while (index < attach_count) {
+ pAttachInfo = eina_list_nth(viewer_play_data->attach_list , attach_index++);
+
+ if (pAttachInfo) {
+ /*get default file path*/
+ MSG_BOOL result = FALSE;
+ char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+ result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+ if (result) {
+ char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+ snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttachInfo->pfile_name);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", pAttachInfo->pfile_path);
+
+ char *result_path = msg_ui_viewer_util_copy_file(pAttachInfo->pfile_path, dst_path);
+ if (result_path) {
+ saved_count++;
+ free(result_path);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
+ failed_count++;
+ }
+ } else {
+ failed_count++;
+ }
+
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
+ failed_count++;
+ }
+
+ pAttachInfo = NULL;
+
+ index++;
+ }
+
+ /* show indicator status text */
+ if (failed_count == attach_count) {
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+ } else {
+ if (attach_count == 1 && failed_count == 0) {
+ status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+ } else {
+ char buf[DEF_BUF_LEN_S + 1] = {0, };
+ snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, attach_count);
+ status_message_post(buf);
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_help_page_save_all_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, "viewer_play_data is NULL");
+
+ __msg_ui_viewer_help_page_save_all_item(viewer_play_data);
+}
+
+void msg_ui_viewer_help_page_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+ MSG_PLAY_DATA_S *viewer_play_data = pAttach_info->viewer_play_data;
+
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, "viewer_play_data is NULL");
+
+ if (strlen(pAttach_info->pfile_path) != 0) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "source pfile_path = [%s]", pAttach_info->pfile_path);
+ MSG_BOOL result = 0;
+ MSG_BOOL issave = TRUE;
+ char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+ /*get default file path*/
+ result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+ if (result) {
+ char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+ snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttach_info->pfile_name);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = [%s]", dst_path);
+
+ char *result_path = msg_ui_viewer_util_copy_file(pAttach_info->pfile_path, dst_path);
+ if (result_path) {
+ free(result_path);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed, [src] = %s, [dst] = %s", pAttach_info->pfile_path, dst_path);
+ issave = FALSE;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_viewer_util_get_default_path is failed");
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+ return;
+ }
+
+ if (issave)
+ status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+ else
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
#include <msg.h>
#include <msg_storage.h>
#include <msg_transport.h>
-
-#include <Ecore_X.h>
-#include <utilX.h>
-#include <glib.h>
#include <contacts.h>
-#include "appsvc.h"
-#include <sound_manager.h>
#include <status.h>
/*==================================================================================================
static MSG_BOOL __msg_ui_viewer_play_view_get_message_info(void *data);
static Eina_List* __msg_ui_viewer_get_inserted_item_list(MSG_PLAY_DATA_S *data);
static Eina_List* __msg_ui_viewer_get_attach_list(MSG_PLAY_DATA_S *data);
-static void __msg_ui_viewer_init_font_size(MSG_PLAY_DATA_S *data);
-static void __msg_ui_viewer_vconf_changed_cb(keynode_t *key, void *data);
/* create layout */
static void __msg_ui_viewer_create_subject_index_layout(MSG_PLAY_DATA_S *data);
static MSG_BOOL __msg_ui_viewer_create_content_layout(MSG_PLAY_DATA_S *data);
-static void __msg_ui_viewer_create_play_controller(MSG_PLAY_DATA_S *data);
static void __msg_ui_viewer_create_control_toolbar(MSG_PLAY_DATA_S *data);
static void __msg_ui_viewer_get_layout_size(MSG_PLAY_DATA_S *data, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
-/* help page genlist */
-static char *__msg_ui_viewer_help_page_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object *__msg_ui_viewer_help_page_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_help_page_gl_del(void *data, Evas_Object *obj);
-
-/* message details */
-static void __msg_ui_viewer_message_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-
-/* volume key action related with volume bar */
-static void __msg_ui_viewer_grab_volume_key(void *data);
-static void __msg_ui_viewer_ungrab_volume_key(void *data);
-static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj);
-static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj);
-
-/* volume action with volume key and slide callback */
-static Eina_Bool __msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event);
-static Eina_Bool __msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event);
-static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data);
-static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data);
-static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data);
-
-/* volume action related with volumebar slider */
-static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event);
-static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb);
-
-/* volume action related with SOUNDMANAGER */
-static int __msg_ui_viewer_get_max_volume(void);
-static int __msg_ui_viewer_get_current_volume(void);
-static bool __msg_ui_viewer_set_volume(int volume);
-
+/* drm check popup */
+static void __msg_ui_viewer_get_drm_ro_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_get_drm_ro_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
/*==================================================================================================
* FUNCTION IMPLEMENTATIONS
*================================================================================================*/
viewer_play_data->smil_eventStatus = eventStatus;
/*update prev/next button*/
- msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_UNKOWN);
+ msg_ui_viewer_play_controller_update(viewer_play_data, MSG_VIEWER_UNKOWN);
/*for Multipart.Mixed "Slide" count info.*/
if (eventStatus->pageCnt == 0 && eventStatus->clientCbEvent != SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START)
}
} else if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START ||
eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAGE_PLAY_START) { /*slide is playing*/
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, eventStatus->pageIdx);
+
double current_slide_time = 0.0;
double remain_slide_time = 0.0;
double remain_next_slide_time = 0.0;
current_slide_time = remain_slide_time;
}
- if (current_slide_time <= 0) { //for infinite duration slide, duration <= 0
- if (viewer_play_data->play_controller_progressbar_timer)
- ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
- } else {
- if (viewer_play_data->play_controller_progressbar_timer)
- ecore_timer_thaw(viewer_play_data->play_controller_progressbar_timer);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "current_slide_time = %d", current_slide_time);
+
+ if (current_slide_time <= 0) //for infinite duration slide, duration <= 0
+ ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+ else
+ ecore_timer_thaw(viewer_play_data->play_controller_progressbar_timer);
+
+ SMIL_SLIDE_INFO_S *cur_slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+
+ // request PLAYER to start for video & audio media
+ if (cur_slide->slideStatus == PLAYER_STATUS_PLAYING) {
+ if (cur_slide->pageInfo && (cur_slide->pageInfo->hasAudio || cur_slide->pageInfo->hasVideo))
+ msg_smil_request_player_start(viewer_play_data->SmilHandle);
}
//set pause icon in play controller
- if (viewer_play_data->play_controller)
+ if (viewer_play_data->play_controller) {
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
+ }
viewer_play_data->status = MSG_VIEWER_PLAY;
} else if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE || eventStatus->clientCbEvent == SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED) {
edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
//do not delete progressbar timer, it will be removed automatically in timer callback with return value ECORE_CALLBACK_CANCEL
viewer_play_data->status = MSG_VIEWER_STOP;
- msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_STOP);
+ msg_ui_viewer_play_controller_update(viewer_play_data, MSG_VIEWER_STOP);
} else {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler is failed");
}
return MSG_SMIL_SUCCESS;
}
-void msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status)
+Eina_Bool msg_ui_viewer_mouse_up_cb(void *data, int type, void *event)
{
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_BOOL bfisrt_page = FALSE;
- MSG_BOOL blast_page = FALSE;
- SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus = viewer_play_data->smil_eventStatus;
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+ SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+ int start_point = 0;
+ int end_point = 0;
+ int screen_width = 0;
+ int rotate = 0;
+
+ if (viewer_play_data->drag_volume_slider) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "volume slider is dragging, do not navigate page!");
+ return FALSE;
+ }
- if (status == MSG_VIEWER_STOP) {
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
- }
+ play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+ /*get start and end point according to rotation*/
+ rotate = elm_win_rotation_get(viewer_play_data->main_window);
+ if (rotate == 0) { /*PORTRAIT mode*/
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT mode");
+ start_point = viewer_play_data->m_x;
+ end_point = ev->x;
+ screen_width = viewer_play_data->window_width;
+ } else if (rotate == 180) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT reverse mode");
+ start_point = ev->x;
+ end_point = viewer_play_data->m_x;
+ screen_width = viewer_play_data->window_width;
+ } else if (rotate == 90) { /*LANDSCAPE mode*/
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE mode");
+ start_point = ev->y;
+ end_point = viewer_play_data->m_y;
+ screen_width = viewer_play_data->window_height;
+ } else if (rotate == 270) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE reverse mode");
+ start_point = viewer_play_data->m_y;
+ end_point = ev->y;
+ screen_width = viewer_play_data->window_height;
} else {
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, eventStatus == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide->commonData == NULL);
- if (slide->commonData->pageCnt > 0) {
- if (slide->pageIdx == 0)
- bfisrt_page = TRUE;
-
- if (slide->pageIdx + 1 == slide->commonData->pageCnt)
- blast_page = TRUE;
-
- if (bfisrt_page) { /*first page*/
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+ return FALSE;
+ }
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "start_point = %d, end_point = %d, screen_width = %d", start_point, end_point, screen_width);
+
+ if (end_point - start_point > screen_width / 4) {
+ /* prev*/
+ int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
+ if (pageIdx > 0) {
+ if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+ } else {
+ /* hide menu title genlist if player status is changed to play */
+ if (viewer_play_data->title_menu_opened) {
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return EINA_FALSE;
+ }
+ }
+ }
+ /* show play controller */
+ if (viewer_play_data->play_controller) {
+ if (!viewer_play_data->is_rotated) {
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+ evas_object_show(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = true;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+ }
+ }
+ /* set progressbar and progress text sync */
+ if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, pageIdx-1);
}
- } else {
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_enable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable prev_button");
+ }
+ }
+ } else if (start_point - end_point > screen_width / 4) {
+ /*next*/
+ int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
+ int total_page = viewer_play_data->smil_eventStatus->pageCnt;
+ if (total_page > pageIdx) {
+ if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+ } else {
+ /* hide menu title genlist if player status is changed to play */
+ if (viewer_play_data->title_menu_opened) {
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return EINA_FALSE;
+ }
+ }
+ }
+ /* show play controller */
+ if (viewer_play_data->play_controller) {
+ if (!viewer_play_data->is_rotated) {
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+ evas_object_show(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = true;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+ }
+ }
+ /* set progressbar and progress text sync */
+ if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, pageIdx);
}
}
+ }
+ }
- if (blast_page) { /*lastpage*/
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
- }
- } else {
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_enable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable next_button");
+ return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_viewer_mouse_down_cb(void *data, int type, void *event)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
+
+ viewer_play_data->m_x = ev->x;
+ viewer_play_data->m_y = ev->y;
+
+ if (viewer_play_data->mouse_up_event_handler) {
+ ecore_event_handler_del(viewer_play_data->mouse_up_event_handler);
+ viewer_play_data->mouse_up_event_handler = NULL;
+ }
+ viewer_play_data->mouse_up_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, msg_ui_viewer_mouse_up_cb, (void *) viewer_play_data);
+
+ return EINA_TRUE;
+}
+
+void msg_ui_viewer_play_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Evas_Event_Mouse_Down *ev = event_info;
+
+ viewer_play_data->ctrl_start_x = ev->canvas.x;
+ viewer_play_data->ctrl_start_y = ev->canvas.y;
+}
+
+void msg_ui_viewer_play_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Evas_Event_Mouse_Up *ev = event_info;
+
+ viewer_play_data->ctrl_end_x = ev->canvas.x;
+ viewer_play_data->ctrl_end_y = ev->canvas.y;
+
+ int screen_width = 0;
+ int screen_height = 0;
+ int rotate = 0;
+
+ //get screen size
+ rotate = elm_win_rotation_get(viewer_play_data->main_window);
+ if (rotate == 0 || rotate == 180) {
+ screen_width = viewer_play_data->window_width;
+ screen_height = viewer_play_data->window_height;
+ } else if (rotate == 90 || rotate == 270) {
+ screen_width = viewer_play_data->window_height;
+ screen_height = viewer_play_data->window_width;
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+ return;
+ }
+
+ //check only case for playcontroller is not opened, the other case is checked within msg_ui_viewer_play_layout_clicked_cb
+ if (!viewer_play_data->playcontroller_opened && !viewer_play_data->title_menu_opened) {
+ if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 && abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 ) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is tapped and play controller should be displayed");
+
+ if (viewer_play_data->play_controller) {
+ if (!viewer_play_data->is_rotated) {
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+ evas_object_show(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = true;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+ evas_object_show(viewer_play_data->play_layout);
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
}
}
+ }
+ } else if (!viewer_play_data->is_rotated && viewer_play_data->playcontroller_opened) {
+ /* up/down drag condition - close play controller */
+ if (abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) > screen_height / 5) {
+ elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+ evas_object_hide(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = false;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
- /*smil player is finished*/
- if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE &&
- eventStatus->isLastSlide == TRUE) {
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
- }
+ msg_ui_viewer_play_controller_destroy_timer(viewer_play_data);
+ }
+ }
+}
+
+void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+ if (viewer_play_data->title_menu_opened) {
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
}
+ }
+ } else if (viewer_play_data->playcontroller_opened) {
+ int screen_width = 0;
+ int screen_height = 0;
+ int rotate = 0;
+
+ //get screen size
+ rotate = elm_win_rotation_get(viewer_play_data->main_window);
+ if (rotate == 0 || rotate == 180) {
+ screen_width = viewer_play_data->window_width;
+ screen_height = viewer_play_data->window_height;
+ } else if (rotate == 90 || rotate == 270) {
+ screen_width = viewer_play_data->window_height;
+ screen_height = viewer_play_data->window_width;
} else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart.mixed message");
- if (viewer_play_data->play_controller) {
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
- edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+ return;
+ }
+
+ if (!viewer_play_data->is_rotated) {
+ if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 &&
+ abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 &&
+ viewer_play_data->ctrl_end_y < screen_height-(VIEWER_NAVIFRAME_BOTTOM_H+VIEWER_PLAY_CONTROLLER_HEIGHT)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is now displayed and play controller should be hided");
+
+ elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+ evas_object_hide(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = false;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+
+ msg_ui_viewer_play_controller_destroy_timer(viewer_play_data);
}
}
}
+}
+
+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 launch_cmd and cmd_type*/
+ 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;
+}
+
+void msg_ui_viewer_display_drm_list_popup(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_text_set(popup, (char *)"This is DRM file. Buy it?");
+
+ /* Add protection on/off menu */
+ Evas_Object *btn_ok = elm_button_add(popup);
+ elm_object_style_set(btn_ok, "popup_button/default");
+ elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn_ok);
+ evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_get_drm_ro_ok_clicked_cb, viewer_play_data);
+
+ Evas_Object *btn_cancel = elm_button_add(popup);
+ elm_object_style_set(btn_cancel, "popup_button/default");
+ elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn_cancel);
+ evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_get_drm_ro_cancel_clicked_cb, viewer_play_data);
+
+ evas_object_show(popup);
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_NORMAL_POPUP;
+
+ /*disconnect mouse handler*/
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+}
+
+static void __msg_ui_viewer_get_drm_ro_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ msg_ui_viewer_show_view_by_mode(viewer_main_data, MSG_VIEWER_DRM_LIST_VIEW, MSG_VIEWER_VIEW_CMD_NONE);
+}
+
+static void __msg_ui_viewer_get_drm_ro_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ /* create play controller */
+ msg_ui_viewer_play_controller_create(viewer_play_data);
+
+ if (viewer_play_data->SmilHandle) {
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_START);
+
+ if (err != MSG_SMIL_SUCCESS)
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler is failed! : %d", err);
+ }
+}
+
+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);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ASSERT, data == NULL, MSG_ERR_SMIL_UNKNOWN);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ viewer_play_data->render_entry = (Evas_Object *)entry;
+
+ if (viewer_play_data->render_entry) {
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+ msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
+ }
+
+ return MSG_SMIL_SUCCESS;
+}
+
+void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ 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->mode : %d", viewer_play_data->mode);
+
+ /*prevent invalid double pressing button event after launching ug or app(like call, vtcall)*/
+ if (viewer_play_data->mode != MSG_VIEWER_DEFAULT_MODE)
+ return;
+
+ if (viewer_play_data->title_menu_opened)
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ if (viewer_play_data->status == MSG_VIEWER_PLAY || viewer_play_data->status == MSG_VIEWER_PAUSE) {
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_STOP);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+ }
+
+ viewer_play_data->status = MSG_VIEWER_STOP;
+ msg_ui_viewer_play_controller_update(viewer_play_data, MSG_VIEWER_STOP);
+ }
+
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ if (!viewer_play_data->del_idler)
+ viewer_play_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_play_data->viewer_main);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
} else {
if (viewer_play_data->play_controller) {
edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
- msg_ui_viewer_create_progressbar(viewer_play_data, 0);
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, 0);
}
viewer_play_data->status = MSG_VIEWER_PLAY;
}
/* refreshing play controller timer by button action */
if (action == MSG_VIEWER_ACTION_TOOLBAR_PLAY) {
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
if (viewer_play_data->title_menu_opened)
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
viewer_play_data->auto_resume_state = true;
} else if (action == MSG_VIEWER_ACTION_TOOLBAR_PAUSE) {
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
viewer_play_data->auto_resume_state = false;
} else {
/* case for not button action */
if (viewer_play_data->status == MSG_VIEWER_PLAY) {
if (viewer_play_data->title_menu_opened)
- msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
/* show play controller again to notify SMIL is resumed */
if (viewer_play_data->play_controller && !viewer_play_data->playcontroller_opened) {
evas_object_show(viewer_play_data->play_controller);
viewer_play_data->playcontroller_opened = true;
elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
}
} else if (viewer_play_data->status == MSG_VIEWER_PAUSE) {
if (viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
evas_object_show(viewer_play_data->play_controller);
viewer_play_data->playcontroller_opened = true;
elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
}
}
}
viewer_play_data->subject_index_layout = NULL;
viewer_play_data->play_controller = NULL;
viewer_play_data->play_layout = NULL;
- viewer_play_data->help_page_gl = NULL;
viewer_play_data->save_attachment_gl = NULL;
viewer_play_data->render_entry = NULL;
viewer_play_data->save_button = NULL;
viewer_play_data->playcontroller_opened = 0;
viewer_play_data->auto_resume_state = true;
viewer_play_data->drag_volume_slider = false;
+ viewer_play_data->is_rotated = 0;
viewer_play_data->volkey_release_handler = NULL;
viewer_play_data->volkey_press_handler = NULL;
viewer_play_data->vol_up_key_longpress = NULL;
}
}
- if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb) < 0) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "unregister failed in vconf_notify_key_changed with key[%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
- }
- if (vconf_ignore_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb) < 0) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "unregister failed in vconf_notify_key_changed with key[%s]", VCONFKEY_MSG_APP_FONT_SIZE);
- }
-
if (viewer_play_data->insert_list) {
int index = 0;
int ntotal = 0;
viewer_play_data->del_idler = NULL;
}
- if (viewer_play_data->help_page_gl) {
- evas_object_del(viewer_play_data->help_page_gl);
- viewer_play_data->help_page_gl = NULL;
- }
-
if (viewer_play_data->play_controller_timer) {
ecore_timer_del(viewer_play_data->play_controller_timer);
viewer_play_data->play_controller_timer = NULL;
if (!viewer_play_data->mouse_down_event_handler)
viewer_play_data->mouse_down_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, msg_ui_viewer_mouse_down_cb, (void *)viewer_play_data);
- __msg_ui_viewer_grab_volume_key(viewer_play_data);
+ msg_ui_viewer_grab_volume_key(viewer_play_data);
/* connect key handler for volume up/down */
if (!viewer_play_data->volkey_release_handler)
- viewer_play_data->volkey_release_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, __msg_ui_viewer_volume_key_release_cb, (void *)viewer_play_data);
+ viewer_play_data->volkey_release_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, msg_ui_viewer_volume_key_release_cb, (void *)viewer_play_data);
if (!viewer_play_data->volkey_press_handler)
- viewer_play_data->volkey_press_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __msg_ui_viewer_volume_key_press_cb, (void *)viewer_play_data);
+ viewer_play_data->volkey_press_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, msg_ui_viewer_volume_key_press_cb, (void *)viewer_play_data);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
if (viewer_play_data->vol_down_key_longpress) {
ecore_timer_del(viewer_play_data->vol_down_key_longpress);
viewer_play_data->vol_down_key_longpress = NULL;
- }
+ }
- __msg_ui_viewer_ungrab_volume_key(viewer_play_data);
+ msg_ui_viewer_ungrab_volume_key(viewer_play_data);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
Evas_Object *layout = NULL;
MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+ int rotate = 0;
viewer_play_data->xdisplay = ecore_x_display_get();
if (viewer_play_data->xdisplay == NULL) {
if (__msg_ui_viewer_play_view_get_message_info(viewer_play_data) == FALSE)
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_ui_viewer_play_view_get_content_count is failed");
+ rotate = elm_win_rotation_get(viewer_play_data->main_window);
+ viewer_play_data->is_rotated = (rotate == 90 || rotate == 270) ? true : false;
+
layout = msg_ui_viewer_get_main_layout(viewer_play_data->viewer_main);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, layout == NULL, FALSE);
/* create naviframe */
if (!viewer_play_data->navi_frame) {
- viewer_play_data->navi_frame = msg_ui_viewer_create_navigation_layout(layout);
+ viewer_play_data->navi_frame = msg_ui_viewer_create_navigation_layout(viewer_play_data, layout);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->navi_frame == NULL, FALSE);
msg_ui_viewer_set_navi_frame(viewer_play_data->viewer_main, viewer_play_data->navi_frame);
} else {
msg_ui_viewer_set_navi_title_layout(viewer_play_data);
}
- /* register vconf notify */
- if (vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb, viewer_play_data) < 0) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "register failed in vconf_notify_key_changed with key[%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
- }
- if (vconf_notify_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb, viewer_play_data) < 0) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "register failed in vconf_notify_key_changed with key[%s]", VCONFKEY_MSG_APP_FONT_SIZE);
- }
-
/* font size set */
- __msg_ui_viewer_init_font_size(viewer_play_data);
+ msg_ui_viewer_apply_font_size(viewer_play_data);
/* create subject & index layout */
__msg_ui_viewer_create_subject_index_layout(viewer_play_data);
- /* create page navigator */
- __msg_ui_viewer_create_play_controller(viewer_play_data);
/* create control toolbar */
__msg_ui_viewer_create_control_toolbar(viewer_play_data);
/* connect handlers */
return FALSE;
/*register help page show callback to renderer */
- if (msg_smil_set_smil_player_help_page_cb(viewer_play_data->SmilHandle, msg_ui_viewer_help_page_smilrenderer_cb, (void *)viewer_play_data) == FALSE)
+ if (msg_smil_set_smil_player_help_page_cb(viewer_play_data->SmilHandle, msg_ui_viewer_help_page_create_list, (void *)viewer_play_data) == FALSE)
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_set_smil_player_help_page_cb is failed");
/*register change font size callback to render */
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_set_smil_player_cutlink_cb is failed");
if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREVIEW_PLAY);
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREVIEW_READY);
if (err != MSG_SMIL_SUCCESS) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
if (err != MSG_ERR_SMIL_UI_DISPLAY_FAIURE)
return FALSE;
}
} else {
- err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PLAY);
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_READY);
if (err != MSG_SMIL_SUCCESS) {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
if (err != MSG_ERR_SMIL_UI_DISPLAY_FAIURE)
/*change command bar*/
if (viewer_play_data->play_controller) {
edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
- msg_ui_viewer_create_progressbar(viewer_play_data, 0);
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, 0);
}
/*Set title string*/
return TRUE;
}
-Evas_Object *msg_ui_viewer_create_navigation_layout(Evas_Object *parent)
+Evas_Object *msg_ui_viewer_create_navigation_layout(MSG_PLAY_DATA_S *viewer_play_data, Evas_Object *parent)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL);
Evas_Object *navi_frame = NULL;
return navi_frame;
}
-static void __msg_ui_viewer_init_font_size(MSG_PLAY_DATA_S *data)
+void msg_ui_viewer_apply_font_size(void *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "entry type = %d", entry_type);
- if (entry_type == MSG_VIEWER_ENTRY_NORMAL_TEXT)
+ if (entry_type == MSG_VIEWER_ENTRY_NORMAL_TEXT) {
snprintf(font_size_str, sizeof(font_size_str), "DEFAULT='font_size=%d'", viewer_play_data->font_size);
- else
- snprintf(font_size_str, sizeof(font_size_str), "DEFAULT='font_size=%d'", (viewer_play_data->font_size*4)/5);
+ } else {
+ int hp_font_size = 0;
+
+ if (index == 0) {
+ hp_font_size = VIEWER_HELP_PAGE_FONT_SMALL;
+ } else if (index == 1) {
+ hp_font_size = VIEWER_HELP_PAGE_FONT_NORMAL;
+ } else if (index == 2) {
+ hp_font_size = VIEWER_HELP_PAGE_FONT_LARGE;
+ } else if (index == 3) {
+ hp_font_size = VIEWER_HELP_PAGE_FONT_HUGE;
+ } else if (index == 4) {
+ hp_font_size = VIEWER_HELP_PAGE_FONT_GIANT;
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "font index is invalid (%d), set normal font size (%d)", index, VIEWER_HELP_PAGE_FONT_NORMAL);
+ hp_font_size = VIEWER_HELP_PAGE_FONT_NORMAL;
+ }
+
+ snprintf(font_size_str, sizeof(font_size_str), "DEFAULT='font_size=%d'", hp_font_size);
+ }
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font_size_str = (%s)", font_size_str);
elm_entry_text_style_user_push(viewer_play_data->render_entry, font_size_str);
}
}
-static void __msg_ui_viewer_vconf_changed_cb(keynode_t *key, void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- int index = 0;
- int font_size = 0;
- char *key_name = NULL;
-
- if ((key_name = vconf_keynode_get_name(key)) == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "key_name is NULL");
- return;
- }
-
- if (!strcmp(key_name, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE)) {
- index = vconf_keynode_get_int(key);
- font_size = msg_common_get_font_size_from_index(index);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size updated with ACCESSIBILITY TYPE, index = %d, font size = %d", index, font_size);
-
- viewer_play_data->font_size = font_size;
-
- /* sync current font size as accessibility font index */
- if (msg_common_set_font_size(index) == FALSE)
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_set_font_size(index = %d) is failed !!", index);
-
- /* sync msg accessibility font size with accessibility font index */
- if (msg_common_set_access_font_size(index) == FALSE)
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE) is failed !!, [%d]", index);
-
- } else if (!strcmp(key_name, VCONFKEY_MSG_APP_FONT_SIZE)) {
- index = vconf_keynode_get_int(key);
- font_size = msg_common_get_font_size_from_index(index);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size updated with MSG TYPE, index = %d, font size = %d", index, font_size);
-
- viewer_play_data->font_size = font_size;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid key name");
- }
-}
-
static MSG_BOOL __msg_ui_viewer_create_content_layout(MSG_PLAY_DATA_S *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
-static void __msg_ui_viewer_create_play_controller(MSG_PLAY_DATA_S *data)
+static void __msg_ui_viewer_create_control_toolbar(MSG_PLAY_DATA_S *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- Evas_Object *layout = elm_layout_add(viewer_play_data->navi_frame);
- elm_layout_file_set(layout, MSG_VIEWER_THEME, "play_controller");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
-
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", layout);
- viewer_play_data->play_controller = layout;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
-
- //add signal callbacks
- edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "volume_clicked", "", msg_ui_viewer_volume_button_cb, (void *)viewer_play_data);
- edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "prev_clicked", "", msg_ui_viewer_prev_button_cb, (void *)viewer_play_data);
- edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "play_clicked", "", msg_ui_viewer_play_pause_button_cb, (void *)viewer_play_data);
- edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "pause_clicked", "", msg_ui_viewer_play_pause_button_cb, (void *)viewer_play_data);
- edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "next_clicked", "", msg_ui_viewer_next_button_cb, (void *)viewer_play_data);
-
- viewer_play_data->playcontroller_opened = true;
-
- //register timer
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
-
- //create progressbar
- msg_ui_viewer_create_progressbar(viewer_play_data, 0);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_create_control_toolbar(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- 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);
+ 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);
Evas_Object *btn = NULL;
MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
elm_object_item_part_content_set(viewer_play_data->navi_item, "toolbar_more_btn", btn);
viewer_play_data->more_btn = btn;
- evas_object_smart_callback_add(btn, "clicked", msg_ui_viewer_more_button_cb, data);
+ evas_object_smart_callback_add(btn, "clicked", msg_ui_viewer_option_create_more_popup, data);
} else {
MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid launch mode");
}
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
+void msg_ui_viewer_title_button_clicked_cb(void * data, Evas_Object * obj, void * event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->title_menu_opened) {
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+ } else {
+ msg_ui_viewer_option_create_title_menu(viewer_play_data);
+
+ viewer_play_data->previous_status = viewer_play_data->status;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+ /* set player state to pause and update icon */
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
Evas_Object *msg_ui_viewer_create_navi_title_layout(MSG_PLAY_DATA_S *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
Evas_Object *button = elm_button_add(viewer_play_data->navi_frame);
elm_object_style_set(button, "naviframe/title_icon");
- Evas_Object *icon = elm_icon_add(viewer_play_data->navi_frame);
+ Evas_Object *icon = elm_icon_add(button);
+
+ elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_LIST_ICON);
+ elm_image_resizable_set(icon, 1, 1);
+ evas_object_image_smooth_scale_set(icon, 0);
if (viewer_play_data->insert_count + viewer_play_data->attach_count != 0)
elm_object_disabled_set(button, EINA_FALSE);
else
elm_object_disabled_set(button, EINA_TRUE);
+
elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_LIST_ICON);
elm_object_content_set(button, icon);
- evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_save_button_cb, viewer_play_data);
+ evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_option_save_attachment_menu, viewer_play_data);
evas_object_show(button);
elm_object_part_content_set(viewer_play_data->navi_title_layout, "attach_btn", button);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
-MSG_SMIL_ERROR_E msg_ui_viewer_help_page_smilrenderer_cb(MSG_PLAY_DATA_S *data, void **attach_list, void *box)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Evas_Object *renderBox = (Evas_Object *)box;
- MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
- int attach_count = viewer_play_data->attach_count;
-
- /* create box (for setting min size of genlist)*/
- Evas_Object *box2 = elm_box_add(renderBox);
- evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(box2);
-
- /* create genlist */
- Evas_Object *genlist = elm_genlist_add(box2);
- evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_genlist_homogeneous_set(genlist, EINA_TRUE);
- elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
- evas_object_show(genlist);
-
- elm_box_pack_end(box2, genlist);
- evas_object_size_hint_min_set(box2, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * (attach_count + 1) * elm_config_scale_get());
-
- viewer_play_data->hp_sa_class.item_style = "dialogue/1text.1icon";
- viewer_play_data->hp_sa_class.func.text_get = __msg_ui_viewer_help_page_gl_text_get;
- viewer_play_data->hp_sa_class.func.content_get = __msg_ui_viewer_help_page_gl_content_get;
- viewer_play_data->hp_sa_class.func.state_get = NULL;
- viewer_play_data->hp_sa_class.func.del = __msg_ui_viewer_help_page_gl_del;
-
- viewer_play_data->hp_class.item_style = "dialogue/1text.2icon";
- viewer_play_data->hp_class.func.text_get = __msg_ui_viewer_help_page_gl_text_get;
- viewer_play_data->hp_class.func.content_get = __msg_ui_viewer_help_page_gl_content_get;
- viewer_play_data->hp_class.func.state_get = NULL;
- viewer_play_data->hp_class.func.del = __msg_ui_viewer_help_page_gl_del;
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "attachment_count = %d", attach_count);
-
- if (attach_count > 0) {
- int attach_index = 0;
-
- if (attach_count > 1) {
- //make 'Save all' item
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pItem = (MSG_VIEWER_ATTACH_MEDIA_INFO_S*)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
- memset(pItem, 0x00, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
- strncpy(pItem->pfile_name, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"), strlen(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL")));
- pItem->isSaveAll = TRUE;
- pItem->viewer_play_data = viewer_play_data;
-
- for (attach_index = 0; attach_index < attach_count; attach_index++) {
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, attach_index);
- if (pAttach_info == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "(%d)th pAttach_info is NULL", attach_index);
- } else {
- pItem->pfile_size += pAttach_info->pfile_size;
- }
- }
-
- Elm_Object_Item *item = NULL;
- item = elm_genlist_item_append(genlist, &(viewer_play_data->hp_sa_class), pItem, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_help_page_gl_sel, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- }
-
- for (attach_index = 0; attach_index < attach_count; attach_index++) {
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, attach_index);
- if (pAttach_info == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info is NULL");
- } else {
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pItem = (MSG_VIEWER_ATTACH_MEDIA_INFO_S*)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
- memcpy(pItem, pAttach_info, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
-
- elm_genlist_item_append(genlist, &(viewer_play_data->hp_class), pItem, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_help_page_gl_sel, pItem);
- }
- }
- }
-
- viewer_play_data->help_page_gl = genlist;
-
- elm_box_pack_end(renderBox, box2);
- *attach_list = genlist;
-
- return err;
-}
-
-static char *__msg_ui_viewer_help_page_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, part == NULL, NULL);
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
-
- if (strcmp(part, "elm.text") == 0) {
- if (pAttach_info) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info->pfile_name = %s", pAttach_info->pfile_name);
-
- Eina_Strbuf *text_buf = eina_strbuf_new();
- eina_strbuf_append(text_buf, pAttach_info->pfile_name);
- eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_SPACE);
- eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_LEFT_BRACE);
-
- //get and convert size
- char size[DEF_BUF_LEN] = {0,};
- long long sizeKB = 0;
- long long sizeB = 0;
-
- if (pAttach_info->pfile_size < VIEWER_DETAILS_TEXT_MSG_SIZE_KB) {
- snprintf(size, sizeof(size), "1 %s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
- } else {
- sizeKB = (long long)(pAttach_info->pfile_size)/VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
- sizeB = (long long)(pAttach_info->pfile_size)%VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
-
- if (sizeB >= (VIEWER_DETAILS_TEXT_MSG_SIZE_KB/2))
- sizeKB++;
-
- snprintf(size, sizeof(size), "%lld %s", sizeKB, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
- }
-
- eina_strbuf_append(text_buf, size);
- eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
-
- char *return_text = strdup(eina_strbuf_string_get(text_buf));
- eina_strbuf_free(text_buf);
-
- return return_text;
- }
- }
-
- return NULL;
-}
-
-static Evas_Object *__msg_ui_viewer_help_page_gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, obj == NULL, NULL);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, part == NULL, NULL);
-
- if (strcmp(part, "elm.icon.2") == 0 || strcmp(part, "elm.icon") == 0) {
- Evas_Object *box = elm_box_add(obj);
- Evas_Object *button = elm_button_add(obj);
- Evas_Object *icon = elm_icon_add(obj);
-
- evas_object_propagate_events_set(button, EINA_FALSE);
- elm_box_pack_start(box, button);
- elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_SAVE_ICON);
- elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
- elm_object_part_content_set(button, "icon", icon);
- elm_object_style_set(button, "circle/empty");
- evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_help_page_save_button_clicked_cb, data);
- evas_object_show(button);
- evas_object_show(box);
- return box;
- } else if (strcmp(part, "elm.icon.1") == 0) {
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
- Evas_Object *image = NULL;
-
- image = elm_icon_add(obj);
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info->pfile_path = %s", pAttach_info->pfile_path);
-
- /*set attach file icon*/
- if (pAttach_info->media_type == MSG_VIEWER_MEDIA_IMG ||
- pAttach_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
- elm_image_file_set(image, pAttach_info->pfile_path, NULL);
- } else if (pAttach_info->media_type == MSG_VIEWER_MEDIA_DRM) {
- elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
- } else {
- if (strlen(pAttach_info->pfile_path)) {
- const char *icon_path = NULL;
-
- icon_path = msg_common_get_file_icon(pAttach_info->pfile_path);
- if (icon_path) {
- elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
- } else {
- D_EMSG("icon_path is NULL");
- elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
- return NULL;
- }
- }
-
- if (image)
- evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
- return image;
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
- }
-
- return NULL;
-}
-
-static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, event_info == NULL);
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
- Elm_Object_Item *pselected_item = (Elm_Object_Item *)event_info;
- service_h svc_handle = NULL;
- service_error_e err = MSG_SUCCESS;
-
- elm_genlist_item_selected_set(pselected_item, FALSE);
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name = [%s]", pAttach_info->pfile_name);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path = [%s]", pAttach_info->pfile_path);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "emedia_type = %d", pAttach_info->media_type);
-
- //Save all item
- if (!strcmp(pAttach_info->pfile_name, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"))) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Save all item");
- return;
- }
-
- if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
- return;
- }
-
- service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
- service_set_uri(svc_handle, pAttach_info->pfile_path);
-
- err = service_send_launch_request(svc_handle, NULL, NULL);
- 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)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
- }
-
- service_destroy(svc_handle);
-
- return;
-}
-
-static void __msg_ui_viewer_help_page_gl_del(void *data, Evas_Object *obj)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
- MSG_VIEWER_ATTACH_MEDIA_INFO_S *del_data = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
- if (del_data) {
- free(del_data);
- del_data = NULL;
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_create_play_controller_timer(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- //register timer for disappear play_controller automatically when time elapsed after shown
- if (viewer_play_data->play_controller_timer) {
- ecore_timer_del(viewer_play_data->play_controller_timer);
- viewer_play_data->play_controller_timer = NULL;
- }
-
- viewer_play_data->play_controller_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_LIFETIME, msg_ui_viewer_play_controller_timer_cb, (void *)viewer_play_data);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_viewer_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
-
- Evas_Object *progressbar = NULL;
- MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
- MSG_BOOL bExcludeHp = FALSE;
- double total_time = 0.0;
- double remain_time = 0.0;
- double elapse_time = 0.0;
- int remain_second = 0.0;
- int elapse_second = 0.0;
- char strTimeBuf[10] = {0,};
-
- if (slideIdx < 0 ) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "slideIdx = %d, slideIdx must be same or over 0", slideIdx);
- return;
- }
-
- if (!viewer_play_data->progressbar) {
- progressbar = elm_progressbar_add(viewer_play_data->play_controller);
- elm_object_theme_set(progressbar, viewer_play_data->progress_th);
- elm_object_style_set(progressbar, "list_progress");
- elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
- evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- viewer_play_data->progressbar = progressbar;
- evas_object_show(progressbar);
- elm_object_part_content_set(viewer_play_data->play_controller,"progressbar", progressbar);
- }
-
- msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
-
- //In preview mode, slide time for help page should not be considered to total slide time
- bExcludeHp = (launchmode == MSG_VIEWER_PREVIEW_MODE) ? TRUE : FALSE;
-
- if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, 0, bExcludeHp, &total_time)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", 0, bExcludeHp);
- return;
- }
- if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, slideIdx, bExcludeHp, &remain_time)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", slideIdx, bExcludeHp);
- return;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total slide time is %f", total_time);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Remain slide time from current slide(%d) is %f", slideIdx, remain_time);
- elapse_time = total_time-remain_time;
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Elapsed slide time from first slide(0) to current slide(%d) is %f", slideIdx, elapse_time);
-
- viewer_play_data->totalProgressTime = remain_second = (int)total_time/1000;
- elapse_second = (int)elapse_time/1000;
- viewer_play_data->elapsedProgressTime = elapse_second;
-
- // START timer text set
- snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", elapse_second/60, elapse_second%60);
- edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
-
- bzero(strTimeBuf, sizeof(strTimeBuf));
-
- // END timer text set
- snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", remain_second/60, remain_second%60);
- edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/end/time", strTimeBuf);
-
- elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
-
- if (viewer_play_data->play_controller_progressbar_timer) {
- ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
- viewer_play_data->play_controller_progressbar_timer = NULL;
- }
-
- viewer_play_data->play_controller_progressbar_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME, msg_ui_viewer_play_controller_progressbar_timer_cb, viewer_play_data);
-
- if (msg_smil_get_current_slide_status(viewer_play_data->SmilHandle) == PLAYER_STATUS_PAUSED) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Pause progress timer because current slide status is PAUSED");
- ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-Eina_Bool msg_ui_viewer_play_controller_progressbar_timer_cb(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- char strTimeBuf[10] = {0,};
-
- viewer_play_data->elapsedProgressTime += VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME;
-
- // update START timer text
- snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", viewer_play_data->elapsedProgressTime/60, viewer_play_data->elapsedProgressTime%60);
- edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
-
- if (viewer_play_data->elapsedProgressTime == viewer_play_data->totalProgressTime) {
- if (viewer_play_data->play_controller && evas_object_visible_get(viewer_play_data->play_controller) == EINA_FALSE) {
- elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
- evas_object_show(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = true;
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
- } else {
- // create play controller timer again
- msg_ui_viewer_create_play_controller_timer(viewer_play_data);
- }
-
- elm_progressbar_value_set(viewer_play_data->progressbar, 1.0);
- viewer_play_data->play_controller_progressbar_timer = NULL;
-
- return ECORE_CALLBACK_CANCEL;
- }
-
- elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void msg_ui_viewer_destroy_play_controller_progressbar_timer(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->play_controller_progressbar_timer) {
- ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
- viewer_play_data->play_controller_progressbar_timer = NULL;
- viewer_play_data->elapsedProgressTime = 0;
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-Eina_Bool msg_ui_viewer_play_controller_timer_cb(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- viewer_play_data->play_controller_timer = NULL;
-
- if (viewer_play_data->playcontroller_opened) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play controller is hided after 3 seconds elapsed");
- elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
- evas_object_hide(viewer_play_data->play_controller);
- viewer_play_data->playcontroller_opened = false;
- if (!viewer_play_data->title_menu_opened)
- elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
- }
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-void msg_ui_viewer_destroy_play_controller_timer(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->play_controller_timer) {
- ecore_timer_del(viewer_play_data->play_controller_timer);
- viewer_play_data->play_controller_timer = NULL;
- }
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
void msg_ui_viewer_copy_message_text_to_clipboard(MSG_PLAY_DATA_S *data)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
}
-
-void msg_ui_viewer_create_msg_detail_popup(MSG_PLAY_DATA_S *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Evas_Object *popup = NULL;
- Evas_Object *layout = NULL;
- Evas_Object *bg = NULL;
- Evas_Object *scroller = NULL;
- Evas_Object *box = NULL;
- Evas_Object *entry = NULL;
- Evas_Object *btn_close = NULL;
-
- /* delete previous popup */
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* create popup */
- popup = elm_popup_add(viewer_play_data->main_window);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(popup, "menustyle");
- elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_MESSAGE_DETAILS"));
-
- /* create layout */
- layout = elm_layout_add(viewer_play_data->main_window);
- elm_layout_file_set(layout, MSG_VIEWER_THEME, "msg/detail");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
-
- /* create bg */
- bg = evas_object_rectangle_add(evas_object_evas_get(layout));
- elm_object_part_content_set(layout, "msg/detail/bg", bg);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, 0.0);
- evas_object_show(bg);
-
- /* create scroller */
- scroller = elm_scroller_add(layout);
- evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_scroller_bounce_set(scroller, FALSE, TRUE);
- elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
- elm_object_part_content_set(layout, "msg/detail/content", scroller);
- evas_object_show(scroller);
-
- /* create box */
- box = elm_box_add(layout);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_homogeneous_set(box, EINA_FALSE);
- evas_object_show(box);
- evas_object_size_hint_min_set(box, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT*4);
- elm_object_content_set(scroller, box);
-
- /*create entry */
- entry = elm_entry_add(layout);
- evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_entry_single_line_set(entry, EINA_FALSE);
- elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
- elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
- elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
- elm_entry_editable_set(entry, EINA_FALSE);
-
- char *str = msg_common_make_message_detail_text(viewer_play_data->msgHandle, viewer_play_data->msgID);
-
- if (str) {
- elm_entry_entry_set(entry, str);
- free(str);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_make_message_detail_text is failed");
- return;
- }
-
- elm_box_pack_end(box, entry);
- evas_object_show(entry);
-
- /* add close button */
- btn_close = elm_button_add(popup);
- elm_object_style_set(btn_close, "popup_button/default");
- elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
- elm_object_part_content_set(popup, "button1", btn_close);
- evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_message_details_popup_close_clicked_cb, viewer_play_data);
-
- viewer_play_data->popup = popup;
- viewer_play_data->popup_type = MSG_VIEWER_DETAILS_POPUP;
- elm_object_content_set(popup, layout);
-
- msg_ui_viewer_disconnect_handler(viewer_play_data);
-
- evas_object_show(popup);
-
- MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static void __msg_ui_viewer_message_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->popup) {
- evas_object_del(viewer_play_data->popup);
- viewer_play_data->popup = NULL;
- viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
- }
-
- /* connect handler again*/
- msg_ui_viewer_connect_handler(viewer_play_data);
-
- /* play viewer again if previous status was PLAY */
- if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
- if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
- return;
- }
- }
-}
-
-MSG_BOOL msg_ui_viewer_check_address_is_blocked(void *data, char *address, int *filter_id)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- msg_error_t err = MSG_SUCCESS;
- msg_struct_list_s filter_list;
- int i = 0;
- int total_cnt = 0;
- char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
-
- err = msg_get_filter_list(viewer_play_data->msgHandle, &filter_list);
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
- return FALSE;
- }
-
- total_cnt = filter_list.nCount;
-
- for (i = 0; i < total_cnt; i++) {
- /* get number */
- bzero(filter_val, sizeof(filter_val));
- err = msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
-
- if (err != MSG_SUCCESS) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_str_value() fail - err [%d]", err);
- msg_release_list_struct(&filter_list);
- return FALSE;
- }
-
- if (!strcmp(address, filter_val)) {
- int filter_type;
- msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
- if (filter_type == MSG_FILTER_BY_ADDRESS_SAME) {
- /* get filter id if address is exist in block list */
- msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_ID_INT, filter_id);
- msg_release_list_struct(&filter_list);
- return TRUE;
- }
- }
- }
-
- msg_release_list_struct(&filter_list);
- return FALSE;
-}
-
-static void __msg_ui_viewer_grab_volume_key(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- int ret = 0;
-
- ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP, TOP_POSITION_GRAB);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_grab_key() ret = %d", ret);
-
- ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN, TOP_POSITION_GRAB);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_grab_key() ret = %d", ret);
-}
-
-static void __msg_ui_viewer_ungrab_volume_key(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- int ret = 0;
-
- ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_ungrab_key() ret = %d", ret);
-
- ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN);
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_ungrab_key() ret = %d", ret);
-}
-
-static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- int use_volume_key = false;
-
- vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
-
- if (use_volume_key) {
- msg_common_increase_font_size();
-
- if (viewer_play_data->render_entry) {
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
- MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
- msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
- }
- } else {
- __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volume_slider);
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- int use_volume_key = false;
-
- vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
-
- if (use_volume_key) {
- msg_common_decrease_font_size();
-
- if (viewer_play_data->render_entry) {
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
- MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
- msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
- }
- } else {
- __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volume_slider);
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool __msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Ecore_Event_Key *ev = event;
- int use_volume_key = false;
-
- vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
-
- if (!use_volume_key) {
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
- viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
- }
-
- if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is released");
-
- if (viewer_play_data->vol_up_key_longpress) {
- ecore_timer_del(viewer_play_data->vol_up_key_longpress);
- viewer_play_data->vol_up_key_longpress = NULL;
- }
- } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) { /* KEY_VOLUMEDOWN */
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is released");
-
- if (viewer_play_data->vol_down_key_longpress) {
- ecore_timer_del(viewer_play_data->vol_down_key_longpress);
- viewer_play_data->vol_down_key_longpress = NULL;
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool __msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
- MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
- Ecore_Event_Key *ev = event;
- int use_volume_key = false;
-
- vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
-
- if (use_volume_key) {
- if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is pressed");
-
- msg_common_increase_font_size();
-
- if (viewer_play_data->render_entry) {
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
- MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
- msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
- }
-
- viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
- } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) { /* KEY_VOLUMEDOWN */
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is pressed");
-
- msg_common_decrease_font_size();
-
- if (viewer_play_data->render_entry) {
- SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
- MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
- msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
- }
-
- viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
- }
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Use volume key setting is not activated. Do volume key action");
-
- if (!viewer_play_data->volumebar || !viewer_play_data->volume_slider)
- msg_ui_viewer_create_volume_bar(viewer_play_data);
-
- if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
- __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volume_slider);
-
- viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
- } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) { /* KEY_VOLUMEDOWN */
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
- __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volume_slider);
-
- viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
- } else {
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
- }
- }
-
- return EINA_TRUE;
-}
-
-void msg_ui_viewer_create_volume_bar(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- Evas_Object *layout = NULL;
- Evas_Object *slider = NULL;
- Evas_Object *icon_start = NULL;
- Evas_Object *icon_end = NULL;
-
- layout = elm_layout_add(viewer_play_data->play_layout);
- elm_layout_file_set(layout, MSG_VIEWER_THEME, "volume_controller");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
-
- slider = elm_slider_add(layout);
- elm_slider_indicator_show_set(slider, EINA_TRUE);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- elm_slider_indicator_format_set(slider, "%1.0f");
- evas_object_show(slider);
-
- icon_start = elm_icon_add(layout);
- elm_image_file_set(icon_start, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MIN);
- evas_object_size_hint_aspect_set(icon_start, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
- icon_end = elm_icon_add(layout);
- elm_image_file_set(icon_end, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MAX);
- evas_object_size_hint_aspect_set(icon_end, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
- elm_object_content_set(slider,icon_start);
- elm_object_part_content_set(slider, "end", icon_end);
-
- elm_slider_min_max_set(slider, 0, __msg_ui_viewer_get_max_volume());
- elm_slider_value_set(slider, __msg_ui_viewer_get_current_volume());
-
- elm_object_part_content_set(layout, "slider", slider);
-
- viewer_play_data->volumebar = layout;
- viewer_play_data->volume_slider = slider;
- elm_object_part_content_set(viewer_play_data->play_layout, "volume_layout", viewer_play_data->volumebar);
-
- evas_object_data_set(slider, "viewer_play_data", viewer_play_data);
-
- __msg_ui_viewer_volumebar_event_callback_add(slider, __msg_ui_viewer_volumebar_event_cb);
-
- evas_object_smart_callback_add(slider, "slider,drag,start", __msg_ui_viewer_volumebar_drag_start_cb, viewer_play_data);
- evas_object_smart_callback_add(slider, "slider,drag,stop", __msg_ui_viewer_volumebar_drag_stop_cb, viewer_play_data);
- evas_object_smart_callback_add(slider, "changed", __msg_ui_viewer_volumebar_changed_cb, viewer_play_data);
-
- //create timer
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
- viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
-
-}
-
-void msg_ui_viewer_destroy_volume_bar(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
-
- elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
- evas_object_del(viewer_play_data->volumebar);
- viewer_play_data->volumebar = NULL;
-}
-
-static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
- evas_object_del(viewer_play_data->volumebar);
- viewer_play_data->volumebar = NULL;
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->volumebar_event_cb)
- viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_START);
-
- viewer_play_data->drag_volume_slider = true;
-}
-
-static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
-
- if (viewer_play_data->volumebar_event_cb)
- viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_STOP);
-
- viewer_play_data->drag_volume_slider = false;
-}
-
-static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- double val = elm_slider_value_get(obj);
-
- if ((int)val != __msg_ui_viewer_get_current_volume())
- __msg_ui_viewer_set_volume((int)val);
-}
-
-static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, user_data == NULL, "data is NULL");
- MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)user_data;
-
- if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_START) {
- if (viewer_play_data->volumebar_timer) {
- ecore_timer_del(viewer_play_data->volumebar_timer);
- viewer_play_data->volumebar_timer = NULL;
- }
- } else if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_STOP) {
- viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
- }
-}
-
-static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, obj == NULL);
- MSG_PLAY_DATA_S *viewer_play_data = evas_object_data_get(obj, "viewer_play_data");
-
- viewer_play_data->volumebar_event_cb = event_cb;
-}
-
-static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- double max = 0.0;
- elm_slider_min_max_get(obj, NULL, &max);
-
- double current = elm_slider_value_get(obj);
-
- if (current < max)
- elm_slider_value_set(obj, (current + 1.0));
-
- evas_object_smart_callback_call(obj, "changed", NULL);
-}
-
-static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- double min = 0.0;
- elm_slider_min_max_get(obj, &min, NULL);
-
- double current = elm_slider_value_get(obj);
-
- if (current > min)
- elm_slider_value_set(obj, (current - 1.0));
-
- evas_object_smart_callback_call(obj, "changed", NULL);
-}
-
-static int __msg_ui_viewer_get_max_volume(void)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- int max_vol = 0;
-
- int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_vol);
- if (ret != SOUND_MANAGER_ERROR_NONE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
- return -1;
- }
-
- return max_vol;
-}
-
-static int __msg_ui_viewer_get_current_volume(void)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- int current = 0;
-
- int ret = sound_manager_get_volume(SOUND_TYPE_MEDIA, ¤t);
- if (ret != SOUND_MANAGER_ERROR_NONE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
- return -1;
- }
-
- return current;
-}
-
-static bool __msg_ui_viewer_set_volume(int volume)
-{
- MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
- int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, volume);
- if (ret != SOUND_MANAGER_ERROR_NONE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_set_volume().. [0x%x]", ret);
- return false;
- }
-
- MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"set volume value = %d", volume);
-
- return true;
-}
--- /dev/null
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ * INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <contacts.h>
+#include "appsvc.h"
+#include <status.h>
+
+/*==================================================================================================
+ * FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/* Title menu option */
+static char *__msg_ui_viewer_option_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object * __msg_ui_viewer_option_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_option_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_title_menu_del(void *data, Evas_Object *obj);
+static void __msg_ui_viewer_option_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* Toolbar menu option */
+static void __msg_ui_viewer_option_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void __msg_ui_viewer_option_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_protection_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_option_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/*==================================================================================================
+ * FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_option_save_attachment_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
+
+ /* check media count */
+ if (viewer_play_data->insert_count + viewer_play_data->attach_count == 0) {
+ msg_ui_viewer_show_popup(viewer_play_data, viewer_play_data->main_window, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NO_ATTACHMENTS"));
+ return;
+ }
+
+ /* close title menu list if exist, else pause SMIL and save previous status */
+ if (viewer_play_data->title_menu_opened) {
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+ } else {
+ viewer_play_data->previous_status = viewer_play_data->status;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) { // pause
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ /* create popup for save attachments and insert items */
+ msg_ui_viewer_create_save_attachments_popup(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_create_delete_popup(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ 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);
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ /* Add protection on/off menu */
+ bool is_protected = false;
+ msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+ elm_object_text_set(popup, (is_protected) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+
+ Evas_Object *btn_ok = elm_button_add(popup);
+ elm_object_style_set(btn_ok, "popup_button/default");
+ elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn_ok);
+ evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_option_delete_ok_clicked_cb, viewer_play_data);
+
+ Evas_Object *btn_cancel = elm_button_add(popup);
+ elm_object_style_set(btn_cancel, "popup_button/default");
+ elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn_cancel);
+ evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_option_delete_cancel_clicked_cb, viewer_play_data);
+
+ evas_object_show(popup);
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_DELETE_POPUP;
+
+ /*disconnect mouse handler*/
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+ char str_id[DEF_BUF_LEN] = {0,};
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete msg-id is %d", viewer_play_data->msgID);
+
+ if (viewer_play_data->msg_box_viewer) {
+ if (msg_delete_message(viewer_play_data->msgHandle, viewer_play_data->msgID) == MSG_SUCCESS) {
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_message is failed");
+ status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+ return;
+ }
+
+ } else {
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_DELETE_MSG);
+
+ snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+ ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+ service_destroy(svc_handle);
+ }
+
+ /*destroy viewer*/
+ ug_destroy_me(viewer_main_data->viewer_ug);
+
+ return;
+}
+
+static void __msg_ui_viewer_option_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+}
+
+void msg_ui_viewer_option_forward_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ char buf[DEF_BUF_LEN_S] = { 0, };
+ service_h svc_handle;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* create and call composer-ug */
+ if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+ } else {
+ snprintf(buf, sizeof(buf), "%d", viewer_play_data->msgID);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, buf);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_FORWARD);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_UNGRAB_KEY, MSG_BUNDLE_VALUE_YES);
+
+ /* disconnect handler first - due to key ungrab senario with composer */
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ ui_gadget_h loaded_ug;
+ loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+ if (loaded_ug) {
+ msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+ viewer_play_data->mode = MSG_VIEWER_LOAD_COMPOSER_UG;
+ } else {
+ msg_ui_viewer_connect_handler(viewer_play_data);
+ }
+
+ service_destroy(svc_handle);
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_resend_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+ char str_id[DEF_BUF_LEN] = {0,};
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed msg-id is %d", viewer_play_data->msgID);
+
+ service_h svc_handle = NULL;
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_RESEND);
+
+ snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+ ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+ service_destroy(svc_handle);
+
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ /*destroy viewer*/
+ ug_destroy_me(viewer_main_data->viewer_ug);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_drm_view_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ msg_ui_viewer_show_view_by_mode(viewer_main_data, MSG_VIEWER_DRM_LIST_VIEW, MSG_VIEWER_VIEW_CMD_NONE);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+void msg_ui_viewer_option_create_more_popup(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ 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);
+
+ MSG_BOOL hasText = FALSE;
+ int page_count = 0;
+ int media_count = 0;
+ int folder_id = MSG_MAX_FOLDER_ID;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* set current status to previous status */
+ viewer_play_data->previous_status = viewer_play_data->status;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+ /* set player state to pause*/
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+
+ Evas_Object *ctx_popup = NULL;
+ ctx_popup = elm_ctxpopup_add(viewer_play_data->navi_frame);
+ evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_viewer_option_more_ctxpopup_dismissed_cb, (void *)viewer_play_data);
+
+ /* add delete menu */
+ elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_OPT_DELETE"), NULL, msg_ui_viewer_option_create_delete_popup, (void *)viewer_play_data);
+
+ /* Get folder ID and Add Resend / Reply menu */
+ msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+
+ if (folder_id == MSG_OUTBOX_ID)
+ elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESEND"), NULL, msg_ui_viewer_option_resend_menu_cb, (void *)viewer_play_data);
+
+ /* Add FORWARD menu */
+ elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), NULL, msg_ui_viewer_option_forward_menu_cb, (void *)viewer_play_data);
+
+ /* Add protection on/off menu */
+ bool is_protected = false;
+ msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Lock status of current message %d", is_protected);
+
+ if (is_protected)
+ elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_OFF"), NULL, __msg_ui_viewer_option_protection_cb, (void *)viewer_play_data);
+ else
+ elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_ON"), NULL, __msg_ui_viewer_option_protection_cb, (void *)viewer_play_data);
+
+ /* Add Copy Message text menu */
+ if (viewer_play_data->smil_eventStatus != NULL) {
+ /* get msg body */
+ msg_list_handle_t pagelist_info = NULL;
+ msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+ page_count = msg_list_length(pagelist_info);
+
+ msg_struct_t page_info = NULL;
+ page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, viewer_play_data->smil_eventStatus->pageIdx);
+ if (page_info) {
+ int i = 0;
+ msg_list_handle_t medialist_info = NULL;
+ msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+ media_count = msg_list_length(medialist_info);
+
+ for (i = 0; i < media_count; i++) {
+ int mediaType;
+ msg_struct_t media_info = NULL;
+ media_info = (msg_struct_t)msg_list_nth_data(medialist_info, i);
+
+ if (media_info == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "getting media has failed");
+ continue;
+ }
+
+ msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+ if (mediaType != MMS_SMIL_MEDIA_TEXT)
+ continue;
+
+ hasText = TRUE;
+ }
+ }
+ }
+
+ if (hasText)
+ elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"), NULL, __msg_ui_viewer_option_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
+
+ /* Add view message details menu */
+ elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"), NULL, __msg_ui_viewer_option_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
+
+ // move ctx popup
+ Evas_Coord x, y, w, h;
+ evas_object_geometry_get(viewer_play_data->more_btn, &x, &y, &w, &h);
+ evas_object_move(ctx_popup, x, y);
+ evas_object_show(ctx_popup);
+
+ viewer_play_data->popup = ctx_popup;
+ viewer_play_data->popup_type = MSG_VIEWER_MENU_CTX_POPUP;
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_email_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+ 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 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);
+ int addr_count = addr_list->nCount; //get address count
+
+ if (addr_count == 1) {
+ service_h svc_handle = NULL;
+ msg_struct_t addr_info = NULL;
+ char szAddress[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+
+ addr_info = addr_list->msg_struct_info[0];
+
+ msg_get_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, szAddress, MAX_ADDRESS_VAL_LEN);
+
+ char *address = (char*)calloc(1, strlen(szAddress)+1);
+ if (address == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+ return;
+ }
+
+ memcpy(address, szAddress, strlen(szAddress));
+
+ 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;
+ }
+
+ service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+ service_set_app_id(svc_handle, "email-composer-efl");
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+ service_add_extra_data(svc_handle, SERVICE_DATA_TO, address);
+
+ Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
+ service_set_window(svc_handle, win_id);
+
+ err = service_send_launch_request(svc_handle, NULL, NULL);
+
+ if (err != SERVICE_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed, err = %d", err);
+ }
+
+ free(address);
+ service_destroy(svc_handle);
+ }
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_call_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+ int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+ if (addr_count == 1) {
+ char telnum[255] = {0,};
+ int err = 0;
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
+
+ char *address = NULL;
+ int contactid = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+ if (address) {
+ snprintf(telnum, sizeof(telnum), "tel:%s", address); /* Number to make a call */
+ service_set_uri(svc_handle, telnum);
+ free(address);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+ service_destroy(svc_handle);
+ return;
+ }
+
+ if ((err = service_send_launch_request(svc_handle, NULL, (void *)viewer_play_data)) != SERVICE_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request failed, err = %d", err);
+ }
+
+ service_destroy(svc_handle);
+ }
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_add_to_contact_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+ int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+ if (addr_count == 1) {
+ ui_gadget_h loaded_ug = NULL;
+ char buf[DEF_BUF_LEN_D] = { 0, };
+
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ char *address = NULL;
+ int contactid = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+ if (address) {
+ if (strstr(address, "@")) {
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, address);
+ } else {
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, address);
+ }
+ free(address);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
+ service_destroy(svc_handle);
+ return;
+ }
+
+ loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+ 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
+ }
+
+ service_destroy(svc_handle);
+ }
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_view_contact_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+ int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+ if (addr_count == 1) {
+ ui_gadget_h loaded_ug = NULL;
+ char contactId[DEF_BUF_LEN_S] = { 0, };
+ char buf[DEF_BUF_LEN_D] = { 0, };
+ char *address = NULL;
+ int contact_id = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+ if (contact_id > 0 ) {
+ service_h svc_handle = NULL;
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ snprintf(contactId, sizeof(contactId), "%d", contact_id);
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
+
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
+
+ loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+ 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
+ }
+
+ service_destroy(svc_handle);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid contact_id = %d", contact_id);
+ }
+
+ if (address)
+ free(address);
+ }
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_block_address_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+ Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ char *popup_text = NULL;
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+ char *address = NULL;
+ int contactid = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+ if (address) {
+ popup_text = g_strdup_printf(szbuf, address);
+ free(address);
+ if (!popup_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
+ return;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+ return;
+ }
+
+ elm_object_text_set(popup, popup_text);
+ free(popup_text);
+
+ Evas_Object *btn_ok = elm_button_add(popup);
+ elm_object_style_set(btn_ok, "popup_button/default");
+ elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn_ok);
+ evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_option_block_ok_clicked_cb, viewer_play_data);
+
+ Evas_Object *btn_cancel = elm_button_add(popup);
+ elm_object_style_set(btn_cancel, "popup_button/default");
+ elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn_cancel);
+ /* use same cb function with delete cancel button */
+ evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_option_delete_cancel_clicked_cb, viewer_play_data);
+
+ evas_object_show(popup);
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
+
+ /*disconnect mouse handler*/
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_unblock_address_menu(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+ int filter_id = 0;
+ char *address = NULL;
+ int contactid = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+ if (address) {
+ if (msg_ui_viewer_check_address_is_blocked(viewer_play_data->msgHandle, address, &filter_id)) {
+ msg_error_t err = MSG_SUCCESS;
+ err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
+ free(address);
+ return;
+ }
+
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+ char *message_text = g_strdup_printf(szbuf, address);
+ if (!message_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+ free(address);
+ return;
+ }
+ status_message_post(message_text);
+ free(message_text);
+
+ msg_ui_viewer_title_update(viewer_play_data, MSG_VIEWER_OPTION_BLOCK);
+ }
+ free(address);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+ return;
+ }
+
+ /* close title menu list */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+ if (addr_count == 1) {
+ msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+ msg_error_t err = MSG_SUCCESS;
+
+ err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
+ msg_release_struct(&filter);
+ return;
+ }
+
+ char *address = NULL;
+ int contactid = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+ if (address) {
+ err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, address, strlen(address));
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
+ msg_release_struct(&filter);
+ free(address);
+ return;
+ }
+
+ err = msg_add_filter(viewer_play_data->msgHandle, filter);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
+ msg_release_struct(&filter);
+ free(address);
+ return;
+ }
+
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+ char *message_text = g_strdup_printf(szbuf, address);
+ if (!message_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+ msg_release_struct(&filter);
+ free(address);
+ return;
+ }
+
+ status_message_post(message_text);
+ free(message_text);
+ free(address);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
+ msg_release_struct(&filter);
+ return;
+ }
+
+ msg_release_struct(&filter);
+ }
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ return;
+}
+
+void msg_ui_viewer_option_create_title_menu(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+ MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+ int i = 0;
+
+ /* create box (for setting min size of genlist)*/
+ Evas_Object *box = elm_box_add(viewer_play_data->play_layout);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(box);
+
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.title.menu", box);
+
+ /* create genlist */
+ Evas_Object *genlist = elm_genlist_add(box);
+ elm_object_theme_set(genlist, viewer_play_data->title_th);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+ evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
+ evas_object_show(genlist);
+
+ elm_box_pack_end(box, genlist);
+
+ viewer_play_data->title_box_layout = box;
+
+ int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+ if (addr_count == 1) {
+ /* set genlist styles */
+ viewer_play_data->itc_title_single.item_style = "1text.custom";
+ viewer_play_data->itc_title_single.func.text_get = __msg_ui_viewer_option_title_menu_gl_text_get;
+ viewer_play_data->itc_title_single.func.content_get = NULL;
+ viewer_play_data->itc_title_single.func.state_get = NULL;
+ viewer_play_data->itc_title_single.func.del = NULL;
+
+ /* genlist list load */
+ char *address = NULL;
+ int contact_id = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+ if (!address) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+ return;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address = %s, contact_id = %d", address, contact_id);
+
+ if (msg_common_is_valid_phone_number(address)) {
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_call_menu, viewer_play_data);
+ } else if (msg_common_is_valid_email_addr(address)) {
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_email_menu, viewer_play_data);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
+ }
+
+ if (contact_id > 0)
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_view_contact_menu, viewer_play_data);
+ else
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_add_to_contact_menu, viewer_play_data);
+
+ if (msg_common_is_valid_phone_number(address)) {
+ int filter_id = 0;
+ if (msg_ui_viewer_check_address_is_blocked(viewer_play_data->msgHandle, address, &filter_id))
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_unblock_address_menu, viewer_play_data);
+ else
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_option_block_address_menu, viewer_play_data);
+ }
+
+ evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_1TEXT_HEIGHT * elm_genlist_items_count(genlist));
+ free(address);
+ } else {
+ /* set genlist styles */
+ viewer_play_data->itc_title.item_style = "2text.1icon.2.custom";
+ viewer_play_data->itc_title.func.text_get = __msg_ui_viewer_option_title_menu_gl_text_get;
+ viewer_play_data->itc_title.func.content_get = __msg_ui_viewer_option_title_menu_gl_content_get;
+ viewer_play_data->itc_title.func.state_get = NULL;
+ viewer_play_data->itc_title.func.del = __msg_ui_viewer_option_title_menu_del;
+
+ /* genlist list load */
+ for (i = 0; i < addr_count; i++) {
+ addrInfo = (MSG_VIEWER_ADDR_INFO *)calloc(1, sizeof(MSG_VIEWER_ADDR_INFO));
+ if (!addrInfo) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "addrInfo calloc failed");
+ return;
+ }
+
+ char *address = NULL;
+ int contact_id = 0;
+
+ msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, i, &address, &contact_id);
+
+ if (!address) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is null");
+ free(addrInfo);
+ return;
+ }
+ strncpy(addrInfo->address, address, MAX_ADDRESS_VAL_LEN);
+ free(address);
+
+ char *display_name = msg_viewer_util_get_display_name_by_index(contact_id);
+ if (display_name) {
+ strncpy(addrInfo->name, display_name, MAX_DISPLAY_NAME_LEN);
+ free(display_name);
+ }
+
+ addrInfo->contact_id = contact_id;
+
+ elm_genlist_item_append(genlist, &(viewer_play_data->itc_title), addrInfo, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_option_title_menu_gl_sel, viewer_play_data);
+ }
+
+ /* set genlist size */
+ if (addr_count >= VIEWER_TITLE_MENU_GENLIST_MAX_ITEM)
+ evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_2TEXT_HEIGHT * VIEWER_TITLE_MENU_GENLIST_MAX_ITEM * elm_config_scale_get());
+ else
+ evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_2TEXT_HEIGHT * addr_count * elm_config_scale_get());
+ }
+
+ /** emit signal for changing state of title menu list to open */
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,open", "");
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+ viewer_play_data->title_menu_opened = true;
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_option_destroy_title_menu(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,close", "");
+
+ if (viewer_play_data->is_rotated || !viewer_play_data->playcontroller_opened) {
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+ }
+
+ Evas_Object *layout = elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.title.menu");
+ if (layout) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete box layout");
+ evas_object_del(layout);
+ }
+
+ viewer_play_data->title_menu_opened = false;
+ viewer_play_data->title_box_layout = NULL;
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_viewer_option_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !addrInfo, NULL);
+
+ if (g_strcmp0(part, "elm.text") == 0) {
+ return strdup((char *)data);
+ } else if (g_strcmp0(part, "elm.text.1") == 0) {
+ if (addrInfo->contact_id > 0 && addrInfo->name[0] != '\0')
+ return strdup(addrInfo->name);
+ else if (addrInfo->address[0] != '\0')
+ return strdup (addrInfo->address);
+ else
+ return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+ } else if (g_strcmp0(part, "elm.text.2") == 0) {
+ if (addrInfo->address[0] != '\0')
+ return strdup(addrInfo->address);
+ else
+ return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+ return NULL;
+}
+
+
+static Evas_Object * __msg_ui_viewer_option_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ // Currently, this function do nothing, caller_id concept is not determined
+ return NULL;
+}
+
+static void __msg_ui_viewer_option_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+ Elm_Object_Item *item = NULL;
+ MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+
+ item = (Elm_Object_Item *)event_info;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !item, "Item is NULL or Item is not Message item\n");
+
+ addrInfo = (MSG_VIEWER_ADDR_INFO *)elm_object_item_data_get(item);
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, addrInfo == NULL, "item_data is NULL");
+
+ elm_genlist_item_selected_set(item, 0);
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ Evas_Object *popup = NULL;
+ Evas_Object *list = NULL;
+ Evas_Object *btn_close = NULL;
+
+ popup = elm_popup_add(viewer_play_data->main_window);
+ elm_object_style_set(popup, "min_menustyle");
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ btn_close = elm_button_add(popup);
+ elm_object_style_set(btn_close, "popup_button/default");
+ elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+ elm_object_part_content_set(popup, "button1", btn_close);
+ evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_option_title_menu_popup_close_clicked_cb, viewer_play_data);
+
+ list = elm_list_add(popup);
+ elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+ evas_object_data_set(list, "viewer_play_data", viewer_play_data);
+
+ if (msg_common_is_valid_phone_number(addrInfo->address)) {
+ elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ } else if (msg_common_is_valid_email_addr(addrInfo->address)) {
+ elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
+ }
+
+ if (addrInfo->contact_id> 0) {
+ elm_object_part_text_set(popup, "title,text", addrInfo->name);
+ elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ } else {
+ elm_object_part_text_set(popup, "title,text", addrInfo->address);
+ elm_list_item_append(list, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ }
+
+ if (msg_common_is_valid_phone_number(addrInfo->address)) {
+ int filter_id = 0;
+ if (msg_ui_viewer_check_address_is_blocked(viewer_play_data->msgHandle, addrInfo->address, &filter_id))
+ elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ else
+ elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, NULL, __msg_ui_viewer_option_title_menu_popup_selected_cb, (void *)addrInfo);
+ }
+
+ elm_list_go(list);
+ elm_object_content_set(popup, list);
+ evas_object_show(popup);
+
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_TITLE_MENU_POPUP;
+
+ /*disconnect mouse handler*/
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_title_menu_del(void *data, Evas_Object *obj)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL!");
+
+ if (addrInfo)
+ free(addrInfo);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL");
+ MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+ addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL");
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
+
+ if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
+ char telnum[255] = {0,};
+ int err = 0;
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ 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 ((err = service_send_launch_request(svc_handle, NULL, (void *)viewer_play_data)) != SERVICE_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "appsvc_run_service failed, err = %d", err);
+ }
+
+ service_destroy(svc_handle);
+ } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS")) == 0) { /* Add to contact with phone number string... */
+ ui_gadget_h loaded_ug = NULL;
+ char buf[DEF_BUF_LEN_D] = { 0, };
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ if (strstr(addrInfo->address, "@")) {
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, addrInfo->address);
+ } else {
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, addrInfo->address);
+ }
+
+ loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+ 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->mode = MSG_VIEWER_LOAD_CONTACT_UG;
+ }
+
+ service_destroy(svc_handle);
+ } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT")) == 0) {
+ ui_gadget_h loaded_ug = NULL;
+ char contactId[DEF_BUF_LEN_S] = { 0, };
+ char buf[DEF_BUF_LEN_D] = { 0, };
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ snprintf(contactId, sizeof(contactId), "%d", addrInfo->contact_id);
+ snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
+
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+ service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
+
+ loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+ 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->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 err = SERVICE_ERROR_NONE;
+
+ service_create(&svc_handle);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+ service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+ service_set_app_id(svc_handle, "email-composer-efl");
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+ service_add_extra_data(svc_handle, SERVICE_DATA_TO, addrInfo->address);
+
+ Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
+ service_set_window(svc_handle, win_id);
+
+ 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);
+ } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
+ int filter_id = 0;
+ if (msg_ui_viewer_check_address_is_blocked(viewer_play_data->msgHandle, addrInfo->address, &filter_id)) {
+ msg_error_t err = MSG_SUCCESS;
+ err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
+ return;
+ }
+
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+
+ char *message_text = g_strdup_printf(szbuf, addrInfo->address);
+ if (!message_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+ return;
+ }
+
+ status_message_post(message_text);
+ free(message_text);
+ }
+ } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK")) == 0) {
+ Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ char *popup_text = NULL;
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+
+ popup_text = g_strdup_printf(szbuf, addrInfo->address);
+ if (!popup_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
+ return;
+ }
+ elm_object_text_set(popup, popup_text);
+ free(popup_text);
+
+ Evas_Object *btn_ok = elm_button_add(popup);
+ elm_object_style_set(btn_ok, "popup_button/default");
+ elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn_ok);
+ evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_option_title_menu_block_ok_clicked_cb, viewer_play_data);
+ evas_object_data_set(btn_ok, "addrInfo", addrInfo);
+
+ Evas_Object *btn_cancel = elm_button_add(popup);
+ elm_object_style_set(btn_cancel, "popup_button/default");
+ elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+ elm_object_part_content_set(popup, "button2", btn_cancel);
+ evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_option_delete_cancel_clicked_cb, viewer_play_data);
+
+ evas_object_show(popup);
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
+
+ /* disconnect mouse handler */
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+ }
+
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)evas_object_data_get(obj, "addrInfo");
+ msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+ msg_error_t err = MSG_SUCCESS;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
+ msg_release_struct(&filter);
+ return;
+ }
+
+ err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, addrInfo->address, strlen(addrInfo->address));
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
+ msg_release_struct(&filter);
+ return;
+ }
+
+ err = msg_add_filter(viewer_play_data->msgHandle, filter);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
+ msg_release_struct(&filter);
+ return;
+ }
+
+ char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+ char *message_text = g_strdup_printf(szbuf, addrInfo->address);
+ if (!message_text) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+ msg_release_struct(&filter);
+ return;
+ }
+
+ status_message_post(message_text);
+ free(message_text);
+
+ msg_release_struct(&filter);
+
+ /* close title menu popup */
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+
+ return;
+}
+
+static void __msg_ui_viewer_option_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB")) == 0) {
+ msg_ui_viewer_copy_message_text_to_clipboard(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+ } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB")) == 0) {
+ msg_ui_viewer_option_create_msg_detail_popup(viewer_play_data);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid list type");
+ return;
+ }
+
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_protection_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ 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);
+
+ MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_main_data == NULL);
+
+ msg_error_t err = MSG_SUCCESS;
+ bool is_protected = false;
+
+ msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+
+ /* get lock status and change status */
+ err = msg_update_protected_status(viewer_play_data->msgHandle, viewer_play_data->msgID, ((is_protected) ? false : true));
+
+ /* update message info */
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_update_protected_status is failed");
+ return;
+ }
+
+ msg_set_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, !is_protected);
+
+ /* delete ctx popup */
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* signal emit for showing/hiding lock icon */
+ if (is_protected)
+ edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/hide", "*");
+ else
+ edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/show", "*");
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+
+ /* send refresh conversation result to bubble-composer ug */
+ char str_id[DEF_BUF_LEN] = {0,};
+ service_h svc_handle = NULL;
+
+ service_create(&svc_handle);
+ if (svc_handle < 0 || svc_handle == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create is failed");
+ return;
+ }
+
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_REFRESH_CONV);
+
+ snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+ service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+ ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+
+ service_destroy(svc_handle);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+}
+
+void msg_ui_viewer_option_create_msg_detail_popup(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Evas_Object *popup = NULL;
+ Evas_Object *layout = NULL;
+ Evas_Object *box = NULL;
+ Evas_Object *entry = NULL;
+ Evas_Object *btn_close = NULL;
+
+ /* delete previous popup */
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* create popup */
+ popup = elm_popup_add(viewer_play_data->main_window);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_style_set(popup, "menustyle");
+ elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_MESSAGE_DETAILS"));
+
+ /* create layout */
+ layout = elm_layout_add(viewer_play_data->main_window);
+ elm_layout_file_set(layout, MSG_VIEWER_THEME, "msg/detail");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(layout);
+
+ /* create box */
+ box = elm_box_add(layout);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_homogeneous_set(box, EINA_FALSE);
+ evas_object_show(box);
+ evas_object_size_hint_min_set(box, -1, 400);
+ elm_object_part_content_set(layout, "msg/detail/content", box);
+
+ /*create entry */
+ entry = elm_entry_add(layout);
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_entry_single_line_set(entry, EINA_FALSE);
+ elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+ elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_NO_IMAGE);
+ elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+ elm_entry_editable_set(entry, EINA_FALSE);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+
+ char *str = msg_common_make_message_detail_text(viewer_play_data->msgHandle, viewer_play_data->msgID);
+
+ if (str) {
+ elm_entry_entry_set(entry, str);
+ free(str);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_make_message_detail_text is failed");
+ return;
+ }
+
+ elm_box_pack_end(box, entry);
+ evas_object_show(entry);
+
+ /* add close button */
+ btn_close = elm_button_add(popup);
+ elm_object_style_set(btn_close, "popup_button/default");
+ elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+ elm_object_part_content_set(popup, "button1", btn_close);
+ evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_option_details_popup_close_clicked_cb, viewer_play_data);
+
+ viewer_play_data->popup = popup;
+ viewer_play_data->popup_type = MSG_VIEWER_DETAILS_POPUP;
+ elm_object_content_set(popup, layout);
+
+ msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+ evas_object_show(popup);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_option_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->popup) {
+ evas_object_del(viewer_play_data->popup);
+ viewer_play_data->popup = NULL;
+ viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+ }
+
+ /* connect handler again*/
+ msg_ui_viewer_connect_handler(viewer_play_data);
+
+ /* play viewer again if previous status was PLAY */
+ if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+ return;
+ }
+ }
+}
+
--- /dev/null
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ * INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-utility.h"
+
+/*==================================================================================================
+ * FUNCTION DECLARATIONS
+ *==================================================================================================*/
+
+/*==================================================================================================
+ * FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_play_controller_create(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ Evas_Object *layout = elm_layout_add(viewer_play_data->navi_frame);
+ elm_layout_file_set(layout, MSG_VIEWER_THEME, "play_controller");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(layout);
+
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", layout);
+ viewer_play_data->play_controller = layout;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+ //add signal callbacks
+ edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "volume_clicked", "", msg_ui_viewer_play_controller_volume_clicked_cb, (void *)viewer_play_data);
+ edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "prev_clicked", "", msg_ui_viewer_play_controller_prev_clicked_cb, (void *)viewer_play_data);
+ edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "play_clicked", "", msg_ui_viewer_play_controller_play_pause_clicked_cb, (void *)viewer_play_data);
+ edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "pause_clicked", "", msg_ui_viewer_play_controller_play_pause_clicked_cb, (void *)viewer_play_data);
+ edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "next_clicked", "", msg_ui_viewer_play_controller_next_clicked_cb, (void *)viewer_play_data);
+
+ viewer_play_data->playcontroller_opened = true;
+
+ //register timer
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+
+ //create progressbar
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, 0);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_update(void *data, MSG_VIEWER_PLAY_STATUS_E status)
+{
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_BOOL bfisrt_page = FALSE;
+ MSG_BOOL blast_page = FALSE;
+ SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus = viewer_play_data->smil_eventStatus;
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+
+ if (status == MSG_VIEWER_STOP) {
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ }
+ } else {
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, eventStatus == NULL);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide == NULL);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide->commonData == NULL);
+ if (slide->commonData->pageCnt > 0) {
+ if (slide->pageIdx == 0)
+ bfisrt_page = TRUE;
+
+ if (slide->pageIdx + 1 == slide->commonData->pageCnt)
+ blast_page = TRUE;
+
+ if (bfisrt_page) { /*first page*/
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ }
+ } else {
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_enable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable prev_button");
+ }
+ }
+
+ if (blast_page) { /*lastpage*/
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+ }
+ } else {
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_enable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable next_button");
+ }
+ }
+
+ /*smil player is finished*/
+ if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE &&
+ eventStatus->isLastSlide == TRUE) {
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ }
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart.mixed message");
+ if (viewer_play_data->play_controller) {
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+ edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+ }
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_create_timer(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ //register timer for disappear play_controller automatically when time elapsed after shown
+ if (viewer_play_data->play_controller_timer) {
+ ecore_timer_del(viewer_play_data->play_controller_timer);
+ viewer_play_data->play_controller_timer = NULL;
+ }
+
+ viewer_play_data->play_controller_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_LIFETIME, msg_ui_viewer_play_controller_timer_cb, (void *)viewer_play_data);
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+ Evas_Object *progressbar = NULL;
+ MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+ MSG_BOOL bExcludeHp = FALSE;
+ double total_time = 0.0;
+ double remain_time = 0.0;
+ double elapse_time = 0.0;
+ int remain_second = 0.0;
+ int elapse_second = 0.0;
+ char strTimeBuf[10] = {0,};
+
+ if (slideIdx < 0 ) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "slideIdx = %d, slideIdx must be same or over 0", slideIdx);
+ return;
+ }
+
+ if (!viewer_play_data->progressbar) {
+ progressbar = elm_progressbar_add(viewer_play_data->play_controller);
+ elm_object_theme_set(progressbar, viewer_play_data->progress_th);
+ elm_object_style_set(progressbar, "list_progress");
+ elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+ evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ viewer_play_data->progressbar = progressbar;
+ evas_object_show(progressbar);
+ elm_object_part_content_set(viewer_play_data->play_controller,"progressbar", progressbar);
+ }
+
+ msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+ //In preview mode, slide time for help page should not be considered to total slide time
+ bExcludeHp = (launchmode == MSG_VIEWER_PREVIEW_MODE) ? TRUE : FALSE;
+
+ if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, 0, bExcludeHp, &total_time)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", 0, bExcludeHp);
+ return;
+ }
+ if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, slideIdx, bExcludeHp, &remain_time)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", slideIdx, bExcludeHp);
+ return;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total slide time is %f", total_time);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Remain slide time from current slide(%d) is %f", slideIdx, remain_time);
+ elapse_time = total_time-remain_time;
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Elapsed slide time from first slide(0) to current slide(%d) is %f", slideIdx, elapse_time);
+
+ viewer_play_data->totalProgressTime = remain_second = (int)total_time/1000;
+ elapse_second = (int)elapse_time/1000;
+ viewer_play_data->elapsedProgressTime = elapse_second;
+
+ // START timer text set
+ snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", elapse_second/60, elapse_second%60);
+ edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
+
+ bzero(strTimeBuf, sizeof(strTimeBuf));
+
+ // END timer text set
+ snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", remain_second/60, remain_second%60);
+ edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/end/time", strTimeBuf);
+
+ elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
+
+ if (viewer_play_data->play_controller_progressbar_timer) {
+ ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
+ viewer_play_data->play_controller_progressbar_timer = NULL;
+ }
+
+ viewer_play_data->play_controller_progressbar_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME, msg_ui_viewer_play_controller_progressbar_timer_cb, viewer_play_data);
+
+ if (msg_smil_get_current_slide_status(viewer_play_data->SmilHandle) == PLAYER_STATUS_PAUSED) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Pause progress timer because current slide status is PAUSED");
+ ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool msg_ui_viewer_play_controller_progressbar_timer_cb(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ char strTimeBuf[10] = {0,};
+
+ viewer_play_data->elapsedProgressTime += VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME;
+
+ // update START timer text
+ snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", viewer_play_data->elapsedProgressTime/60, viewer_play_data->elapsedProgressTime%60);
+ edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
+
+ if (viewer_play_data->elapsedProgressTime == viewer_play_data->totalProgressTime) {
+ if (viewer_play_data->play_controller && evas_object_visible_get(viewer_play_data->play_controller) == EINA_FALSE) {
+ elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+ evas_object_show(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = true;
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+ } else {
+ // create play controller timer again
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+ }
+
+ elm_progressbar_value_set(viewer_play_data->progressbar, 1.0);
+ viewer_play_data->play_controller_progressbar_timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+void msg_ui_viewer_destroy_play_controller_progressbar_timer(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->play_controller_progressbar_timer) {
+ ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
+ viewer_play_data->play_controller_progressbar_timer = NULL;
+ viewer_play_data->elapsedProgressTime = 0;
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool msg_ui_viewer_play_controller_timer_cb(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ viewer_play_data->play_controller_timer = NULL;
+
+ if (viewer_play_data->playcontroller_opened) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play controller is hided after 3 seconds elapsed");
+ elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+ evas_object_hide(viewer_play_data->play_controller);
+ viewer_play_data->playcontroller_opened = false;
+ if (!viewer_play_data->title_menu_opened)
+ elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void msg_ui_viewer_play_controller_destroy_timer(MSG_PLAY_DATA_S *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->play_controller_timer) {
+ ecore_timer_del(viewer_play_data->play_controller_timer);
+ viewer_play_data->play_controller_timer = NULL;
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_volume_clicked_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (!viewer_play_data->volumebar)
+ msg_ui_viewer_create_volume_bar((void *)viewer_play_data);
+ else
+ msg_ui_viewer_destroy_volume_bar((void *)viewer_play_data);
+
+ //create play controller timer repeatedly
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+}
+
+void msg_ui_viewer_play_controller_prev_clicked_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+ play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
+
+ if (!strcmp(emission, "prev_clicked")) {
+ /* prev*/
+ int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
+ if (pageIdx >= 0) {
+ if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+ } else {
+ //set progressbar and progress text sync
+ if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, pageIdx-1);
+ }
+ }
+ }
+
+ //create play controller timer repeatedly
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+
+ /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
+ if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+ if (viewer_play_data->title_menu_opened)
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+ }
+ }
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_play_pause_clicked_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (!msg_ui_viewer_command_play_pause(viewer_play_data, (viewer_play_data->status == MSG_VIEWER_PLAY) ? MSG_VIEWER_ACTION_TOOLBAR_PAUSE : MSG_VIEWER_ACTION_TOOLBAR_PLAY))
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+
+ MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_controller_next_clicked_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (!strcmp(emission, "next_clicked"))
+ {
+ SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+ play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+ MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
+ /*next*/
+ int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
+ int total_page = viewer_play_data->smil_eventStatus->pageCnt;
+ if (total_page >= pageIdx) {
+ if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+ MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+ err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
+ if (err != MSG_SMIL_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+ } else {
+ //set progressbar and progress text sync
+ if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+ msg_ui_viewer_play_controller_create_progressbar(viewer_play_data, pageIdx);
+ }
+ }
+ }
+
+ //create play controller timer repeatedly
+ msg_ui_viewer_play_controller_create_timer(viewer_play_data);
+
+ /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
+ if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+ if (viewer_play_data->title_menu_opened)
+ msg_ui_viewer_option_destroy_title_menu(viewer_play_data);
+ }
+ }
+}
+
--- /dev/null
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ * INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+
+#include <utilX.h>
+#include <sound_manager.h>
+
+/*==================================================================================================
+ * FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/* volume key action related with volume bar */
+static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj);
+static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj);
+
+/* volume action with volume key and slide callback */
+static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data);
+static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data);
+static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data);
+
+/* volume action related with volumebar slider */
+static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event);
+static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb);
+
+/* volume action related with SOUNDMANAGER */
+static int __msg_ui_viewer_get_max_volume(void);
+static int __msg_ui_viewer_get_current_volume(void);
+static bool __msg_ui_viewer_set_volume(int volume);
+
+/*==================================================================================================
+ * FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_grab_volume_key(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ int ret = 0;
+
+ ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP, TOP_POSITION_GRAB);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_grab_key() ret = %d", ret);
+
+ ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN, TOP_POSITION_GRAB);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_grab_key() ret = %d", ret);
+}
+
+void msg_ui_viewer_ungrab_volume_key(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ int ret = 0;
+
+ ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_ungrab_key() ret = %d", ret);
+
+ ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN);
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_ungrab_key() ret = %d", ret);
+}
+
+Eina_Bool msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Ecore_Event_Key *ev = event;
+ int use_volume_key = false;
+
+ vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+ if (!use_volume_key) {
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+ viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+ }
+
+ if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is released");
+
+ if (viewer_play_data->vol_up_key_longpress) {
+ ecore_timer_del(viewer_play_data->vol_up_key_longpress);
+ viewer_play_data->vol_up_key_longpress = NULL;
+ }
+ } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) { /* KEY_VOLUMEDOWN */
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is released");
+
+ if (viewer_play_data->vol_down_key_longpress) {
+ ecore_timer_del(viewer_play_data->vol_down_key_longpress);
+ viewer_play_data->vol_down_key_longpress = NULL;
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
+ }
+
+ return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ Ecore_Event_Key *ev = event;
+ int use_volume_key = false;
+
+ vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+ if (use_volume_key) {
+ if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP) || !g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {
+ if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is pressed");
+
+ msg_common_increase_font_size();
+
+ if (viewer_play_data->render_entry) {
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+ msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+ }
+
+ viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
+ } else { /* KEY_VOLUMEDOWN */
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is pressed");
+
+ msg_common_decrease_font_size();
+
+ if (viewer_play_data->render_entry) {
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+ msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+ }
+
+ viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ev->keyname[%s] is not applicable!", ev->keyname);
+ }
+ } else {
+ if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP) || !g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Use volume key setting is not activated. Do volume key action");
+
+ if (!viewer_play_data->volumebar)
+ msg_ui_viewer_create_volume_bar(viewer_play_data);
+
+ if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) { /* KEY_VOLUMEUP */
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+ __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volumebar);
+
+ viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
+ } else { /* KEY_VOLUMEDOWN */
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+ __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volumebar);
+
+ viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
+ }
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ev->keyname[%s] is not applicable!", ev->keyname);
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ int use_volume_key = false;
+
+ vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+ if (use_volume_key) {
+ msg_common_increase_font_size();
+
+ if (viewer_play_data->render_entry) {
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+ msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+ }
+ } else {
+ __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volume_slider);
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+ int use_volume_key = false;
+
+ vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+ if (use_volume_key) {
+ msg_common_decrease_font_size();
+
+ if (viewer_play_data->render_entry) {
+ SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+ MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+ msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+ }
+ } else {
+ __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volume_slider);
+ }
+
+ return EINA_TRUE;
+}
+
+void msg_ui_viewer_create_volume_bar(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ Evas_Object *layout = NULL;
+ Evas_Object *slider = NULL;
+ Evas_Object *icon_start = NULL;
+ Evas_Object *icon_end = NULL;
+
+ layout = elm_layout_add(viewer_play_data->play_layout);
+ elm_layout_file_set(layout, MSG_VIEWER_THEME, "volume_controller");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(layout);
+
+ slider = elm_slider_add(layout);
+ elm_slider_indicator_show_set(slider, EINA_TRUE);
+ evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
+ elm_slider_indicator_format_set(slider, "%1.0f");
+ evas_object_show(slider);
+
+ icon_start = elm_icon_add(layout);
+ elm_image_file_set(icon_start, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MIN);
+ evas_object_size_hint_aspect_set(icon_start, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ icon_end = elm_icon_add(layout);
+ elm_image_file_set(icon_end, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MAX);
+ evas_object_size_hint_aspect_set(icon_end, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ elm_object_content_set(slider,icon_start);
+ elm_object_part_content_set(slider, "end", icon_end);
+
+ elm_slider_min_max_set(slider, 0, __msg_ui_viewer_get_max_volume());
+ elm_slider_value_set(slider, __msg_ui_viewer_get_current_volume());
+
+ elm_object_part_content_set(layout, "slider", slider);
+
+ viewer_play_data->volumebar = layout;
+ viewer_play_data->volume_slider = slider;
+ elm_object_part_content_set(viewer_play_data->play_layout, "volume_layout", viewer_play_data->volumebar);
+
+ evas_object_data_set(slider, "viewer_play_data", viewer_play_data);
+
+ __msg_ui_viewer_volumebar_event_callback_add(slider, __msg_ui_viewer_volumebar_event_cb);
+
+ evas_object_smart_callback_add(slider, "slider,drag,start", __msg_ui_viewer_volumebar_drag_start_cb, viewer_play_data);
+ evas_object_smart_callback_add(slider, "slider,drag,stop", __msg_ui_viewer_volumebar_drag_stop_cb, viewer_play_data);
+ evas_object_smart_callback_add(slider, "changed", __msg_ui_viewer_volumebar_changed_cb, viewer_play_data);
+
+ //create timer
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+ viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+
+}
+
+void msg_ui_viewer_destroy_volume_bar(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+
+ elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
+ evas_object_del(viewer_play_data->volumebar);
+ viewer_play_data->volumebar = NULL;
+}
+
+static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
+ evas_object_del(viewer_play_data->volumebar);
+ viewer_play_data->volumebar = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->volumebar_event_cb)
+ viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_START);
+
+ viewer_play_data->drag_volume_slider = true;
+}
+
+static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+ if (viewer_play_data->volumebar_event_cb)
+ viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_STOP);
+
+ viewer_play_data->drag_volume_slider = false;
+}
+
+static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ double val = elm_slider_value_get(obj);
+
+ if ((int)val != __msg_ui_viewer_get_current_volume())
+ __msg_ui_viewer_set_volume((int)val);
+}
+
+static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, user_data == NULL, "data is NULL");
+ MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)user_data;
+
+ if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_START) {
+ if (viewer_play_data->volumebar_timer) {
+ ecore_timer_del(viewer_play_data->volumebar_timer);
+ viewer_play_data->volumebar_timer = NULL;
+ }
+ } else if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_STOP) {
+ viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+ }
+}
+
+static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, obj == NULL);
+ MSG_PLAY_DATA_S *viewer_play_data = evas_object_data_get(obj, "viewer_play_data");
+
+ viewer_play_data->volumebar_event_cb = event_cb;
+}
+
+static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ double max = 0.0;
+ elm_slider_min_max_get(obj, NULL, &max);
+
+ double current = elm_slider_value_get(obj);
+
+ if (current < max)
+ elm_slider_value_set(obj, (current + 1.0));
+
+ evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
+static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ double min = 0.0;
+ elm_slider_min_max_get(obj, &min, NULL);
+
+ double current = elm_slider_value_get(obj);
+
+ if (current > min)
+ elm_slider_value_set(obj, (current - 1.0));
+
+ evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
+static int __msg_ui_viewer_get_max_volume(void)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ int max_vol = 0;
+
+ int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_vol);
+ if (ret != SOUND_MANAGER_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
+ return -1;
+ }
+
+ return max_vol;
+}
+
+static int __msg_ui_viewer_get_current_volume(void)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ int current = 0;
+
+ int ret = sound_manager_get_volume(SOUND_TYPE_MEDIA, ¤t);
+ if (ret != SOUND_MANAGER_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
+ return -1;
+ }
+
+ return current;
+}
+
+static bool __msg_ui_viewer_set_volume(int volume)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, volume);
+ if (ret != SOUND_MANAGER_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_set_volume().. [0x%x]", ret);
+ return false;
+ }
+
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"set volume value = %d", volume);
+
+ return true;
+}
char file_name_without_ext[MSG_VIEWER_FILENAME_MAX_LEN + 1] = {0};
char new_file_name[MSG_VIEWER_FILENAME_MAX_LEN + 1] = {0};
MSG_BOOL result = FALSE;
+ int ret = 0;
int ncount = 0;
Eina_Bool is_exists = FALSE;
MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "new_file_name = %s", new_file_name);
- media_content_connect();
+ ret = media_content_connect();
- if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_file_cp is failed");
- media_content_disconnect();
- return NULL;
- }
+ if (!ret) {
+ if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_file_cp is failed");
+ media_content_disconnect();
+ return NULL;
+ }
+
+ if (media_content_scan_file(new_file_name) != MEDIA_CONTENT_ERROR_NONE) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_content_scan_file() is failed");
+ media_content_disconnect();
+ return NULL;
+ }
- if (media_content_scan_file(new_file_name) != MEDIA_CONTENT_ERROR_NONE) {
- MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_content_scan_file() is failed");
- media_content_disconnect();
+ ret = media_content_disconnect();
+
+ if (!ret)
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_content_disconnect is failed");
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_content_connect is failed");
return NULL;
}
- media_content_disconnect();
-
return strdup(new_file_name);
}
return NULL;
}
+
+MSG_BOOL msg_ui_viewer_check_address_is_blocked(msg_handle_t msg_handle, char *address, int *filter_id)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+ msg_error_t err = MSG_SUCCESS;
+ msg_struct_list_s filter_list;
+ int i = 0;
+ int total_cnt = 0;
+ char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+
+ err = msg_get_filter_list(msg_handle, &filter_list);
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
+ return FALSE;
+ }
+
+ total_cnt = filter_list.nCount;
+
+ for (i = 0; i < total_cnt; i++) {
+ /* get number */
+ bzero(filter_val, sizeof(filter_val));
+ err = msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+
+ if (err != MSG_SUCCESS) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_str_value() fail - err [%d]", err);
+ msg_release_list_struct(&filter_list);
+ return FALSE;
+ }
+
+ if (!strcmp(address, filter_val)) {
+ int filter_type;
+ msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+ if (filter_type == MSG_FILTER_BY_ADDRESS_SAME) {
+ /* get filter id if address is exist in block list */
+ msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_ID_INT, filter_id);
+ msg_release_list_struct(&filter_list);
+ return TRUE;
+ }
+ }
+ }
+
+ msg_release_list_struct(&filter_list);
+ return FALSE;
+}
+
-#define MAIN_W 720
-#define BODY_PADDING_MIN_H 34
-#define BODY_PADDING_MID_MIN_H 16
-#define SUBJECT_MIN_H 50
-#define SUBJECT_BG_H 12
-#define AUDIO_PANEL_H 80
-#define PAGE_INDEX_MIN_W 96
-#define DETAIL_PADDING_V_MIN 20
-#define DETAIL_PADDING_H_MIN 20
-
-//colors
-#define COLOR_SUBJECT_BG 216 226 232 255
-#define COLOR_SUBJECT_INDEX 128 128 128 255 //winset guide font 'index list'
-#define COLOR_DETAIL_INFO_TEXT 108 168 199 255
-#define COLOR_PROGRESS_START_TEXT 255 255 255 255
-#define COLOR_PROGRESS_END_TEXT 142 142 142 255
-
-//play controllbar attributes
-#define PLAY_CTRBAR_MIN_H 218
-#define PLAY_CTRBAR_TOP_PADDING_MIN_H 50
-#define PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H 30
-#define PLAY_CTRBAR_MIDDLE_PADDING_MIN_H 41
-#define PLAY_CTRBAR_BOTTOM_PADDING_MIN_H 17
-
-#define PLAY_CTRBAR_PROGRESS_BAR_W 486
-#define PLAY_CTRBAR_PROGRESS_PADDING_W 20
-
-#define PLAY_CTRBAR_VOL_BUTTON_W 104
-#define PLAY_CTRBAR_VOL_BUTTON_PADDING_W 30
-
-#define PLAY_CTRBAR_NAVI_BUTTON_W 122
-#define PLAY_CTRBAR_NAVI_BUTTON_PADDING_W 22
-
-#define PLAY_CTRBAR_BUTTON_VOLUME_START_X 20
-#define PLAY_CTRBAR_BUTTON_PREV_START_X (PLAY_CTRBAR_BUTTON_VOLUME_START_X+PLAY_CTRBAR_VOL_BUTTON_W+PLAY_CTRBAR_VOL_BUTTON_PADDING_W)
-#define PLAY_CTRBAR_BUTTON_PLAY_START_X (PLAY_CTRBAR_BUTTON_PREV_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
-#define PLAY_CTRBAR_BUTTON_NEXT_START_X (PLAY_CTRBAR_BUTTON_PLAY_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
-
-#define PLAY_VOLUMEBAR_H 112
-
-//edc images
-#define PLAYER_BG "M01_player_bg.png"
-#define VOL_BTN "M01_controller_icon_volume.png"
-#define VOL_BTN_PRESS "M01_controller_icon_volume_press.png"
-#define PREV_BTN "M01_play_btn_previous.png"
-#define PREV_BTN_PRESS "M01_play_btn_previous_press.png"
-#define PREV_BTN_DIM "M01_Play_btn_previous_dim.png"
-#define PLAY_BTN "M01_Play_btn__play.png"
-#define PLAY_BTN_PRESS "M01_Play_btn__play_press.png"
-#define PAUSE_BTN "M01_play_btn_pause.png"
-#define PAUSE_BTN_PRESS "M01_play_btn_pause_press.png"
-#define NEXT_BTN "M01_play_btn_next.png"
-#define NEXT_BTN_PRESS "M01_play_btn_next_press.png"
-#define NEXT_BTN_DIM "M01_Play_btn_next_dim.png"
-#define PROGRESS_BAR "M01_player_progress_bar.png"
-#define PROGRESS_BG "M01_player_progress_bg.png"
-
-#define LOCK_ICON "M01_icon_locked.png"
-#define SUBJECT_INDEX_BG "M01_subject_bg.png"
-
-#define TITLE_LIST_BG "M01_popup_bubble_bg.png"
-#define AUDIO_ICON "myfile_icon_music.png"
+#include "msg_viewer_defines.edc"
collections {
group {
name: "subject/pageindex";
images {
image: LOCK_ICON COMP;
- image: SUBJECT_INDEX_BG COMP;
}
parts {
part {
scale: 1;
description {
state: "default" 0.0;
- min: 0 SUBJECT_MIN_H+SUBJECT_BG_H;
+ min: 0 SUBJECT_MIN_H;
}
}
part {
}
}
part {
- name: "rect/bg/image";
- type: IMAGE;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 1;
- min: 0 SUBJECT_BG_H;
- align: 0.5 1.0;
- rel1{to:"rect"; relative:0.0 1.0;}
- rel2{to:"rect"; relative:1.0 1.0;}
- image {
- normal: SUBJECT_INDEX_BG;
- }
- }
- }
- part {
name: "subject/text";
type: TEXT;
scale: 1;
align: 0.0 0.5;
color: COLOR_SUBJECT_INDEX;
text {
- font: "SLP:style=Bold";
- text_class: "slp_medium";
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
size: 32;
align: 0.0 0.5;
}
rel2{to:"rect"; relative:1.0 1.0;}
color: COLOR_SUBJECT_INDEX;
text {
- font: "SLP:style=Bold";
- text_class: "slp_medium";
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
size: 32;
+ align: 0.5 0.5;
}
}
}
align: 0.0 0.5;
color: COLOR_SUBJECT_INDEX;
text {
- font: "SLP:style=Bold";
- text_class: "slp_medium";
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
size: 36;
align: 0.0 0.5;
}
}
}
part {
- name: "msg/detail/bg";
- type: SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- color: 0 0 0 0;
- rel1{to: "rect"; relative: 0.0 0.0;}
- rel2{to: "rect"; relative: 1.0 1.0;}
- }
- }
- part {
name: "rect/padding/top";
type: RECT;
scale: 1;
}
}
}
+
+ group {
+ name: "help_page_save_all";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 100;
+ color: 235 233 225 255;
+ }
+ }
+
+ PART_PADDING_LEFT("pad.left", 26, "bg");
+ PART_PADDING_RIGHT("pad.right", 26, "bg");
+
+ part {
+ name: "item.filename.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x: "pad.left"; to_y: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad.filename.right"; to_y: "bg"; }
+ color: 0 0 0 0;
+ }
+ }
+ PART_TEXT("item.filename.text", "item.filename.rect", "", "Tizen:style=Regular", "tizen", 34, 0.0, 0.5, 0, 0, 0, 255)
+ PART_H_PIXEL_RECT("pad.filename.right", 12, 1.0, 0.0, "item.save.rect")
+
+ part {
+ name: "item.save.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: 72 72;
+ rel1 { relative: 0.0 0.0; to_x: "pad.right"; to_y: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad.right"; to_y: "bg"; }
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ }
+ }
+ PART_SWALLOW("item.save.icon", "item.save.rect")
+
+ PART_RECT("over", 0.0, 0.0, "bg", "bg", 0.0, 1.0, "item.save.rect", "item.save.rect")
+ PART_EVENT_RECT("over_event", "over")
+
+ PART_BOTTOM_LINE_DOUBLE("line.bottom", "bg")
+ }
+ }
+
+ group {
+ name: "help_page_item";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 100;
+ color: 235 233 225 255;
+ }
+ }
+
+ PART_PADDING_LEFT("pad.left", 26, "bg");
+ PART_PADDING_RIGHT("pad.right", 26, "bg");
+
+ part {
+ name: "item.thumbnail.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: 74 74;
+ max: 74 74;
+ rel1 { relative: 1.0 0.0; to_x: "pad.left"; to_y: "bg"; }
+ rel2 { relative: 1.0 1.0; to_x: "pad.left"; to_y: "bg"; }
+ align: 0.0 0.5;
+ color: 0 0 0 0;
+ }
+ }
+
+ PART_PADDING_TOP("thumbnail.icon.line.top", 1, "item.thumbnail.rect")
+ PART_PADDING_LEFT("thumbnail.icon.line.left", 1, "item.thumbnail.rect")
+ PART_PADDING_RIGHT("thumbnail.icon.line.right", 1, "item.thumbnail.rect")
+ PART_PADDING_BOTTOM("thumbnail.icon.line.bottom", 1, "item.thumbnail.rect")
+
+ PART_SWALLOW("item.thumbnail.icon", "item.thumbnail.rect")
+ PART_H_PIXEL_RECT("pad.thumbnail.icon.right", 16, 0.0, 1.0, "item.thumbnail.icon")
+
+ part {
+ name: "item.filename.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x: "pad.thumbnail.icon.right"; to_y: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad.filename.right"; to_y: "bg"; }
+ color: 0 0 0 0;
+ }
+ }
+ PART_TEXT("item.filename.text", "item.filename.rect", "", "Tizen:style=Regular", "tizen", 34, 0.0, 0.5, 0, 0, 0, 255)
+ PART_H_PIXEL_RECT("pad.filename.right", 12, 1.0, 0.0, "item.filesize.rect")
+
+ part {
+ name: "item.filesize.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 120 0;
+ max: 120 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pad.filesize.right"; to_y: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad.filesize.right"; to_y: "bg"; }
+ color: 0 0 0 0;
+ }
+ }
+ PART_TEXT("item.filesize.text", "item.filesize.rect", "", "Tizen:style=Regular", "tizen", 28, 1.0, 0.5, 102, 102, 102, 255)
+ PART_H_PIXEL_RECT("pad.filesize.right", 10, 1.0, 0.0, "item.save.icon")
+
+ part {
+ name: "item.save.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: 72 72;
+ rel1 { relative: 0.0 0.0; to_x: "pad.right"; to_y: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad.right"; to_y: "bg"; }
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ }
+ }
+ PART_SWALLOW("item.save.icon", "item.save.rect")
+
+ PART_RECT("over", 0.0, 0.0, "bg", "bg", 0.0, 1.0, "item.save.rect", "item.save.rect")
+ PART_EVENT_RECT("over_event", "over")
+
+ PART_BOTTOM_LINE_DOUBLE("line.bottom", "bg")
+ }
+
+ programs {
+ program {
+ name: "mouse_clicked";
+ signal: "mouse,clicked,1";
+ source: "over_event";
+ action: SIGNAL_EMIT "clicked" "";
+ }
+ }
+ }
}
--- /dev/null
+//Layout
+#define MAIN_W 720
+
+//Body attributes
+#define BODY_PADDING_MIN_H 34
+#define BODY_PADDING_MID_MIN_H 16
+#define SUBJECT_MIN_H 50
+#define AUDIO_PANEL_H 80
+#define PAGE_INDEX_MIN_W 96
+#define DETAIL_PADDING_V_MIN 20
+#define DETAIL_PADDING_H_MIN 20
+
+//colors
+#define COLOR_SUBJECT_BG 216 226 232 255
+#define COLOR_SUBJECT_INDEX 128 128 128 255
+#define COLOR_DETAIL_INFO_TEXT 108 168 199 255
+#define COLOR_PROGRESS_START_TEXT 255 255 255 255
+#define COLOR_PROGRESS_END_TEXT 142 142 142 255
+
+//play controllbar attributes
+#define PLAY_CTRBAR_MIN_H 218
+#define PLAY_CTRBAR_TOP_PADDING_MIN_H 50
+#define PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H 30
+#define PLAY_CTRBAR_MIDDLE_PADDING_MIN_H 41
+#define PLAY_CTRBAR_BOTTOM_PADDING_MIN_H 17
+
+#define PLAY_CTRBAR_PROGRESS_BAR_W 486
+#define PLAY_CTRBAR_PROGRESS_PADDING_W 20
+
+#define PLAY_CTRBAR_VOL_BUTTON_W 104
+#define PLAY_CTRBAR_VOL_BUTTON_PADDING_W 30
+
+#define PLAY_CTRBAR_NAVI_BUTTON_W 122
+#define PLAY_CTRBAR_NAVI_BUTTON_PADDING_W 22
+
+#define PLAY_CTRBAR_BUTTON_VOLUME_START_X 20
+#define PLAY_CTRBAR_BUTTON_PREV_START_X (PLAY_CTRBAR_BUTTON_VOLUME_START_X+PLAY_CTRBAR_VOL_BUTTON_W+PLAY_CTRBAR_VOL_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_PLAY_START_X (PLAY_CTRBAR_BUTTON_PREV_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_NEXT_START_X (PLAY_CTRBAR_BUTTON_PLAY_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
+
+#define PLAY_VOLUMEBAR_H 112
+
+//edc images
+#define PLAYER_BG "M01_player_bg.png"
+#define VOL_BTN "M01_controller_icon_volume.png"
+#define VOL_BTN_PRESS "M01_controller_icon_volume_press.png"
+#define PREV_BTN "M01_play_btn_previous.png"
+#define PREV_BTN_PRESS "M01_play_btn_previous_press.png"
+#define PREV_BTN_DIM "M01_Play_btn_previous_dim.png"
+#define PLAY_BTN "M01_Play_btn__play.png"
+#define PLAY_BTN_PRESS "M01_Play_btn__play_press.png"
+#define PAUSE_BTN "M01_play_btn_pause.png"
+#define PAUSE_BTN_PRESS "M01_play_btn_pause_press.png"
+#define NEXT_BTN "M01_play_btn_next.png"
+#define NEXT_BTN_PRESS "M01_play_btn_next_press.png"
+#define NEXT_BTN_DIM "M01_Play_btn_next_dim.png"
+#define PROGRESS_BAR "M01_player_progress_bar.png"
+#define PROGRESS_BG "M01_player_progress_bg.png"
+
+#define LOCK_ICON "M01_icon_locked.png"
+#define SUBJECT_INDEX_BG "M01_subject_bg.png"
+
+#define TITLE_LIST_BG "M01_popup_bubble_bg.png"
+#define AUDIO_ICON "myfile_icon_music.png"
+
+//MACROS
+#define PART_BG(pName) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define PART_RECT(pName, pR1x, pR1y, pR1xt, pR1yt, pR2x, pR2y, pR2xt, pR2yt) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: pR1x pR1y; to_x: pR1xt; to_y: pR1yt; } \
+ rel2 { relative: pR2x pR2y; to_x: pR2xt; to_y: pR2yt; } \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define PART_PIXEL_RECT(pName, pX, pY, pAx, pAy, pRx, pRy, pRt) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: pX pY; \
+ align: pAx pAy; \
+ rel1 { relative: pRx pRy; to: pRt; } \
+ rel2 { relative: pRx pRy; to: pRt; } \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define PART_PIXEL_RECT_EX(pName, pX, pY, pAx, pAy, pR1x, pR1y, pR2x, pR2y, pRt) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: pX pY; \
+ max: pX pY; \
+ align: pAx pAy; \
+ rel1 { relative: pR1x pR1y; to: pRt; } \
+ rel2 { relative: pR2x pR2y; to: pRt; } \
+ color: 0 0 0 0; \
+ } \
+ }
+
+
+#define PART_V_PIXEL_RECT(pName, pY, pAy, pRy, pRt) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 pY; \
+ fixed: 0 1; \
+ align: 0.5 pAy; \
+ rel1 { relative: 0.0 pRy; to: pRt; } \
+ rel2 { relative: 1.0 pRy; to: pRt; } \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define PART_H_PIXEL_RECT(pName, pX, pAx, pRx, pRt) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: pX 0; \
+ fixed: 1 0; \
+ align: pAx 0.5; \
+ rel1 { relative: pRx 0.0; to: pRt; } \
+ rel2 { relative: pRx 1.0; to: pRt; } \
+ color: 0 0 0 0; \
+ } \
+ }
+
+#define PART_SWALLOW(pName, pTo) \
+ part { \
+ name: pName; \
+ type: SWALLOW; \
+ mouse_events: 1; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ fixed: 1 1; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ } \
+ }
+
+#define PART_EVENT_RECT(pName, pTo) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 1; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ color: 0 0 0 0; \
+ visible: 1; \
+ } \
+ description { \
+ state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ }
+
+#define PART_COLOR_RECT(pName, pCr, pCg, pCb, pCa, pTo) \
+ part { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ color: pCr pCg pCb pCa; \
+ } \
+ }
+
+#define PART_SWALLOW_RECT_BAR(pName, pTo, pRx1, pRy1, pRx2, pRy2)\
+ part{\
+ name: pName;\
+ type: SWALLOW;\
+ mouse_events: 0; \
+ scale: 1;\
+ description{\
+ state: "default" 0.0;\
+ rel1 { relative: pRx1 pRy1; to: pTo;}\
+ rel2 { relative: pRx2 pRy2; to: pTo;}\
+ }\
+ }
+
+#define PART_TEXT(pName, pTo, pString, pFont, pClass, pSize, pAx, pAy, pCr, pCg, pCb, pCa) \
+ part { \
+ name: pName; \
+ type: TEXT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ text { \
+ text: pString; \
+ font: pFont; \
+ text_class: pClass; \
+ size: pSize; \
+ align: pAx pAy; \
+ ellipsis: 0.0; \
+ } \
+ color: pCr pCg pCb pCa; \
+ } \
+ }
+
+#define PART_IMAGE(pName, pTo, pImage) \
+ part { \
+ name: pName; \
+ type: IMAGE; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ image.normal: pImage; \
+ } \
+ }
+
+#define PART_BORDER_IMAGE(pName, pTo, pImage, pL, pR, pT, pB) \
+ part { \
+ name: pName; \
+ type: IMAGE; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; to: pTo; } \
+ rel2 { relative: 1.0 1.0; to: pTo; } \
+ image.normal: pImage; \
+ image.border: pL pR pT pB; \
+ } \
+ }
+
+#define PART_TOP_LINE(pName, pTo) \
+ part \
+ { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: 187 187 187 255; \
+ rel1 { relative: 0.0 0.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 1.0 0.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_LEFT_LINE(pName, pTo) \
+ part \
+ { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 1 0; \
+ fixed: 1 0; \
+ visible: 1; \
+ color: 187 187 187 255; \
+ rel1 { relative: 0.0 0.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 0.0 1.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_RIGHT_LINE(pName, pTo) \
+ part \
+ { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 1 0; \
+ fixed: 1 0; \
+ visible: 1; \
+ color: 187 187 187 255; \
+ rel1 { relative: 1.0 0.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 1.0 1.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_BOTTOM_LINE(pName, pTo) \
+ part \
+ { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: 187 187 187 255; \
+ rel1 { relative: 0.0 1.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 1.0 1.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_BOTTOM_LINE_DOUBLE(pName, pTo) \
+ part \
+ { \
+ name: pName; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: 211 209 203 255; \
+ rel1 { relative: 0.0 1.0; to: pTo; offset: 0 -1; } \
+ rel2 { relative: 1.0 1.0; to: pTo; offset: 0 -1; } \
+ } \
+ } \
+ part \
+ { \
+ name: pName##"2"; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: 255 255 255 255; \
+ rel1 { relative: 0.0 1.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 1.0 1.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_ACCESS_RECT(pTo) \
+ part \
+ { \
+ name: "access"; \
+ type: RECT; \
+ repeat_events: 1; \
+ description { \
+ state: "default" 0.0; \
+ fixed: 1 1; \
+ color: 0 0 0 0; \
+ rel1 { relative: 0.0 1.0; to: pTo; offset: 0 0; } \
+ rel2 { relative: 1.0 1.0; to: pTo; offset: 0 0; } \
+ } \
+ } \
+
+#define PART_PADDING_TOP(pName, pSize, pTo) \
+ PART_V_PIXEL_RECT(pName, pSize, 0.0, 0.0, pTo)
+
+#define PART_PADDING_BOTTOM(pName, pSize, pTo) \
+ PART_V_PIXEL_RECT(pName, pSize, 1.0, 1.0, pTo)
+
+#define PART_PADDING_LEFT(pName, pSize, pTo) \
+ PART_H_PIXEL_RECT(pName, pSize, 0.0, 0.0, pTo)
+
+#define PART_PADDING_RIGHT(pName, pSize, pTo) \
+ PART_H_PIXEL_RECT(pName, pSize, 1.0, 1.0, pTo)
+
+#define SCRIPT_CUSTOM_PART(pPart) \
+ custom_state(PART:pPart, "default", 0.0); \
+ set_state(PART:pPart, "custom", 0.0);
+
+#define SCRIPT_SET_IMAGE(pPart, pVal) \
+ set_state_val(PART:pPart, STATE_IMAGE, IMAGE:pVal);
+
+#define SCRIPT_SET_VISIBLE(pPart, pVal) \
+ set_state_val(PART:pPart, STATE_VISIBLE, pVal);
+
+#define SCRIPT_SET_STATE_DISABLED(pPart) \
+ set_state(PART:pPart, "disabled", 0.0);
+
+#define SCRIPT_SET_STATE_DEFAULT(pPart) \
+ set_state(PART:pPart, "default", 0.0);
+
+#define SCRIPT_SET_STATE_SHOW(pPart) \
+ set_state(PART:pPart, "show", 0.0);
+
+#define SCRIPT_SET_STATE_HIDE(pPart) \
+ set_state(PART:pPart, "hide", 0.0);
+
+#define PROGRAM_SET_VISIBLE(pName, pSignal, pSource, pPart) \
+ program { \
+ name: pName; \
+ signal: pSignal; \
+ source: pSource; \
+ script { \
+ SCRIPT_SET_STATE_SHOW(pPart) \
+ } \
+ }
+
+#define PROGRAM_SET_INVISIBLE(pName, pSignal, pSource, pPart) \
+ program { \
+ name: pName; \
+ signal: pSignal; \
+ source: pSource; \
+ script { \
+ SCRIPT_SET_STATE_HIDE(pPart) \
+ } \
+ }
\ No newline at end of file