seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=73e46ddb7ccb1966017185233f0f999bbdb10f68

commit 73e46ddb7ccb1966017185233f0f999bbdb10f68
Author: Daniel Juyung Seo <seojuyu...@gmail.com>
Date:   Wed Nov 6 13:11:23 2013 +0900

    test_genlist.c: Added genlist multi select example.
---
 src/bin/test.c         |   8 ++++
 src/bin/test_genlist.c | 128 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 136 insertions(+)

diff --git a/src/bin/test.c b/src/bin/test.c
index 5ba7d96..e7de590 100755
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -110,6 +110,7 @@ void test_genlist18(void *data, Evas_Object *obj, void 
*event_info);
 void test_genlist19(void *data, Evas_Object *obj, void *event_info);
 void test_genlist20(void *data, Evas_Object *obj, void *event_info);
 void test_genlist_item_styles(void *data, Evas_Object *obj, void *event_info);
+void test_genlist_multi_select(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer2(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer3(void *data, Evas_Object *obj, void *event_info);
@@ -635,6 +636,9 @@ add_tests:
    ADD_TEST(NULL, "Lists - List", "List Focus Horizontal", test_list9);
    ADD_TEST(NULL, "Lists - List", "List Separator", test_list_separator);
    ADD_TEST(NULL, "Lists - List", "List Multi Select", test_list_multi_select);
+
+   //------------------------------//
+
    ADD_TEST(NULL, "Lists - Genlist", "Genlist", test_genlist);
    ADD_TEST(NULL, "Lists - Genlist", "Genlist 2", test_genlist2);
    ADD_TEST(NULL, "Lists - Genlist", "Genlist 3", test_genlist3);
@@ -659,6 +663,10 @@ add_tests:
    ADD_TEST(NULL, "Lists - Genlist", "Genlist Full Widget", test_genlist19);
    ADD_TEST(NULL, "Lists - Genlist", "Genlist Focus", test_genlist20);
    ADD_TEST(NULL, "Lists - Genlist", "Genlist Item Styles", 
test_genlist_item_styles);
+   ADD_TEST(NULL, "Lists - Genlist", "Genlist Multi Select", 
test_genlist_multi_select);
+
+   //------------------------------//
+
    ADD_TEST(NULL, "Lists - Gengrid", "GenGrid", test_gengrid);
    ADD_TEST(NULL, "Lists - Gengrid", "GenGrid 2", test_gengrid2);
    ADD_TEST(NULL, "Lists - Gengrid", "GenGrid Group", test_gengrid3);
diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index 7ec1849..b62bfb6 100644
--- a/src/bin/test_genlist.c
+++ b/src/bin/test_genlist.c
@@ -3502,3 +3502,131 @@ test_genlist_item_styles(void *data EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED,
    evas_object_data_set(list, "genlist", gl);
 }
 
+/***********/
+
+typedef struct _Genlist_Multi_Data Genlist_Multi_Data;
+struct _Genlist_Multi_Data
+{
+   Evas_Object *gl;
+   Evas_Object *rd1;
+   Evas_Object *rd2;
+};
+
+static void
+_multi_select_changed_cb(void *data, Evas_Object *obj,
+                         void *event_info EINA_UNUSED)
+{
+   Eina_Bool multi = elm_check_state_get(obj);
+   Genlist_Multi_Data *gd = data;
+   if (!gd) return;
+
+   elm_genlist_multi_select_set(gd->gl, multi);
+   elm_object_disabled_set(gd->rd1, !multi);
+   elm_object_disabled_set(gd->rd2, !multi);
+}
+
+static void
+_multi_select_mode_changed_cb(void *data, Evas_Object *obj,
+                              void *event_info EINA_UNUSED)
+{
+   elm_genlist_multi_select_mode_set(data, elm_radio_value_get(obj));
+}
+
+static void
+_multi_select_frame_create(Evas_Object *bx, Genlist_Multi_Data *gd)
+{
+   Evas_Object *fr, *bx2, *bx3, *tg, *rd, *rdg;
+   if (!gd) return;
+
+   fr = elm_frame_add(bx);
+   evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);
+   elm_object_text_set(fr, "Multi Select Option");
+   elm_box_pack_end(bx, fr);
+   evas_object_show(fr);
+
+   bx2 = elm_box_add(fr);
+   elm_object_content_set(fr, bx2);
+   evas_object_show(bx2);
+
+   tg = elm_check_add(bx2);
+   elm_object_style_set(tg, "toggle");
+   elm_object_text_set(tg, "Multi Select Mode");
+   elm_box_pack_end(bx2, tg);
+   evas_object_show(tg);
+
+   bx3 = elm_box_add(bx2);
+   elm_box_horizontal_set(bx3, EINA_TRUE);
+   elm_box_pack_end(bx2, bx3);
+   evas_object_show(bx3);
+
+   gd->rd1 = rdg = rd = elm_radio_add(bx3);
+   elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT);
+   elm_object_text_set(rd, "Default Mode");
+   elm_box_pack_end(bx3, rd);
+   evas_object_show(rd);
+   elm_object_disabled_set(rd, EINA_TRUE);
+   evas_object_smart_callback_add(rd, "changed",
+                                  _multi_select_mode_changed_cb, gd->gl);
+
+   gd->rd2 = rd = elm_radio_add(bx3);
+   elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL);
+   elm_radio_group_add(rd, rdg);
+   elm_object_text_set(rd, "With Control Mode");
+   elm_box_pack_end(bx3, rd);
+   evas_object_show(rd);
+   elm_object_disabled_set(rd, EINA_TRUE);
+   evas_object_smart_callback_add(rd, "changed",
+                                  _multi_select_mode_changed_cb, gd->gl);
+
+   evas_object_smart_callback_add(tg, "changed",
+                                  _multi_select_changed_cb, gd);
+}
+
+void
+test_genlist_multi_select(void *data EINA_UNUSED,
+                          Evas_Object *obj EINA_UNUSED,
+                          void *event_info EINA_UNUSED)
+{
+   Evas_Object *win, *gl, *bx;
+   Genlist_Multi_Data *gd = calloc(1, sizeof(Genlist_Multi_Data));
+   Elm_Genlist_Item_Class *itc = NULL;
+   int i = 0;
+
+   win = elm_win_util_standard_add("genlist-multi-select", "Genlist Multi 
Select");
+   elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_resize(win, 320, 500);
+   evas_object_show(win);
+   evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, gd);
+
+   bx = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, bx);
+   evas_object_show(bx);
+
+   gd->gl = gl = elm_genlist_add(bx);
+   _multi_select_frame_create(bx, gd);
+
+   evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx, gl);
+   evas_object_show(gl);
+
+   itc = elm_genlist_item_class_new();
+   itc->item_style     = "default";
+   itc->func.text_get = gl_text_get;
+   itc->func.content_get  = gl_content_get;
+   itc->func.state_get = gl_state_get;
+   itc->func.del       = NULL;
+
+   for (i = 0; i < 100; i++)
+     {
+        elm_genlist_item_append(gl, itc,
+                                (void *)(uintptr_t)i/* item data */,
+                                NULL/* parent */,
+                                ELM_GENLIST_ITEM_NONE,
+                                gl_sel/* func */,
+                                (void *)(uintptr_t)(i * 10)/* func data */);
+     }
+   elm_genlist_item_class_free(itc1);
+}

-- 


Reply via email to