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");
142 btn_text = evas_object_data_get(btn, "text");
144 elm_object_text_set(btn, _(btn_text));
147 btn = elm_object_item_part_content_get(item, "title_left_btn");
149 btn_text = evas_object_data_get(btn, "text");
151 elm_object_text_set(btn, _(btn_text));
154 eo_view = elm_object_item_content_get(item);
155 if (NULL == eo_view) {
156 SETTING_TRACE("eo_view is null");
157 list = eina_list_next(list);
161 Elm_Object_Item *navi_it = evas_object_data_get(eo_view, "navi_it");
162 if (navi_it != item) {
163 SETTING_TRACE("navi_it is null");
164 list = eina_list_next(list);
168 const char *navi_title = evas_object_data_get(eo_view, "navi_title");
169 const char *lbutton_str = evas_object_data_get(eo_view, "lbutton_str");
170 const char *mbutton_str = evas_object_data_get(eo_view, "mbutton_str");
171 const char *rbutton_str = evas_object_data_get(eo_view, "rbutton_str");
172 const char *eo_view_t = evas_object_type_get(eo_view);
173 /*SETTING_TRACE("navi_title [%s]:%s", _(navi_title), navi_title); */
174 /*SETTING_TRACE("eo_view_t:%s", eo_view_t); */
175 /*SETTING_TRACE("lbutton_str:%s", lbutton_str); */
176 /*SETTING_TRACE("mbutton_str:%s", mbutton_str); */
177 /*SETTING_TRACE("rbutton_str:%s", rbutton_str); */
178 if (!safeStrCmp("elm_gengrid", eo_view_t))
179 elm_gengrid_realized_items_update(eo_view);
180 else if (!safeStrCmp("elm_genlist", eo_view_t))
181 elm_genlist_realized_items_update(eo_view);
184 /*SETTING_TRACE("Update navi_item, navi_title:%s", navi_title); */
186 elm_object_item_text_set(navi_it, _(navi_title));
189 Evas_Object *toolbar = elm_object_item_part_content_get(navi_it, "toolbar");
191 char *btn_str[3] = {0, };
193 if (lbutton_str && 0 != safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK")))
194 btn_str[idx++] = g_strdup(lbutton_str);
197 btn_str[idx++] = g_strdup(rbutton_str);
200 btn_str[idx++] = g_strdup(mbutton_str);
203 Elm_Object_Item *it = NULL;
204 Elm_Object_Item *next_it = NULL;
205 /*char *text = NULL; */
206 it = elm_toolbar_first_item_get(toolbar);
209 next_it = elm_toolbar_item_next_get(it);
210 /*text = (char *)elm_object_item_text_get(it); */
211 elm_object_item_text_set(it, _(btn_str[idx]));
220 /*if not matched,to check next node. */
221 list = eina_list_next(list);
227 static void __dismissed_cb(void *data, Evas_Object *obj, void *event_info)
231 Setting_Btn_Data *btn_data = data;
232 if (btn_data->ctxpopup) {
233 evas_object_del(btn_data->ctxpopup);
234 btn_data->ctxpopup = NULL;
238 static void __btn_click_cb(void *data, Evas_Object *obj, void *event_info)
242 Setting_Btn_Data *btn_data = data;
243 btn_data->btn_click_cb(btn_data->btn_cb_data, obj, event_info);
244 if (btn_data->ctxpopup) {
245 evas_object_del(btn_data->ctxpopup);
246 btn_data->ctxpopup = NULL;
250 static void __rotate_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
253 ret_if(data == NULL);
254 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
257 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
258 pos = elm_win_rotation_get(ug_get_window());
259 SETTING_TRACE_DEBUG("pos: %d, w: %d, h: %d", pos, w, h);
261 evas_object_move(btn_data->ctxpopup, 0, w);
262 } else if (pos == 270) {
263 evas_object_move(btn_data->ctxpopup, h, w);
265 evas_object_move(btn_data->ctxpopup, 0, h);
269 static void __ctxpopup_lang_change_cb(keynode_t *key, void *data)
271 setting_retm_if(NULL == key, "key is NULL");
272 setting_retm_if(NULL == data, "data is NULL");
273 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
274 char *vconf_name = vconf_keynode_get_name(key);
275 if (!safeStrCmp(vconf_name, VCONFKEY_LANGSET)) {
276 /*setting_popup_lang_update(popup); */
278 while (btn_data->btn_text[i]) {
279 elm_object_item_text_set(btn_data->item[i], _(btn_data->btn_text[i]));
285 static void __delete_rotate_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
287 /*SETTING_TRACE_BEGIN; */
288 ret_if(data == NULL);
289 Setting_Btn_Data *btn_data = (Setting_Btn_Data *)data;
290 Evas_Object *ctxpopup = btn_data->ctxpopup;
292 Ecore_Event_Handler *event_handler = evas_object_data_get(ctxpopup, "event_handler");
293 ecore_event_handler_del(event_handler);
294 evas_object_data_set(ctxpopup, "event_handler", NULL);
296 (void)vconf_ignore_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb);
297 evas_object_smart_callback_del(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb);
300 static Eina_Bool __ctxpopup_key_press_cb(void *data, int type, void *event)
303 Evas_Event_Key_Down *ev = event;
305 SETTING_TRACE("Invalid event object");
306 return ECORE_CALLBACK_RENEW;
308 SETTING_TRACE("Pressed %s", ev->keyname);
309 Evas_Object *ctxpopup = data;
311 if (!strcmp(ev->keyname, KEY_HOME)) {
312 elm_ctxpopup_dismiss(ctxpopup);
314 return ECORE_CALLBACK_RENEW;
317 EXPORT_PUBLIC void setting_create_more_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
321 Setting_Btn_Data *btn_data = data;
323 if (btn_data->ctxpopup) {
324 evas_object_del(btn_data->ctxpopup);
325 btn_data->ctxpopup = NULL;
328 Evas_Object *ctxpopup = elm_ctxpopup_add(btn_data->parent);
329 elm_object_style_set(ctxpopup, "more/default");
330 elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE); /*to disable the rotating dismiss issue */
331 ea_object_event_callback_add(ctxpopup, EA_CALLBACK_BACK, ea_ctxpopup_back_cb, NULL); /*to make ctxpopup get the "Back" key event */
332 ea_object_event_callback_add(ctxpopup, EA_CALLBACK_MORE, ea_ctxpopup_back_cb, NULL);/*to make ctxpopup get the "More" key event */
333 Ecore_Event_Handler *event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __ctxpopup_key_press_cb, ctxpopup);
334 evas_object_data_set(ctxpopup, "event_handler", event_handler);
336 evas_object_smart_callback_add(ctxpopup, "dismissed", __dismissed_cb, btn_data);
337 evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, __delete_rotate_ctxpopup_cb, btn_data);
338 evas_object_smart_callback_add(elm_object_top_widget_get(ctxpopup), "rotation,changed", __rotate_ctxpopup_cb, btn_data);
339 vconf_notify_key_changed(VCONFKEY_LANGSET, __ctxpopup_lang_change_cb, btn_data);
341 SETTING_TRACE("Clicked a more button, the call back of selecting objects in context popup is not the same as button callback");
342 Evas_Object *icon = NULL;
345 /*while(btn_data->btn_text[i]) */
346 for (i = 0; i < MAX_BUTTON_NUM; i++) {
347 /*SETTING_TRACE("btn_data->btn_text[%d]:%s", i, btn_data->btn_text[i]); */
348 if (isEmptyStr(btn_data->btn_text[i])) continue;
349 if (btn_data->btn_icon[i]) {
350 icon = elm_image_add(ctxpopup);
351 elm_image_file_set(icon, btn_data->btn_icon[i], NULL);
354 btn_data->item[i] = elm_ctxpopup_item_append(ctxpopup, _(btn_data->btn_text[i]), icon, __btn_click_cb, btn_data);
357 btn_data->ctxpopup = ctxpopup;
362 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
363 pos = elm_win_rotation_get(ug_get_window());
365 evas_object_move(ctxpopup, 0, w);
366 } else if (pos == 270) {
367 evas_object_move(ctxpopup, h, w);
369 evas_object_move(ctxpopup, 0, h);
371 evas_object_show(ctxpopup);
374 EXPORT_PUBLIC void setting_create_more_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
378 Setting_Btn_Data *btn_data = data;
380 evas_object_smart_callback_del(btn_data->ctxpopup, "dismissed", __dismissed_cb);
381 if (btn_data->ctxpopup) {
382 evas_object_del(btn_data->ctxpopup);
383 btn_data->ctxpopup = NULL;
386 /*while(btn_data->btn_text[i]) */
387 for (i = 0; i < MAX_BUTTON_NUM; i++) {
388 FREE(btn_data->btn_text[i]);
389 FREE(btn_data->btn_icon[i]);
391 FREE(btn_data);/*delete the date. */
393 /*evas_object_data_set(obj, "more_btn_data", NULL); */
397 Evas_Object *setting_create_win_layout(Evas_Object *win_layout,
398 Evas_Object *win_obj)
400 Evas_Object *layout = NULL;
402 layout = elm_layout_add(win_obj);
403 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
404 setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
406 elm_layout_theme_set(layout, "layout", "application", "default");
408 Evas_Object *bg = setting_create_bg(layout, win_obj, NULL);
409 elm_object_part_content_set(layout, "elm.swallow.bg", bg);
410 evas_object_show(layout);
415 Elm_Object_Item *setting_create_guild_layout(Evas_Object *navi_bar,
420 setting_call_back_func lbutton_click_cb,
421 setting_call_back_func rbutton_click_cb,
422 setting_call_back_func mbutton_click_cb,
426 char *content_button_str,
427 setting_call_back_func content_button_click_cb,
430 Evas_Object *scroller = elm_genlist_add(navi_bar);
431 retvm_if(scroller == NULL, NULL, "Cannot set scroller object as contento of layout");
432 elm_genlist_realization_mode_set(scroller, EINA_TRUE);
433 elm_object_style_set(scroller, "dialogue");
434 elm_genlist_clear(scroller); /* first to clear list */
435 elm_genlist_mode_set(scroller, ELM_LIST_COMPRESS);
436 evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL);
438 ADD_GL_LABLE(scroller, content_str1);
439 ADD_GL_GIF(scroller, png_list)
440 ADD_GL_LABLE(scroller, content_str2);
441 ADD_GL_BUTTON(scroller, content_button_str, content_button_click_cb, cb_data)
443 return setting_push_layout_navi_bar(title_str,
444 lbutton_str, rbutton_str, NULL,
447 NULL, cb_data, scroller, navi_bar, NULL);
451 Elm_Object_Item *setting_create_guild_layout2(Evas_Object *navi_bar,
456 setting_call_back_func lbutton_click_cb,
457 setting_call_back_func rbutton_click_cb,
458 setting_call_back_func mbutton_click_cb,
460 Evas_Object **ug_layout,
462 char *content_button_str,
463 setting_call_back_func content_button_click_cb,
466 Evas_Object *scroller;
467 Elm_Object_Item *item = setting_push_layout_navi_bar_scroller(navi_bar,
469 lbutton_str, rbutton_str,
474 Evas_Object *outer_box = setting_create_client_bx(navi_bar);
475 /*add top text window.. */
477 const char *str = setting_customize_text(content_str1, 0, NULL, NULL);
478 Evas_Object *lable = setting_create_textbox(navi_bar, str);
479 setting_disable_evas_object(lable);
480 elm_box_pack_end(outer_box, lable);
486 Evas_Object *ug_win = elm_layout_add(navi_bar);
487 evas_object_size_hint_weight_set(ug_win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
488 setting_retvm_if(ug_win == NULL, NULL, "layout == NULL");
489 elm_layout_theme_set(ug_win, "layout", "application", "default");
490 elm_object_part_content_set(ug_win, "elm.swallow.bg", setting_create_blank_rect_customize(navi_bar, 720, 850));
491 /*elm_object_part_content_set(layout, "elm.swallow.content", navi); */
492 elm_box_pack_end(outer_box, ug_win);
493 evas_object_show(ug_win);
499 const char *str = setting_customize_text(content_str2, 0, NULL, NULL);
500 Evas_Object *lable = setting_create_textbox(navi_bar, str);
501 setting_disable_evas_object(lable);
502 elm_box_pack_end(outer_box, lable);
506 /*add bottom button */
507 if (content_button_str) {
508 Evas_Object *layout = elm_layout_add(navi_bar);
509 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
510 elm_layout_theme_set(layout, "layout", "application", "default");
511 elm_object_part_content_set(layout, "elm.swallow.bg", setting_create_blank_rect_customize(navi_bar, 680, 100));
512 Evas_Object *btn = elm_button_add(navi_bar);
513 elm_object_text_set(btn, content_button_str);
514 evas_object_propagate_events_set(btn, EINA_FALSE);
515 evas_object_smart_callback_add(btn, "clicked", content_button_click_cb, cb_data);
516 elm_object_part_content_set(layout, "elm.swallow.content", btn);
517 evas_object_show(btn);
518 evas_object_show(layout);
519 elm_box_pack_end(outer_box, layout);
522 elm_object_content_set(scroller, outer_box);
527 Evas_Object *setting_create_navi_bar(Evas_Object *layout)
530 Evas_Object *navi = NULL;
531 navi = elm_naviframe_add(layout);
533 elm_naviframe_prev_btn_auto_pushed_set(navi, EINA_FALSE);
535 ea_object_event_callback_add(navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL);
536 ea_object_event_callback_add(navi, EA_CALLBACK_MORE, ea_naviframe_more_cb, NULL);
538 /*elm_object_item_signal_callback_event(navi */
541 SETTING_TRACE(" *** elm_naviframe_add returns NULL *** ");
544 elm_object_part_content_set(layout, "elm.swallow.content", navi);
545 evas_object_show(navi);
550 * The API to Create title buttons of naviframe
551 * if sip is shown,the buttons created by this API will be shown,it sip is hidden,they will be hiden too
555 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
556 * "1", "2", "3" ,"4",
562 * //more button +2 common buttons + '<-'button
563 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
564 * NULL, "2", "3" ,NULL,
570 * //1common buton + '<-'button
571 * setting_append_naviframe_title_buttons(ad->navi_it, ad->navi_bar,
572 * NULL, NULL, _("IDS_COM_SK_DONE") ,NULL,
579 void setting_append_naviframe_title_buttons(Elm_Object_Item *navi_it,
580 Evas_Object *navigate_bar,
581 char *more_button_str,
582 char *left_button_str,
583 char *right_button_str,
584 char *back_button_str,
585 setting_call_back_func more_button_click_cb,
586 setting_call_back_func left_button_click_cb,
587 setting_call_back_func right_button_click_cb,
588 setting_call_back_func back_button_click_cb,
592 Evas_Object *btn = NULL;
594 if (more_button_click_cb) {
595 if (!more_button_str) {
597 /*btn = setting_create_button(navigate_bar, NULL, "naviframe/more/default", more_button_click_cb, cb_data); */
598 btn = elm_button_add(navigate_bar);
599 elm_object_style_set(btn, "naviframe/more/default");
600 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
601 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5);
602 evas_object_smart_callback_add(btn, "clicked", more_button_click_cb, cb_data);
603 evas_object_show(btn);
605 btn = setting_create_button(navigate_bar, more_button_str, "naviframe/title/default", more_button_click_cb, cb_data);
608 elm_object_item_part_content_set(navi_it, "title_more_btn", btn);
611 if (left_button_click_cb) {
612 btn = setting_create_button(navigate_bar, left_button_str, "naviframe/title/default", left_button_click_cb, cb_data);
613 elm_object_item_part_content_set(navi_it, "title_toolbar_button1", btn);
616 if (right_button_click_cb) {
617 btn = setting_create_button(navigate_bar, right_button_str, "naviframe/title/default", right_button_click_cb, cb_data);
618 elm_object_item_part_content_set(navi_it, "title_toolbar_button2", btn);
621 if (back_button_click_cb) {
622 if (!back_button_str) {
623 /*btn = setting_create_button(navigate_bar, NULL, "naviframe/back_btn/default", back_button_click_cb, cb_data); */
624 btn = elm_button_add(navigate_bar);
625 elm_object_style_set(btn, "naviframe/back_btn/default");
626 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
627 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5);
628 evas_object_smart_callback_add(btn, "clicked", back_button_click_cb, cb_data);
629 evas_object_show(btn);
631 btn = setting_create_button(navigate_bar, back_button_str, "naviframe/title/default", back_button_click_cb, cb_data);
634 elm_object_item_part_content_set(navi_it, "title_prev_btn", btn);
638 /*"title_more_btn" won't be supported any more, so don't pass mbutton_str */
640 Elm_Object_Item *setting_create_navi_bar_top_buttons(char *title_str,
644 setting_call_back_func lbutton_click_cb,
645 setting_call_back_func rbutton_click_cb,
646 setting_call_back_func mbutton_click_cb,
647 void *cb_data, Evas_Object *eo_view,/*any container obj */
648 Evas_Object *navigate_bar)
650 /*SETTING_TRACE_BEGIN; */
651 Evas_Object *l_button = NULL;
652 Evas_Object *r_button = NULL;
653 Evas_Object *m_button = NULL;
654 Elm_Object_Item *navi_it = NULL;
658 l_button = setting_create_button(navigate_bar, lbutton_str,
659 "naviframe/toolbar/default",
660 lbutton_click_cb, cb_data);
663 r_button = setting_create_button(navigate_bar, rbutton_str,
664 "naviframe/end_btn/default",
665 rbutton_click_cb, cb_data);
668 m_button = setting_create_button(navigate_bar, mbutton_str,
670 mbutton_click_cb, cb_data);
672 navi_it = elm_naviframe_item_push(navigate_bar, title_str,
675 retv_if(!navi_it, NULL);
677 /* arrange buttons into navi_it*/
678 if (l_button) { /* done */
679 elm_object_item_part_content_set(navi_it, "title_toolbar_button1", l_button);
681 if (r_button) { /* cancel */
682 elm_object_item_part_content_set(navi_it, "title_prev_btn", r_button);
684 if (m_button) { /* none */
685 elm_object_item_part_content_set(navi_it, "title_more_btn", m_button);
690 Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
691 char *mbutton_str, setting_call_back_func lbutton_click_cb,/* MORE */
692 setting_call_back_func rbutton_click_cb,
693 setting_call_back_func mbutton_click_cb,
694 void *cb_data, Evas_Object *eo_view,/*any container obj */
695 Evas_Object *navigate_bar, /*the specialized navigation bar */
696 Evas_Object *titleobj)
699 Elm_Object_Item *navi_it = NULL;
700 /*Evas_Object *mbtn = NULL; */
701 /*Evas_Object *rbtn = NULL; */
702 Evas_Object *lbtn = NULL;
703 Evas_Object *toolbar = NULL;
705 /* arrange buttons into controlbar*/
706 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) {
707 lbtn = setting_create_button(navigate_bar, _(lbutton_str),
708 NAVI_BACK_BUTTON_STYLE,
710 /*lbutton_click_cb, cb_data); */
712 setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO);
714 navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL); /* add new button */
716 if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
717 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
719 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
721 elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
722 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
723 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str);
727 /*elm_object_item_signal_callback_add(navi_it, "elm,action,more,event", more_cb, cb_data); */
729 if (!rbutton_str && !mbutton_str) {
731 } else if (rbutton_str && mbutton_str) { /* both exist.. */
732 toolbar = elm_toolbar_add(navigate_bar);
734 elm_object_style_set(toolbar, "default");
735 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
736 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
737 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
738 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
739 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
741 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
743 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
744 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
745 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
746 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */
747 } else if (rbutton_str) { /* r_btn exist.. */
748 toolbar = elm_toolbar_add(navigate_bar);
750 elm_object_style_set(toolbar, "default");
751 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
752 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
753 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
754 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
756 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
758 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
759 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn); */
760 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */
761 } else if (mbutton_str) { /* m_btn exist.. */
762 toolbar = elm_toolbar_add(navigate_bar);
764 elm_object_style_set(toolbar, "default");
765 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
766 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
767 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
768 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
770 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
772 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
773 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
774 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */
778 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
780 SETTING_TRACE("dgettext(SETTING_PACKAGE, title_str):%s", dgettext(SETTING_PACKAGE, title_str));
781 SETTING_TRACE("dgettext(SYSTEM_PACKAGE, title_str):%s", dgettext(SYSTEM_PACKAGE, title_str));
782 if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
783 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
785 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
786 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str);
788 if (rbutton_str || mbutton_str) {
789 toolbar = elm_toolbar_add(navigate_bar);
791 elm_object_style_set(toolbar, "default");
792 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
793 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
794 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
797 if (lbutton_str && mbutton_str && rbutton_str) {
798 lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
799 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn);
800 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
801 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
802 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
803 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */
805 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
806 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
808 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL")))
809 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
811 /*bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2". */
813 /*lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); */
814 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn); */
815 elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data);
816 /*has_btn_flag = TRUE; */
818 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_SK_CANCEL")))
819 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
822 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
823 /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn); */
824 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
825 /*has_btn_flag = TRUE; */
828 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
829 /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn); */
830 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
831 /*has_btn_flag = TRUE; */
834 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
841 * Create buttons on the specialized navigation bar
843 * @param[in] eo_view navigation bar's content
844 * @param[in] controlbar title obj of navigation bar
848 void setting_create_navi_bar_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
849 char *mbutton_str, setting_call_back_func lbutton_click_cb,
850 setting_call_back_func rbutton_click_cb,
851 setting_call_back_func mbutton_click_cb,
852 void *cb_data, Evas_Object *eo_view,/*any container obj */
853 Evas_Object *navigate_bar, /*the specialized navigation bar */
854 Evas_Object *titleobj)
857 __create_navi_bar_bottom_buttons(title_str, lbutton_str,
858 rbutton_str, mbutton_str,
863 navigate_bar, titleobj);
868 * The general API to create a layout with navigation bar,
869 * which contents any evas container object(@param[eo_view]) as its content
871 * @param[in] eo_view navigation bar's content
872 * @param[out] titleobj title obj of navigation bar
874 * return main layout of UG or App..
877 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 */
878 Evas_Object **navi_bar,
879 Evas_Object **titleobj)
882 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
883 *navi_bar = setting_create_navi_bar(layout);
885 setting_create_navi_bar_buttons(title_str,
886 lbutton_str, rbutton_str, mbutton_str,
887 lbutton_click_cb, rbutton_click_cb,
888 mbutton_click_cb, cb_data, eo_view /*content */ ,
894 * The API to create a layout with navigation bar,
895 * which contents a scroller object as its content
897 * @param[out] scroller navigation bar's content
899 * @return a layout with a special navigation bar and at most 2 buttons
902 Evas_Object *setting_create_layout_navi_bar_scroller(Evas_Object *win_layout,
903 Evas_Object *win_obj,
907 setting_call_back_func
909 setting_call_back_func
912 Evas_Object **scroller,
913 Evas_Object **navi_bar)
916 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
917 *navi_bar = setting_create_navi_bar(layout);
920 /* create scroller as CONTENT */
921 Evas_Object *scrl = NULL;
922 /* Evas_Object *ret = NULL; */
923 if (scroller != NULL) {
924 /* scrl =*scroller = elm_scroller_add(win_layout); */
925 scrl = *scroller = elm_scroller_add(layout);
926 retvm_if(*scroller == NULL, NULL,
927 "Cannot set scroller object as contento of layout");
928 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
929 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
930 ELM_SCROLLER_POLICY_AUTO);
931 evas_object_show(*scroller);
936 setting_create_navi_bar_buttons(title_str,
937 lbutton_str, rbutton_str, NULL,
938 lbutton_click_cb, rbutton_click_cb,
939 NULL, cb_data, scrl /*content */ ,
945 * The API to create a layout with navigation bar ,
946 * which contents a genlist object as its content
948 * @return a layout with a special navigation bar and at most 2 buttons
951 Evas_Object *setting_create_layout_navi_bar_genlist(Evas_Object *win_layout,
952 Evas_Object *win_obj,
956 setting_call_back_func
958 setting_call_back_func
961 Evas_Object **genlist,
962 Evas_Object **navi_bar)
964 /* win_layout -> layout */
965 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
966 *navi_bar = setting_create_navi_bar(layout);
968 *genlist = elm_genlist_add(*navi_bar);
969 retvm_if(*genlist == NULL, NULL,
970 "Cannot set scroller object as contento of layout");
971 elm_genlist_realization_mode_set(*genlist, EINA_TRUE);
972 elm_object_style_set(*genlist, "dialogue");
973 elm_genlist_clear(*genlist); /* first to clear list */
974 evas_object_smart_callback_add(*genlist, "realized", __gl_realized_cb, NULL);
976 setting_create_navi_bar_buttons(title_str,
977 lbutton_str, rbutton_str, NULL,
978 lbutton_click_cb, rbutton_click_cb,
979 NULL, cb_data, *genlist, *navi_bar,
985 Elm_Object_Item *__push_navi_bar_bottom_buttons(char *title_str,
986 char *lbutton_str, char *rbutton_str,
988 setting_call_back_func lbutton_click_cb,
989 setting_call_back_func rbutton_click_cb,
990 setting_call_back_func mbutton_click_cb,
991 void *cb_data, Evas_Object *eo_view,
992 Evas_Object *navigate_bar, Evas_Object **titleobj)
994 Elm_Object_Item *navi_it = NULL;
995 /*Evas_Object *mbtn = NULL; */
996 /*Evas_Object *rbtn = NULL; */
997 Evas_Object *lbtn = NULL;
998 Evas_Object *toolbar = NULL;
1000 /* arrange buttons into controlbar*/
1001 if (0 == safeStrCmp(_(lbutton_str), _("IDS_COM_BODY_BACK"))) {
1002 lbtn = setting_create_button(navigate_bar, _(lbutton_str),
1003 NAVI_BACK_BUTTON_STYLE,
1005 /*lbutton_click_cb, cb_data); */
1007 setting_set_tts_info(lbtn, _(lbutton_str), NULL, NULL, TTS_CONTENT_BACK_CLICK_INFO);
1009 navi_it = elm_naviframe_item_push(navigate_bar, title_str, lbtn, NULL, eo_view, NULL);
1010 if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
1011 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1013 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
1014 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str);
1016 elm_object_style_set(lbtn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
1017 if (lbutton_click_cb)
1018 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)lbutton_click_cb, cb_data);
1020 if (!rbutton_str && !mbutton_str) {
1024 toolbar = elm_toolbar_add(navigate_bar);
1025 elm_object_style_set(toolbar, "default");
1026 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
1027 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
1028 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
1030 if (rbutton_str && mbutton_str) {
1031 if (safeStrLen(_(mbutton_str)) <= MAX_BUTTON_TEXT_LEN
1032 && safeStrLen(_(rbutton_str)) <= MAX_BUTTON_TEXT_LEN) {
1033 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
1034 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
1036 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1037 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1039 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1041 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
1042 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */
1044 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1046 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1047 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
1048 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
1050 Evas_Object *more_btn = elm_button_add(navigate_bar);
1051 if (!more_btn) return NULL;
1052 elm_object_style_set(more_btn, NAVI_MORE_BUTTON_STYLE);
1054 Setting_Btn_Data *btn_data = calloc(1, sizeof(Setting_Btn_Data));
1055 setting_retvm_if(!btn_data, NULL, "calloc failed");
1056 btn_data->btn_text[0] = strdup(rbutton_str);
1057 btn_data->btn_click_cb = rbutton_click_cb;
1058 btn_data->btn_cb_data = cb_data;
1059 btn_data->parent = navigate_bar;
1060 /*evas_object_data_set(more_btn, "more_btn_data", btn_data); */
1061 evas_object_event_callback_add(more_btn, EVAS_CALLBACK_DEL, setting_create_more_btn_del_cb, btn_data);
1062 evas_object_smart_callback_add(more_btn, "clicked", setting_create_more_btn_click_cb, btn_data);
1064 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn);
1066 } else if (rbutton_str) {
1067 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1069 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1070 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
1071 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", rbtn); */
1072 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */
1073 } else if (mbutton_str) {
1074 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1076 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1077 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
1078 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
1079 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", setting_create_button(navigate_bar, "", NULL, NULL, NULL)); */
1081 } else { /* no need back button on navi_bar */
1082 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
1083 if (0 != safeStrCmp(title_str, dgettext(SETTING_PACKAGE, title_str)))
1084 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1086 elm_object_item_domain_text_translatable_set(navi_it, "sys_string", EINA_TRUE);
1087 ADD_MULTI_LANGUAGE_AUTO_UPDATE(eo_view, navi_it, title_str, lbutton_str, mbutton_str, rbutton_str);
1088 if (!lbutton_str && !rbutton_str && !mbutton_str) {
1092 toolbar = elm_toolbar_add(navigate_bar);
1093 elm_object_style_set(toolbar, "default");
1094 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
1095 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
1096 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
1098 /*remove '<-' button, insteadly using controlbar */
1099 Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
1100 elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
1101 evas_object_del(back_btn);
1103 if (lbutton_str && mbutton_str && rbutton_str) {
1104 lbtn = setting_create_button(navigate_bar, _(lbutton_str), NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data);
1105 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", lbtn);
1106 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
1107 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", mbtn); */
1108 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
1109 /*elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn); */
1111 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1112 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1114 /*bool has_btn_flag = FALSE;//first "toolbar_button1", then "toolbar_button2". */
1116 /*lbtn = setting_create_button(navigate_bar, lbutton_str, NAVI_DEF_BUTTON_STYLE, lbutton_click_cb, cb_data); */
1117 /*elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn); */
1118 elm_toolbar_item_append(toolbar, NULL, _(lbutton_str), lbutton_click_cb, cb_data);
1119 /*has_btn_flag = TRUE; */
1122 /*mbtn = setting_create_button(navigate_bar, mbutton_str, NAVI_DEF_BUTTON_STYLE, mbutton_click_cb, cb_data); */
1123 /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", mbtn); */
1124 elm_toolbar_item_append(toolbar, NULL, _(mbutton_str), mbutton_click_cb, cb_data);
1125 /*has_btn_flag = TRUE; */
1128 /*rbtn = setting_create_button(navigate_bar, rbutton_str, NAVI_DEF_BUTTON_STYLE, rbutton_click_cb, cb_data); */
1129 /*elm_object_item_part_content_set(navi_it, has_btn_flag ? "toolbar_button2" : "toolbar_button1", rbtn); */
1130 elm_toolbar_item_append(toolbar, NULL, _(rbutton_str), rbutton_click_cb, cb_data);
1131 /*has_btn_flag = TRUE; */
1134 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1142 * The general API to push any evas object(@param[eo_view]) to the specialized navi_bar,
1143 * which contents at most 3 buttons
1147 setting_push_layout_navi_bar(char *title_str,
1148 char *lbutton_str, char *rbutton_str,
1150 setting_call_back_func lbutton_click_cb,
1151 setting_call_back_func rbutton_click_cb,
1152 setting_call_back_func mbutton_click_cb,
1153 void *cb_data, Evas_Object *eo_view,
1154 Evas_Object *navi_bar, Evas_Object **titleobj)
1156 return __push_navi_bar_bottom_buttons(title_str,
1157 lbutton_str, rbutton_str, mbutton_str,
1161 cb_data, eo_view, navi_bar, titleobj);
1165 * The API to push a scroller object(@param[scroller]) to the specialized navi_bar,
1166 * which contents at most 2 buttons
1171 setting_push_layout_navi_bar_scroller(Evas_Object *win_main, char *title_str,
1172 char *lbutton_str, char *rbutton_str,
1173 setting_call_back_func lbutton_click_cb,
1174 setting_call_back_func rbutton_click_cb,
1176 Evas_Object **scroller,
1177 Evas_Object *navi_bar)
1179 /* create scroller */
1180 Evas_Object *scrl = NULL;
1181 if (scroller != NULL) {
1182 scrl = *scroller = elm_scroller_add(navi_bar);
1183 retvm_if(*scroller == NULL, NULL,
1184 "Cannot set scroller as contento of layout");
1185 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
1186 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
1187 ELM_SCROLLER_POLICY_AUTO);
1189 evas_object_show(*scroller);
1192 return setting_push_layout_navi_bar(title_str,
1193 lbutton_str, rbutton_str, NULL,
1196 NULL, cb_data, scrl, navi_bar, NULL);
1200 * @ The API to push a genlist object(@param[genlist]) to the specialized navi_bar,
1201 * which contents at most 2 buttons
1205 setting_push_layout_navi_bar_genlist(Evas_Object *win_layout,
1206 Evas_Object *win_obj, char *title_str,
1207 char *lbutton_str, char *rbutton_str,
1208 setting_call_back_func lbutton_click_cb,
1209 setting_call_back_func rbutton_click_cb,
1210 void *cb_data, Evas_Object **genlist,
1211 Evas_Object *navi_bar)
1213 /* create scroller */
1214 Evas_Object *gl = NULL;
1215 if (genlist != NULL) {
1216 *genlist = elm_genlist_add(navi_bar);
1217 retvm_if(*genlist == NULL, NULL,
1218 "Cannot set scroller object as contento of layout");
1219 elm_genlist_realization_mode_set(*genlist, EINA_TRUE);
1221 elm_object_style_set(*genlist, "dialogue");
1222 elm_genlist_clear(gl); /* first to clear list */
1223 evas_object_smart_callback_add(gl, "realized", __gl_realized_cb, NULL);
1226 return setting_push_layout_navi_bar(title_str,
1227 lbutton_str, rbutton_str, NULL,
1230 NULL, cb_data, gl, navi_bar, NULL);
1234 void setting_go_to_top(Evas_Object *content)
1236 setting_retm_if(content == NULL, "content is NULL");
1237 const char *type = elm_object_widget_type_get(content);
1238 SETTING_TRACE("content type:%s", type);
1240 if (0 == safeStrCmp(type, "elm_genlist")) {
1241 Elm_Object_Item *first_item = elm_genlist_first_item_get(content);
1243 elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1245 } else if (0 == safeStrCmp(type, "elm_scroller")) {
1246 elm_scroller_region_show(content, 0, 0, 0, 0);
1247 } else if (0 == safeStrCmp(type, "elm_gengrid")) {
1248 Elm_Object_Item *first_item = elm_gengrid_first_item_get(content);
1250 elm_gengrid_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1252 } else if (NULL != type) {
1253 Eina_List *sub_objs = (Eina_List *)elm_widget_scrollable_children_get(content);
1255 Evas_Object *sub_obj = NULL;
1256 Eina_List *l = NULL;
1257 const char *sub_type = NULL;
1259 /*just only search the first objects level */
1260 EINA_LIST_FOREACH(sub_objs, l, sub_obj) {
1265 sub_type = elm_object_widget_type_get(sub_obj);
1266 SETTING_TRACE("sub content type :%s", sub_type);
1267 if (0 == safeStrCmp(sub_type, "elm_genlist")) {
1268 Elm_Object_Item *first_item = elm_genlist_first_item_get(sub_obj);
1270 elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1272 } else if (0 == safeStrCmp(sub_type, "elm_scroller")) {
1273 elm_scroller_region_show(sub_obj, 0, 0, 0, 0);
1274 } else if (0 == safeStrCmp(sub_type, "elm_gengrid")) {
1275 Elm_Object_Item *first_item = elm_gengrid_first_item_get(sub_obj);
1277 elm_gengrid_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1289 * To go to top of list in top view of navibar.
1290 * @param[in] navibar
1293 void setting_go_to_navibar_list_top(Evas_Object *navibar)
1295 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(navibar);
1297 Evas_Object *content = elm_object_item_part_content_get(navi_it, "default");
1299 setting_go_to_top(content);
1303 EXPORT_PUBLIC void setting_nf_check_vconf_cb(keynode_t *key, void *data)
1305 ret_if(data == NULL);
1306 Evas_Object *check = data;
1307 char *vconf_name = vconf_keynode_get_name(key);
1308 int status = vconf_keynode_get_bool(key);
1309 SETTING_TRACE("Vconf[%s] has changed to be %d just now", vconf_name, status);
1310 elm_check_state_set(check, status);
1313 EXPORT_PUBLIC void setting_nf_check_change_cb(void *data, Evas_Object *obj, void *event_info)
1315 SETTING_TRACE_BEGIN;
1317 const char *vconf = data;
1318 Eina_Bool state = elm_check_state_get(obj);
1319 vconf_set_bool(vconf, state);
1322 EXPORT_PUBLIC void setting_nf_check_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
1324 SETTING_TRACE_BEGIN;
1326 const char *vconf = data;
1327 (void)vconf_ignore_key_changed(vconf, setting_nf_check_vconf_cb);