X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=setting-common%2Fsrc%2Fsetting-common-draw-naviframe.c;h=9649777c02a11c62486d01a4732822bb1b2cff7a;hb=5298c5f18c9f7ef49257f14cd18a5bdfb02297a4;hp=82d8c28606ab55e35320222a95c71bcbd9da9a51;hpb=f8048482b402e89a301685612d3dd0690f2e9b62;p=apps%2Fhome%2Fsettings.git diff --git a/setting-common/src/setting-common-draw-naviframe.c b/setting-common/src/setting-common-draw-naviframe.c index 82d8c28..9649777 100644 --- a/setting-common/src/setting-common-draw-naviframe.c +++ b/setting-common/src/setting-common-draw-naviframe.c @@ -23,14 +23,14 @@ #include #include #include -#include +#include extern Eina_List *elm_widget_scrollable_children_get(Evas_Object *obj); #define HALF_SCREEN_STR_LEN 20 #define ONE_THIRD_SCREEN_STR_LEN 13 -#define ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str) \ +#define ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str) \ {\ evas_object_data_set(eo_view, "navi_it", navi_it);\ evas_object_data_set(eo_view, "navi_title", title_str);\ @@ -78,7 +78,7 @@ static void __navi_eo_view_lang_change_cb(keynode_t *key, void *data) char *btn_str[3] = {0, }; int idx = 0; - if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) + if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_ST_BUTTON_BACK"))) btn_str[idx++] = g_strdup(lbutton_str); if (rbutton_str) @@ -190,7 +190,7 @@ void setting_navi_items_update(Evas_Object *navigate_bar) char *btn_str[3] = {0, }; int idx = 0; - if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) + if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_ST_BUTTON_BACK"))) btn_str[idx++] = g_strdup(lbutton_str); if (rbutton_str) @@ -224,29 +224,6 @@ void setting_navi_items_update(Evas_Object *navigate_bar) SETTING_TRACE_END; } -static void __dismissed_cb(void *data, Evas_Object *obj, void *event_info) -{ - SETTING_TRACE_BEGIN; - ret_if(!data); - Setting_Btn_Data *btn_data = data; - if (btn_data->ctxpopup) { - evas_object_del(btn_data->ctxpopup); - btn_data->ctxpopup = NULL; - } -} - -static void __btn_click_cb(void *data, Evas_Object *obj, void *event_info) -{ - SETTING_TRACE_BEGIN; - ret_if(!data); - Setting_Btn_Data *btn_data = data; - btn_data->btn_click_cb(btn_data->btn_cb_data, obj, event_info); - if (btn_data->ctxpopup) { - evas_object_del(btn_data->ctxpopup); - btn_data->ctxpopup = NULL; - } -} - static void __rotate_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) { SETTING_TRACE_BEGIN; @@ -282,120 +259,8 @@ static void __ctxpopup_lang_change_cb(keynode_t *key, void *data) } } -static void __delete_rotate_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - /*SETTING_TRACE_BEGIN; */ - ret_if(data == NULL); - Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data; - Evas_Object *ctxpopup = btn_data->ctxpopup; - - Ecore_Event_Handler *event_handler = evas_object_data_get(ctxpopup, "event_handler"); - ecore_event_handler_del(event_handler); - evas_object_data_set(ctxpopup, "event_handler", NULL); - - (void)vconf_ignore_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb); - evas_object_smart_callback_del(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb); -} - -static Eina_Bool __ctxpopup_key_press_cb(void *data, int type, void *event) -{ - SETTING_TRACE_BEGIN; - Evas_Event_Key_Down *ev = event; - if (!ev || !data) { - SETTING_TRACE("Invalid event object"); - return ECORE_CALLBACK_RENEW; - } - SETTING_TRACE("Pressed %s", ev->keyname); - Evas_Object *ctxpopup = data; - - if (!strcmp(ev->keyname, KEY_HOME)) { - elm_ctxpopup_dismiss(ctxpopup); - } - return ECORE_CALLBACK_RENEW; -} - -EXPORT_PUBLIC void setting_create_more_btn_click_cb(void *data, Evas_Object *obj, void *event_info) -{ - SETTING_TRACE_BEGIN; - ret_if(!data); - Setting_Btn_Data *btn_data = data; - - if (btn_data->ctxpopup) { - evas_object_del(btn_data->ctxpopup); - btn_data->ctxpopup = NULL; - } - - Evas_Object *ctxpopup = elm_ctxpopup_add(btn_data->parent); - elm_object_style_set(ctxpopup, "more/default"); - elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE); /*to disable the rotating dismiss issue */ - ea_object_event_callback_add(ctxpopup, EA_CALLBACK_BACK, ea_ctxpopup_back_cb, NULL); /*to make ctxpopup get the "Back" key event */ - ea_object_event_callback_add(ctxpopup, EA_CALLBACK_MORE, ea_ctxpopup_back_cb, NULL);/*to make ctxpopup get the "More" key event */ - Ecore_Event_Handler *event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __ctxpopup_key_press_cb, ctxpopup); - evas_object_data_set(ctxpopup, "event_handler", event_handler); - - evas_object_smart_callback_add(ctxpopup, "dismissed", __dismissed_cb, btn_data); - evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, __delete_rotate_ctxpopup_cb, btn_data); - evas_object_smart_callback_add(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb, btn_data); - vconf_notify_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb, btn_data); - - SETTING_TRACE("Clicked a more button, the call back of selecting objects in context popup is not the same as button callback"); - Evas_Object *icon = NULL; - - int i = 0; - /*while(btn_data->btn_text[i]) */ - for (i = 0; i < MAX_BUTTON_NUM; i++) { - /*SETTING_TRACE("btn_data->btn_text[%d]:%s", i, btn_data->btn_text[i]); */ - if (isEmptyStr(btn_data->btn_text[i])) continue; - if (btn_data->btn_icon[i]) { - icon = elm_image_add(ctxpopup); - elm_image_file_set(icon, btn_data->btn_icon[i], NULL); - - } - btn_data->item[i] = elm_ctxpopup_item_append(ctxpopup, _(btn_data->btn_text[i]), icon, __btn_click_cb, btn_data); - } - - btn_data->ctxpopup = ctxpopup; - - Evas_Coord w , h; - - int pos = -1; - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - pos = elm_win_rotation_get(ug_get_window()); - if (pos == 90) { - evas_object_move(ctxpopup, 0, w); - } else if (pos == 270) { - evas_object_move(ctxpopup, h, w); - } else { - evas_object_move(ctxpopup, 0, h); - } - evas_object_show(ctxpopup); -} - -EXPORT_PUBLIC void setting_create_more_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - SETTING_TRACE_BEGIN; - ret_if(!data); - Setting_Btn_Data *btn_data = data; - - evas_object_smart_callback_del(btn_data->ctxpopup, "dismissed", __dismissed_cb); - if (btn_data->ctxpopup) { - evas_object_del(btn_data->ctxpopup); - btn_data->ctxpopup = NULL; - } - int i = 0; - /*while(btn_data->btn_text[i]) */ - for (i = 0; i < MAX_BUTTON_NUM; i++) { - FREE(btn_data->btn_text[i]); - FREE(btn_data->btn_icon[i]); - } - FREE(btn_data);/*delete the date. */ - SETTING_TRACE_END; - /*evas_object_data_set(obj, "more_btn_data", NULL); */ -} - EXPORT_PUBLIC -Evas_Object *setting_create_win_layout(Evas_Object *win_layout, - Evas_Object *win_obj) +Evas_Object *setting_create_win_layout(Evas_Object *win_obj) { Evas_Object *layout = NULL; /* Base Layout */ @@ -430,7 +295,6 @@ Elm_Object_Item *setting_create_guild_layout(Evas_Object *navi_bar, Evas_Object *scroller = elm_genlist_add(navi_bar); retvm_if(scroller == NULL, NULL, "Cannot set scroller object as contento of layout"); elm_genlist_realization_mode_set(scroller, EINA_TRUE); - elm_object_style_set(scroller, "dialogue"); elm_genlist_clear(scroller); /* first to clear list */ elm_genlist_mode_set(scroller, ELM_LIST_COMPRESS); evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL); @@ -532,8 +396,8 @@ Evas_Object *setting_create_navi_bar(Evas_Object *layout) elm_naviframe_prev_btn_auto_pushed_set(navi, EINA_FALSE); - ea_object_event_callback_add(navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL); - ea_object_event_callback_add(navi, EA_CALLBACK_MORE, ea_naviframe_more_cb, NULL); + eext_object_event_callback_add(navi, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL); + eext_object_event_callback_add(navi, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL); /*elm_object_item_signal_callback_event(navi */ @@ -569,7 +433,7 @@ Evas_Object *setting_create_navi_bar(Evas_Object *layout) * * //1common buton + '<-'button * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar, -* NULL, NULL, _("IDS_COM_SK_DONE") ,NULL, +* NULL, NULL, _("IDS_SA_BUTTON_DONE_ABB") ,NULL, * NULL, * NULL, * _back_cb, @@ -687,153 +551,83 @@ Elm_Object_Item *setting_create_navi_bar_top_buttons(char *title_str, return navi_it; } -Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, char *lbutton_str, char *rbutton_str, - char *mbutton_str, setting_call_back_func lbutton_click_cb,/* MORE */ - setting_call_back_func rbutton_click_cb, - setting_call_back_func mbutton_click_cb, +static void _move_ctxpopup(Evas_Object *ctxpopup, Evas_Object *btn) +{ + Evas_Coord x, y, w , h; + evas_object_geometry_get(btn, &x, &y, &w, &h); + evas_object_move(ctxpopup, x + (w / 2), y + (h / 2)); +} + +static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object* ctxpopup = (Evas_Object *)data; + evas_object_del(ctxpopup); + ctxpopup = NULL; +} + +/* Icon + Text (More button style : Naviframe Toolbar) */ +static void +_ctxpopup_more_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + +} + +Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, + char *lbutton_str, + setting_call_back_func lbutton_click_cb, void *cb_data, Evas_Object *eo_view,/*any container obj */ - Evas_Object *navigate_bar, /*the specialized navigation bar */ - Evas_Object *titleobj) + Evas_Object *navigate_bar) { SETTING_TRACE_BEGIN; Elm_Object_Item *navi_it = NULL; - /*Evas_Object *mbtn = NULL; */ - /*Evas_Object *rbtn = NULL; */ Evas_Object *lbtn = NULL; Evas_Object *toolbar = NULL; - /* arrange buttons into controlbar*/ - if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) { +#define USE_BACK 0 +#if USE_BACK + /* arrange buttons into controlbar */ + if (0 == safeStrCmp(_(lbutton_str), _("IDS_ST_BUTTON_BACK"))) { lbtn = setting_create_button(navigate_bar, _(lbutton_str), NAVI_BACK_BUTTON_STYLE, - NULL, NULL); - /*lbutton_click_cb, cb_data); */ -#if SUPPORT_TTS - setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO); -#endif - navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL); /* add new button */ - if (navi_it) { - if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str))) - elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); - else - elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE); + /*NULL, NULL); */ + lbutton_click_cb, cb_data); + navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL); /* add new button */ + elm_object_item_part_content_set(navi_it, "title_left_btn", lbtn); - elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */ + if (navi_it) { + elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data); - ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str); } - /* more handler */ - /*elm_object_item_signal_callback_add(navi_it, "elm,action,more,event", more_cb, cb_data); */ - - if (!rbutton_str && !mbutton_str) { - /*do nothing.. */ - } else if (rbutton_str && mbutton_str) { /* both exist.. */ - toolbar = elm_toolbar_add(navigate_bar); - if (toolbar) { - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - } - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */ - } else if (rbutton_str) { /* r_btn exist.. */ - toolbar = elm_toolbar_add(navigate_bar); - if (toolbar) { - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - } - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */ - } else if (mbutton_str) { /* m_btn exist.. */ - toolbar = elm_toolbar_add(navigate_bar); - if (toolbar) { - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - } - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */ - } - return navi_it; - } - navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL); - if (navi_it) { - SETTING_TRACE("dgettext(SETTING_PACKAGE, title_str):%s", dgettext(SETTING_PACKAGE, title_str)); - SETTING_TRACE("dgettext(SYSTEM_PACKAGE, title_str):%s", dgettext(SYSTEM_PACKAGE, title_str)); - if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str))) - elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); - else - elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE); - ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str); - } - if (rbutton_str || mbutton_str) { - toolbar = elm_toolbar_add(navigate_bar); - if (toolbar) { - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - } - } - if (lbutton_str && mbutton_str && rbutton_str) { - lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); - elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn); - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */ - - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - - if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL"))) - elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data); + //---------------------- + // CREATE TOOLBAR + //---------------------- } else { - /*bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2". */ - if (lbutton_str) { - /*lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ - - if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL"))) - elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data); - } - if (mbutton_str) { - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ - } - if (rbutton_str) { - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ +#endif + // ARROW here back + lbtn = setting_create_button(navigate_bar, _(lbutton_str), + NAVI_BACK_ARROW_BUTTON_STYLE, + /*NULL, NULL); */ + lbutton_click_cb, cb_data); + + // create naviframe with Arror button + navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL); /* add new button */ + + if (lbutton_click_cb) + elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data); + + if (navi_it) { + if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str))) + elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); } + //---------------------- + // CREATE TOOLBAR + //---------------------- +#if USE_BACK } - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); +#endif return navi_it; - } @@ -845,22 +639,17 @@ Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, char *lbutton * */ EXPORT_PUBLIC -void setting_create_navi_bar_buttons(char *title_str, char *lbutton_str, char *rbutton_str, - char *mbutton_str, setting_call_back_func lbutton_click_cb, - setting_call_back_func rbutton_click_cb, - setting_call_back_func mbutton_click_cb, +void setting_create_navi_bar_buttons(char *title_str, + char *lbutton_str, + setting_call_back_func lbutton_click_cb, void *cb_data, Evas_Object *eo_view,/*any container obj */ Evas_Object *navigate_bar, /*the specialized navigation bar */ Evas_Object *titleobj) { - /* controlbar */ __create_navi_bar_bottom_buttons(title_str, lbutton_str, - rbutton_str, mbutton_str, lbutton_click_cb, - rbutton_click_cb, - mbutton_click_cb, cb_data, eo_view, - navigate_bar, titleobj); + navigate_bar); return; } @@ -874,18 +663,24 @@ void setting_create_navi_bar_buttons(char *title_str, char *lbutton_str, char *r * return main layout of UG or App.. */ EXPORT_PUBLIC -Evas_Object *setting_create_layout_navi_bar(Evas_Object *win_layout, Evas_Object *win_obj, char *title_str, char *lbutton_str, char *rbutton_str, char *mbutton_str, setting_call_back_func lbutton_click_cb, setting_call_back_func rbutton_click_cb, setting_call_back_func mbutton_click_cb, void *cb_data, Evas_Object *eo_view, /*any container obj constructed on any evas obj */ +Evas_Object *setting_create_layout_navi_bar(Evas_Object *win_layout, + Evas_Object *win_obj, + char *title_str, + char *lbutton_str, + setting_call_back_func lbutton_click_cb, + void *cb_data, + Evas_Object *eo_view, /*any container obj constructed on any evas obj */ Evas_Object **navi_bar, Evas_Object **titleobj) { - Evas_Object *layout = setting_create_win_layout(win_layout, win_obj); + Evas_Object *layout = setting_create_win_layout(win_obj); *navi_bar = setting_create_navi_bar(layout); setting_create_navi_bar_buttons(title_str, - lbutton_str, rbutton_str, mbutton_str, - lbutton_click_cb, rbutton_click_cb, - mbutton_click_cb, cb_data, eo_view /*content */ , + lbutton_str, + lbutton_click_cb, + cb_data, eo_view /*content */ , *navi_bar, NULL); return layout; } @@ -913,7 +708,7 @@ Evas_Object *setting_create_layout_navi_bar_scroller(Evas_Object *win_layout, Evas_Object **navi_bar) { - Evas_Object *layout = setting_create_win_layout(win_layout, win_obj); + Evas_Object *layout = setting_create_win_layout(win_obj); *navi_bar = setting_create_navi_bar(layout); /*****/ @@ -934,9 +729,9 @@ Evas_Object *setting_create_layout_navi_bar_scroller(Evas_Object *win_layout, /*****/ setting_create_navi_bar_buttons(title_str, - lbutton_str, rbutton_str, NULL, - lbutton_click_cb, rbutton_click_cb, - NULL, cb_data, scrl /*content */ , + lbutton_str, + lbutton_click_cb, + cb_data, scrl /*content */ , *navi_bar, NULL); return layout; } @@ -952,192 +747,33 @@ Evas_Object *setting_create_layout_navi_bar_genlist(Evas_Object *win_layout, Evas_Object *win_obj, char *title_str, char *lbutton_str, - char *rbutton_str, - setting_call_back_func - lbutton_click_cb, - setting_call_back_func - rbutton_click_cb, + char *rbutton_str, /* do nothing */ + setting_call_back_func lbutton_click_cb, + setting_call_back_func rbutton_click_cb,/* do nothing */ void *cb_data, Evas_Object **genlist, Evas_Object **navi_bar) { /* win_layout -> layout */ - Evas_Object *layout = setting_create_win_layout(win_layout, win_obj); + Evas_Object *layout = setting_create_win_layout(win_obj); *navi_bar = setting_create_navi_bar(layout); *genlist = elm_genlist_add(*navi_bar); retvm_if(*genlist == NULL, NULL, "Cannot set scroller object as contento of layout"); + elm_genlist_mode_set(*genlist, ELM_LIST_COMPRESS); elm_genlist_realization_mode_set(*genlist, EINA_TRUE); - elm_object_style_set(*genlist, "dialogue"); elm_genlist_clear(*genlist); /* first to clear list */ evas_object_smart_callback_add(*genlist, "realized", __gl_realized_cb, NULL); setting_create_navi_bar_buttons(title_str, - lbutton_str, rbutton_str, NULL, - lbutton_click_cb, rbutton_click_cb, - NULL, cb_data, *genlist, *navi_bar, + lbutton_str, + lbutton_click_cb, + cb_data, *genlist, *navi_bar, NULL); return layout; } -EXPORT_PUBLIC -Elm_Object_Item *__push_navi_bar_bottom_buttons(char *title_str, - char *lbutton_str, char *rbutton_str, - char *mbutton_str, - setting_call_back_func lbutton_click_cb, - setting_call_back_func rbutton_click_cb, - setting_call_back_func mbutton_click_cb, - void *cb_data, Evas_Object *eo_view, - Evas_Object *navigate_bar, Evas_Object **titleobj) -{ - Elm_Object_Item *navi_it = NULL; - /*Evas_Object *mbtn = NULL; */ - /*Evas_Object *rbtn = NULL; */ - Evas_Object *lbtn = NULL; - Evas_Object *toolbar = NULL; - - /* arrange buttons into controlbar*/ - if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) { - lbtn = setting_create_button(navigate_bar, _(lbutton_str), - NAVI_BACK_BUTTON_STYLE, - NULL, NULL); - /*lbutton_click_cb, cb_data); */ -#if SUPPORT_TTS - setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO); -#endif - navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL); - if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str))) - elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); - else - elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE); - ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str); - - elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */ - if (lbutton_click_cb) - elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data); - - if (!rbutton_str && !mbutton_str) { - return navi_it; - } - - toolbar = elm_toolbar_add(navigate_bar); - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - - if (rbutton_str && mbutton_str) { - if (safeStrLen(_(mbutton_str)) <= MAX_BUTTON_TEXT_LEN - && safeStrLen(_(rbutton_str)) <= MAX_BUTTON_TEXT_LEN) { - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */ - } else { - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - - Evas_Object *more_btn = elm_button_add(navigate_bar); - if (!more_btn) return NULL; - elm_object_style_set(more_btn, NAVI_MORE_BUTTON_STYLE); - - Setting_Btn_Data *btn_data = calloc(1, sizeof(Setting_Btn_Data)); - setting_retvm_if(!btn_data, NULL, "calloc failed"); - btn_data->btn_text[0] = strdup(rbutton_str); - btn_data->btn_click_cb = rbutton_click_cb; - btn_data->btn_cb_data = cb_data; - btn_data->parent = navigate_bar; - /*evas_object_data_set(more_btn, "more_btn_data", btn_data); */ - evas_object_event_callback_add(more_btn, EVAS_CALLBACK_DEL, setting_create_more_btn_del_cb, btn_data); - evas_object_smart_callback_add(more_btn, "clicked", setting_create_more_btn_click_cb, btn_data); - - elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn); - } - } else if (rbutton_str) { - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */ - } else if (mbutton_str) { - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */ - } - } else { /* no need back button on navi_bar */ - navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL); - if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str))) - elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE); - else - elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE); - ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str); - if (!lbutton_str && !rbutton_str && !mbutton_str) { - return navi_it; - } - - toolbar = elm_toolbar_add(navigate_bar); - elm_object_style_set(toolbar, "default"); - elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); - - /*remove '<-' button, insteadly using controlbar */ - Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); - elm_object_item_part_content_set(navi_it, "prev_btn", NULL); - evas_object_del(back_btn); - - if (lbutton_str && mbutton_str && rbutton_str) { - lbtn = setting_create_button(navigate_bar, _(lbutton_str), NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); - elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn); - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */ - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */ - - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - } else { - /*bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2". */ - if (lbutton_str) { - /*lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ - } - if (mbutton_str) { - /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ - } - if (rbutton_str) { - /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */ - /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn); */ - elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data); - /*has_btn_flag = TRUE; */ - } - } - elm_object_item_part_content_set(navi_it, "toolbar", toolbar); - } - - return navi_it; -} - - /** * The general API to push any evas object(@param[eo_view]) to the specialized navi_bar, * which contents at most 3 buttons @@ -1153,12 +789,11 @@ setting_push_layout_navi_bar(char *title_str, void *cb_data, Evas_Object *eo_view, Evas_Object *navi_bar, Evas_Object **titleobj) { - return __push_navi_bar_bottom_buttons(title_str, - lbutton_str, rbutton_str, mbutton_str, + + return __create_navi_bar_bottom_buttons(title_str, + lbutton_str, lbutton_click_cb, - rbutton_click_cb, - mbutton_click_cb, - cb_data, eo_view, navi_bar, titleobj); + cb_data, eo_view, navi_bar); } /** @@ -1216,9 +851,13 @@ setting_push_layout_navi_bar_genlist(Evas_Object *win_layout, *genlist = elm_genlist_add(navi_bar); retvm_if(*genlist == NULL, NULL, "Cannot set scroller object as contento of layout"); + elm_genlist_mode_set(*genlist, ELM_LIST_COMPRESS); + + elm_genlist_homogeneous_set(*genlist, EINA_TRUE); + elm_genlist_realization_mode_set(*genlist, EINA_TRUE); + //elm_genlist_block_count_set(*genlist, 2); gl = *genlist; - elm_object_style_set(*genlist, "dialogue"); elm_genlist_clear(gl); /* first to clear list */ evas_object_smart_callback_add(gl, "realized", __gl_realized_cb, NULL); }