eunue pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=30bd541bf264d369e2a96d27fa3ff5139c360e26

commit 30bd541bf264d369e2a96d27fa3ff5139c360e26
Author: Jaeun Choi <jaeun12.c...@samsung.com>
Date:   Tue Feb 19 18:42:31 2019 +0900

    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,

-- 


Reply via email to