#include #include "tsuite.h" typedef struct _Pginfo Pginfo; struct _Pginfo { Evas_Object *win, *pager, *pg1, *pg2, *pg3, *pg4; }; static void my_pager_1(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; elm_pager_content_promote(info->pager, info->pg2); } static void my_pager_2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; elm_pager_content_promote(info->pager, info->pg3); } static void my_pager_3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; elm_pager_content_promote(info->pager, info->pg4); } static void my_pager_4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; elm_pager_content_promote(info->pager, info->pg1); } static void my_pager_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; elm_pager_content_pop(info->pager); } struct style_tuple { const char *label; const char *name; }; static const struct style_tuple styles[] = { { "Default", "default"}, { "Slide", "slide"}, { "Slide Invisible", "slide_invisible"}, { "Fade", "fade"}, { "Fade Translucide", "fade_translucide"}, { "Fade Invisible", "fade_invisible"}, { "Flip", "flip"}, }; static void _style(void *data, Evas_Object *obj, void *event_info __UNUSED__) { Evas_Object *pg = data; elm_object_style_set(pg, styles[elm_radio_value_get(obj)].name); } TEST_START(test_pager) { Evas_Object *bg, *pg, *bx, *lb, *bt; static Pginfo info; elm_win_focus_highlight_enabled_set(win, EINA_TRUE); info.win = win; bg = elm_bg_add(win); elm_win_resize_object_add(win, bg); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bg); pg = elm_pager_add(win); evas_object_size_hint_weight_set(pg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, pg); evas_object_show(pg); info.pager = pg; bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); lb = elm_label_add(win); elm_object_text_set(lb, "This is page 1 in a pager stack.
" "
" "So what is a pager stack? It is a stack
" "of pages that hold widgets in it. The
" "pages can be pushed and popped on and
" "off the stack, activated and otherwise
" "activated if already in the stack
" "(activated means promoted to the top of
" "the stack).
" "
" "The theme may define the animation how
" "show and hide of pages. Select one theme style:"); elm_box_pack_end(bx, lb); evas_object_show(lb); unsigned int i = 0; Evas_Object *rdg = NULL, *rd; for (i = 0; i < (sizeof(styles) / sizeof(struct style_tuple)); i++) { rd = elm_radio_add(win); elm_object_text_set(rd, styles[i].label); elm_radio_state_value_set(rd, i); if (rdg) elm_radio_group_add(rd, rdg); else rdg = rd; evas_object_smart_callback_add(rd, "changed", _style, pg); elm_box_pack_end(bx, rd); evas_object_show(rd); } elm_radio_value_set(rd, 0); bt = elm_button_add(win); elm_object_text_set(bt, "Flip to 2"); evas_object_smart_callback_add(bt, "clicked", my_pager_1, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); bt = elm_button_add(win); elm_object_text_set(bt, "Popme"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); elm_pager_content_push(pg, bx); info.pg1 = bx; bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); lb = elm_label_add(win); elm_object_text_set(lb, "This is page 2 in a pager stack.
" "
" "This is just like the previous page in
" "the pager stack." ); elm_box_pack_end(bx, lb); evas_object_show(lb); bt = elm_button_add(win); elm_object_text_set(bt, "Flip to 3"); evas_object_smart_callback_add(bt, "clicked", my_pager_2, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); bt = elm_button_add(win); elm_object_text_set(bt, "Popme"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); elm_pager_content_push(pg, bx); info.pg2 = bx; bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); lb = elm_label_add(win); elm_object_text_set(lb, "This is page 3 in a pager stack.
" "
" "This is just like the previous page in
" "the pager stack."); elm_box_pack_end(bx, lb); evas_object_show(lb); bt = elm_button_add(win); elm_object_text_set(bt, "Flip to 1"); evas_object_smart_callback_add(bt, "clicked", my_pager_3, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); bt = elm_button_add(win); elm_object_text_set(bt, "Popme"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); elm_pager_content_push(pg, bx); info.pg3 = bx; Evas_Object *ly, *ly2; char buf[4096]; ly = elm_layout_add(win); snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get()); elm_layout_file_set(ly, buf, "test/layout"); evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(ly); ly2 = elm_layout_add(win); snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get()); elm_layout_file_set(ly2, buf, "layout2"); evas_object_size_hint_weight_set(ly2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); //elm_win_resize_object_add(win, ly2); evas_object_show(ly2); bt = elm_button_add(win); elm_object_text_set(bt, "Flip to 1"); evas_object_smart_callback_add(bt, "clicked", my_pager_4, &info); elm_object_part_content_set(ly2, "element1", bt); evas_object_show(bt); bt = elm_button_add(win); elm_object_text_set(bt, "Popme"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info); evas_object_show(bt); elm_object_part_content_set(ly2, "element2", bt); elm_object_part_content_set(ly, "swallow", ly2); evas_object_show(ly); elm_pager_content_push(pg, ly); info.pg4 = ly2; evas_object_show(win); } TEST_END static void my_pager_push(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Pginfo *info = data; Evas_Object *bx, *bt, *lb; static int count = 2; char buf[32]; bx = elm_box_add(info->win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); lb = elm_label_add(info->win); snprintf(buf, sizeof(buf), "This is page %d in the slide pager

", count++); elm_object_text_set(lb, buf); elm_box_pack_end(bx, lb); evas_object_show(lb); bt = elm_button_add(info->win); elm_object_text_set(bt, "Push a new page"); evas_object_smart_callback_add(bt, "clicked", my_pager_push, info); elm_box_pack_end(bx, bt); evas_object_show(bt); bt = elm_button_add(info->win); elm_object_text_set(bt, "Go back (pop)"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, info); elm_box_pack_end(bx, bt); evas_object_show(bt); elm_pager_content_push(info->pager, bx); } TEST_START(test_pager_slide) { Evas_Object *bg, *pg, *bx, *lb, *bt; static Pginfo info; elm_win_focus_highlight_enabled_set(win, EINA_TRUE); info.win = win; bg = elm_bg_add(win); elm_win_resize_object_add(win, bg); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bg); pg = elm_pager_add(win); elm_win_resize_object_add(win, pg); elm_object_style_set(pg, "slide"); evas_object_show(pg); info.pager = pg; bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); lb = elm_label_add(win); elm_object_text_set(lb, "This is page 1 in a slide pager.
" "
" "The slide pager style is useful for browsing
" "a hierarchy of objects, as it makes clear
" "the direction of the browse.
" "This is the 'slide' style, also available
" "a fully transparent style named 'slide_invisble'.
" "
"); elm_box_pack_end(bx, lb); evas_object_show(lb); bt = elm_button_add(win); elm_object_text_set(bt, "Push a new page"); evas_object_smart_callback_add(bt, "clicked", my_pager_push, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); bt = elm_button_add(win); elm_object_text_set(bt, "Go back (pop)"); evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info); elm_box_pack_end(bx, bt); evas_object_show(bt); elm_pager_content_push(pg, bx); evas_object_show(win); } TEST_END