focus: Added test cases for the existing issues/feature enhancement relate to focus

Summary:
Below are the test cases to reproduce the exisiting issues with focus or feature enhancement
         1. Focus cut for the first/last item by scroller.
         2. Focus animation on the last item.
         3. Focus goes out of view point while scrolling.
         4. Focus moves but the area of focus does not change.
         5. No focus highlight on widget items.
         6. No animation on widget item.
         7. No focus movement between widget to widget items.

Reviewers: seoz, woohyun

CC: singh.amitesh

Differential Revision: https://phab.enlightenment.org/D502
This commit is contained in:
nirajkr 2014-02-04 20:29:29 +09:00 committed by Daniel Juyung Seo
parent f7dc81921c
commit b611e2292f
3 changed files with 185 additions and 1 deletions

View File

@ -111,6 +111,7 @@ void test_genlist17(void *data, Evas_Object *obj, void *event_info);
void test_genlist18(void *data, Evas_Object *obj, void *event_info);
void test_genlist19(void *data, Evas_Object *obj, void *event_info);
void test_genlist_focus(void *data, Evas_Object *obj, void *event_info);
void test_genlist_item_focus(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_genlist_del(void *data, Evas_Object *obj, void *event_info);
@ -189,6 +190,7 @@ void test_focus_hide_del(void *data, Evas_Object *obj, void *event_info);
void test_focus_custom_chain(void *data, Evas_Object *obj, void *event_info);
void test_focus_style(void *data, Evas_Object *obj, void *event_info);
void test_focus_part(void *data, Evas_Object *obj, void *event_info);
void test_focus3(void *data, Evas_Object *obj, void *event_info);
void test_flipselector(void *data, Evas_Object *obj, void *event_info);
void test_diskselector(void *data, Evas_Object *obj, void *event_info);
void test_colorselector(void *data, Evas_Object *obj, void *event_info);
@ -641,6 +643,7 @@ add_tests:
ADD_TEST(NULL, "Lists - Genlist", "Genlist Tree and Decorate All Mode", test_genlist18);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Full Widget", test_genlist19);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Focus", test_genlist_focus);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Item Focus", test_genlist_item_focus);
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 - Genlist", "Genlist Del", test_genlist_del);
@ -755,7 +758,8 @@ add_tests:
ADD_TEST(NULL, "Focus", "Focus Custom Chain", test_focus_custom_chain);
ADD_TEST(NULL, "Focus", "Focus Style", test_focus_style);
ADD_TEST(NULL, "Focus", "Focus On Part", test_focus_part);
ADD_TEST(NULL, "Focus", "Focus 3", test_focus3);
//------------------------------//
ADD_TEST(NULL, "Naviframe", "Naviframe", test_naviframe);
ADD_TEST(NULL, "Naviframe", "Naviframe 2", test_naviframe2);

View File

@ -659,3 +659,93 @@ test_focus_hide_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
/**** focus 3 ****/
static Evas_Object *
create_button(Evas_Object *parent, const char *text, Eina_Bool expand)
{
Evas_Object *btn = elm_button_add(parent);
elm_object_text_set(btn, text);
if (expand)
{
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
}
evas_object_show(btn);
return btn;
}
void
test_focus3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *box, *sc, *btn_top, *btn_down, *btn[20], *box_btn, *lb, *fr;
char win_focus_theme[PATH_MAX] = { 0 };
char item_name[PATH_MAX];
int i;
snprintf(win_focus_theme, sizeof(win_focus_theme), "%s/objects/test_focus_custom.edj", elm_app_data_dir_get());
elm_theme_extension_add(NULL, win_focus_theme);
win = elm_win_util_standard_add("focus3", "Focus 3");
elm_win_autodel_set(win, EINA_TRUE);
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
elm_win_focus_highlight_animate_set(win, EINA_TRUE);
elm_win_focus_highlight_style_set(win, "glow");
evas_object_resize(win, 320, 400);
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, box);
evas_object_show(box);
fr = elm_frame_add(box);
elm_object_text_set(fr, "Focus Check Points");
elm_box_pack_end(box, fr);
evas_object_show(fr);
lb = elm_label_add(fr);
elm_object_text_set(lb, "<align=left>This test cases list down the"
" focus related check points for regression test.<br/>"
" 1. Focus cut for the first/last item by scroller<br/>"
" 2. Focus animation on the last item<br/>"
" 3. Focus goes out of view port while scrolling<br/>"
" 4. Sometimes focus moves but the area of focus does not change<br/>"
" e.g if focus is on 'top' and with down key it comes on Item1 <br/>"
" but the area is same as of top <br/>"
" </align>");
elm_object_content_set(fr, lb);
evas_object_show(lb);
btn_top = create_button(box, "top", EINA_FALSE);
elm_box_pack_end(box, btn_top);
sc = elm_scroller_add(box);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, sc);
box_btn = elm_box_add(sc);
evas_object_size_hint_weight_set(box_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(sc, box_btn);
evas_object_show(box_btn);
evas_object_show(sc);
for (i = 0; i < 20; i++)
{
sprintf(item_name, "Item %d", i);
btn[i] = create_button(box_btn, item_name, EINA_TRUE);
elm_box_pack_end(box_btn, btn[i]);
}
btn_down = create_button(box, "down", EINA_FALSE);
evas_object_show(btn_down);
elm_box_pack_end(box, btn_down);
evas_object_show(win);
}

View File

@ -3781,3 +3781,93 @@ test_genlist_del(void *data EINA_UNUSED,
evas_object_resize(win, 320, 500);
evas_object_show(win);
}
void
test_genlist_item_focus(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win, *bx, *bx_horiz, *gl, *btn, *fr, *lb;
int i;
win = elm_win_util_standard_add("genlist-item-focus", "Genlist Item Focus");
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
elm_win_focus_highlight_animate_set(win, EINA_TRUE);
elm_win_autodel_set(win, EINA_TRUE);
bx_horiz = elm_box_add(win);
elm_box_horizontal_set(bx_horiz, EINA_TRUE);
evas_object_size_hint_weight_set(bx_horiz, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx_horiz);
evas_object_show(bx_horiz);
btn = elm_button_add(bx_horiz);
elm_object_text_set(btn, "Left");
elm_box_pack_end(bx_horiz, btn);
evas_object_show(btn);
bx = elm_box_add(bx_horiz);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx_horiz, bx);
evas_object_show(bx);
fr = elm_frame_add(bx);
elm_object_text_set(fr, "Genlist Item Focus");
elm_box_pack_end(bx, fr);
evas_object_show(fr);
lb = elm_label_add(fr);
elm_object_text_set(lb, "<align=left>This test cases list down the"
" focus check points related to genlist items.<br/>"
" 1. No focus highlight on widget items<br/>"
" 2. No animation on widget item<br/>"
" 3. No focus movement between widget to widget items<br/>"
" </align>");
elm_object_content_set(fr, lb);
evas_object_show(lb);
btn = elm_button_add(bx);
elm_object_text_set(btn, "Up");
elm_box_pack_end(bx, btn);
evas_object_show(btn);
gl = elm_genlist_add(bx);
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);
elm_object_focus_set(gl, EINA_TRUE);
btn = elm_button_add(bx);
elm_object_text_set(btn, "Down");
elm_box_pack_end(bx, btn);
evas_object_show(btn);
btn = elm_button_add(bx_horiz);
elm_object_text_set(btn, "Right");
elm_box_pack_end(bx_horiz, btn);
evas_object_show(btn);
itc1 = elm_genlist_item_class_new();
itc1->item_style = "default";
itc1->func.text_get = gl_text_get;
itc1->func.content_get = gl_content_get;
itc1->func.state_get = gl_state_get;
itc1->func.del = NULL;
for (i = 0; i < 50; i++)
{
elm_genlist_item_append(gl, itc1,
(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);
evas_object_resize(win, 320, 450);
evas_object_show(win);
}