efl

Форк
0
/
elm_test_widget_focus.c 
216 строк · 6.1 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4

5
#include <Elementary.h>
6
#include "elm_suite.h"
7

8
typedef struct _Simple_Test_Widget
9
{
10
   Evas_Object* (*constructor)(Evas_Object *win);
11
   const char *name;
12
} Simple_Test_Widget;
13

14
static Evas_Object*
15
_custom_clock(Evas_Object *win)
16
{
17
   Evas_Object *o = elm_clock_add(win);
18
   elm_clock_edit_set(o, EINA_TRUE);
19
   return o;
20
}
21

22
static void
23
_realized(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
24
{
25
   static int i = 0;
26

27
   i++;
28
   //we have two items - each of them are getting realized unrealized and again realized.
29
   if (i == 2)
30
     ecore_main_loop_quit();
31
}
32

33
static Evas_Object*
34
_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part EINA_UNUSED)
35
{
36
   return elm_button_add(obj);
37
}
38

39
static Evas_Object*
40
_custom_gengrid(Evas_Object *win)
41
{
42
   Evas_Object *o;
43
   Elm_Object_Item *it;
44
   Elm_Gengrid_Item_Class *itc;
45

46
   o = elm_gengrid_add(win);
47
   evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
48
   evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
49

50
   itc = elm_gengrid_item_class_new();
51
   itc->func.content_get = _content_get;
52

53
   it = elm_gengrid_item_append(o, itc, NULL, NULL, NULL);
54
   evas_object_smart_callback_add(o, "realized", _realized, it);
55
   evas_object_size_hint_min_set(o, 200, 200);
56

57
   elm_object_item_focus_set(it, EINA_TRUE);
58
   return o;
59
}
60

61
static Evas_Object*
62
_custom_genlist(Evas_Object *win)
63
{
64
   Evas_Object *o;
65
   Elm_Object_Item *it;
66
   Elm_Genlist_Item_Class *itc;
67

68
   o = elm_genlist_add(win);
69
   evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
70
   evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
71
   elm_genlist_mode_set(o, ELM_LIST_COMPRESS);
72

73
   itc = elm_genlist_item_class_new();
74
   itc->func.content_get = _content_get;
75

76
   it = elm_genlist_item_append(o, itc, NULL, NULL, 0, NULL, NULL);
77
   evas_object_smart_callback_add(o, "realized", _realized, it);
78
   evas_object_size_hint_min_set(o, 200, 200);
79

80
   elm_object_item_focus_set(it, EINA_TRUE);
81
   return o;
82
}
83

84
static Evas_Object*
85
_custom_list(Evas_Object *win)
86
{
87
   Evas_Object *o = elm_list_add(win);
88
   elm_list_item_append(o, "test", NULL, NULL, NULL, NULL);
89
   return o;
90
}
91

92
static Evas_Object*
93
_custom_progressbar(Evas_Object *win)
94
{
95
   Evas_Object *o = elm_progressbar_add(win);
96
   elm_object_focus_allow_set(o, EINA_TRUE);
97
   return o;
98
}
99

100
static Evas_Object*
101
_custom_colorselector_add(Evas_Object *win)
102
{
103
   Evas_Object *o = elm_colorselector_add(win);
104
   Elm_Object_Item *item = elm_colorselector_palette_color_add(o, 0, 0, 0, 255);
105
   elm_colorselector_palette_color_add(o, 255, 255, 255, 255);
106
   elm_colorselector_palette_item_selected_set(item, EINA_TRUE);
107
   return o;
108
}
109

110
static 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

142
static void
143
_eventing_test(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
144
{
145
   Eina_Bool *val = data;
146

147
   *val = EINA_TRUE;
148
}
149

150
EFL_START_TEST(elm_test_widget_focus_simple_widget)
151
{
152
   Evas_Object *win, *box, *resettor, *o;
153
   Eina_Hash *map;
154

155
   map = eina_hash_string_small_new(NULL);
156
   win = win_add_focused(NULL, "focus test", ELM_WIN_BASIC);
157

158
   box = elm_box_add(win);
159
   elm_win_resize_object_add(win, box);
160
   evas_object_show(box);
161

162
   resettor = o = elm_button_add(win);
163
   elm_box_pack_end(box, o);
164
   evas_object_show(o);
165
   elm_object_focus_set(o, EINA_TRUE);
166

167
   for (int i = 0; simple_widgets[i].name; ++i)
168
     {
169
        o = simple_widgets[i].constructor(win);
170
        evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
171
        evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
172
        elm_box_pack_end(box, o);
173
        evas_object_show(o);
174

175
        eina_hash_add(map, &simple_widgets[i].name, o);
176
      }
177
   evas_object_resize(win, 200, 200);
178

179
   evas_object_show(win);
180

181
   get_me_to_those_events(win);
182

183
   for (int i = 0; simple_widgets[i].name; ++i)
184
      {
185
         Eina_Bool flag_focused = EINA_FALSE, flag_unfocused = EINA_FALSE;
186

187
         printf("Testing %s\n", simple_widgets[i].name);
188

189
         o = eina_hash_find(map, &simple_widgets[i].name);
190
         evas_object_smart_callback_add(o, "focused", _eventing_test, &flag_focused);
191
         evas_object_smart_callback_add(o, "unfocused", _eventing_test, &flag_unfocused);
192
         elm_object_focus_set(o, EINA_TRUE);
193

194
         ck_assert_int_eq(flag_focused, EINA_TRUE);
195
         ck_assert_int_eq(flag_unfocused, EINA_FALSE);
196
         ck_assert_int_eq(elm_object_focus_get(o), EINA_TRUE);
197
         ck_assert_int_eq(elm_object_focus_get(resettor), EINA_FALSE);
198

199
         elm_object_focus_set(resettor, EINA_TRUE);
200
         ck_assert_int_eq(flag_focused, EINA_TRUE);
201
         ck_assert_int_eq(flag_unfocused, EINA_TRUE);
202
         ck_assert_int_eq(elm_object_focus_get(resettor), EINA_TRUE);
203
         ck_assert_int_eq(elm_object_focus_get(o), EINA_FALSE);
204
         evas_object_smart_callback_del_full(o, "focused", _eventing_test, &flag_focused);
205
         evas_object_smart_callback_del_full(o, "unfocused", _eventing_test, &flag_unfocused);
206
      }
207

208
   eina_hash_free(map);
209
}
210
EFL_END_TEST
211

212

213
void elm_test_widget_focus(TCase *tc)
214
{
215
   tcase_add_test(tc, elm_test_widget_focus_simple_widget);
216
}
217

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.