From 30bd541bf264d369e2a96d27fa3ff5139c360e26 Mon Sep 17 00:00:00 2001 From: Jaeun Choi Date: Tue, 19 Feb 2019 18:42:31 +0900 Subject: [PATCH] test/efl_ui_pager_scroll: fix demo - use radio than check for loop mode - use unpack_at function than unpack function - add CLEAR option --- src/bin/elementary/test_ui_pager_scroll.c | 72 ++++++++++++++++++----- 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/src/bin/elementary/test_ui_pager_scroll.c b/src/bin/elementary/test_ui_pager_scroll.c index f062a9d802..7fc6645e45 100644 --- a/src/bin/elementary/test_ui_pager_scroll.c +++ b/src/bin/elementary/test_ui_pager_scroll.c @@ -36,7 +36,8 @@ typedef enum _Pack_Type { PACK_BEFORE, PACK_AFTER, PACK_AT, - UNPACK_AT + UNPACK_AT, + CLEAR } Pack_Type; typedef struct _Params { @@ -240,7 +241,7 @@ static void pack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) Eo *page, *curr_page; int index, cnt; - if (param->type != UNPACK_AT) { + if ((param->type != UNPACK_AT) && (param->type != CLEAR)) { index = efl_content_count(pager); switch (index % 3) { @@ -282,10 +283,12 @@ static void pack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) break; case UNPACK_AT: index = efl_ui_range_value_get(param->unpack_sp); - page = efl_pack_content_get(pager, index); - efl_pack_unpack(pager, page); + page = efl_pack_unpack_at(pager, index); efl_del(page); break; + case CLEAR: + efl_pack_clear(pager); + break; } cnt = efl_content_count(pager); @@ -353,13 +356,11 @@ static void next_block_check_cb(void *data, const Efl_Event *ev) efl_ui_pager_scroll_block_set(pager, prev, next); } -static void loop_check_cb(void *data, const Efl_Event *ev) +static void loop_radio_cb(void *data, const Efl_Event *ev) { Eo *pager = data; int state = efl_ui_nstate_value_get(ev->object); - //FIXME use other widget (i.e. radio) than check - // since loop might not be enabled according to the number of items efl_ui_pager_loop_mode_set(pager, state); } @@ -701,6 +702,24 @@ static void pack_cb(void *data, efl_pack_end(box, in_box2); efl_pack_end(in_box2, btn); efl_pack_end(in_box2, sp2); + + // Clear + pack_param = calloc(1, sizeof(Pack_Params)); + if (!pack_param) return; + + pack_param->pager = pager; + pack_param->pack_sp = sp1; + pack_param->unpack_sp = sp2; + pack_param->unpack_btn = btn; + pack_param->type = CLEAR; + + efl_add(EFL_UI_BUTTON_CLASS, box, + efl_text_set(efl_added, "Clear"), + efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, + pack_btn_cb, pack_param), + efl_event_callback_add(efl_added, EFL_EVENT_DEL, + pack_btn_del_cb, pack_param), + efl_pack_end(box, efl_added)); } static void current_page_cb(void *data, @@ -798,7 +817,8 @@ static void loop_cb(void *data EINA_UNUSED, Params *params = (Params *)data; Evas_Object *navi = params->navi; Eo *pager = params->pager; - Eo *btn, *box; + Eo *btn, *box, *rd; + Efl_Ui_Pager_Loop loop; btn = efl_add(EFL_UI_BUTTON_CLASS, navi, efl_text_set(efl_added, "Back"), @@ -810,13 +830,35 @@ static void loop_cb(void *data EINA_UNUSED, elm_naviframe_item_push(navi, "Loop", btn, NULL, efl_added, NULL)); - efl_add(EFL_UI_CHECK_CLASS, box, - efl_ui_widget_style_set(efl_added, "toggle"), - efl_text_set(efl_added, "Loop"), - efl_ui_nstate_value_set(efl_added, efl_ui_pager_loop_mode_get(pager)), - efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED, - loop_check_cb, pager), - efl_pack_end(box, efl_added)); + rd = efl_add(EFL_UI_RADIO_CLASS, box, + efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_DISABLED), + efl_text_set(efl_added, "Disabled"), + efl_gfx_hint_weight_set(efl_added, 1, 0), + efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, + loop_radio_cb, pager), + efl_pack(box, efl_added)); + + rd = efl_add(EFL_UI_RADIO_CLASS, box, + efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_ENABLED), + efl_ui_radio_group_add(efl_added, rd), + efl_text_set(efl_added, "Enabled"), + efl_gfx_hint_weight_set(efl_added, 1, 0), + efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, + loop_radio_cb, pager), + efl_pack(box, efl_added)); + + loop = efl_ui_pager_loop_mode_get(pager); + + efl_ui_nstate_value_set(rd, loop); + + if (loop == EFL_UI_PAGER_LOOP_DISABLED) + { + Eina_Bool ret = efl_ui_pager_loop_mode_set(pager, EFL_UI_PAGER_LOOP_ENABLED); + if (!ret) + elm_object_disabled_set(rd, EINA_TRUE); + else + efl_ui_pager_loop_mode_set(pager, EFL_UI_PAGER_LOOP_DISABLED); + } } static void indicator_cb(void *data EINA_UNUSED,