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>
26 Evas_Object *setting_create_win_layout(Evas_Object *win_layout,
29 Evas_Object *layout = NULL;
32 layout = elm_layout_add(win_layout);
33 setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
35 elm_layout_theme_set(layout, "layout", "application", "default");
36 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
38 elm_win_resize_object_add(win_obj, layout);
39 Evas_Object *bg = setting_create_bg(layout, win_obj, "group_list");
40 elm_object_part_content_set(layout, "elm.swallow.bg", bg);
41 evas_object_show(layout);
46 #define HALF_SCREEN_STR_LEN 20
47 #define ONE_THIRD_SCREEN_STR_LEN 13
48 Evas_Object *setting_create_navi_bar(Evas_Object *layout)
51 Evas_Object *navi = NULL;
52 navi = elm_naviframe_add(layout);
55 SETTING_TRACE(" *** elm_naviframe_add returns NULL *** ");
58 elm_object_part_content_set(layout, "elm.swallow.content", navi);
59 evas_object_show(navi);
63 Elm_Object_Item * setting_create_navi_bar_top_buttons(char *title_str,
67 setting_call_back_func lbutton_click_cb,
68 setting_call_back_func rbutton_click_cb,
69 setting_call_back_func mbutton_click_cb,
70 void *cb_data, Evas_Object *eo_view,/*any container obj */
71 Evas_Object *navigate_bar )
73 //SETTING_TRACE_BEGIN;
74 Evas_Object *l_button = NULL;
75 Evas_Object *r_button = NULL;
76 Evas_Object *m_button = NULL;
77 Elm_Object_Item *navi_it = NULL;
80 l_button = setting_create_button(navigate_bar, lbutton_str,
81 "naviframe/title/default",
82 lbutton_click_cb, cb_data);
84 r_button = setting_create_button(navigate_bar, rbutton_str,
85 "naviframe/title/default",
86 rbutton_click_cb, cb_data);
87 m_button = setting_create_button(navigate_bar, mbutton_str,
88 "naviframe/title/default",
89 mbutton_click_cb, cb_data);
91 navi_it = elm_naviframe_item_push(navigate_bar, title_str,
94 retv_if(!navi_it, NULL);
96 /* arrange buttons into navi_it*/
98 elm_object_item_part_content_set(navi_it, "title_left_btn", l_button);
101 elm_object_item_part_content_set(navi_it, "title_right_btn", r_button);
104 elm_object_item_part_content_set(navi_it, "title_more_btn", m_button);
107 Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
109 elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
110 if (back_btn) evas_object_del(back_btn);
116 Elm_Object_Item *__create_navi_bar_bottom_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
117 char *mbutton_str, setting_call_back_func lbutton_click_cb,
118 setting_call_back_func rbutton_click_cb,
119 setting_call_back_func mbutton_click_cb,
120 void *cb_data, Evas_Object *eo_view,/*any container obj */
121 Evas_Object *navigate_bar, /*the specialized navigation bar */
122 Evas_Object *controlbar)
125 Elm_Object_Item *navi_it = NULL;
127 /* arrange buttons into controlbar*/
128 if (0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) { /* do special handling */
129 Evas_Object *l_button = NULL;
130 l_button = setting_create_button(navigate_bar, lbutton_str,
131 NAVI_BACK_BUTTON_STYLE,
132 lbutton_click_cb, cb_data);
134 navi_it = elm_naviframe_item_push(navigate_bar, title_str, l_button, NULL, eo_view, NULL); /* add new button */
135 elm_object_style_set(l_button, NAVI_BACK_BUTTON_STYLE); /* take into effect */
137 if (!rbutton_str && !mbutton_str) { /* return directly */
139 evas_object_del(controlbar);
144 if (rbutton_str && mbutton_str) { /* both exist.. */
145 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
146 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
148 } else if (rbutton_str) { /* r_btn exist.. */
149 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
150 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
151 } else if (mbutton_str) { /* m_btn exist.. */
152 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
153 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
156 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
162 elm_toolbar_item_append(controlbar, NULL, lbutton_str, lbutton_click_cb, cb_data);
164 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
166 /* if controllbar just have one right button, let it occups 1/2. */
170 if (!lbutton_str && !mbutton_str)
172 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
174 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
178 if (lbutton_str || mbutton_str)
180 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
184 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
185 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
192 * Create buttons on the specialized navigation bar
194 * @param[in] eo_view navigation bar's content
195 * @param[in] controlbar title obj of navigation bar
198 void setting_create_navi_bar_buttons(char *title_str, char *lbutton_str, char *rbutton_str,
199 char *mbutton_str, setting_call_back_func lbutton_click_cb,
200 setting_call_back_func rbutton_click_cb,
201 setting_call_back_func mbutton_click_cb,
202 void *cb_data, Evas_Object *eo_view,/*any container obj */
203 Evas_Object *navigate_bar, /*the specialized navigation bar */
204 Evas_Object *controlbar)
206 #if SUPPORT_BOTTOM_BTNS
207 __create_navi_bar_bottom_buttons(title_str, lbutton_str,
208 rbutton_str, mbutton_str,
213 navigate_bar, controlbar);
217 Evas_Object *l_button = NULL;
218 Evas_Object *r_button = NULL;
219 Evas_Object *m_button = NULL;
220 Elm_Object_Item *navi_it = NULL;
222 /* navigationbar left buttons */
225 if (lbutton_str && 0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) { /* left 'Back' button should be processed specially */
226 l_button = setting_create_button(navigate_bar, lbutton_str,
227 NAVI_BACK_BUTTON_STYLE,
228 lbutton_click_cb, cb_data);
230 l_button = setting_create_button(navigate_bar, lbutton_str,
231 NAVI_DEF_BUTTON_STYLE,
232 lbutton_click_cb, cb_data);
236 r_button = setting_create_button(navigate_bar, rbutton_str,
237 NAVI_DEF_BUTTON_STYLE,
238 rbutton_click_cb, cb_data);
239 m_button = setting_create_button(navigate_bar, mbutton_str,
240 NAVI_DEF_BUTTON_STYLE,
241 mbutton_click_cb, cb_data);
243 Elm_Object_Item *item = NULL;
245 /* arrange buttons into controlbar*/
246 if (0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) { /* do special handling */
247 /* At then, in function elm_naviframe_item_push, icon of l_button will be unset, */
248 /* Usr need set style again!! */
249 navi_it = elm_naviframe_item_push(navigate_bar, title_str, l_button, NULL, eo_view, NULL); /* add new button */
250 elm_object_style_set(l_button, NAVI_BACK_BUTTON_STYLE); /* take into effect */
252 if (!rbutton_str && !mbutton_str) { /* return directly */
254 evas_object_del(controlbar);
259 if (rbutton_str && mbutton_str) { /* both exist.. */
260 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
261 elm_object_item_part_content_set(item, "object", m_button);
262 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
263 elm_object_item_part_content_set(item, "object", r_button);
264 /* item[2] = elm_controlbar_object_item_append(controlbar, r_button, 1); */
265 } else if (rbutton_str) { /* r_btn exist.. */
266 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
267 elm_object_item_part_content_set(item, "object", r_button);
268 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
269 //elm_object_part_content_set(item, "object", NULL);
270 } else if (mbutton_str) { /* m_btn exist.. */
271 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
272 //elm_object_part_content_set(item, "object", NULL);
273 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
274 elm_object_item_part_content_set(item, "object", m_button);
277 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
284 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
285 elm_object_item_part_content_set(item, "object", l_button);
289 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
290 elm_object_item_part_content_set(item, "object", m_button);
292 /* if controllbar just have one right button, let it occups 1/2. */
293 if (!l_button && !m_button)
295 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
296 //elm_object_part_content_set(item, "object", NULL);
300 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
301 elm_object_item_part_content_set(item, "object", r_button);
304 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
306 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
311 * The general API to create a layout with navigation bar,
312 * which contents any evas container object(@param[eo_view]) as its content
314 * @param[in] eo_view navigation bar's content
315 * @param[out] titleobj title obj of navigation bar
317 * return main layout of UG or App..
319 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 */
320 Evas_Object **navi_bar,
321 Evas_Object **titleobj)
324 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
325 *navi_bar = setting_create_navi_bar(layout);
327 Evas_Object *controlbar = elm_toolbar_add(*navi_bar);
328 setting_retvm_if(controlbar == NULL, NULL, "controlbar == NULL");
329 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
330 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
331 if (titleobj) { /* need output */
332 *titleobj = controlbar;
335 setting_create_navi_bar_buttons(title_str,
336 lbutton_str, rbutton_str, NULL,
337 lbutton_click_cb, rbutton_click_cb,
338 NULL, cb_data, eo_view /*content */ ,
339 *navi_bar, controlbar);
344 * The API to create a layout with navigation bar,
345 * which contents a scroller object as its content
347 * @param[out] scroller navigation bar's content
349 * @return a layout with a special navigation bar and at most 2 buttons
352 Evas_Object *setting_create_layout_navi_bar_scroller(Evas_Object *win_layout,
353 Evas_Object *win_obj,
357 setting_call_back_func
359 setting_call_back_func
362 Evas_Object **scroller,
363 Evas_Object **navi_bar)
366 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
367 *navi_bar = setting_create_navi_bar(layout);
370 Evas_Object *controlbar = elm_toolbar_add(*navi_bar);
371 setting_retvm_if(controlbar == NULL, NULL, "controlbar == NULL");
372 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
373 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
376 /* create scroller as CONTENT */
377 Evas_Object *scrl = NULL;
378 /* Evas_Object *ret = NULL; */
379 if (scroller != NULL) {
380 /* scrl =*scroller = elm_scroller_add(win_layout); */
381 scrl = *scroller = elm_scroller_add(layout);
382 retvm_if(*scroller == NULL, NULL,
383 "Cannot set scroller object as contento of layout");
384 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
385 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
386 ELM_SCROLLER_POLICY_AUTO);
387 evas_object_show(*scroller);
392 setting_create_navi_bar_buttons(title_str,
393 lbutton_str, rbutton_str, NULL,
394 lbutton_click_cb, rbutton_click_cb,
395 NULL, cb_data, scrl /*content */ ,
396 *navi_bar, controlbar);
401 * The API to create a layout with navigation bar ,
402 * which contents a genlist object as its content
404 * @return a layout with a special navigation bar and at most 2 buttons
406 Evas_Object *setting_create_layout_navi_bar_genlist(Evas_Object *win_layout,
407 Evas_Object *win_obj,
411 setting_call_back_func
413 setting_call_back_func
416 Evas_Object **genlist,
417 Evas_Object **navi_bar)
419 /* win_layout -> layout */
420 Evas_Object *layout = setting_create_win_layout(win_layout, win_obj);
422 *navi_bar = setting_create_navi_bar(layout);
425 Evas_Object *controlbar = elm_toolbar_add(*navi_bar);
426 setting_retvm_if(controlbar == NULL, NULL, "controlbar == NULL");
427 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
428 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
430 *genlist = elm_genlist_add(*navi_bar);
431 elm_object_style_set(*genlist, "dialogue");
432 retvm_if(*genlist == NULL, NULL,
433 "Cannot set scroller object as contento of layout");
434 elm_genlist_clear(*genlist); /* first to clear list */
436 setting_create_navi_bar_buttons(title_str,
437 lbutton_str, rbutton_str, NULL,
438 lbutton_click_cb, rbutton_click_cb,
439 NULL, cb_data, *genlist, *navi_bar,
445 Elm_Object_Item *__push_navi_bar_bottom_buttons(char *title_str,
446 char *lbutton_str, char *rbutton_str,
448 setting_call_back_func lbutton_click_cb,
449 setting_call_back_func rbutton_click_cb,
450 setting_call_back_func mbutton_click_cb,
451 void *cb_data, Evas_Object *eo_view,
452 Evas_Object *navigate_bar, Evas_Object **titleobj)
454 Elm_Object_Item *navi_it = NULL;
455 Evas_Object *controlbar = NULL;
457 /* arrange buttons into controlbar*/
458 if (0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) {
459 Evas_Object *l_button = NULL;
460 l_button = setting_create_button(navigate_bar, lbutton_str,
461 NAVI_BACK_BUTTON_STYLE,
462 lbutton_click_cb, cb_data);
464 navi_it = elm_naviframe_item_push(navigate_bar, title_str, l_button, NULL, eo_view, NULL);
465 elm_object_style_set(l_button, NAVI_BACK_BUTTON_STYLE); /* take into effect */
466 if (!rbutton_str && !mbutton_str)
471 controlbar = elm_toolbar_add(navigate_bar);
472 setting_retvm_if(controlbar == NULL, navi_it, "controlbar == NULL");
473 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
474 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
475 if (titleobj) *titleobj = controlbar;
477 if (rbutton_str && mbutton_str) {
478 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
479 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
480 } else if (rbutton_str) {
481 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
482 int len = safeStrLen(rbutton_str);
483 if (len < ONE_THIRD_SCREEN_STR_LEN) {
484 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL), EINA_TRUE);
488 if (len < HALF_SCREEN_STR_LEN)
490 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
492 } else if (mbutton_str) {
493 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
494 elm_object_item_disabled_set(elm_toolbar_item_append(controlbar, NULL, "", NULL, NULL), EINA_TRUE);
495 elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
497 } else { /* no need back button on navi_bar */
498 navi_it = elm_naviframe_item_push(navigate_bar, title_str, NULL, NULL, eo_view, NULL);
499 if (!lbutton_str && !rbutton_str && !mbutton_str) {
503 //remove '<-' button, insteadly using controlbar
504 Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
505 elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
506 evas_object_del(back_btn);
508 controlbar = elm_toolbar_add(navigate_bar);
509 setting_retvm_if(controlbar == NULL, navi_it, "controlbar == NULL");
510 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
511 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
512 if (titleobj) *titleobj = controlbar;
515 elm_toolbar_item_append(controlbar, NULL, lbutton_str, lbutton_click_cb, cb_data);
517 elm_toolbar_item_append(controlbar, NULL, mbutton_str, mbutton_click_cb, cb_data);
519 elm_toolbar_item_append(controlbar, NULL, rbutton_str, rbutton_click_cb, cb_data);
522 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
528 * The general API to push any evas object(@param[eo_view]) to the specialized navi_bar,
529 * which contents at most 3 buttons
532 setting_push_layout_navi_bar(char *title_str,
533 char *lbutton_str, char *rbutton_str,
535 setting_call_back_func lbutton_click_cb,
536 setting_call_back_func rbutton_click_cb,
537 setting_call_back_func mbutton_click_cb,
538 void *cb_data, Evas_Object *eo_view,
539 Evas_Object *navi_bar, Evas_Object **titleobj)
541 #if SUPPORT_BOTTOM_BTNS
542 return __push_navi_bar_bottom_buttons(title_str,
543 lbutton_str, rbutton_str,mbutton_str,
547 cb_data, eo_view, navi_bar, titleobj);
551 Evas_Object *l_button = NULL;
552 Evas_Object *r_button = NULL;
553 Evas_Object *m_button = NULL;
554 Elm_Object_Item *navi_it = NULL;
555 Evas_Object *controlbar = NULL;
558 if (lbutton_str && 0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) { /* left 'Back' button should be processed specially */
559 l_button = setting_create_button(navi_bar, lbutton_str,
560 NAVI_BACK_BUTTON_STYLE,
561 lbutton_click_cb, cb_data);
563 l_button = setting_create_button(navi_bar, lbutton_str,
564 NAVI_DEF_BUTTON_STYLE,
565 lbutton_click_cb, cb_data);
567 r_button = setting_create_button(navi_bar, rbutton_str,
568 NAVI_DEF_BUTTON_STYLE,
569 rbutton_click_cb, cb_data);
570 m_button = setting_create_button(navi_bar, mbutton_str,
571 NAVI_DEF_BUTTON_STYLE,
572 mbutton_click_cb, cb_data);
574 Elm_Object_Item *item = NULL;
576 /* arrange buttons into controlbar*/
577 if (0 == safeStrCmp(lbutton_str, _("IDS_COM_BODY_BACK"))) { /* need back button on navi_bar */
578 navi_it = elm_naviframe_item_push(navi_bar, title_str, l_button, NULL, eo_view, NULL);
579 elm_object_style_set(l_button, NAVI_BACK_BUTTON_STYLE); /* take into effect */
580 if (!rbutton_str && !mbutton_str)
585 controlbar = elm_toolbar_add(navi_bar);
586 setting_retvm_if(controlbar == NULL, NULL, "controlbar == NULL");
587 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
588 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
589 if (titleobj) *titleobj = controlbar;
591 if (rbutton_str && mbutton_str) {
592 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
593 elm_object_item_part_content_set(item, "object", m_button);
594 /* elm_controlbar_object_item_append(controlbar, NULL, 1); */
595 item = elm_toolbar_item_append(controlbar,NULL, NULL, NULL, NULL);
596 elm_object_item_part_content_set(item, "object", r_button);
597 } else if (rbutton_str) {
599 safeStrCmp(rbutton_str, _(KeyStr_INFO))) {
600 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
601 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
602 elm_object_item_part_content_set(item, "object", r_button);
604 int len = safeStrLen(rbutton_str);
605 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
606 elm_object_item_part_content_set(item, "object", r_button);
608 if (len < HALF_SCREEN_STR_LEN)
610 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
611 elm_object_item_part_content_set(item, "object", r_button);
613 if (len < ONE_THIRD_SCREEN_STR_LEN)
615 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
619 } else if (mbutton_str) {
620 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
621 elm_object_item_part_content_set(item, "object", m_button);
622 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
623 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
625 } else { /* no need back button on navi_bar */
626 navi_it = elm_naviframe_item_push(navi_bar, title_str, NULL, NULL, eo_view, NULL);
627 if (!lbutton_str && !rbutton_str && !mbutton_str)
632 //remove '<-' button, insteadly using controlbar
633 Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
634 elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
635 evas_object_del(back_btn);
637 controlbar = elm_toolbar_add(navi_bar);
638 setting_retvm_if(controlbar == NULL, NULL, "controlbar == NULL");
639 elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
640 //elm_object_style_set(controlbar, NAVI_CONTROLBAR_STYLE);
641 if (titleobj) *titleobj = controlbar;
645 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
646 elm_object_item_part_content_set(item, "object", l_button);
650 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
651 elm_object_item_part_content_set(item, "object", m_button);
655 item = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL);
656 elm_object_item_part_content_set(item, "object", r_button);
660 elm_object_item_part_content_set(navi_it, NAVI_CONTROLBAR_PART, controlbar);
666 * The API to push a scroller object(@param[scroller]) to the specialized navi_bar,
667 * which contents at most 2 buttons
671 setting_push_layout_navi_bar_scroller(Evas_Object *win_main, char *title_str,
672 char *lbutton_str, char *rbutton_str,
673 setting_call_back_func lbutton_click_cb,
674 setting_call_back_func rbutton_click_cb,
676 Evas_Object **scroller,
677 Evas_Object *navi_bar)
679 /* create scroller */
680 Evas_Object *scrl = NULL;
681 if (scroller != NULL) {
682 scrl = *scroller = elm_scroller_add(win_main);
683 retm_if(*scroller == NULL,
684 "Cannot set scroller as contento of layout");
685 elm_scroller_bounce_set(*scroller, EINA_FALSE, EINA_TRUE);
686 elm_scroller_policy_set(*scroller, ELM_SCROLLER_POLICY_OFF,
687 ELM_SCROLLER_POLICY_AUTO);
689 evas_object_show(*scroller);
692 setting_push_layout_navi_bar(title_str,
693 lbutton_str, rbutton_str, NULL,
696 NULL, cb_data, scrl, navi_bar, NULL);
700 * @ The API to push a genlist object(@param[genlist]) to the specialized navi_bar,
701 * which contents at most 2 buttons
704 setting_push_layout_navi_bar_genlist(Evas_Object *win_layout,
705 Evas_Object *win_obj, char *title_str,
706 char *lbutton_str, char *rbutton_str,
707 setting_call_back_func lbutton_click_cb,
708 setting_call_back_func rbutton_click_cb,
709 void *cb_data, Evas_Object **genlist,
710 Evas_Object *navi_bar)
712 /* create scroller */
713 Evas_Object *gl = NULL;
714 if (genlist != NULL) {
715 gl = *genlist = elm_genlist_add(win_layout);
716 elm_object_style_set(*genlist, "dialogue");
717 retm_if(*genlist == NULL,
718 "Cannot set scroller object as contento of layout");
719 elm_genlist_clear(gl); /* first to clear list */
722 setting_push_layout_navi_bar(title_str,
723 lbutton_str, rbutton_str, NULL,
726 NULL, cb_data, gl, navi_bar, NULL);
730 * To go to top of list in top view of navibar.
733 void setting_go_to_navibar_list_top(Evas_Object *navibar)
735 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(navibar);
738 Evas_Object *content = elm_object_item_part_content_get(navi_it, "default");
740 Elm_Object_Item *first_item = elm_genlist_first_item_get(content);
743 elm_genlist_item_show(first_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);