efl
810 строк · 26.7 Кб
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4#include <Elementary.h>
5
6#define TAP_NAME "tap"
7#define DOUBLE_TAP_NAME "double_tap"
8#define TRIPLE_TAP_NAME "triple_tap"
9#define LONG_TAP_NAME "long_tap"
10#define FLICK_NAME "flick"
11#define LINE_NAME "line"
12#define MOMENTUM_NAME "momentum"
13#define ROTATE_NAME "rotate"
14#define ZOOM_NAME "zoom"
15
16#define N_GESTURE_TYPE 9
17#define MAX_DOUBLE_TAP 5
18#define MAX_FLICK 5
19#define MAX_LINE 5
20#define MAX_LONG_TAP 5
21#define MAX_MOMENTUM 5
22#define MAX_ROTATE 1
23#define MAX_TAP 5
24#define MAX_TRIPLE_TAP 5
25#define MAX_ZOOM 1
26
27#define TB_PADDING_X 4
28#define TB_PADDING_Y 12
29
30#define BX_PADDING_X 0
31#define BX_PADDING_Y 2
32
33/* Define initial RGBA values for icons */
34#define INI_R 60
35#define INI_G 66
36#define INI_B 64
37#define INI_A 128
38#define COLOR_STEP 4
39
40#define START_COLOR 220, 220, 200, 255
41#define MOVE_COLOR 255, 255, 0, 255
42#define ABORT_COLOR 255, 0, 0, 255
43#define END_COLOR 0, 255, 0, 255
44
45struct _icon_properties
46{
47Evas_Object *icon;
48int r; /* current r */
49int g;
50int b;
51int a;
52
53const char *name;
54};
55typedef struct _icon_properties icon_properties;
56
57struct _infra_data
58{ /* Some data that is passed aroung between callbacks (replacing globals) */
59icon_properties *icons;
60Ecore_Timer *colortimer;
61char buf[1024];
62int long_tap_count;
63};
64typedef struct _infra_data infra_data;
65
66void
67_infra_data_free(infra_data *infra)
68{
69if (infra)
70{
71if (infra->colortimer)
72ecore_timer_del(infra->colortimer);
73
74if (infra->icons)
75free(infra->icons);
76
77free (infra);
78}
79}
80
81infra_data *
82_infra_data_alloc(void)
83{
84infra_data *infra = malloc(sizeof(infra_data));
85if (!infra) return NULL;
86
87infra->icons = calloc(N_GESTURE_TYPE, sizeof(icon_properties ));
88infra->colortimer = NULL;
89
90return infra;
91}
92
93static void
94my_win_del(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
95{ /* called when my_win_main is requested to be deleted */
96_infra_data_free(data);
97}
98
99icon_properties *
100_icon_properties_find(icon_properties *icons, char *name)
101{
102int n;
103
104for (n = 0; n < N_GESTURE_TYPE; n++)
105if (!strcmp(icons[n].name, name))
106return &icons[n];
107
108return NULL;
109}
110
111void
112_icon_color_set(icon_properties *i, int r, int g, int b, int a)
113{
114i->r = r;
115i->g = g;
116i->b = b;
117i->a = a;
118evas_object_color_set(i->icon, i->r, i->g, i->b, i->a);
119}
120
121static Eina_Bool
122_icon_color_set_cb(void *data)
123{
124#define INC_COLOR(C, NC) \
125do { \
126if (abs(i->C - NC) < COLOR_STEP) \
127i->C = NC; \
128else \
129i->C += ((i->C < NC) ? COLOR_STEP : (-COLOR_STEP)); \
130} while (0)
131
132int n;
133icon_properties *icons = data;
134icon_properties *i;
135
136for (n = 0; n < N_GESTURE_TYPE; n++)
137{
138i = &icons[n];
139
140INC_COLOR(r,INI_R);
141INC_COLOR(g,INI_G);
142INC_COLOR(b,INI_B);
143INC_COLOR(a,INI_A);
144
145/* Change Icon color */
146evas_object_color_set(i->icon, i->r, i->g, i->b, i->a);
147}
148
149return ECORE_CALLBACK_RENEW;
150}
151
152void
153_color_and_icon_set(infra_data *infra, char *name, int n, int max,
154int r, int g, int b, int a)
155{
156icon_properties *i;
157int nn = n;
158i = _icon_properties_find(infra->icons, name);
159if (i)
160{
161if (n < 1)
162nn = 1;
163
164if (n > max)
165nn = max;
166
167snprintf(infra->buf, sizeof(infra->buf),
168"%s/images/g_layer/%s_%d.png", elm_app_data_dir_get(), i->name, nn);
169elm_image_file_set(i->icon, infra->buf, NULL);
170_icon_color_set(i, r, g, b, a);
171}
172}
173
174/* START - Callbacks for gestures */
175static Evas_Event_Flags
176n_finger_tap_start(void *data , void *event_info)
177{
178Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
179_color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, START_COLOR);
180printf("N tap started <%p> x,y=<%d,%d> count=<%d>\n",
181event_info, p->x, p->y, p->n);
182return EVAS_EVENT_FLAG_ON_HOLD;
183}
184
185static Evas_Event_Flags
186n_finger_tap_end(void *data , void *event_info)
187{
188Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
189
190printf("N tap ended <%p> x,y=<%d,%d> count=<%d>\n",
191event_info, p->x, p->y, p->n);
192_color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, END_COLOR);
193return EVAS_EVENT_FLAG_ON_HOLD;
194}
195
196static Evas_Event_Flags
197n_finger_tap_abort(void *data , void *event_info)
198{
199Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
200printf("N tap abort\n");
201_color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, ABORT_COLOR);
202return EVAS_EVENT_FLAG_ON_HOLD;
203}
204
205static Evas_Event_Flags
206n_long_tap_start(void *data , void *event_info)
207{
208Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
209infra_data *infra = data;
210
211printf("N long tap started <%p> x,y=<%d,%d> count=<%d>\n",
212event_info, p->x, p->y, p->n);
213_color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, START_COLOR);
214infra->long_tap_count = 0;
215return EVAS_EVENT_FLAG_ON_HOLD;
216}
217
218static Evas_Event_Flags
219n_long_tap_move(void *data , void *event_info)
220{
221Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
222infra_data *infra = data;
223
224infra->long_tap_count++;
225_color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, MOVE_COLOR);
226
227printf("N long tap moved <%p> x,y=<%d,%d> count=<%d>\n",
228event_info, p->x, p->y, p->n);
229if (infra->long_tap_count == 1)
230printf("This is a first long tap.\n");
231
232return EVAS_EVENT_FLAG_ON_HOLD;
233}
234
235static Evas_Event_Flags
236n_long_tap_end(void *data , void *event_info)
237{
238Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
239
240printf("N long tap ended <%p> x,y=<%d,%d> count=<%d>\n",
241event_info, p->x, p->y, p->n);
242_color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, END_COLOR);
243return EVAS_EVENT_FLAG_ON_HOLD;
244}
245
246static Evas_Event_Flags
247n_long_tap_abort(void *data , void *event_info)
248{
249Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
250_color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, ABORT_COLOR);
251printf("N long tap abort\n");
252return EVAS_EVENT_FLAG_ON_HOLD;
253}
254
255static Evas_Event_Flags
256dbl_click_start(void *data , void *event_info)
257{
258Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
259
260_color_and_icon_set(data,DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, START_COLOR);
261printf("Double click started <%p> x,y=<%d,%d> count=<%d>\n",
262event_info, p->x, p->y, p->n);
263return EVAS_EVENT_FLAG_ON_HOLD;
264}
265
266static Evas_Event_Flags
267dbl_click_move(void *data , void *event_info)
268{
269Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
270_color_and_icon_set(data, DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, MOVE_COLOR);
271
272printf("Double click move <%p> x,y=<%d,%d> count=<%d>\n",
273event_info, p->x, p->y, p->n);
274return EVAS_EVENT_FLAG_ON_HOLD;
275}
276
277static Evas_Event_Flags
278dbl_click_end(void *data , void *event_info)
279{
280Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
281_color_and_icon_set(data, DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, END_COLOR);
282
283printf("Double click ended <%p> x,y=<%d,%d> count=<%d>\n",
284event_info, p->x, p->y, p->n);
285return EVAS_EVENT_FLAG_ON_HOLD;
286}
287
288static Evas_Event_Flags
289dbl_click_abort(void *data , void *event_info)
290{
291Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
292_color_and_icon_set(data,DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, ABORT_COLOR);
293
294printf("Double click abort\n");
295return EVAS_EVENT_FLAG_ON_HOLD;
296}
297
298static Evas_Event_Flags
299triple_click_start(void *data , void *event_info)
300{
301Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
302_color_and_icon_set(data,TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, START_COLOR);
303
304printf("Triple click started <%p> x,y=<%d,%d> count=<%d>\n",
305event_info, p->x, p->y, p->n);
306return EVAS_EVENT_FLAG_ON_HOLD;
307}
308
309static Evas_Event_Flags
310triple_click_move(void *data , void *event_info)
311{
312Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
313
314_color_and_icon_set(data, TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, MOVE_COLOR);
315printf("Triple click move <%p> x,y=<%d,%d> count=<%d>\n",
316event_info, p->x, p->y, p->n);
317return EVAS_EVENT_FLAG_ON_HOLD;
318}
319
320static Evas_Event_Flags
321triple_click_end(void *data , void *event_info)
322{
323Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
324
325_color_and_icon_set(data, TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, END_COLOR);
326printf("Triple click ended <%p> x,y=<%d,%d> count=<%d>\n",
327event_info, p->x, p->y, p->n);
328return EVAS_EVENT_FLAG_ON_HOLD;
329}
330
331static Evas_Event_Flags
332triple_click_abort(void *data , void *event_info)
333{
334Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
335_color_and_icon_set(data,TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, ABORT_COLOR);
336
337printf("Triple click abort\n");
338return EVAS_EVENT_FLAG_ON_HOLD;
339}
340
341static Evas_Event_Flags
342momentum_start(void *data , void *event_info)
343{
344Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
345_color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, START_COLOR);
346
347printf("momentum started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n",
348p->x1, p->y1, p->tx, p->ty, p->n);
349return EVAS_EVENT_FLAG_ON_HOLD;
350}
351
352static Evas_Event_Flags
353momentum_end(void *data , void *event_info)
354{
355Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
356_color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, END_COLOR);
357printf("momentum ended x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n",p->x1, p->y1, p->x2, p->y2, p->tx, p->ty, p->mx, p->my, p->n);
358return EVAS_EVENT_FLAG_ON_HOLD;
359}
360
361static Evas_Event_Flags
362momentum_abort(void *data , void *event_info)
363{
364Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
365printf("momentum abort\n");
366_color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, ABORT_COLOR);
367return EVAS_EVENT_FLAG_ON_HOLD;
368}
369
370static Evas_Event_Flags
371momentum_move(void *data , void *event_info)
372{
373Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
374_color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, MOVE_COLOR);
375printf("momentum move x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n", p->x1, p->y1, p->x2, p->y2, p->tx, p->ty, p->mx, p->my, p->n);
376return EVAS_EVENT_FLAG_ON_HOLD;
377}
378
379static Evas_Event_Flags
380line_start(void *data , void *event_info)
381{
382Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
383_color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, START_COLOR);
384
385printf("line started x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n);
386return EVAS_EVENT_FLAG_ON_HOLD;
387}
388
389static Evas_Event_Flags
390line_move(void *data , void *event_info)
391{
392Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
393_color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, MOVE_COLOR);
394printf("line move x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n);
395
396return EVAS_EVENT_FLAG_ON_HOLD;
397}
398
399static Evas_Event_Flags
400line_end(void *data , void *event_info)
401{
402Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
403_color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, END_COLOR);
404printf("line end x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n);
405return EVAS_EVENT_FLAG_ON_HOLD;
406}
407
408static Evas_Event_Flags
409line_abort(void *data , void *event_info)
410{
411Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
412_color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, ABORT_COLOR);
413printf("line abort\n");
414return EVAS_EVENT_FLAG_ON_HOLD;
415}
416
417static Evas_Event_Flags
418flick_start(void *data , void *event_info)
419{
420Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
421_color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, START_COLOR);
422
423printf("flick started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n",
424p->momentum.x1, p->momentum.y1, p->momentum.tx,
425p->momentum.ty, p->momentum.n);
426return EVAS_EVENT_FLAG_ON_HOLD;
427}
428
429static Evas_Event_Flags
430flick_end(void *data , void *event_info)
431{
432Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
433_color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, END_COLOR);
434
435printf("flick ended x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n",p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.mx, p->momentum.my, p->momentum.n);
436return EVAS_EVENT_FLAG_ON_HOLD;
437}
438
439static Evas_Event_Flags
440flick_abort(void *data , void *event_info)
441{
442Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info;
443_color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, ABORT_COLOR);
444printf("flick abort\n");
445return EVAS_EVENT_FLAG_ON_HOLD;
446}
447
448static Evas_Event_Flags
449zoom_start(void *data , void *event_info)
450{
451Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
452_color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, START_COLOR);
453printf("zoom started <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
454p->x, p->y, p->zoom, p->radius, p->momentum);
455return EVAS_EVENT_FLAG_ON_HOLD;
456}
457
458static Evas_Event_Flags
459zoom_move(void *data , void *event_info)
460{
461Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
462_color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, MOVE_COLOR);
463printf("zoom move <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
464p->x, p->y, p->zoom, p->radius, p->momentum);
465return EVAS_EVENT_FLAG_ON_HOLD;
466}
467
468static Evas_Event_Flags
469zoom_end(void *data , void *event_info)
470{
471Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
472_color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, END_COLOR);
473printf("zoom end <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
474p->x, p->y, p->zoom, p->radius, p->momentum);
475return EVAS_EVENT_FLAG_ON_HOLD;
476}
477
478static Evas_Event_Flags
479zoom_abort(void *data , void *event_info EINA_UNUSED)
480{
481printf("zoom abort\n");
482_color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, ABORT_COLOR);
483return EVAS_EVENT_FLAG_ON_HOLD;
484}
485
486static Evas_Event_Flags
487rotate_start(void *data , void *event_info)
488{
489Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
490_color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, START_COLOR);
491printf("rotate started <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum);
492return EVAS_EVENT_FLAG_ON_HOLD;
493}
494
495static Evas_Event_Flags
496rotate_move(void *data , void *event_info)
497{
498Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
499_color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, MOVE_COLOR);
500printf("rotate move <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum);
501return EVAS_EVENT_FLAG_ON_HOLD;
502}
503
504static Evas_Event_Flags
505rotate_end(void *data , void *event_info)
506{
507Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
508_color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, END_COLOR);
509printf("rotate end <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum);
510return EVAS_EVENT_FLAG_ON_HOLD;
511}
512
513static Evas_Event_Flags
514rotate_abort(void *data , void *event_info EINA_UNUSED)
515{
516_color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, ABORT_COLOR);
517printf("rotate abort\n");
518return EVAS_EVENT_FLAG_ON_HOLD;
519}
520/* END - Callbacks for gestures */
521
522Evas_Object *create_gesture_box(Evas_Object *win, icon_properties *icons,
523int idx, const char *name, const char *lb_txt)
524{ /* Creates a box with icon and label, later placed in a table */
525Evas_Object *lb, *bx = elm_box_add(win);
526char buf[1024];
527
528elm_box_padding_set(bx, BX_PADDING_X, BX_PADDING_Y);
529icons[idx].icon = elm_icon_add(win);
530icons[idx].name = name;
531snprintf(buf, sizeof(buf), "%s/images/g_layer/%s_1.png",
532elm_app_data_dir_get(), icons[idx].name);
533elm_image_file_set(icons[idx].icon, buf, NULL);
534elm_image_resizable_set(icons[idx].icon, EINA_FALSE, EINA_FALSE);
535evas_object_size_hint_align_set(icons[idx].icon, 0.5, 0.5);
536_icon_color_set(&icons[idx], INI_R, INI_G, INI_B, INI_A);
537elm_box_pack_end(bx, icons[idx].icon);
538evas_object_show(icons[idx].icon);
539
540lb = elm_label_add(win);
541elm_object_text_set(lb, lb_txt);
542evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
543evas_object_size_hint_align_set(lb, 0.5, 0.5);
544elm_box_pack_end(bx, lb);
545evas_object_show(lb);
546evas_object_show(bx);
547
548return bx;
549}
550
551void
552test_gesture_layer2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
553void *event_info EINA_UNUSED)
554{
555Evas_Object *win, *tb, *lb, *bx;
556Evas_Object *r; /* Gesture layer transparent object */
557Evas_Object *g; /* The Gesture Layer object */
558
559infra_data *infra = _infra_data_alloc();
560
561win = elm_win_util_standard_add("gesture-layer2", "Gesture Layer 2");
562elm_win_autodel_set(win, EINA_TRUE);
563evas_object_smart_callback_add(win, "delete,request", my_win_del, infra);
564
565/* START - Building icons table */
566bx = elm_box_add(win);
567tb = elm_table_add(win);
568elm_box_pack_end(bx, tb);
569evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
570evas_object_size_hint_align_set(tb, 0.5, 0.5);
571elm_win_resize_object_add(win, bx);
572evas_object_show(tb);
573evas_object_show(bx);
574
575/* Box of Tap icon and label */
576bx = create_gesture_box(win, infra->icons, 0, TAP_NAME, "Tap");
577elm_table_pack(tb, bx, 0, 0, 1, 1);
578
579/* Box of Double Tap icon and label */
580bx = create_gesture_box(win, infra->icons, 1, DOUBLE_TAP_NAME, "Double Tap");
581elm_table_pack(tb, bx, 1, 0, 1, 1);
582
583/* Box of Triple Tap icon and label */
584bx = create_gesture_box(win, infra->icons, 2, TRIPLE_TAP_NAME, "Triple Tap");
585elm_table_pack(tb, bx, 2, 0, 1, 1);
586
587/* Box of Long Tap icon and label */
588bx = create_gesture_box(win, infra->icons, 3, LONG_TAP_NAME, "Long Tap");
589elm_table_pack(tb, bx, 3, 0, 1, 1);
590
591/* Box of Momentum icon and label */
592bx = create_gesture_box(win, infra->icons, 4, MOMENTUM_NAME, "Momentum");
593elm_table_pack(tb, bx, 0, 2, 1, 1);
594
595/* Box of Line icon and label */
596bx = create_gesture_box(win, infra->icons, 5, LINE_NAME, "Line");
597elm_table_pack(tb, bx, 1, 2, 1, 1);
598
599/* Box of Flick icon and label */
600bx = create_gesture_box(win, infra->icons, 6, FLICK_NAME, "Flick");
601elm_table_pack(tb, bx, 2, 2, 1, 1);
602
603/* Box of Zoom icon and label */
604bx = create_gesture_box(win, infra->icons, 7, ZOOM_NAME, "Zoom");
605elm_table_pack(tb, bx, 0, 3, 1, 1);
606
607/* Box of Rotate icon and label */
608bx = create_gesture_box(win, infra->icons, 8, ROTATE_NAME, "Rotate");
609elm_table_pack(tb, bx, 1, 3, 1, 1);
610
611/* Legend of gestures - states */
612lb = elm_label_add(win);
613elm_object_text_set(lb, "<b>Gesture States</b>");
614evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
615evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
616elm_table_pack(tb, lb, 0, 6, 4, 2);
617evas_object_show(lb);
618
619r = evas_object_rectangle_add(evas_object_evas_get(win));
620evas_object_resize(r, 64, 64);
621evas_object_color_set(r, INI_R, INI_G, INI_B, INI_A);
622evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
623evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
624elm_table_pack(tb, r, 0, 7, 1, 1);
625evas_object_show(r);
626
627lb = elm_label_add(win);
628elm_object_text_set(lb, "Not Started");
629evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
630evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
631elm_table_pack(tb, lb, 1, 7, 3, 1);
632evas_object_show(lb);
633
634r = evas_object_rectangle_add(evas_object_evas_get(win));
635evas_object_resize(r, 64, 64);
636evas_object_color_set(r, START_COLOR);
637evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
638evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
639elm_table_pack(tb, r, 0, 8, 1, 1);
640evas_object_show(r);
641
642lb = elm_label_add(win);
643elm_object_text_set(lb, "Gesture START");
644evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
645evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
646elm_table_pack(tb, lb, 1, 8, 3, 1);
647evas_object_show(lb);
648
649r = evas_object_rectangle_add(evas_object_evas_get(win));
650evas_object_resize(r, 64, 64);
651evas_object_color_set(r, MOVE_COLOR);
652evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
653evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
654elm_table_pack(tb, r, 0, 9, 1, 1);
655evas_object_show(r);
656
657lb = elm_label_add(win);
658elm_object_text_set(lb, "Gesture MOVE");
659evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
660evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
661elm_table_pack(tb, lb, 1, 9, 3, 1);
662evas_object_show(lb);
663
664r = evas_object_rectangle_add(evas_object_evas_get(win));
665evas_object_resize(r, 64, 64);
666evas_object_color_set(r, END_COLOR);
667evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
668evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
669elm_table_pack(tb, r, 0, 10, 1, 1);
670evas_object_show(r);
671
672lb = elm_label_add(win);
673elm_object_text_set(lb, "Gesture END");
674evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
675evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
676elm_table_pack(tb, lb, 1, 10, 3, 1);
677evas_object_show(lb);
678
679r = evas_object_rectangle_add(evas_object_evas_get(win));
680evas_object_resize(r, 64, 64);
681evas_object_color_set(r, ABORT_COLOR);
682evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
683evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
684elm_table_pack(tb, r, 0, 11, 1, 1);
685evas_object_show(r);
686
687lb = elm_label_add(win);
688elm_object_text_set(lb, "Gesture ABORT");
689evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
690evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
691elm_table_pack(tb, lb, 1, 11, 3, 1);
692
693elm_table_padding_set(tb, TB_PADDING_X, TB_PADDING_Y);
694evas_object_show(lb);
695/* END - Building icons table */
696
697/* Gesture layer transparent object */
698r = evas_object_rectangle_add(evas_object_evas_get(win));
699evas_object_move(r, 0, 0);
700evas_object_color_set(r, 0, 0, 0, 0);
701elm_win_resize_object_add(win, r);
702
703g = elm_gesture_layer_add(win);
704elm_gesture_layer_attach(g, r);
705evas_object_show(r);
706
707/* START - Setting gestures callbacks */
708#if 1
709elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
710ELM_GESTURE_STATE_START, triple_click_start, infra);
711elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
712ELM_GESTURE_STATE_MOVE, triple_click_move, infra);
713elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
714ELM_GESTURE_STATE_END, triple_click_end, infra);
715elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
716ELM_GESTURE_STATE_ABORT, triple_click_abort, infra);
717#endif
718
719#if 1
720elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
721ELM_GESTURE_STATE_START, dbl_click_start, infra);
722elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
723ELM_GESTURE_STATE_MOVE, dbl_click_move, infra);
724elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
725ELM_GESTURE_STATE_END, dbl_click_end, infra);
726elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
727ELM_GESTURE_STATE_ABORT, dbl_click_abort, infra);
728#endif
729
730#if 1
731elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
732ELM_GESTURE_STATE_START, n_finger_tap_start, infra);
733elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
734ELM_GESTURE_STATE_END, n_finger_tap_end, infra);
735elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
736ELM_GESTURE_STATE_ABORT, n_finger_tap_abort, infra);
737#endif
738
739#if 1
740elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
741ELM_GESTURE_STATE_START, n_long_tap_start, infra);
742elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
743ELM_GESTURE_STATE_MOVE, n_long_tap_move, infra);
744elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
745ELM_GESTURE_STATE_END, n_long_tap_end, infra);
746elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
747ELM_GESTURE_STATE_ABORT, n_long_tap_abort, infra);
748#endif
749
750#if 1
751elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
752ELM_GESTURE_STATE_START, momentum_start, infra);
753elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
754ELM_GESTURE_STATE_END, momentum_end, infra);
755elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
756ELM_GESTURE_STATE_ABORT, momentum_abort, infra);
757elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
758ELM_GESTURE_STATE_MOVE, momentum_move, infra);
759#endif
760
761#if 1
762elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
763ELM_GESTURE_STATE_START, line_start, infra);
764elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
765ELM_GESTURE_STATE_MOVE, line_move, infra);
766elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
767ELM_GESTURE_STATE_END, line_end, infra);
768elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
769ELM_GESTURE_STATE_ABORT, line_abort, infra);
770#endif
771
772#if 1
773elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
774ELM_GESTURE_STATE_START, flick_start, infra);
775elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
776ELM_GESTURE_STATE_END, flick_end, infra);
777elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
778ELM_GESTURE_STATE_ABORT, flick_abort, infra);
779#endif
780
781#if 1
782elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
783ELM_GESTURE_STATE_START, zoom_start, infra);
784elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
785ELM_GESTURE_STATE_END, zoom_end, infra);
786elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
787ELM_GESTURE_STATE_ABORT, zoom_abort, infra);
788elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
789ELM_GESTURE_STATE_MOVE, zoom_move, infra);
790/* elm_gesture_layer_zoom_step_set(g, 0.2); */
791#endif
792
793#if 1
794elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
795ELM_GESTURE_STATE_START, rotate_start, infra);
796elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
797ELM_GESTURE_STATE_END, rotate_end, infra);
798elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
799ELM_GESTURE_STATE_ABORT, rotate_abort, infra);
800elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
801ELM_GESTURE_STATE_MOVE, rotate_move, infra);
802/* elm_gesture_layer_rotate_step_set(g, 5.2); */
803#endif
804/* END - Setting gestures callbacks */
805
806/* Update color state 20 times a second */
807infra->colortimer = ecore_timer_add(0.05, _icon_color_set_cb, infra->icons);
808
809evas_object_show(win);
810}
811