+/*if pass traits=" ",means make tts omit the traits-reading */
+EXPORT_PUBLIC
+void setting_set_tts_info(Evas_Object *obj, const char *label,
+ const char *traits, const char *state,
+ const char *guide)
+{
+ /*ret_if(!obj); */
+ if (!obj) {
+ return;
+ }
+ /*SETTING_TRACE("label:%s,traits:%s,state:%s,guide:%s", label, traits,state,guide); */
+ if (label)
+ elm_access_info_set(obj, ELM_ACCESS_INFO, label);
+
+ if (traits)/* && isEmptyStr(elm_access_info_get(obj, ELM_ACCESS_TYPE))) */
+ elm_access_info_set(obj, ELM_ACCESS_TYPE, traits);
+
+ if (state)
+ elm_access_info_set(obj, ELM_ACCESS_STATE, state);
+ if (guide) {
+ elm_access_info_set(obj, ELM_ACCESS_CONTEXT_INFO, NULL);
+ elm_access_info_set(obj, ELM_ACCESS_CONTEXT_INFO, guide);
+ }
+}
+
+EXPORT_PUBLIC
+void __toogle_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ /* SETTING_TRACE_BEGIN; */
+ retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_selected_set(item, 0);
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+ ret_if(!list_item);
+
+ /* new status */
+ setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
+ /*int err = 0; */
+ /*int ret = setting_set_bool_slp_key(list_item->int_slp_setting_binded, list_item->chk_status, &err); */
+ const char *use_vconf = (char *)(list_item->int_slp_setting_binded);
+ int ret = vconf_set_bool(use_vconf, list_item->chk_status);
+
+ setting_retm_if(0 != ret, "Failed to set vconf [%s]", list_item->int_slp_setting_binded);
+}
+
+
+EXPORT_PUBLIC
+void __toogle_chk_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ retm_if(data == NULL, "Data parameter is NULL");
+ Setting_GenGroupItem_Data *list_item =
+ (Setting_GenGroupItem_Data *) data;
+ list_item->chk_status = elm_check_state_get(obj); /* for update */
+
+ /*int err = 0; */
+ /*int ret = setting_set_bool_slp_key(list_item->int_slp_setting_binded, list_item->chk_status, &err); */
+ const char *use_vconf = (char *)(list_item->int_slp_setting_binded);
+ int ret = vconf_set_bool(use_vconf, list_item->chk_status);
+ if (0 != ret) { /*rollback */
+ setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
+ return;
+ }
+}
+
+EXPORT_PUBLIC void setting_conformant_keypad_state(Evas_Object *win_main, bool enable)
+{
+ Evas_Object *conform = evas_object_data_get(win_main, "conformant");
+ if (conform) {
+ SETTING_TRACE("conformant keypad %d", enable);
+ if (enable) {
+ elm_object_signal_emit(conform, "elm,state,virtualkeypad,enable", "");
+ elm_object_signal_emit(conform, "elm,state,clipboard,enable", "");
+ } else {
+ elm_object_signal_emit(conform, "elm,state,virtualkeypad,disable", "");
+ elm_object_signal_emit(conform, "elm,state,clipboard,disable", "");
+ }
+ }
+}
+
+static void __title_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!obj);
+ evas_object_data_set(obj, "text", NULL);
+}
+
+EXPORT_PUBLIC Evas_Object *setting_create_navibar_title_text_btn(Evas_Object *parent, const char *text, Evas_Smart_Cb func, void *data)
+{
+ Evas_Object *btn = elm_button_add(parent);
+ if (!btn) {
+ return NULL;
+ }
+ elm_object_style_set(btn, "naviframe/title_text");
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_DEL, __title_btn_del_cb, NULL);
+ if (text) {
+ elm_object_text_set(btn, _(text));
+ evas_object_data_set(btn, "text", text);
+ }
+ if (func) {
+ evas_object_smart_callback_add(btn, "clicked", func, data);
+ }
+ return btn;
+}
+
+#if SUPPORT_HELPUI
+EXPORT_PUBLIC void setting_help_popup_circle_block_create(Evas_Object *win, Evas_Object *parent, Evas_Object **circle,
+ Evas_Object **popup, char *string_id, int x, int y, Evas_Coord_Rectangle *rect)
+{
+ helpui_set_block_win(win);
+ setting_help_popup_circle_unblock_create(parent, circle, popup, string_id, x, y);
+ helpui_set_unblock_rect(win, rect);
+}
+
+EXPORT_PUBLIC void setting_help_popup_circle_block_move(Evas_Object *win, Evas_Object *circle, Evas_Object *popup, int x,
+ int y, Evas_Coord_Rectangle *rect)
+{
+ helpui_set_unblock_win(win);
+ helpui_set_block_win(win);
+ evas_object_move(circle, x, y);
+ evas_object_move(popup, x, y + 10);
+ helpui_set_unblock_rect(win, rect);
+}
+
+static void __help_popup_language_change_cb(void *data, Evas_Object *obj, void *source)
+{
+ char *string_id = (char *)data;
+ char *message = _(string_id);
+ helpui_set_popup_text(obj, message);
+}
+
+EXPORT_PUBLIC void setting_help_popup_circle_unblock_create(Evas_Object *parent, Evas_Object **circle,
+ Evas_Object **popup, char *string_id, int x, int y)
+{
+ *circle = helpui_add_circle(parent, HELP_CIRCLE_BIG);
+ evas_object_move(*circle, x, y);
+ char *message = _(string_id);
+ *popup = helpui_add_popup(parent, message, HELP_POPUP_WITH_ARROW, NULL, NULL);
+ helpui_set_popup_language_changed_cb(*popup, __help_popup_language_change_cb,
+ string_id);
+ evas_object_move(*popup, x, y + 8);
+}
+
+EXPORT_PUBLIC void setting_help_popup_circle_block_delete(Evas_Object *win, Evas_Object **circle, Evas_Object **popup)
+{
+ helpui_set_unblock_win(win);
+ if (*circle) {
+ evas_object_del(*circle);
+ *circle = NULL;
+ }
+ if (*popup) {
+ evas_object_del(*popup);
+ *popup = NULL;
+ }
+}
+
+EXPORT_PUBLIC void setting_help_popup_block_create(Evas_Object *win, Evas_Object *parent,
+ Evas_Object **popup, char *string_id, int x, int y, Evas_Coord_Rectangle *rect)
+{
+ helpui_set_block_win(win);
+ setting_help_popup_unblock_create(parent, popup, string_id, x, y);
+ if (rect != NULL) {
+ helpui_set_unblock_rect(win, rect);
+ }
+}
+
+EXPORT_PUBLIC void setting_help_popup_block_move(Evas_Object *win, Evas_Object *popup, int x, int y,
+ Evas_Coord_Rectangle *rect)
+{
+ helpui_set_unblock_win(win);
+ helpui_set_block_win(win);
+ evas_object_move(popup, x, y);
+ if (rect != NULL) {
+ helpui_set_unblock_rect(win, rect);
+ }
+}
+
+EXPORT_PUBLIC void setting_help_popup_unblock_create(Evas_Object *parent,
+ Evas_Object **popup, char *string_id, int x, int y)
+{
+ char *message = _(string_id);
+ *popup = helpui_add_popup(parent, message, HELP_POPUP_WITHOUT_ARROW, NULL, NULL);
+ helpui_set_popup_language_changed_cb(*popup, __help_popup_language_change_cb,
+ string_id);
+ evas_object_move(*popup, x, y);
+}
+#endif
+
+#define MIN_SWIP_DISTANCE_X 300
+#define MIN_SWIP_DISTANCE_Y 75
+
+static void __tabbar_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ /*SETTING_TRACE_BEGIN; */
+ retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+ retm_if(data == NULL, "Invalid argument: data is NULL");
+ Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+ Evas_Point *point_down = data;
+ point_down->x = ev->output.x;
+ point_down->y = ev->output.y;
+}
+
+static void __tabbar_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ /*SETTING_TRACE_BEGIN; */
+ retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+ retm_if(data == NULL, "Invalid argument: data is NULL");
+ Evas_Point *point_down = data;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *)event_info;
+
+ int x_offset = ev->output.x - point_down->x;
+ int y_offset = ev->output.y - point_down->y;
+
+ bool skip = TRUE;
+
+ Evas_Object *navi = NULL;
+ Elm_Object_Item *top_item = NULL;
+ Evas_Object *eo_view = NULL;
+ Evas_Object *tabbar = NULL;
+ /*char *tabbar_t = NULL; */
+ if ((navi = elm_object_part_content_get(obj, "elm.swallow.content"))
+ && (top_item = elm_naviframe_top_item_get(navi))) {
+ /*SETTING_TRACE("top_item:%p", top_item); */
+ if ((eo_view = elm_object_item_content_get(top_item))
+ && (tabbar = elm_object_part_content_get(eo_view, "elm.swallow.tabbar"))
+ && 0 == safeStrCmp(evas_object_type_get(tabbar), "elm_toolbar")) {
+ /*SETTING_TRACE("Skip Case 1"); */
+ skip = FALSE;
+ }
+
+ if (skip && (tabbar = elm_object_item_part_content_get(top_item, "tabbar"))
+ && 0 == safeStrCmp(evas_object_type_get(tabbar), "elm_toolbar")) {
+ /*SETTING_TRACE("Skip case 2"); */
+ skip = FALSE;
+ }
+ }
+ if (skip)
+ return;
+ /*SETTING_TRACE("tabbar:%p", tabbar); */
+
+ /*SETTING_TRACE("SWIPE VALUE : x=(%d) : y=(%d)", x_offset, y_offset); */
+ if (-x_offset > MIN_SWIP_DISTANCE_X && abs(y_offset) < MIN_SWIP_DISTANCE_Y) {
+
+ /*SETTING_TRACE("swipe to right : %d : %d", x_offset, y_offset); */
+ /*swip right */
+ /*if(swip_data->cb) */
+ /* swip_data->cb(cb_data, SETTING_SWIP_RIGHT); */
+ Elm_Object_Item *cur_item = elm_toolbar_selected_item_get(tabbar);
+ /*SETTING_TRACE("cur_item:%p", cur_item); */
+ if (cur_item) {
+ Elm_Object_Item *dest_item = elm_toolbar_item_next_get(cur_item);
+ /*SETTING_TRACE("dest_item:%p", dest_item); */
+ /*if (!dest_item) */
+ /* dest_item = elm_toolbar_first_item_get(tabbar); */
+ /*SETTING_TRACE("dest_item:%p", dest_item); */
+ elm_toolbar_item_selected_set(dest_item, EINA_TRUE);
+ }
+
+ } else if (x_offset > MIN_SWIP_DISTANCE_X && abs(y_offset) < MIN_SWIP_DISTANCE_Y) {
+ /*swip left */
+ /*if(swip_data->cb) */
+ /* swip_data->cb(cb_data, SETTING_SWIP_LEFT); */
+ /*SETTING_TRACE("swipe to left : %d : %d", -x_offset, y_offset); */
+ Elm_Object_Item *cur_item = elm_toolbar_selected_item_get(tabbar);
+ /*SETTING_TRACE("cur_item:%p", cur_item); */
+ if (cur_item) {
+ Elm_Object_Item *dest_item = elm_toolbar_item_prev_get(cur_item);
+ /*SETTING_TRACE("dest_item:%p", dest_item); */
+ /*if (!dest_item) */
+ /* dest_item = elm_toolbar_last_item_get(tabbar); */
+ /*SETTING_TRACE("dest_item:%p", dest_item); */
+ elm_toolbar_item_selected_set(dest_item, EINA_TRUE);
+ }
+
+ }
+
+}
+static void __tabbar_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ /*SETTING_TRACE_BEGIN; */
+ ret_if(!data);
+ Evas_Point *point_down = data;
+ FREE(point_down);/*delete the date. */
+ evas_object_data_set(obj, "tabbar", NULL);
+}
+
+static void __tabbar_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ /*SETTING_TRACE_BEGIN; */
+}
+
+EXPORT_PUBLIC void setting_tabbar_enable_swip_effect(Evas_Object *ly_main, Evas_Object *tabbar)
+{
+ SETTING_TRACE_BEGIN;
+ if (ly_main) {
+ evas_object_data_set(ly_main, "tabbar", tabbar);
+ Evas_Point *point_down = calloc(1, sizeof(Evas_Point));
+ evas_object_event_callback_add(ly_main, EVAS_CALLBACK_MOUSE_DOWN, __tabbar_mouse_down_cb, point_down);
+ evas_object_event_callback_add(ly_main, EVAS_CALLBACK_MOUSE_UP, __tabbar_mouse_up_cb, point_down);
+ evas_object_event_callback_add(ly_main, EVAS_CALLBACK_MOUSE_MOVE, __tabbar_mouse_move_cb, point_down);
+ evas_object_event_callback_add(ly_main, EVAS_CALLBACK_DEL, __tabbar_btn_del_cb, point_down);
+ }
+}
+
+EXPORT_PUBLIC void setting_tabbar_disable_swip_effect(Evas_Object *ly_main, Evas_Object *tabbar)
+{
+ SETTING_TRACE_BEGIN;
+ if (ly_main) {
+ evas_object_data_set(ly_main, "tabbar", tabbar);
+ /*Evas_Point *point_down = calloc(1,sizeof(Evas_Point)); */
+ evas_object_event_callback_del(ly_main, EVAS_CALLBACK_MOUSE_DOWN, __tabbar_mouse_down_cb);
+ evas_object_event_callback_del(ly_main, EVAS_CALLBACK_MOUSE_UP, __tabbar_mouse_up_cb);
+ evas_object_event_callback_del(ly_main, EVAS_CALLBACK_MOUSE_MOVE, __tabbar_mouse_move_cb);
+ evas_object_event_callback_del(ly_main, EVAS_CALLBACK_DEL, __tabbar_btn_del_cb);
+ /* evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func) */
+ }
+}
+
+static void __obj_listen_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+
+{
+ ret_if(!obj);
+ const char *vconf = (const char *)evas_object_data_get(obj, "vconf");
+ vconf_callback_fn cb = (vconf_callback_fn)evas_object_data_get(obj, "cb");
+ (void)vconf_ignore_key_changed(vconf, cb);
+
+ evas_object_data_set(obj, "vconf", NULL);
+ evas_object_data_set(obj, "cb", NULL);
+ evas_object_data_set(obj, "data", NULL);
+}
+
+EXPORT_PUBLIC void
+setting_obj_listen_on(Evas_Object *obj, const char *vconf, vconf_callback_fn cb, void *data)
+{
+ /*Bind the life of obj and vconf listen */
+ evas_object_data_set(obj, "vconf", vconf);
+ \
+ evas_object_data_set(obj, "cb", cb);
+ \
+ evas_object_data_set(obj, "data", data);
+ \
+ vconf_notify_key_changed(vconf, cb, data);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, __obj_listen_del_cb, NULL);
+}
+
+EXPORT_PUBLIC void
+setting_decorate_image(Evas_Object *obj, const char *code_style)
+{
+ if (obj)
+ ea_theme_object_color_set(obj, code_style);
+}
+
+