4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-common-draw-widget.h>
25 #include <Elementary.h>
26 #include <efl_assist.h>
28 extern Eina_List* elm_widget_scrollable_children_get(Evas_Object *obj);
30 #define HALF_SCREEN_STR_LEN 20
31 #define ONE_THIRD_SCREEN_STR_LEN 13
33 #define ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str) \
35 evas_object_data_set(eo_view, "navi_it", navi_it);\
36 evas_object_data_set(eo_view, "navi_title", title_str);\
37 evas_object_data_set(eo_view, "lbutton_str", lbutton_str);\
38 evas_object_data_set(eo_view, "mbutton_str", mbutton_str);\
39 evas_object_data_set(eo_view, "rbutton_str", rbutton_str);\
40 /*vconf_notify_key_changed(VCONFKEY_LANGSET, __navi_eo_view_lang_change_cb, eo_view);*/\
41 evas_object_event_callback_add(eo_view, EVAS_CALLBACK_DEL, __eo_view_del_cb, NULL);\
45 static void __navi_eo_view_lang_change_cb(keynode_t *key, void *data)
48 setting_retm_if(NULL == key, "key is NULL");
49 setting_retm_if(NULL == data, "data is NULL");
50 Evas_Object *eo_view = data;
51 char *vconf_name = vconf_keynode_get_name(key);
52 if (!safeStrCmp(vconf_name, VCONFKEY_LANGSET))
54 Elm_Object_Item *navi_it = evas_object_data_get(eo_view, "navi_it");
55 char *navi_title = evas_object_data_get(eo_view, "navi_title");
56 char *lbutton_str = evas_object_data_get(eo_view, "lbutton_str");
57 char *mbutton_str = evas_object_data_get(eo_view, "mbutton_str");
58 char *rbutton_str = evas_object_data_get(eo_view, "rbutton_str");
59 const char *eo_view_t = evas_object_type_get(eo_view);
60 SETTING_TRACE("navi_title [%s]:%s", _(navi_title), navi_title);
61 SETTING_TRACE("eo_view_t:%s", eo_view_t);
62 SETTING_TRACE("lbutton_str:%s", lbutton_str);
63 SETTING_TRACE("mbutton_str:%s", mbutton_str);
64 SETTING_TRACE("rbutton_str:%s", rbutton_str);
65 if (!safeStrCmp("elm_gengrid", eo_view_t))
66 elm_gengrid_realized_items_update(eo_view);
67 else if(!safeStrCmp("elm_genlist", eo_view_t))
68 elm_genlist_realized_items_update(eo_view);
72 SETTING_TRACE("Update navi_item, navi_title:%s", navi_title);
74 elm_object_item_text_set(navi_it, _(navi_title));
77 Evas_Object *toolbar = elm_object_item_part_content_get(navi_it, "toolbar");
79 char *btn_str[3] = {0, };
81 if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK")))
82 btn_str[idx++] = g_strdup(lbutton_str);
85 btn_str[idx++] = g_strdup(rbutton_str);
88 btn_str[idx++] = g_strdup(mbutton_str);
91 Elm_Object_Item *it = NULL;
92 Elm_Object_Item *next_it = NULL;
94 it = elm_toolbar_first_item_get(toolbar);
97 next_it = elm_toolbar_item_next_get(it);
98 //text = (char *)elm_object_item_text_get(it);
99 elm_object_item_text_set(it, _(btn_str[idx]));
107 static void __eo_view_del_cb(void *data, Evas *e, Evas_Object *eo_view, void *event_info)
111 //(void)vconf_ignore_key_changed(VCONFKEY_LANGSET, __navi_eo_view_lang_change_cb);
112 evas_object_data_set(eo_view, "navi_it", NULL);
113 evas_object_data_set(eo_view, "navi_title", NULL);
114 evas_object_data_set(eo_view, "lbutton_str", NULL);
115 evas_object_data_set(eo_view, "mbutton_str", NULL);
116 evas_object_data_set(eo_view, "rbutton_str", NULL);
122 void setting_navi_items_update(Evas_Object *navigate_bar)
125 //setting_retm_if(NULL == key, "key is NULL");
126 setting_retm_if(NULL == navigate_bar, "data is NULL");
127 Eina_List * list = elm_naviframe_items_get(navigate_bar);
128 Evas_Object *eo_view = NULL;
129 Evas_Object *btn = NULL;
130 char *btn_text = NULL;
133 Elm_Object_Item *item = (Elm_Object_Item *) eina_list_data_get(list);
135 SETTING_TRACE("item is null");
136 list = eina_list_next(list);
140 btn = elm_object_item_part_content_get(item, "title_right_btn");
143 btn_text = evas_object_data_get(btn, "text");
145 elm_object_text_set(btn, _(btn_text));
148 btn = elm_object_item_part_content_get(item, "title_left_btn");
151 btn_text = evas_object_data_get(btn, "text");
153 elm_object_text_set(btn, _(btn_text));
156 eo_view = elm_object_item_content_get(item);
157 if (NULL == eo_view){
158 SETTING_TRACE("eo_view is null");
159 list = eina_list_next(list);
163 Elm_Object_Item *navi_it = evas_object_data_get(eo_view, "navi_it");
164 if (navi_it != item){
165 SETTING_TRACE("navi_it is null");
166 list = eina_list_next(list);
170 const char *navi_title = evas_object_data_get(eo_view, "navi_title");
171 const char *lbutton_str = evas_object_data_get(eo_view, "lbutton_str");
172 const char *mbutton_str = evas_object_data_get(eo_view, "mbutton_str");
173 const char *rbutton_str = evas_object_data_get(eo_view, "rbutton_str");
174 const char *eo_view_t = evas_object_type_get(eo_view);
175 //SETTING_TRACE("navi_title [%s]:%s", _(navi_title), navi_title);
176 //SETTING_TRACE("eo_view_t:%s", eo_view_t);
177 //SETTING_TRACE("lbutton_str:%s", lbutton_str);
178 //SETTING_TRACE("mbutton_str:%s", mbutton_str);
179 //SETTING_TRACE("rbutton_str:%s", rbutton_str);
180 if (!safeStrCmp("elm_gengrid", eo_view_t))
181 elm_gengrid_realized_items_update(eo_view);
182 else if(!safeStrCmp("elm_genlist", eo_view_t))
183 elm_genlist_realized_items_update(eo_view);
187 //SETTING_TRACE("Update navi_item, navi_title:%s", navi_title);
189 elm_object_item_text_set(navi_it, _(navi_title));
192 Evas_Object *toolbar = elm_object_item_part_content_get(navi_it, "toolbar");
194 char *btn_str[3] = {0, };
196 if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK")))
197 btn_str[idx++] = g_strdup(lbutton_str);
200 btn_str[idx++] = g_strdup(rbutton_str);
203 btn_str[idx++] = g_strdup(mbutton_str);
206 Elm_Object_Item *it = NULL;
207 Elm_Object_Item *next_it = NULL;
209 it = elm_toolbar_first_item_get(toolbar);
212 next_it = elm_toolbar_item_next_get(it);
213 //text = (char *)elm_object_item_text_get(it);
214 elm_object_item_text_set(it, _(btn_str[idx]));
223 //if not matched,to check next node.
224 list = eina_list_next(list);
230 static void __dismissed_cb(void *data, Evas_Object *obj, void *event_info)
234 Setting_Btn_Data *btn_data = data;
235 if(btn_data->ctxpopup) {
236 evas_object_del(btn_data->ctxpopup);
237 btn_data->ctxpopup = NULL;
241 static void __btn_click_cb(void *data, Evas_Object *obj, void *event_info)
245 Setting_Btn_Data *btn_data = data;
246 btn_data->btn_click_cb(btn_data->btn_cb_data, obj, event_info);
247 if(btn_data->ctxpopup) {
248 evas_object_del(btn_data->ctxpopup);
249 btn_data->ctxpopup = NULL;
253 static void __rotate_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
256 ret_if(data == NULL);
257 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
260 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
261 pos = elm_win_rotation_get(ug_get_window());
262 SETTING_TRACE_DEBUG("pos: %d, w: %d, h: %d", pos, w, h);
265 evas_object_move(btn_data->ctxpopup, 0, w);
269 evas_object_move(btn_data->ctxpopup, h, w);
273 evas_object_move(btn_data->ctxpopup, 0, h);
277 static void __ctxpopup_lang_change_cb(keynode_t *key, void *data)
279 setting_retm_if(NULL == key, "key is NULL");
280 setting_retm_if(NULL == data, "data is NULL");
281 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
282 char *vconf_name = vconf_keynode_get_name(key);
283 if (!safeStrCmp(vconf_name, VCONFKEY_LANGSET))
285 //setting_popup_lang_update(popup);
287 while(btn_data->btn_text[i])
289 elm_object_item_text_set(btn_data->item[i], _(btn_data->btn_text[i]));
295 static void __delete_rotate_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
297 //SETTING_TRACE_BEGIN;
298 ret_if(data == NULL);
299 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
300 Evas_Object *ctxpopup = btn_data->ctxpopup;
302 Ecore_Event_Handler *event_handler = evas_object_data_get(ctxpopup, "event_handler");
303 ecore_event_handler_del(event_handler);
304 evas_object_data_set(ctxpopup, "event_handler", NULL);
306 (void)vconf_ignore_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb);
307 evas_object_smart_callback_del(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb);
310 static Eina_Bool __ctxpopup_key_press_cb(void *data, int type, void *event)
313 Evas_Event_Key_Down *ev = event;
315 SETTING_TRACE("Invalid event object");
316 return ECORE_CALLBACK_RENEW;
318 SETTING_TRACE("Pressed %s", ev->keyname);
319 Evas_Object *ctxpopup = data;
321 if (!strcmp(ev->keyname, KEY_HOME))
323 elm_ctxpopup_dismiss(ctxpopup);
325 return ECORE_CALLBACK_RENEW;
328 EXPORT_PUBLIC void setting_create_more_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
332 Setting_Btn_Data *btn_data = data;
334 if(btn_data->ctxpopup) {
335 evas_object_del(btn_data->ctxpopup);
336 btn_data->ctxpopup = NULL;
339 Evas_Object *ctxpopup = elm_ctxpopup_add(btn_data->parent);
340 elm_object_style_set(ctxpopup, "more/default");
341 elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE); //to disable the rotating dismiss issue
342 ea_object_event_callback_add(ctxpopup, EA_CALLBACK_BACK, ea_ctxpopup_back_cb, NULL); //to make ctxpopup get the "Back" key event
343 ea_object_event_callback_add(ctxpopup, EA_CALLBACK_MORE, ea_ctxpopup_back_cb, NULL);//to make ctxpopup get the "More" key event
344 Ecore_Event_Handler *event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __ctxpopup_key_press_cb, ctxpopup);
345 evas_object_data_set(ctxpopup, "event_handler", event_handler);
347 evas_object_smart_callback_add(ctxpopup, "dismissed", __dismissed_cb, btn_data);
348 evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, __delete_rotate_ctxpopup_cb, btn_data);
349 evas_object_smart_callback_add(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb, btn_data);
350 vconf_notify_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb, btn_data);
352 SETTING_TRACE("Clicked a more button, the call back of selecting objects in context popup is not the same as button callback");
353 Evas_Object *icon = NULL;
356 //while(btn_data->btn_text[i])
357 for(i = 0; i < MAX_BUTTON_NUM; i++)
359 //SETTING_TRACE("btn_data->btn_text[%d]:%s", i, btn_data->btn_text[i]);
360 if (isEmptyStr(btn_data->btn_text[i])) continue;
361 if (btn_data->btn_icon[i])
363 icon = elm_image_add(ctxpopup);
364 elm_image_file_set(icon, btn_data->btn_icon[i], NULL);
367 btn_data->item[i] = elm_ctxpopup_item_append(ctxpopup, _(btn_data->btn_text[i]), icon, __btn_click_cb, btn_data);
370 btn_data->ctxpopup = ctxpopup;
375 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
376 pos = elm_win_rotation_get(ug_get_window());
379 evas_object_move(ctxpopup, 0, w);
383 evas_object_move(ctxpopup, h, w);
387 evas_object_move(ctxpopup, 0, h);
389 evas_object_show(ctxpopup);
392 EXPORT_PUBLIC void setting_create_more_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
396 Setting_Btn_Data *btn_data = data;
398 evas_object_smart_callback_del(btn_data->ctxpopup, "dismissed", __dismissed_cb);
399 if(btn_data->ctxpopup) {
400 evas_object_del(btn_data->ctxpopup);
401 btn_data->ctxpopup = NULL;
404 //while(btn_data->btn_text[i])
405 for(i = 0; i < MAX_BUTTON_NUM; i++)
407 FREE(btn_data->btn_text[i]);
408 FREE(btn_data->btn_icon[i]);
410 FREE(btn_data);//delete the date.
412 //evas_object_data_set(obj, "more_btn_data", NULL);
416 Evas_Object *setting_create_win_layout(Evas_Object *win_layout,
417 Evas_Object *win_obj)
419 Evas_Object *layout = NULL;
421 layout = elm_layout_add(win_obj);
422 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
423 setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
425 elm_layout_theme_set(layout, "layout", "application", "default");
427 Evas_Object *bg = setting_create_bg(layout, win_obj, NULL);
428 elm_object_part_content_set(layout, "elm.swallow.bg", bg);
429 evas_object_show(layout);
434 Elm_Object_Item *setting_create_guild_layout(Evas_Object *navi_bar,
439 setting_call_back_func lbutton_click_cb,
440 setting_call_back_func rbutton_click_cb,
441 setting_call_back_func mbutton_click_cb,
445 char *content_button_str,
446 setting_call_back_func content_button_click_cb,
449 Evas_Object *scroller = elm_genlist_add(navi_bar);
450 retvm_if(scroller == NULL, NULL, "Cannot set scroller object as contento of layout");
451 elm_genlist_realization_mode_set(scroller, EINA_TRUE);
452 elm_object_style_set(scroller, "dialogue");
453 elm_genlist_clear(scroller); /* first to clear list */
454 elm_genlist_mode_set(scroller, ELM_LIST_COMPRESS);
455 evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL);
457 ADD_GL_LABLE(scroller, content_str1);
458 ADD_GL_GIF(scroller,png_list)
459 ADD_GL_LABLE(scroller, content_str2);
460 ADD_GL_BUTTON(scroller, content_button_str, content_button_click_cb, cb_data)
462 return setting_push_layout_navi_bar(title_str,
463 lbutton_str, rbutton_str, NULL,
466 NULL, cb_data, scroller, navi_bar, NULL);
470 Elm_Object_Item *setting_create_guild_layout2(Evas_Object *navi_bar,
475 setting_call_back_func lbutton_click_cb,
476 setting_call_back_func rbutton_click_cb,
477 setting_call_back_func mbutton_click_cb,
479 Evas_Object **ug_layout,
481 char *content_button_str,
482 setting_call_back_func content_button_click_cb,
485 Evas_Object *scroller;
486 Elm_Object_Item *item = setting_push_layout_navi_bar_scroller(navi_bar,
488 lbutton_str, rbutton_str,
493 Evas_Object *outer_box = setting_create_client_bx(navi_bar);
494 //add top text window..
497 const char *str = setting_customize_text(content_str1, 0, NULL, NULL);
498 Evas_Object *lable = setting_create_textbox(navi_bar, str);
499 setting_disable_evas_object(lable);
500 elm_box_pack_end(outer_box, lable);
507 Evas_Object *ug_win = elm_layout_add(navi_bar);
508 evas_object_size_hint_weight_set(ug_win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
509 setting_retvm_if(ug_win == NULL, NULL, "layout == NULL");
510 elm_layout_theme_set(ug_win, "layout", "application", "default");
511 elm_object_part_content_set(ug_win, "elm.swallow.bg", setting_create_blank_rect_customize(navi_bar,720,850));
512 //elm_object_part_content_set(layout, "elm.swallow.content", navi);
513 elm_box_pack_end(outer_box, ug_win);
514 evas_object_show(ug_win);
521 const char *str = setting_customize_text(content_str2, 0, NULL, NULL);
522 Evas_Object *lable = setting_create_textbox(navi_bar, str);
523 setting_disable_evas_object(lable);
524 elm_box_pack_end(outer_box, lable);
529 if (content_button_str)
531 Evas_Object *layout = elm_layout_add(navi_bar);
532 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
533 elm_layout_theme_set(layout, "layout", "application", "default");
534 elm_object_part_content_set(layout, "elm.swallow.bg", setting_create_blank_rect_customize(navi_bar,680,100));
535 Evas_Object *btn = elm_button_add(navi_bar);
536 elm_object_text_set(btn, content_button_str);
537 evas_object_propagate_events_set(btn, EINA_FALSE);
538 evas_object_smart_callback_add(btn, "clicked", content_button_click_cb, cb_data);
539 elm_object_part_content_set(layout, "elm.swallow.content", btn);
540 evas_object_show(btn);
541 evas_object_show(layout);
542 elm_box_pack_end(outer_box, layout);
545 elm_object_content_set(scroller, outer_box);
550 Evas_Object *setting_create_navi_bar(Evas_Object *layout)
553 Evas_Object *navi = NULL;
554 navi = elm_naviframe_add(layout);
556 elm_naviframe_prev_btn_auto_pushed_set(navi, EINA_FALSE);
558 ea_object_event_callback_add(navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL);
559 ea_object_event_callback_add(navi, EA_CALLBACK_MORE, ea_naviframe_more_cb, NULL);
561 //elm_object_item_signal_callback_event(navi
564 SETTING_TRACE(" *** elm_naviframe_add returns NULL *** ");
567 elm_object_part_content_set(layout, "elm.swallow.content", navi);
568 evas_object_show(navi);
573 * The API to Create title buttons of naviframe
574 * if sip is shown,the buttons created by this API will be shown,it sip is hidden,they will be hiden too
578 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
579 * "1", "2", "3" ,"4",
585 * //more button +2 common buttons + '<-'button
586 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
587 * NULL, "2", "3" ,NULL,
593 * //1common buton + '<-'button
594 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
595 * NULL, NULL, _("IDS_COM_SK_DONE") ,NULL,
602 void setting_append_naviframe_title_buttons(Elm_Object_Item *navi_it,
603 Evas_Object *navigate_bar,
604 char *more_button_str,
605 char *left_button_str,
606 char *right_button_str,
607 char *back_button_str,
608 setting_call_back_func more_button_click_cb,
609 setting_call_back_func left_button_click_cb,
610 setting_call_back_func right_button_click_cb,
611 setting_call_back_func back_button_click_cb,
615 Evas_Object *btn = NULL;
617 if (more_button_click_cb)
619 if (!more_button_str)
622 //btn = setting_create_button(navigate_bar, NULL, "naviframe/more/default", more_button_click_cb, cb_data);
623 btn = elm_button_add(navigate_bar);
624 elm_object_style_set(btn, "naviframe/more/default");
625 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
626 evas_object_size_hint_align_set(btn,EVAS_HINT_FILL, 0.5);
627 evas_object_smart_callback_add(btn, "clicked", more_button_click_cb, cb_data);
628 evas_object_show(btn);
632 btn = setting_create_button(navigate_bar, more_button_str, "naviframe/title/default", more_button_click_cb, cb_data);
635 elm_object_item_part_content_set(navi_it, "title_more_btn", btn);
638 if (left_button_click_cb)
640 btn = setting_create_button(navigate_bar, left_button_str, "naviframe/title/default", left_button_click_cb, cb_data);
641 elm_object_item_part_content_set(navi_it, "title_toolbar_button1", btn);
644 if (right_button_click_cb)
646 btn = setting_create_button(navigate_bar, right_button_str, "naviframe/title/default", right_button_click_cb, cb_data);
647 elm_object_item_part_content_set(navi_it, "title_toolbar_button2", btn);
650 if (back_button_click_cb)
652 if (!back_button_str)
654 //btn = setting_create_button(navigate_bar, NULL, "naviframe/back_btn/default", back_button_click_cb, cb_data);
655 btn = elm_button_add(navigate_bar);
656 elm_object_style_set(btn, "naviframe/back_btn/default");
657 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
658 evas_object_size_hint_align_set(btn,EVAS_HINT_FILL, 0.5);
659 evas_object_smart_callback_add(btn, "clicked", back_button_click_cb, cb_data);
660 evas_object_show(btn);
664 btn = setting_create_button(navigate_bar, back_button_str, "naviframe/title/default", back_button_click_cb, cb_data);
667 elm_object_item_part_content_set(navi_it, "title_prev_btn", btn);
671 //"title_more_btn" won't be supported any more, so don't pass mbutton_str
673 Elm_Object_Item * setting_create_navi_bar_top_buttons(char *title_str,
677 setting_call_back_func lbutton_click_cb,
678 setting_call_back_func rbutton_click_cb,
679 setting_call_back_func mbutton_click_cb,
680 void *cb_data, Evas_Object *eo_view,/*any container obj */
681 Evas_Object *navigate_bar )
683 //SETTING_TRACE_BEGIN;
684 Evas_Object *l_button = NULL;
685 Evas_Object *r_button = NULL;
686 Evas_Object *m_button = NULL;
687 Elm_Object_Item *navi_it = NULL;
692 l_button = setting_create_button(navigate_bar, lbutton_str,
693 "naviframe/toolbar/default",
694 lbutton_click_cb, cb_data);
698 r_button = setting_create_button(navigate_bar, rbutton_str,
699 "naviframe/end_btn/default",
700 rbutton_click_cb, cb_data);
704 m_button = setting_create_button(navigate_bar, mbutton_str,
706 mbutton_click_cb, cb_data);
708 navi_it = elm_naviframe_item_push(navigate_bar, title_str,
711 retv_if(!navi_it, NULL);
713 /* arrange buttons into navi_it*/
714 if (l_button) { /* done */
715 elm_object_item_part_content_set(navi_it, "title_toolbar_button1", l_button);
717 if (r_button) { /* cancel */
718 elm_object_item_part_content_set(navi_it, "title_prev_btn", r_button);
720 if (m_button) { /* none */
721 elm_object_item_part_content_set(navi_it, "title_more_btn", m_button);
726 Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
727 char *mbutton_str, setting_call_back_func lbutton_click_cb,/* MORE */
728 setting_call_back_func rbutton_click_cb,
729 setting_call_back_func mbutton_click_cb,
730 void *cb_data, Evas_Object *eo_view,/*any container obj */
731 Evas_Object *navigate_bar, /*the specialized navigation bar */
732 Evas_Object *titleobj)
735 Elm_Object_Item *navi_it = NULL;
736 //Evas_Object *mbtn = NULL;
737 //Evas_Object *rbtn = NULL;
738 Evas_Object *lbtn = NULL;
739 Evas_Object *toolbar = NULL;
741 /* arrange buttons into controlbar*/
742 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) {
743 lbtn = setting_create_button(navigate_bar, _(lbutton_str),
744 NAVI_BACK_BUTTON_STYLE,
746 //lbutton_click_cb, cb_data);
748 setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO);
750 navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL); /* add new button */
753 if(0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
754 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
756 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
758 elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
759 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
760 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str);
764 //elm_object_item_signal_callback_add(navi_it, "elm,action,more,event", more_cb, cb_data);
766 if (!rbutton_str && !mbutton_str) {
768 } else if (rbutton_str && mbutton_str) { /* both exist.. */
769 toolbar = elm_toolbar_add(navigate_bar);
772 elm_object_style_set(toolbar, "default");
773 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
774 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
775 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
776 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
777 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
779 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
781 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
782 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
783 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
784 //elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn);
785 } else if (rbutton_str) { /* r_btn exist.. */
786 toolbar = elm_toolbar_add(navigate_bar);
789 elm_object_style_set(toolbar, "default");
790 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
791 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
792 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
793 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
795 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
797 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
798 //elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn);
799 //elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL));
800 } else if (mbutton_str) { /* m_btn exist.. */
801 toolbar = elm_toolbar_add(navigate_bar);
804 elm_object_style_set(toolbar, "default");
805 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
806 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
807 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
808 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
810 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
812 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
813 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
814 //elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL));
818 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
821 SETTING_TRACE("dgettext(SETTING_PACKAGE, title_str):%s", dgettext(SETTING_PACKAGE, title_str));
822 SETTING_TRACE("dgettext(SYSTEM_PACKAGE, title_str):%s", dgettext(SYSTEM_PACKAGE, title_str));
823 if(0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
824 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
826 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
827 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str);
829 if (rbutton_str || mbutton_str){
830 toolbar = elm_toolbar_add(navigate_bar);
833 elm_object_style_set(toolbar, "default");
834 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
835 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
836 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
839 if (lbutton_str && mbutton_str && rbutton_str)
841 lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
842 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn);
843 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
844 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
845 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
846 //elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn);
848 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
849 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
851 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL")))
852 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
856 //bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2".
859 //lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
860 //elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn);
861 elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data);
862 //has_btn_flag = TRUE;
864 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL")))
865 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
869 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
870 //elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn);
871 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
872 //has_btn_flag = TRUE;
876 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
877 //elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn);
878 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
879 //has_btn_flag = TRUE;
882 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
889 * Create buttons on the specialized navigation bar
891 * @param[in] eo_view navigation bar's content
892 * @param[in] controlbar title obj of navigation bar
896 void setting_create_navi_bar_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
897 char *mbutton_str, setting_call_back_func lbutton_click_cb,
898 setting_call_back_func rbutton_click_cb,
899 setting_call_back_func mbutton_click_cb,
900 void *cb_data, Evas_Object *eo_view,/*any container obj */
901 Evas_Object *navigate_bar, /*the specialized navigation bar */
902 Evas_Object *titleobj)
904 __create_navi_bar_bottom_buttons(title_str, lbutton_str,
905 rbutton_str, mbutton_str,
910 navigate_bar, titleobj);
915 * The general API to create a layout with navigation bar,
916 * which contents any evas container object(@param[eo_view]) as its content
918 * @param[in] eo_view navigation bar's content
919 * @param[out] titleobj title obj of navigation bar
921 * return main layout of UG or App..
924 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 */
925 Evas_Object **navi_bar,
926 Evas_Object **titleobj)
929 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
930 *navi_bar = setting_create_navi_bar(layout);
932 setting_create_navi_bar_buttons(title_str,
933 lbutton_str, rbutton_str, mbutton_str,
934 lbutton_click_cb, rbutton_click_cb,
935 mbutton_click_cb, cb_data, eo_view /*content */ ,
941 * The API to create a layout with navigation bar,
942 * which contents a scroller object as its content
944 * @param[out] scroller navigation bar's content
946 * @return a layout with a special navigation bar and at most 2 buttons
949 Evas_Object *setting_create_layout_navi_bar_scroller(Evas_Object *win_layout,
950 Evas_Object *win_obj,
954 setting_call_back_func
956 setting_call_back_func
959 Evas_Object **scroller,
960 Evas_Object **navi_bar)
963 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
964 *navi_bar = setting_create_navi_bar(layout);
967 /* create scroller as CONTENT */
968 Evas_Object *scrl = NULL;
969 /* Evas_Object *ret = NULL; */
970 if (scroller != NULL) {
971 /* scrl =*scroller = elm_scroller_add(win_layout); */
972 scrl = *scroller = elm_scroller_add(layout);
973 retvm_if(*scroller == NULL, NULL,
974 "Cannot set scroller object as contento of layout");
975 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
976 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
977 ELM_SCROLLER_POLICY_AUTO);
978 evas_object_show(*scroller);
983 setting_create_navi_bar_buttons(title_str,
984 lbutton_str, rbutton_str, NULL,
985 lbutton_click_cb, rbutton_click_cb,
986 NULL, cb_data, scrl /*content */ ,
992 * The API to create a layout with navigation bar ,
993 * which contents a genlist object as its content
995 * @return a layout with a special navigation bar and at most 2 buttons
998 Evas_Object *setting_create_layout_navi_bar_genlist(Evas_Object *win_layout,
999 Evas_Object *win_obj,
1003 setting_call_back_func
1005 setting_call_back_func
1008 Evas_Object **genlist,
1009 Evas_Object **navi_bar)
1011 /* win_layout -> layout */
1012 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
1013 *navi_bar = setting_create_navi_bar(layout);
1015 *genlist = elm_genlist_add(*navi_bar);
1016 retvm_if(*genlist == NULL, NULL,
1017 "Cannot set scroller object as contento of layout");
1018 elm_genlist_realization_mode_set(*genlist, EINA_TRUE);
1019 elm_object_style_set(*genlist, "dialogue");
1020 elm_genlist_clear(*genlist); /* first to clear list */
1021 evas_object_smart_callback_add(*genlist, "realized", __gl_realized_cb, NULL);
1023 setting_create_navi_bar_buttons(title_str,
1024 lbutton_str, rbutton_str, NULL,
1025 lbutton_click_cb, rbutton_click_cb,
1026 NULL, cb_data, *genlist, *navi_bar,
1032 Elm_Object_Item *__push_navi_bar_bottom_buttons(char *title_str,
1033 char *lbutton_str, char *rbutton_str,
1035 setting_call_back_func lbutton_click_cb,
1036 setting_call_back_func rbutton_click_cb,
1037 setting_call_back_func mbutton_click_cb,
1038 void *cb_data, Evas_Object *eo_view,
1039 Evas_Object *navigate_bar, Evas_Object **titleobj)
1041 Elm_Object_Item *navi_it = NULL;
1042 //Evas_Object *mbtn = NULL;
1043 //Evas_Object *rbtn = NULL;
1044 Evas_Object *lbtn = NULL;
1045 Evas_Object *toolbar = NULL;
1047 /* arrange buttons into controlbar*/
1048 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) {
1049 lbtn = setting_create_button(navigate_bar, _(lbutton_str),
1050 NAVI_BACK_BUTTON_STYLE,
1052 //lbutton_click_cb, cb_data);
1054 setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO);
1056 navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL);
1057 if(0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
1058 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1060 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
1061 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str);
1063 elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
1064 if(lbutton_click_cb)
1065 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
1067 if (!rbutton_str && !mbutton_str)
1072 toolbar = elm_toolbar_add(navigate_bar);
1073 elm_object_style_set(toolbar, "default");
1074 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
1075 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
1076 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
1078 if (rbutton_str && mbutton_str) {
1079 if (safeStrLen(_(mbutton_str)) <= MAX_BUTTON_TEXT_LEN
1080 && safeStrLen(_(rbutton_str)) <= MAX_BUTTON_TEXT_LEN)
1082 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
1083 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
1085 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1086 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1088 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1090 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
1091 //elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn);
1095 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1097 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1098 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
1099 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
1101 Evas_Object *more_btn = elm_button_add(navigate_bar);
1102 if (!more_btn) return NULL;
1103 elm_object_style_set(more_btn, NAVI_MORE_BUTTON_STYLE);
1105 Setting_Btn_Data *btn_data = calloc(1,sizeof(Setting_Btn_Data));
1106 setting_retvm_if(!btn_data, NULL, "calloc failed");
1107 btn_data->btn_text[0] = strdup(rbutton_str);
1108 btn_data->btn_click_cb = rbutton_click_cb;
1109 btn_data->btn_cb_data = cb_data;
1110 btn_data->parent = navigate_bar;
1111 //evas_object_data_set(more_btn, "more_btn_data", btn_data);
1112 evas_object_event_callback_add(more_btn, EVAS_CALLBACK_DEL, setting_create_more_btn_del_cb, btn_data);
1113 evas_object_smart_callback_add(more_btn, "clicked", setting_create_more_btn_click_cb, btn_data);
1115 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn);
1117 } else if (rbutton_str) {
1118 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1120 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1121 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
1122 //elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn);
1123 //elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL));
1124 } else if (mbutton_str) {
1125 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1127 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1128 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
1129 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
1130 //elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL));
1132 } else { /* no need back button on navi_bar */
1133 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
1134 if(0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
1135 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1137 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
1138 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str,rbutton_str);
1139 if (!lbutton_str && !rbutton_str && !mbutton_str) {
1143 toolbar = elm_toolbar_add(navigate_bar);
1144 elm_object_style_set(toolbar, "default");
1145 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
1146 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
1147 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
1149 //remove '<-' button, insteadly using controlbar
1150 Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
1151 elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
1152 evas_object_del(back_btn);
1154 if (lbutton_str && mbutton_str && rbutton_str)
1156 lbtn = setting_create_button(navigate_bar, _(lbutton_str), NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
1157 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn);
1158 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
1159 //elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn);
1160 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
1161 //elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn);
1163 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1164 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1168 //bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2".
1171 //lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
1172 //elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn);
1173 elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data);
1174 //has_btn_flag = TRUE;
1178 //mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data);
1179 //elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn);
1180 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1181 //has_btn_flag = TRUE;
1185 //rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data);
1186 //elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn);
1187 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1188 //has_btn_flag = TRUE;
1191 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1199 * The general API to push any evas object(@param[eo_view]) to the specialized navi_bar,
1200 * which contents at most 3 buttons
1204 setting_push_layout_navi_bar(char *title_str,
1205 char *lbutton_str, char *rbutton_str,
1207 setting_call_back_func lbutton_click_cb,
1208 setting_call_back_func rbutton_click_cb,
1209 setting_call_back_func mbutton_click_cb,
1210 void *cb_data, Evas_Object *eo_view,
1211 Evas_Object *navi_bar, Evas_Object **titleobj)
1213 return __push_navi_bar_bottom_buttons(title_str,
1214 lbutton_str, rbutton_str,mbutton_str,
1218 cb_data, eo_view, navi_bar, titleobj);
1222 * The API to push a scroller object(@param[scroller]) to the specialized navi_bar,
1223 * which contents at most 2 buttons
1228 setting_push_layout_navi_bar_scroller(Evas_Object *win_main, char *title_str,
1229 char *lbutton_str, char *rbutton_str,
1230 setting_call_back_func lbutton_click_cb,
1231 setting_call_back_func rbutton_click_cb,
1233 Evas_Object **scroller,
1234 Evas_Object *navi_bar)
1236 /* create scroller */
1237 Evas_Object *scrl = NULL;
1238 if (scroller != NULL) {
1239 scrl = *scroller = elm_scroller_add(navi_bar);
1240 retvm_if(*scroller == NULL,NULL,
1241 "Cannot set scroller as contento of layout");
1242 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
1243 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
1244 ELM_SCROLLER_POLICY_AUTO);
1246 evas_object_show(*scroller);
1249 return setting_push_layout_navi_bar(title_str,
1250 lbutton_str, rbutton_str, NULL,
1253 NULL, cb_data, scrl, navi_bar, NULL);
1257 * @ The API to push a genlist object(@param[genlist]) to the specialized navi_bar,
1258 * which contents at most 2 buttons
1262 setting_push_layout_navi_bar_genlist(Evas_Object *win_layout,
1263 Evas_Object *win_obj, char *title_str,
1264 char *lbutton_str, char *rbutton_str,
1265 setting_call_back_func lbutton_click_cb,
1266 setting_call_back_func rbutton_click_cb,
1267 void *cb_data, Evas_Object **genlist,
1268 Evas_Object *navi_bar)
1270 /* create scroller */
1271 Evas_Object *gl = NULL;
1272 if (genlist != NULL) {
1273 *genlist = elm_genlist_add(navi_bar);
1274 retvm_if(*genlist == NULL,NULL,
1275 "Cannot set scroller object as contento of layout");
1276 elm_genlist_realization_mode_set(*genlist, EINA_TRUE);
1278 elm_object_style_set(*genlist, "dialogue");
1279 elm_genlist_clear(gl); /* first to clear list */
1280 evas_object_smart_callback_add(gl, "realized", __gl_realized_cb, NULL);
1283 return setting_push_layout_navi_bar(title_str,
1284 lbutton_str, rbutton_str, NULL,
1287 NULL, cb_data, gl, navi_bar, NULL);
1291 void setting_go_to_top(Evas_Object *content)
1293 setting_retm_if(content == NULL, "content is NULL");
1294 const char *type = elm_object_widget_type_get(content);
1295 SETTING_TRACE("content type:%s", type);
1297 if (0 == safeStrCmp(type, "elm_genlist")) {
1298 Elm_Object_Item *first_item = elm_genlist_first_item_get(content);
1300 elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1302 } else if (0 == safeStrCmp(type, "elm_scroller")) {
1303 elm_scroller_region_show(content, 0, 0, 0, 0);
1304 } else if (0 == safeStrCmp(type, "elm_gengrid")) {
1305 Elm_Object_Item *first_item = elm_gengrid_first_item_get(content);
1307 elm_gengrid_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1309 } else if (NULL != type) {
1310 Eina_List *sub_objs = (Eina_List *)elm_widget_scrollable_children_get(content);
1312 Evas_Object *sub_obj = NULL;
1313 Eina_List *l = NULL;
1314 const char *sub_type = NULL;
1316 //just only search the first objects level
1317 EINA_LIST_FOREACH(sub_objs, l, sub_obj)
1323 sub_type = elm_object_widget_type_get(sub_obj);
1324 SETTING_TRACE("sub content type :%s", sub_type);
1325 if (0 == safeStrCmp(sub_type, "elm_genlist")) {
1326 Elm_Object_Item *first_item = elm_genlist_first_item_get(sub_obj);
1328 elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1330 } else if (0 == safeStrCmp(sub_type, "elm_scroller")) {
1331 elm_scroller_region_show(sub_obj, 0, 0, 0, 0);
1332 } else if (0 == safeStrCmp(sub_type, "elm_gengrid")) {
1333 Elm_Object_Item *first_item = elm_gengrid_first_item_get(sub_obj);
1335 elm_gengrid_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1347 * To go to top of list in top view of navibar.
1348 * @param[in] navibar
1351 void setting_go_to_navibar_list_top(Evas_Object *navibar)
1353 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(navibar);
1355 Evas_Object *content = elm_object_item_part_content_get(navi_it, "default");
1357 setting_go_to_top(content);
1361 EXPORT_PUBLIC void setting_nf_check_vconf_cb(keynode_t *key, void *data)
1363 ret_if(data == NULL);
1364 Evas_Object *check = data;
1365 char *vconf_name = vconf_keynode_get_name(key);
1366 int status = vconf_keynode_get_bool(key);
1367 SETTING_TRACE("Vconf[%s] has changed to be %d just now", vconf_name, status);
1368 elm_check_state_set(check, status);
1371 EXPORT_PUBLIC void setting_nf_check_change_cb(void *data, Evas_Object *obj, void *event_info)
1373 SETTING_TRACE_BEGIN;
1375 const char *vconf = data;
1376 Eina_Bool state = elm_check_state_get(obj);
1377 vconf_set_bool(vconf, state);
1380 EXPORT_PUBLIC void setting_nf_check_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
1382 SETTING_TRACE_BEGIN;
1384 const char *vconf = data;
1385 (void)vconf_ignore_key_changed(vconf, setting_nf_check_vconf_cb);