aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/elementary/src/bin/test_gesture_layer2.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-04-22 09:20:32 +1000
committerDavid Walter Seikel2012-04-22 09:20:32 +1000
commit3ad3455551be0d7859ecb02290376206d5e66498 (patch)
tree497917e12b4d7f458dff9765d9b53f64c4e03fc3 /libraries/elementary/src/bin/test_gesture_layer2.c
parentUpdate EFL to latest beta. (diff)
downloadSledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.zip
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.gz
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.bz2
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.xz
And actually include new files, plus elementary libraries.
Diffstat (limited to 'libraries/elementary/src/bin/test_gesture_layer2.c')
-rw-r--r--libraries/elementary/src/bin/test_gesture_layer2.c778
1 files changed, 778 insertions, 0 deletions
diff --git a/libraries/elementary/src/bin/test_gesture_layer2.c b/libraries/elementary/src/bin/test_gesture_layer2.c
new file mode 100644
index 0000000..487c84e
--- /dev/null
+++ b/libraries/elementary/src/bin/test_gesture_layer2.c
@@ -0,0 +1,778 @@
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
46struct _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};
56typedef struct _icon_properties icon_properties;
57
58struct _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};
64typedef struct _infra_data infra_data;
65
66void
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
81infra_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
91static void
92my_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
97icon_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
109void
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
120static 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
152void
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 */
175static Evas_Event_Flags
176n_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
185static Evas_Event_Flags
186n_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
196static Evas_Event_Flags
197n_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
205static Evas_Event_Flags
206n_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
216static Evas_Event_Flags
217n_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
227static Evas_Event_Flags
228n_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
238static Evas_Event_Flags
239n_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
247static Evas_Event_Flags
248dbl_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
258static Evas_Event_Flags
259dbl_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
269static Evas_Event_Flags
270dbl_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
279static Evas_Event_Flags
280triple_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
290static Evas_Event_Flags
291triple_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
301static Evas_Event_Flags
302triple_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
312static Evas_Event_Flags
313momentum_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
323static Evas_Event_Flags
324momentum_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
332static Evas_Event_Flags
333momentum_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
341static Evas_Event_Flags
342momentum_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
350static Evas_Event_Flags
351line_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
360static Evas_Event_Flags
361line_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
370static Evas_Event_Flags
371line_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
379static Evas_Event_Flags
380line_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
388static Evas_Event_Flags
389flick_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
400static Evas_Event_Flags
401flick_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
410static Evas_Event_Flags
411flick_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
419static Evas_Event_Flags
420zoom_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
429static Evas_Event_Flags
430zoom_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
439static Evas_Event_Flags
440zoom_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
449static Evas_Event_Flags
450zoom_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
457static Evas_Event_Flags
458rotate_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
466static Evas_Event_Flags
467rotate_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
475static Evas_Event_Flags
476rotate_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
484static Evas_Event_Flags
485rotate_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
493Evas_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
522void
523test_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