efl
216 строк · 6.1 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4
5#include <Elementary.h>6#include "elm_suite.h"7
8typedef struct _Simple_Test_Widget9{
10Evas_Object* (*constructor)(Evas_Object *win);11const char *name;12} Simple_Test_Widget;13
14static Evas_Object*15_custom_clock(Evas_Object *win)16{
17Evas_Object *o = elm_clock_add(win);18elm_clock_edit_set(o, EINA_TRUE);19return o;20}
21
22static void23_realized(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)24{
25static int i = 0;26
27i++;28//we have two items - each of them are getting realized unrealized and again realized.29if (i == 2)30ecore_main_loop_quit();31}
32
33static Evas_Object*34_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part EINA_UNUSED)35{
36return elm_button_add(obj);37}
38
39static Evas_Object*40_custom_gengrid(Evas_Object *win)41{
42Evas_Object *o;43Elm_Object_Item *it;44Elm_Gengrid_Item_Class *itc;45
46o = elm_gengrid_add(win);47evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);48evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);49
50itc = elm_gengrid_item_class_new();51itc->func.content_get = _content_get;52
53it = elm_gengrid_item_append(o, itc, NULL, NULL, NULL);54evas_object_smart_callback_add(o, "realized", _realized, it);55evas_object_size_hint_min_set(o, 200, 200);56
57elm_object_item_focus_set(it, EINA_TRUE);58return o;59}
60
61static Evas_Object*62_custom_genlist(Evas_Object *win)63{
64Evas_Object *o;65Elm_Object_Item *it;66Elm_Genlist_Item_Class *itc;67
68o = elm_genlist_add(win);69evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);70evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);71elm_genlist_mode_set(o, ELM_LIST_COMPRESS);72
73itc = elm_genlist_item_class_new();74itc->func.content_get = _content_get;75
76it = elm_genlist_item_append(o, itc, NULL, NULL, 0, NULL, NULL);77evas_object_smart_callback_add(o, "realized", _realized, it);78evas_object_size_hint_min_set(o, 200, 200);79
80elm_object_item_focus_set(it, EINA_TRUE);81return o;82}
83
84static Evas_Object*85_custom_list(Evas_Object *win)86{
87Evas_Object *o = elm_list_add(win);88elm_list_item_append(o, "test", NULL, NULL, NULL, NULL);89return o;90}
91
92static Evas_Object*93_custom_progressbar(Evas_Object *win)94{
95Evas_Object *o = elm_progressbar_add(win);96elm_object_focus_allow_set(o, EINA_TRUE);97return o;98}
99
100static Evas_Object*101_custom_colorselector_add(Evas_Object *win)102{
103Evas_Object *o = elm_colorselector_add(win);104Elm_Object_Item *item = elm_colorselector_palette_color_add(o, 0, 0, 0, 255);105elm_colorselector_palette_color_add(o, 255, 255, 255, 255);106elm_colorselector_palette_item_selected_set(item, EINA_TRUE);107return o;108}
109
110static const Simple_Test_Widget simple_widgets[] = {111{elm_button_add, "button"},112{elm_check_add, "check"},113{elm_radio_add, "radio"},114{elm_diskselector_add, "diskselector"},115{elm_entry_add, "entry"},116{elm_flipselector_add, "flipselector"},117// {elm_video_add, "video"},
118{elm_spinner_add, "spinner"},119{elm_multibuttonentry_add, "mbe"},120{elm_fileselector_add, "fileselector"},121{elm_fileselector_button_add, "fileselector_button"},122{elm_fileselector_entry_add, "fileselector_entry"},123{_custom_clock, "clock"},124{elm_toolbar_add, "toolbar"},125{elm_gengrid_add, "gengrid1"},126{elm_genlist_add, "genlist1"},127{_custom_gengrid, "gengrid2"},128{_custom_genlist, "genlist2"},129{elm_list_add, "list1"},130{_custom_list, "list2"},131{elm_scroller_add, "scroller"},132{elm_photocam_add, "photocam"},133{_custom_progressbar, "progressbar"},134{elm_web_add, "web"},135{elm_colorselector_add, "colorselector"},136{_custom_colorselector_add, "colorselector2"},137{elm_slideshow_add, "slideshow"},138// {elm_map_add, "map"},
139{NULL, NULL},140};141
142static void143_eventing_test(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)144{
145Eina_Bool *val = data;146
147*val = EINA_TRUE;148}
149
150EFL_START_TEST(elm_test_widget_focus_simple_widget)151{
152Evas_Object *win, *box, *resettor, *o;153Eina_Hash *map;154
155map = eina_hash_string_small_new(NULL);156win = win_add_focused(NULL, "focus test", ELM_WIN_BASIC);157
158box = elm_box_add(win);159elm_win_resize_object_add(win, box);160evas_object_show(box);161
162resettor = o = elm_button_add(win);163elm_box_pack_end(box, o);164evas_object_show(o);165elm_object_focus_set(o, EINA_TRUE);166
167for (int i = 0; simple_widgets[i].name; ++i)168{169o = simple_widgets[i].constructor(win);170evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);171evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);172elm_box_pack_end(box, o);173evas_object_show(o);174
175eina_hash_add(map, &simple_widgets[i].name, o);176}177evas_object_resize(win, 200, 200);178
179evas_object_show(win);180
181get_me_to_those_events(win);182
183for (int i = 0; simple_widgets[i].name; ++i)184{185Eina_Bool flag_focused = EINA_FALSE, flag_unfocused = EINA_FALSE;186
187printf("Testing %s\n", simple_widgets[i].name);188
189o = eina_hash_find(map, &simple_widgets[i].name);190evas_object_smart_callback_add(o, "focused", _eventing_test, &flag_focused);191evas_object_smart_callback_add(o, "unfocused", _eventing_test, &flag_unfocused);192elm_object_focus_set(o, EINA_TRUE);193
194ck_assert_int_eq(flag_focused, EINA_TRUE);195ck_assert_int_eq(flag_unfocused, EINA_FALSE);196ck_assert_int_eq(elm_object_focus_get(o), EINA_TRUE);197ck_assert_int_eq(elm_object_focus_get(resettor), EINA_FALSE);198
199elm_object_focus_set(resettor, EINA_TRUE);200ck_assert_int_eq(flag_focused, EINA_TRUE);201ck_assert_int_eq(flag_unfocused, EINA_TRUE);202ck_assert_int_eq(elm_object_focus_get(resettor), EINA_TRUE);203ck_assert_int_eq(elm_object_focus_get(o), EINA_FALSE);204evas_object_smart_callback_del_full(o, "focused", _eventing_test, &flag_focused);205evas_object_smart_callback_del_full(o, "unfocused", _eventing_test, &flag_unfocused);206}207
208eina_hash_free(map);209}
210EFL_END_TEST
211
212
213void elm_test_widget_focus(TCase *tc)214{
215tcase_add_test(tc, elm_test_widget_focus_simple_widget);216}
217