forked from enlightenment/efl
test_genlist.c: Added genlist multi select example.
This commit is contained in:
parent
2851f6b6e3
commit
e8181761b3
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue