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