efl/src/tests/elementary/elm_test_widget_focus.c

217 lines
6.1 KiB
C

#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#include <Elementary.h>
#include "elm_suite.h"
typedef struct _Simple_Test_Widget
{
Evas_Object* (*constructor)(Evas_Object *win);
const char *name;
} Simple_Test_Widget;
static Evas_Object*
_custom_clock(Evas_Object *win)
{
Evas_Object *o = elm_clock_add(win);
elm_clock_edit_set(o, EINA_TRUE);
return o;
}
static void
_realized(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
static int i = 0;
i++;
//we have two items - each of them are getting realized unrealized and again realized.
if (i == 2)
ecore_main_loop_quit();
}
static Evas_Object*
_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part EINA_UNUSED)
{
return elm_button_add(obj);
}
static Evas_Object*
_custom_gengrid(Evas_Object *win)
{
Evas_Object *o;
Elm_Object_Item *it;
Elm_Gengrid_Item_Class *itc;
o = elm_gengrid_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
itc = elm_gengrid_item_class_new();
itc->func.content_get = _content_get;
it = elm_gengrid_item_append(o, itc, NULL, NULL, NULL);
evas_object_smart_callback_add(o, "realized", _realized, it);
evas_object_size_hint_min_set(o, 200, 200);
elm_object_item_focus_set(it, EINA_TRUE);
return o;
}
static Evas_Object*
_custom_genlist(Evas_Object *win)
{
Evas_Object *o;
Elm_Object_Item *it;
Elm_Genlist_Item_Class *itc;
o = elm_genlist_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_genlist_mode_set(o, ELM_LIST_COMPRESS);
itc = elm_genlist_item_class_new();
itc->func.content_get = _content_get;
it = elm_genlist_item_append(o, itc, NULL, NULL, 0, NULL, NULL);
evas_object_smart_callback_add(o, "realized", _realized, it);
evas_object_size_hint_min_set(o, 200, 200);
elm_object_item_focus_set(it, EINA_TRUE);
return o;
}
static Evas_Object*
_custom_list(Evas_Object *win)
{
Evas_Object *o = elm_list_add(win);
elm_list_item_append(o, "test", NULL, NULL, NULL, NULL);
return o;
}
static Evas_Object*
_custom_progressbar(Evas_Object *win)
{
Evas_Object *o = elm_progressbar_add(win);
elm_object_focus_allow_set(o, EINA_TRUE);
return o;
}
static Evas_Object*
_custom_colorselector_add(Evas_Object *win)
{
Evas_Object *o = elm_colorselector_add(win);
Elm_Object_Item *item = elm_colorselector_palette_color_add(o, 0, 0, 0, 255);
elm_colorselector_palette_color_add(o, 255, 255, 255, 255);
elm_colorselector_palette_item_selected_set(item, EINA_TRUE);
return o;
}
static const Simple_Test_Widget simple_widgets[] = {
{elm_button_add, "button"},
{elm_check_add, "check"},
{elm_radio_add, "radio"},
{elm_diskselector_add, "diskselector"},
{elm_entry_add, "entry"},
{elm_flipselector_add, "flipselector"},
// {elm_video_add, "video"},
{elm_spinner_add, "spinner"},
{elm_multibuttonentry_add, "mbe"},
{elm_fileselector_add, "fileselector"},
{elm_fileselector_button_add, "fileselector_button"},
{elm_fileselector_entry_add, "fileselector_entry"},
{_custom_clock, "clock"},
{elm_toolbar_add, "toolbar"},
{elm_gengrid_add, "gengrid1"},
{elm_genlist_add, "genlist1"},
{_custom_gengrid, "gengrid2"},
{_custom_genlist, "genlist2"},
{elm_list_add, "list1"},
{_custom_list, "list2"},
{elm_scroller_add, "scroller"},
{elm_photocam_add, "photocam"},
{_custom_progressbar, "progressbar"},
{elm_web_add, "web"},
{elm_colorselector_add, "colorselector"},
{_custom_colorselector_add, "colorselector2"},
{elm_slideshow_add, "slideshow"},
{elm_map_add, "map"},
{NULL, NULL},
};
static void
_eventing_test(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Eina_Bool *val = data;
*val = EINA_TRUE;
}
EFL_START_TEST(elm_test_widget_focus_simple_widget)
{
Evas_Object *win, *box, *resettor, *o;
Eina_Hash *map;
map = eina_hash_string_small_new(NULL);
win = win_add_focused(NULL, "focus test", ELM_WIN_BASIC);
box = elm_box_add(win);
elm_win_resize_object_add(win, box);
evas_object_show(box);
resettor = o = elm_button_add(win);
elm_box_pack_end(box, o);
evas_object_show(o);
elm_object_focus_set(o, EINA_TRUE);
for (int i = 0; simple_widgets[i].name; ++i)
{
o = simple_widgets[i].constructor(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, o);
evas_object_show(o);
eina_hash_add(map, &simple_widgets[i].name, o);
}
evas_object_resize(win, 200, 200);
evas_object_show(win);
get_me_to_those_events(win);
for (int i = 0; simple_widgets[i].name; ++i)
{
Eina_Bool flag_focused = EINA_FALSE, flag_unfocused = EINA_FALSE;
printf("Testing %s\n", simple_widgets[i].name);
o = eina_hash_find(map, &simple_widgets[i].name);
evas_object_smart_callback_add(o, "focused", _eventing_test, &flag_focused);
evas_object_smart_callback_add(o, "unfocused", _eventing_test, &flag_unfocused);
elm_object_focus_set(o, EINA_TRUE);
ck_assert_int_eq(flag_focused, EINA_TRUE);
ck_assert_int_eq(flag_unfocused, EINA_FALSE);
ck_assert_int_eq(elm_object_focus_get(o), EINA_TRUE);
ck_assert_int_eq(elm_object_focus_get(resettor), EINA_FALSE);
elm_object_focus_set(resettor, EINA_TRUE);
ck_assert_int_eq(flag_focused, EINA_TRUE);
ck_assert_int_eq(flag_unfocused, EINA_TRUE);
ck_assert_int_eq(elm_object_focus_get(resettor), EINA_TRUE);
ck_assert_int_eq(elm_object_focus_get(o), EINA_FALSE);
evas_object_smart_callback_del_full(o, "focused", _eventing_test, &flag_focused);
evas_object_smart_callback_del_full(o, "unfocused", _eventing_test, &flag_unfocused);
}
eina_hash_free(map);
}
EFL_END_TEST
void elm_test_widget_focus(TCase *tc)
{
tcase_add_test(tc, elm_test_widget_focus_simple_widget);
}