Merge "[Password]: New design based changes, a new style removed password mode contro...
[framework/uifw/elementary.git] / src / bin / test_cursor.c
1 #include <Elementary.h>
2 #include <Elementary_Cursor.h>
3 #ifdef HAVE_CONFIG_H
4 # include "elementary_config.h"
5 #endif
6 #ifndef ELM_LIB_QUICKLAUNCH
7
8 typedef struct _Testitem
9 {
10    Elm_Gengrid_Item *item;
11    const char *path;
12    int mode;
13    int onoff;
14 } Testitem;
15
16 static Elm_Gengrid_Item_Class gic;
17
18 char *
19 grd_lbl_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
20 {
21    const Testitem *ti = data;
22    char buf[256];
23    snprintf(buf, sizeof(buf), "Photo %s", ti->path);
24    return strdup(buf);
25 }
26
27 Evas_Object *
28 grd_icon_get(void *data, Evas_Object *obj, const char *part)
29 {
30    const Testitem *ti = data;
31    if (!strcmp(part, "elm.swallow.icon"))
32      {
33         Evas_Object *icon = elm_bg_add(obj);
34         elm_bg_file_set(icon, ti->path, NULL);
35         evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL,
36                                          1, 1);
37         evas_object_show(icon);
38         return icon;
39      }
40    return NULL;
41 }
42
43 static Elm_Genlist_Item_Class itct;
44
45 static void
46 glt_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
47 {
48    Elm_Genlist_Item *it = event_info;
49    Evas_Object *gl = elm_genlist_item_genlist_get(it);
50    int val = (int)(long)elm_genlist_item_data_get(it);
51    Elm_Genlist_Item *it1, *it2, *it3;
52
53    val *= 10;
54    it1 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 1), it,
55                                  ELM_GENLIST_ITEM_NONE, NULL, NULL);
56    it2 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 2), it,
57                                  ELM_GENLIST_ITEM_NONE, NULL, NULL);
58    it3 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 3), it,
59                                  ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
60
61    elm_genlist_item_cursor_set(it1, ELM_CURSOR_HAND2);
62    elm_genlist_item_cursor_set(it2, ELM_CURSOR_HAND2);
63    elm_genlist_item_cursor_set(it3, ELM_CURSOR_HAND1);
64
65 }
66
67 static void
68 glt_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
69 {
70    Elm_Genlist_Item *it = event_info;
71    elm_genlist_item_subitems_clear(it);
72 }
73
74 static void
75 glt_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
76 {
77    Elm_Genlist_Item *it = event_info;
78    elm_genlist_item_expanded_set(it, 1);
79 }
80
81 static void
82 glt_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
83 {
84    Elm_Genlist_Item *it = event_info;
85    elm_genlist_item_expanded_set(it, 0);
86 }
87
88 char *
89 glt_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
90 {
91    char buf[256];
92    snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
93    return strdup(buf);
94 }
95
96 void
97 test_cursor(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
98 {
99    Evas_Object *win, *bg, *bx, *bt, *list, *entry, *ck;
100    Elm_List_Item *lit;
101
102    win = elm_win_add(NULL, "cursor", ELM_WIN_BASIC);
103    elm_win_title_set(win, "Cursor");
104    elm_win_autodel_set(win, 1);
105
106    bg = elm_bg_add(win);
107    elm_win_resize_object_add(win, bg);
108    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
109    evas_object_show(bg);
110    elm_object_cursor_set(bg, ELM_CURSOR_CIRCLE);
111
112    bx = elm_box_add(win);
113    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
114    elm_win_resize_object_add(win, bx);
115    evas_object_show(bx);
116
117    ck = elm_clock_add(win);
118    elm_object_cursor_set(ck, ELM_CURSOR_CLOCK);
119    elm_box_pack_end(bx, ck);
120    evas_object_show(ck);
121
122    bt = elm_button_add(win);
123    elm_object_cursor_set(bt, ELM_CURSOR_COFFEE_MUG);
124    elm_button_label_set(bt, "Coffee Mug");
125    elm_box_pack_end(bx, bt);
126    evas_object_show(bt);
127
128    bt = elm_button_add(win);
129    elm_object_cursor_set(bt, ELM_CURSOR_CLOCK);
130    elm_button_label_set(bt, "Cursor unset");
131    elm_object_cursor_unset(bt);
132    elm_box_pack_end(bx, bt);
133    evas_object_show(bt);
134
135    list = elm_list_add(win);
136    elm_box_pack_end(bx, list);
137    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
138    evas_object_size_hint_fill_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
139    elm_object_cursor_set(list, ELM_CURSOR_WATCH);
140    lit = elm_list_item_append(list, "watch over list | hand1", NULL, NULL, NULL,
141                         NULL);
142    elm_list_item_cursor_set(lit, ELM_CURSOR_HAND1);
143    lit = elm_list_item_append(list, "watch over list | hand2", NULL, NULL, NULL,
144                         NULL);
145    elm_list_item_cursor_set(lit, ELM_CURSOR_HAND2);
146    elm_list_go(list);
147    evas_object_show(list);
148
149    entry = elm_scrolled_entry_add(win);
150    elm_scrolled_entry_entry_set(entry, "Xterm cursor");
151    elm_scrolled_entry_single_line_set(entry, EINA_TRUE);
152    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0);
153    evas_object_size_hint_fill_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
154    elm_box_pack_end(bx, entry);
155    evas_object_show(entry);
156    elm_object_cursor_set(entry, ELM_CURSOR_XTERM);
157
158    evas_object_resize(win, 320, 480);
159    evas_object_show(win);
160 }
161
162 void
163 test_cursor2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
164 {
165    Evas_Object *win, *bg, *bx, *o, *grid, *gl;
166    Elm_Genlist_Item *it1, *it2, *it3;
167    Elm_Toolbar_Item *tit;
168    Elm_List_Item *lit;
169    char buf[PATH_MAX];
170    static Testitem ti[144];
171    int i, n;
172    const char *img[9] =
173      {
174         "panel_01.jpg",
175         "plant_01.jpg",
176         "rock_01.jpg",
177         "rock_02.jpg",
178         "sky_01.jpg",
179         "sky_02.jpg",
180         "sky_03.jpg",
181         "sky_04.jpg",
182         "wood_01.jpg",
183      };
184
185    win = elm_win_add(NULL, "cursor2", ELM_WIN_BASIC);
186    elm_win_title_set(win, "Cursor 2");
187    elm_win_autodel_set(win, 1);
188
189    bg = elm_bg_add(win);
190    elm_win_resize_object_add(win, bg);
191    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
192    evas_object_show(bg);
193
194    bx = elm_box_add(win);
195    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
196    elm_win_resize_object_add(win, bx);
197    evas_object_show(bx);
198
199    o = elm_toolbar_add(win);
200    elm_toolbar_homogenous_set(o, 0);
201    evas_object_size_hint_weight_set(o, 0.0, 0.0);
202    evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.0);
203    tit = elm_toolbar_item_append(o, NULL, "Bogosity", NULL, NULL);
204    elm_toolbar_item_cursor_set(tit, ELM_CURSOR_BOGOSITY);
205    tit = elm_toolbar_item_append(o, NULL, "Unset", NULL, NULL);
206    elm_toolbar_item_cursor_set(tit, ELM_CURSOR_BOGOSITY);
207    elm_toolbar_item_cursor_unset(tit);
208    tit = elm_toolbar_item_append(o, NULL, "Xterm", NULL, NULL);
209    elm_toolbar_item_cursor_set(tit, ELM_CURSOR_XTERM);
210    elm_box_pack_end(bx, o);
211    evas_object_show(o);
212
213    o = elm_list_add(win);
214    elm_box_pack_end(bx, o);
215    evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
216    evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
217    lit = elm_list_item_append(o, "cursor bogosity", NULL, NULL,  NULL, NULL);
218    elm_list_item_cursor_set(lit, ELM_CURSOR_BOGOSITY);
219    lit = elm_list_item_append(o, "cursor unset", NULL, NULL,  NULL, NULL);
220    elm_list_item_cursor_set(lit, ELM_CURSOR_BOGOSITY);
221    elm_list_item_cursor_unset(lit);
222    lit = elm_list_item_append(o, "cursor xterm", NULL, NULL,  NULL, NULL);
223    elm_list_item_cursor_set(lit, ELM_CURSOR_XTERM);
224    elm_list_go(o);
225    evas_object_show(o);
226
227    gl = elm_genlist_add(win);
228    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
229    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
230    evas_object_show(gl);
231
232    itct.item_style     = "default";
233    itct.func.label_get = glt_label_get;
234
235    it1 = elm_genlist_item_append(gl, &itct, (void *) 1, NULL,
236                                  ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
237    it2 = elm_genlist_item_append(gl, &itct, (void *) 2, NULL,
238                                  ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
239    it3 = elm_genlist_item_append(gl, &itct, (void *) 3, NULL,
240                                  ELM_GENLIST_ITEM_NONE, NULL, NULL);
241
242    elm_genlist_item_cursor_set(it1, ELM_CURSOR_HAND1);
243    elm_genlist_item_cursor_set(it2, ELM_CURSOR_HAND1);
244    elm_genlist_item_cursor_set(it3, ELM_CURSOR_CROSS);
245
246    evas_object_smart_callback_add(gl, "expand,request", glt_exp_req, gl);
247    evas_object_smart_callback_add(gl, "contract,request", glt_con_req, gl);
248    evas_object_smart_callback_add(gl, "expanded", glt_exp, gl);
249    evas_object_smart_callback_add(gl, "contracted", glt_con, gl);
250
251    elm_box_pack_end(bx, gl);
252
253    grid = elm_gengrid_add(win);
254    elm_gengrid_item_size_set(grid, 130, 130);
255    elm_gengrid_horizontal_set(grid, EINA_FALSE);
256    elm_gengrid_multi_select_set(grid, EINA_TRUE);
257    evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
258    evas_object_size_hint_fill_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
259
260    gic.item_style = "default";
261    gic.func.label_get = grd_lbl_get;
262    gic.func.icon_get = grd_icon_get;
263
264    n = 0;
265    for (i = 0; i < 3 * 3; i++)
266      {
267         snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[n]);
268         n = (n + 1) % 9;
269         ti[i].mode = i;
270         ti[i].path = eina_stringshare_add(buf);
271         ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), NULL, NULL);
272         if (n % 2)
273            elm_gengrid_item_cursor_set(ti[i].item, ELM_CURSOR_HAND1);
274         else
275            elm_gengrid_item_cursor_set(ti[i].item, ELM_CURSOR_CLOCK);
276         if (!(i % 5))
277            elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
278      }
279    elm_box_pack_end(bx, grid);
280    evas_object_show(grid);
281
282    evas_object_resize(win, 320, 480);
283    evas_object_show(win);
284 }
285
286 void
287 test_cursor3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
288 {
289    Evas_Object *win, *bg, *bx, *o;
290    Elm_List_Item *lit;
291    char buf[PATH_MAX];
292
293    win = elm_win_add(NULL, "cursor3", ELM_WIN_BASIC);
294    elm_win_title_set(win, "Cursor 3");
295    elm_win_autodel_set(win, 1);
296
297    snprintf(buf, sizeof(buf), "%s/objects/cursors.edj", PACKAGE_DATA_DIR);
298    elm_theme_extension_add(NULL, buf);
299
300    bg = elm_bg_add(win);
301    elm_win_resize_object_add(win, bg);
302    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
303    evas_object_show(bg);
304
305    bx = elm_box_add(win);
306    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
307    elm_win_resize_object_add(win, bx);
308    evas_object_show(bx);
309
310    o = elm_button_add(win);
311    elm_object_cursor_set(o, ELM_CURSOR_HAND1);
312    elm_object_cursor_engine_only_set(o, EINA_FALSE);
313    elm_button_label_set(o, "hand1");
314    elm_box_pack_end(bx, o);
315    evas_object_show(o);
316
317    o = elm_button_add(win);
318    elm_object_cursor_set(o, ELM_CURSOR_HAND2);
319    elm_button_label_set(o, "hand2 x");
320    elm_box_pack_end(bx, o);
321    evas_object_show(o);
322
323    o = elm_button_add(win);
324    elm_object_cursor_set(o, ELM_CURSOR_HAND2);
325    elm_object_cursor_engine_only_set(o, EINA_FALSE);
326    elm_button_label_set(o, "hand2");
327    elm_box_pack_end(bx, o);
328    evas_object_show(o);
329
330    o = elm_button_add(win);
331    elm_object_cursor_set(o, "hand3");
332    elm_object_cursor_engine_only_set(o, EINA_FALSE);
333    elm_button_label_set(o, "hand3");
334    elm_box_pack_end(bx, o);
335    evas_object_show(o);
336
337    o = elm_button_add(win);
338    elm_object_cursor_set(o, "hand3");
339    elm_object_cursor_engine_only_set(o, EINA_FALSE);
340    elm_object_cursor_style_set(o, "transparent");
341    elm_button_label_set(o, "hand3 transparent");
342    elm_box_pack_end(bx, o);
343    evas_object_show(o);
344
345    o = elm_button_add(win);
346    elm_object_cursor_set(o, "hand3");
347    elm_object_cursor_engine_only_set(o, EINA_FALSE);
348    elm_object_cursor_unset(o);
349    elm_button_label_set(o, "unset");
350    elm_box_pack_end(bx, o);
351    evas_object_show(o);
352
353    o = elm_button_add(win);
354    elm_object_cursor_set(o, "hand4");
355    elm_button_label_set(o, "not existent");
356    elm_box_pack_end(bx, o);
357    evas_object_show(o);
358
359    elm_cursor_engine_only_set(0);
360    o = elm_button_add(win);
361    elm_object_cursor_set(o, "hand2");
362    elm_button_label_set(o, "hand 2 engine only config false");
363    elm_box_pack_end(bx, o);
364    evas_object_show(o);
365
366    elm_cursor_engine_only_set(1);
367    o = elm_button_add(win);
368    elm_object_cursor_set(o, "hand2");
369    elm_button_label_set(o, "hand 2 engine only config true");
370    elm_box_pack_end(bx, o);
371    evas_object_show(o);
372
373    o = elm_list_add(win);
374    elm_box_pack_end(bx, o);
375    evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
376    evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
377    lit = elm_list_item_append(o, "cursor hand2 x", NULL, NULL,  NULL, NULL);
378    elm_list_item_cursor_set(lit, ELM_CURSOR_HAND2);
379    lit = elm_list_item_append(o, "cursor hand2", NULL, NULL,  NULL, NULL);
380    elm_list_item_cursor_set(lit, ELM_CURSOR_HAND2);
381    elm_list_item_cursor_engine_only_set(lit, EINA_FALSE);
382    lit = elm_list_item_append(o, "cursor hand3", NULL, NULL,  NULL, NULL);
383    elm_list_item_cursor_set(lit, "hand3");
384    elm_list_item_cursor_engine_only_set(lit, EINA_FALSE);
385    lit = elm_list_item_append(o, "cursor hand3 transparent", NULL, NULL,
386                               NULL, NULL);
387    elm_list_item_cursor_set(lit, "hand3");
388    elm_list_item_cursor_style_set(lit, "transparent");
389    elm_list_item_cursor_engine_only_set(lit, EINA_FALSE);
390    elm_list_go(o);
391    evas_object_show(o);
392
393    evas_object_resize(win, 320, 480);
394    evas_object_show(win);
395 }
396
397 #endif