efl

Форк
0
/
test_gesture_layer2.c 
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

45
struct _icon_properties
46
{
47
   Evas_Object *icon;
48
   int r; /* current r */
49
   int g;
50
   int b;
51
   int a;
52

53
   const char *name;
54
};
55
typedef struct _icon_properties icon_properties;
56

57
struct _infra_data
58
{  /* Some data that is passed aroung between callbacks (replacing globals) */
59
   icon_properties *icons;
60
   Ecore_Timer *colortimer;
61
   char buf[1024];
62
   int long_tap_count;
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
   if (!infra) return NULL;
86

87
   infra->icons = calloc(N_GESTURE_TYPE, sizeof(icon_properties ));
88
   infra->colortimer = NULL;
89

90
   return infra;
91
}
92

93
static void
94
my_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

99
icon_properties *
100
_icon_properties_find(icon_properties *icons, char *name)
101
{
102
   int n;
103

104
   for (n = 0; n < N_GESTURE_TYPE; n++)
105
     if (!strcmp(icons[n].name, name))
106
       return &icons[n];
107

108
   return NULL;
109
}
110

111
void
112
_icon_color_set(icon_properties *i, int r, int g, int b, int a)
113
{
114
   i->r =  r;
115
   i->g =  g;
116
   i->b =  b;
117
   i->a =  a;
118
   evas_object_color_set(i->icon, i->r,  i->g,  i->b,  i->a);
119
}
120

121
static Eina_Bool
122
_icon_color_set_cb(void *data)
123
{
124
#define INC_COLOR(C, NC) \
125
   do { \
126
        if (abs(i->C - NC) < COLOR_STEP) \
127
        i->C = NC; \
128
        else \
129
        i->C += ((i->C < NC) ? COLOR_STEP : (-COLOR_STEP)); \
130
   } while (0)
131

132
   int n;
133
   icon_properties *icons = data;
134
   icon_properties *i;
135

136
   for (n = 0; n < N_GESTURE_TYPE; n++)
137
     {
138
        i = &icons[n];
139

140
        INC_COLOR(r,INI_R);
141
        INC_COLOR(g,INI_G);
142
        INC_COLOR(b,INI_B);
143
        INC_COLOR(a,INI_A);
144

145
        /* Change Icon color */
146
        evas_object_color_set(i->icon, i->r,  i->g,  i->b,  i->a);
147
    }
148

149
   return ECORE_CALLBACK_RENEW;
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_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 */
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
   infra_data *infra = data;
210

211
   printf("N long tap started <%p> x,y=<%d,%d> count=<%d>\n",
212
         event_info, p->x, p->y, p->n);
213
   _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, START_COLOR);
214
   infra->long_tap_count = 0;
215
   return EVAS_EVENT_FLAG_ON_HOLD;
216
}
217

218
static Evas_Event_Flags
219
n_long_tap_move(void *data , void *event_info)
220
{
221
   Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
222
   infra_data *infra = data;
223

224
   infra->long_tap_count++;
225
   _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, MOVE_COLOR);
226

227
   printf("N long tap moved <%p> x,y=<%d,%d> count=<%d>\n",
228
         event_info, p->x, p->y, p->n);
229
   if (infra->long_tap_count == 1)
230
     printf("This is a first long tap.\n");
231

232
   return EVAS_EVENT_FLAG_ON_HOLD;
233
}
234

235
static Evas_Event_Flags
236
n_long_tap_end(void *data , void *event_info)
237
{
238
   Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
239

240
   printf("N long tap ended <%p> x,y=<%d,%d> count=<%d>\n",
241
         event_info, p->x, p->y, p->n);
242
   _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, END_COLOR);
243
   return EVAS_EVENT_FLAG_ON_HOLD;
244
}
245

246
static Evas_Event_Flags
247
n_long_tap_abort(void *data , void *event_info)
248
{
249
   Elm_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);
251
   printf("N long tap abort\n");
252
   return EVAS_EVENT_FLAG_ON_HOLD;
253
}
254

255
static Evas_Event_Flags
256
dbl_click_start(void *data , void *event_info)
257
{
258
   Elm_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);
261
   printf("Double click started <%p> x,y=<%d,%d> count=<%d>\n",
262
         event_info, p->x, p->y, p->n);
263
   return EVAS_EVENT_FLAG_ON_HOLD;
264
}
265

266
static Evas_Event_Flags
267
dbl_click_move(void *data , void *event_info)
268
{
269
   Elm_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

272
   printf("Double click move <%p> x,y=<%d,%d> count=<%d>\n",
273
         event_info, p->x, p->y, p->n);
274
   return EVAS_EVENT_FLAG_ON_HOLD;
275
}
276

277
static Evas_Event_Flags
278
dbl_click_end(void *data , void *event_info)
279
{
280
   Elm_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

283
   printf("Double click ended <%p> x,y=<%d,%d> count=<%d>\n",
284
         event_info, p->x, p->y, p->n);
285
   return EVAS_EVENT_FLAG_ON_HOLD;
286
}
287

288
static Evas_Event_Flags
289
dbl_click_abort(void *data , void *event_info)
290
{
291
   Elm_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

294
   printf("Double click abort\n");
295
   return EVAS_EVENT_FLAG_ON_HOLD;
296
}
297

298
static Evas_Event_Flags
299
triple_click_start(void *data , void *event_info)
300
{
301
   Elm_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

304
   printf("Triple click started <%p> x,y=<%d,%d> count=<%d>\n",
305
         event_info, p->x, p->y, p->n);
306
   return EVAS_EVENT_FLAG_ON_HOLD;
307
}
308

309
static Evas_Event_Flags
310
triple_click_move(void *data , void *event_info)
311
{
312
   Elm_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);
315
   printf("Triple click move <%p> x,y=<%d,%d> count=<%d>\n",
316
         event_info, p->x, p->y, p->n);
317
   return EVAS_EVENT_FLAG_ON_HOLD;
318
}
319

320
static Evas_Event_Flags
321
triple_click_end(void *data , void *event_info)
322
{
323
   Elm_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);
326
   printf("Triple click ended <%p> x,y=<%d,%d> count=<%d>\n",
327
         event_info, p->x, p->y, p->n);
328
   return EVAS_EVENT_FLAG_ON_HOLD;
329
}
330

331
static Evas_Event_Flags
332
triple_click_abort(void *data , void *event_info)
333
{
334
   Elm_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

337
   printf("Triple click abort\n");
338
   return EVAS_EVENT_FLAG_ON_HOLD;
339
}
340

341
static Evas_Event_Flags
342
momentum_start(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, START_COLOR);
346

347
   printf("momentum started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n",
348
         p->x1, p->y1, p->tx, p->ty, p->n);
349
   return EVAS_EVENT_FLAG_ON_HOLD;
350
}
351

352
static Evas_Event_Flags
353
momentum_end(void *data , void *event_info)
354
{
355
   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
356
   _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, END_COLOR);
357
   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);
358
   return EVAS_EVENT_FLAG_ON_HOLD;
359
}
360

361
static Evas_Event_Flags
362
momentum_abort(void *data , void *event_info)
363
{
364
   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
365
   printf("momentum abort\n");
366
   _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, ABORT_COLOR);
367
   return EVAS_EVENT_FLAG_ON_HOLD;
368
}
369

370
static Evas_Event_Flags
371
momentum_move(void *data , void *event_info)
372
{
373
   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
374
   _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, MOVE_COLOR);
375
   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);
376
   return EVAS_EVENT_FLAG_ON_HOLD;
377
}
378

379
static Evas_Event_Flags
380
line_start(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, START_COLOR);
384

385
   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);
386
   return EVAS_EVENT_FLAG_ON_HOLD;
387
}
388

389
static Evas_Event_Flags
390
line_move(void *data , void *event_info)
391
{
392
   Elm_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);
394
   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);
395

396
   return EVAS_EVENT_FLAG_ON_HOLD;
397
}
398

399
static Evas_Event_Flags
400
line_end(void *data , void *event_info)
401
{
402
   Elm_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);
404
   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);
405
   return EVAS_EVENT_FLAG_ON_HOLD;
406
}
407

408
static Evas_Event_Flags
409
line_abort(void *data , void *event_info)
410
{
411
   Elm_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);
413
   printf("line abort\n");
414
   return EVAS_EVENT_FLAG_ON_HOLD;
415
}
416

417
static Evas_Event_Flags
418
flick_start(void *data , void *event_info)
419
{
420
   Elm_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

423
   printf("flick started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n",
424
         p->momentum.x1, p->momentum.y1, p->momentum.tx,
425
         p->momentum.ty, p->momentum.n);
426
   return EVAS_EVENT_FLAG_ON_HOLD;
427
}
428

429
static Evas_Event_Flags
430
flick_end(void *data , void *event_info)
431
{
432
   Elm_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

435
   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);
436
   return EVAS_EVENT_FLAG_ON_HOLD;
437
}
438

439
static Evas_Event_Flags
440
flick_abort(void *data , void *event_info)
441
{
442
   Elm_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);
444
   printf("flick abort\n");
445
   return EVAS_EVENT_FLAG_ON_HOLD;
446
}
447

448
static Evas_Event_Flags
449
zoom_start(void *data , void *event_info)
450
{
451
   Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
452
   _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, START_COLOR);
453
   printf("zoom started <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
454
         p->x, p->y, p->zoom, p->radius, p->momentum);
455
   return EVAS_EVENT_FLAG_ON_HOLD;
456
}
457

458
static Evas_Event_Flags
459
zoom_move(void *data , void *event_info)
460
{
461
   Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
462
   _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, MOVE_COLOR);
463
   printf("zoom move <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
464
         p->x, p->y, p->zoom, p->radius, p->momentum);
465
   return EVAS_EVENT_FLAG_ON_HOLD;
466
}
467

468
static Evas_Event_Flags
469
zoom_end(void *data , void *event_info)
470
{
471
   Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
472
   _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, END_COLOR);
473
   printf("zoom end <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n",
474
         p->x, p->y, p->zoom, p->radius, p->momentum);
475
   return EVAS_EVENT_FLAG_ON_HOLD;
476
}
477

478
static Evas_Event_Flags
479
zoom_abort(void *data , void *event_info EINA_UNUSED)
480
{
481
   printf("zoom abort\n");
482
   _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, ABORT_COLOR);
483
   return EVAS_EVENT_FLAG_ON_HOLD;
484
}
485

486
static Evas_Event_Flags
487
rotate_start(void *data , void *event_info)
488
{
489
   Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
490
   _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, START_COLOR);
491
   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);
492
   return EVAS_EVENT_FLAG_ON_HOLD;
493
}
494

495
static Evas_Event_Flags
496
rotate_move(void *data , void *event_info)
497
{
498
   Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
499
   _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, MOVE_COLOR);
500
   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);
501
   return EVAS_EVENT_FLAG_ON_HOLD;
502
}
503

504
static Evas_Event_Flags
505
rotate_end(void *data , void *event_info)
506
{
507
   Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info;
508
   _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, END_COLOR);
509
   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);
510
   return EVAS_EVENT_FLAG_ON_HOLD;
511
}
512

513
static Evas_Event_Flags
514
rotate_abort(void *data , void *event_info EINA_UNUSED)
515
{
516
   _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, ABORT_COLOR);
517
   printf("rotate abort\n");
518
   return EVAS_EVENT_FLAG_ON_HOLD;
519
}
520
/* END   - Callbacks for gestures */
521

522
Evas_Object *create_gesture_box(Evas_Object *win, icon_properties *icons,
523
      int idx, const char *name, const char *lb_txt)
524
{  /* Creates a box with icon and label, later placed in a table */
525
   Evas_Object *lb, *bx = elm_box_add(win);
526
   char buf[1024];
527

528
   elm_box_padding_set(bx, BX_PADDING_X, BX_PADDING_Y);
529
   icons[idx].icon = elm_icon_add(win);
530
   icons[idx].name = name;
531
   snprintf(buf, sizeof(buf), "%s/images/g_layer/%s_1.png",
532
         elm_app_data_dir_get(), icons[idx].name);
533
   elm_image_file_set(icons[idx].icon, buf, NULL);
534
   elm_image_resizable_set(icons[idx].icon, EINA_FALSE, EINA_FALSE);
535
   evas_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);
537
   elm_box_pack_end(bx, icons[idx].icon);
538
   evas_object_show(icons[idx].icon);
539

540
   lb = elm_label_add(win);
541
   elm_object_text_set(lb, lb_txt);
542
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
543
   evas_object_size_hint_align_set(lb, 0.5, 0.5);
544
   elm_box_pack_end(bx, lb);
545
   evas_object_show(lb);
546
   evas_object_show(bx);
547

548
   return bx;
549
}
550

551
void
552
test_gesture_layer2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
553
      void *event_info EINA_UNUSED)
554
{
555
   Evas_Object *win, *tb, *lb, *bx;
556
   Evas_Object *r; /* Gesture layer transparent object */
557
   Evas_Object *g; /* The Gesture Layer object */
558

559
   infra_data *infra = _infra_data_alloc();
560

561
   win = elm_win_util_standard_add("gesture-layer2", "Gesture Layer 2");
562
   elm_win_autodel_set(win, EINA_TRUE);
563
   evas_object_smart_callback_add(win, "delete,request", my_win_del, infra);
564

565
   /* START - Building icons table */
566
   bx = elm_box_add(win);
567
   tb = elm_table_add(win);
568
   elm_box_pack_end(bx, tb);
569
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
570
   evas_object_size_hint_align_set(tb, 0.5, 0.5);
571
   elm_win_resize_object_add(win, bx);
572
   evas_object_show(tb);
573
   evas_object_show(bx);
574

575
   /* Box of Tap icon and label */
576
   bx = create_gesture_box(win, infra->icons, 0, TAP_NAME, "Tap");
577
   elm_table_pack(tb, bx, 0, 0, 1, 1);
578

579
   /* Box of Double Tap icon and label */
580
   bx = create_gesture_box(win, infra->icons, 1, DOUBLE_TAP_NAME, "Double Tap");
581
   elm_table_pack(tb, bx, 1, 0, 1, 1);
582

583
   /* Box of Triple Tap icon and label */
584
   bx = create_gesture_box(win, infra->icons, 2, TRIPLE_TAP_NAME, "Triple Tap");
585
   elm_table_pack(tb, bx, 2, 0, 1, 1);
586

587
   /* Box of Long Tap icon and label */
588
   bx = create_gesture_box(win, infra->icons, 3, LONG_TAP_NAME, "Long Tap");
589
   elm_table_pack(tb, bx, 3, 0, 1, 1);
590

591
   /* Box of Momentum icon and label */
592
   bx = create_gesture_box(win, infra->icons, 4, MOMENTUM_NAME, "Momentum");
593
   elm_table_pack(tb, bx, 0, 2, 1, 1);
594

595
   /* Box of Line icon and label */
596
   bx = create_gesture_box(win, infra->icons, 5, LINE_NAME, "Line");
597
   elm_table_pack(tb, bx, 1, 2, 1, 1);
598

599
   /* Box of Flick icon and label */
600
   bx = create_gesture_box(win, infra->icons, 6, FLICK_NAME, "Flick");
601
   elm_table_pack(tb, bx, 2, 2, 1, 1);
602

603
   /* Box of Zoom icon and label */
604
   bx = create_gesture_box(win, infra->icons, 7, ZOOM_NAME, "Zoom");
605
   elm_table_pack(tb, bx, 0, 3, 1, 1);
606

607
   /* Box of Rotate icon and label */
608
   bx = create_gesture_box(win, infra->icons, 8, ROTATE_NAME, "Rotate");
609
   elm_table_pack(tb, bx, 1, 3, 1, 1);
610

611
   /* Legend of gestures - states */
612
   lb = elm_label_add(win);
613
   elm_object_text_set(lb, "<b>Gesture States</b>");
614
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
615
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
616
   elm_table_pack(tb, lb, 0, 6, 4, 2);
617
   evas_object_show(lb);
618

619
   r = evas_object_rectangle_add(evas_object_evas_get(win));
620
   evas_object_resize(r, 64, 64);
621
   evas_object_color_set(r, INI_R, INI_G, INI_B, INI_A);
622
   evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
623
   evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
624
   elm_table_pack(tb, r, 0, 7, 1, 1);
625
   evas_object_show(r);
626

627
   lb = elm_label_add(win);
628
   elm_object_text_set(lb, "Not Started");
629
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
630
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
631
   elm_table_pack(tb, lb, 1, 7, 3, 1);
632
   evas_object_show(lb);
633

634
   r = evas_object_rectangle_add(evas_object_evas_get(win));
635
   evas_object_resize(r, 64, 64);
636
   evas_object_color_set(r, START_COLOR);
637
   evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
638
   evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
639
   elm_table_pack(tb, r, 0, 8, 1, 1);
640
   evas_object_show(r);
641

642
   lb = elm_label_add(win);
643
   elm_object_text_set(lb, "Gesture START");
644
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
645
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
646
   elm_table_pack(tb, lb, 1, 8, 3, 1);
647
   evas_object_show(lb);
648

649
   r = evas_object_rectangle_add(evas_object_evas_get(win));
650
   evas_object_resize(r, 64, 64);
651
   evas_object_color_set(r, MOVE_COLOR);
652
   evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
653
   evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
654
   elm_table_pack(tb, r, 0, 9, 1, 1);
655
   evas_object_show(r);
656

657
   lb = elm_label_add(win);
658
   elm_object_text_set(lb, "Gesture MOVE");
659
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
660
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
661
   elm_table_pack(tb, lb, 1, 9, 3, 1);
662
   evas_object_show(lb);
663

664
   r = evas_object_rectangle_add(evas_object_evas_get(win));
665
   evas_object_resize(r, 64, 64);
666
   evas_object_color_set(r, END_COLOR);
667
   evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
668
   evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
669
   elm_table_pack(tb, r, 0, 10, 1, 1);
670
   evas_object_show(r);
671

672
   lb = elm_label_add(win);
673
   elm_object_text_set(lb, "Gesture END");
674
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
675
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
676
   elm_table_pack(tb, lb, 1, 10, 3, 1);
677
   evas_object_show(lb);
678

679
   r = evas_object_rectangle_add(evas_object_evas_get(win));
680
   evas_object_resize(r, 64, 64);
681
   evas_object_color_set(r, ABORT_COLOR);
682
   evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0);
683
   evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL);
684
   elm_table_pack(tb, r, 0, 11, 1, 1);
685
   evas_object_show(r);
686

687
   lb = elm_label_add(win);
688
   elm_object_text_set(lb, "Gesture ABORT");
689
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
690
   evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
691
   elm_table_pack(tb, lb, 1, 11, 3, 1);
692

693
   elm_table_padding_set(tb, TB_PADDING_X, TB_PADDING_Y);
694
   evas_object_show(lb);
695
   /* END   - Building icons table */
696

697
   /* Gesture layer transparent object */
698
   r = evas_object_rectangle_add(evas_object_evas_get(win));
699
   evas_object_move(r, 0, 0);
700
   evas_object_color_set(r, 0, 0, 0, 0);
701
   elm_win_resize_object_add(win, r);
702

703
   g = elm_gesture_layer_add(win);
704
   elm_gesture_layer_attach(g, r);
705
   evas_object_show(r);
706

707
   /* START - Setting gestures callbacks */
708
#if 1
709
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
710
         ELM_GESTURE_STATE_START, triple_click_start, infra);
711
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
712
         ELM_GESTURE_STATE_MOVE, triple_click_move, infra);
713
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
714
         ELM_GESTURE_STATE_END, triple_click_end, infra);
715
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS,
716
         ELM_GESTURE_STATE_ABORT, triple_click_abort, infra);
717
#endif
718

719
#if 1
720
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
721
         ELM_GESTURE_STATE_START, dbl_click_start, infra);
722
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
723
         ELM_GESTURE_STATE_MOVE, dbl_click_move, infra);
724
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
725
         ELM_GESTURE_STATE_END, dbl_click_end, infra);
726
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS,
727
         ELM_GESTURE_STATE_ABORT, dbl_click_abort, infra);
728
#endif
729

730
#if 1
731
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
732
         ELM_GESTURE_STATE_START, n_finger_tap_start, infra);
733
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
734
         ELM_GESTURE_STATE_END, n_finger_tap_end, infra);
735
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS,
736
         ELM_GESTURE_STATE_ABORT, n_finger_tap_abort, infra);
737
#endif
738

739
#if 1
740
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
741
         ELM_GESTURE_STATE_START, n_long_tap_start, infra);
742
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
743
         ELM_GESTURE_STATE_MOVE, n_long_tap_move, infra);
744
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
745
         ELM_GESTURE_STATE_END, n_long_tap_end, infra);
746
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS,
747
         ELM_GESTURE_STATE_ABORT, n_long_tap_abort, infra);
748
#endif
749

750
#if 1
751
   elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
752
         ELM_GESTURE_STATE_START, momentum_start, infra);
753
   elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
754
         ELM_GESTURE_STATE_END, momentum_end, infra);
755
   elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
756
         ELM_GESTURE_STATE_ABORT, momentum_abort, infra);
757
   elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM,
758
         ELM_GESTURE_STATE_MOVE, momentum_move, infra);
759
#endif
760

761
#if 1
762
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
763
         ELM_GESTURE_STATE_START, line_start, infra);
764
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
765
         ELM_GESTURE_STATE_MOVE, line_move, infra);
766
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
767
         ELM_GESTURE_STATE_END, line_end, infra);
768
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES,
769
         ELM_GESTURE_STATE_ABORT, line_abort, infra);
770
#endif
771

772
#if 1
773
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
774
         ELM_GESTURE_STATE_START, flick_start, infra);
775
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
776
         ELM_GESTURE_STATE_END, flick_end, infra);
777
   elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS,
778
         ELM_GESTURE_STATE_ABORT, flick_abort, infra);
779
#endif
780

781
#if 1
782
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
783
         ELM_GESTURE_STATE_START, zoom_start, infra);
784
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
785
         ELM_GESTURE_STATE_END, zoom_end, infra);
786
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
787
         ELM_GESTURE_STATE_ABORT, zoom_abort, infra);
788
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM,
789
         ELM_GESTURE_STATE_MOVE, zoom_move, infra);
790
   /* elm_gesture_layer_zoom_step_set(g, 0.2); */
791
#endif
792

793
#if 1
794
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
795
         ELM_GESTURE_STATE_START, rotate_start, infra);
796
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
797
         ELM_GESTURE_STATE_END, rotate_end, infra);
798
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
799
         ELM_GESTURE_STATE_ABORT, rotate_abort, infra);
800
   elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE,
801
         ELM_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 */
807
   infra->colortimer = ecore_timer_add(0.05, _icon_color_set_cb, infra->icons);
808

809
   evas_object_show(win);
810
}
811

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

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

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

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