efl

Форк
0
/
test_launcher.c 
924 строки · 30.9 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4
#include <Elementary.h>
5

6
static void
7
mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
8
{
9
   Evas_Object *win = data;
10
   Evas_Object *mb;
11
   Eina_List *mbs, *l;
12

13
   mbs = evas_object_data_get(win, "mbs");
14
   EINA_LIST_FOREACH(mbs, l, mb)
15
     {
16
        if (elm_mapbuf_enabled_get(mb))
17
          elm_mapbuf_enabled_set(mb, EINA_FALSE);
18
        else
19
          elm_mapbuf_enabled_set(mb, EINA_TRUE);
20
     }
21
}
22

23
static void
24
full_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
25
{
26
   Evas_Object *win = data;
27
   elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win));
28
}
29

30
static void
31
alpha_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
32
{
33
   Evas_Object *win = data;
34
   Evas_Object *mb;
35
   Eina_List *mbs, *l;
36

37
   mbs = evas_object_data_get(win, "mbs");
38
   EINA_LIST_FOREACH(mbs, l, mb)
39
     {
40
        elm_mapbuf_alpha_set(mb, elm_check_state_get(obj));
41
     }
42
}
43

44
static void
45
smooth_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
46
{
47
   Evas_Object *win = data;
48
   Evas_Object *mb;
49
   Eina_List *mbs, *l;
50

51
   mbs = evas_object_data_get(win, "mbs");
52
   EINA_LIST_FOREACH(mbs, l, mb)
53
     {
54
        elm_mapbuf_smooth_set(mb, elm_check_state_get(obj));
55
     }
56
}
57

58
static void
59
close_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
60
{
61
   evas_object_del(data);
62
}
63

64
static Eina_Bool
65
tim_cb(void *data)
66
{
67
   Evas_Object *tb, *sc, *mb;
68
   Eina_List *list, *l;
69

70
   evas_object_data_del(data, "timer");
71
   tb = evas_object_data_get(data, "tb");
72
   sc = evas_object_data_get(data, "sc");
73
   elm_object_scroll_freeze_push(sc);
74
   evas_object_data_set(data, "dragging", (void *)(long)(1));
75
   evas_object_color_set(data, 255, 255, 255, 255);
76
   list = (Eina_List *)evas_object_data_get
77
      (elm_object_top_widget_get(data), "mbs");
78
   EINA_LIST_FOREACH(list, l, mb)
79
      evas_object_color_set(mb, 128, 128, 128, 128);
80
   elm_table_unpack(tb, data);
81
   return EINA_FALSE;
82
}
83

84
static void
85
ic_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
86
{
87
   Ecore_Timer *tim;
88

89
   tim = evas_object_data_get(obj, "timer");
90
   if (tim)
91
     {
92
        evas_object_data_del(obj, "timer");
93
        ecore_timer_del(tim);
94
     }
95
}
96

97
static void
98
ic_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
99
{
100
   Evas_Event_Mouse_Down *ev = event_info;
101
   Ecore_Timer *tim;
102
   Evas_Coord x, y, w, h;
103

104
   evas_object_color_set(data, 128, 0, 0, 128);
105

106
   tim = evas_object_data_get(obj, "timer");
107
   if (tim) evas_object_data_del(obj, "timer");
108
   tim = ecore_timer_add(1.0, tim_cb, obj);
109
   evas_object_data_set(obj, "timer", tim);
110

111
   evas_object_geometry_get(data, &x, &y, &w, &h);
112
   evas_object_data_set(obj, "x", (void *)(uintptr_t)(ev->canvas.x));
113
   evas_object_data_set(obj, "y", (void *)(uintptr_t)(ev->canvas.y));
114
   evas_object_data_set(obj, "px", (void *)(uintptr_t)(x));
115
   evas_object_data_set(obj, "py", (void *)(uintptr_t)(y));
116

117
   if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
118
     {
119
        printf("double click %p\n", obj);
120
     }
121
}
122

123
static void
124
ic_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
125
{
126
   Evas_Event_Mouse_Up *ev = event_info;
127
   Ecore_Timer *tim;
128

129
   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
130
   evas_object_color_set(data, 255, 255, 255, 255);
131
   tim = evas_object_data_get(obj, "timer");
132
   if (tim)
133
     {
134
        evas_object_data_del(obj, "timer");
135
        ecore_timer_del(tim);
136
     }
137
   if (evas_object_data_get(obj, "dragging"))
138
     {
139
        Evas_Object *tb, *sc, *mb;
140
        Eina_List *list, *l;
141
        int tbx, tby;
142

143
        evas_object_data_del(obj, "dragging");
144
        tb = evas_object_data_get(obj, "tb");
145
        sc = evas_object_data_get(obj, "sc");
146
        elm_object_scroll_freeze_pop(sc);
147
        tbx = (int)(uintptr_t)evas_object_data_get(obj, "tbx");
148
        tby = (int)(uintptr_t)evas_object_data_get(obj, "tby");
149
        elm_table_pack(tb, obj, tbx, tby, 1, 1);
150
        list = (Eina_List *)evas_object_data_get
151
           (elm_object_top_widget_get(obj), "mbs");
152
        EINA_LIST_FOREACH(list, l, mb)
153
           evas_object_color_set(mb, 255, 255, 255, 255);
154
     }
155
}
156

157
static void
158
ic_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
159
{
160
   Evas_Event_Mouse_Move *ev = event_info;
161
   if (evas_object_data_get(obj, "dragging"))
162
     {
163
        Evas_Coord x, y, px, py;
164

165
        x = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "x");
166
        y = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "y");
167
        px = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "px");
168
        py = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "py");
169
        evas_object_move(obj,
170
                         px + ev->cur.canvas.x - x,
171
                         py + ev->cur.canvas.y - y);
172
    }
173
   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
174
     {
175
        Ecore_Timer *tim;
176

177
        tim = evas_object_data_get(obj, "timer");
178
        if (tim)
179
          {
180
             evas_object_data_del(obj, "timer");
181
             ecore_timer_del(tim);
182
          }
183
        evas_object_color_set(data, 255, 255, 255, 255);
184
        return;
185
     }
186
}
187

188
void
189
test_launcher(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
190
{
191
   Evas_Object *win, *bg, *sc, *tb, *pad, *bt, *ic, *lb, *tb2, *mb, *ck, *bx, *bx2;
192
   int i, j, k, n, m;
193
   char buf[PATH_MAX];
194
   const char *names[] =
195
     {
196
        "Hello",    "World",    "Spam",  "Egg",
197
        "Ham",      "Good",     "Bad",   "Milk",
198
        "Smell",    "Of",       "Sky",   "Gold",
199
        "Hole",     "Pig",      "And",   "Calm"
200
     };
201
   Eina_List *mbs = NULL;
202

203
   win = elm_win_add(NULL, "launcher", ELM_WIN_BASIC);
204
   elm_win_title_set(win, "Launcher");
205
   elm_win_autodel_set(win, EINA_TRUE);
206

207
   bg = elm_bg_add(win);
208
   snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
209
   elm_bg_file_set(bg, buf, NULL);
210
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
211
   elm_win_resize_object_add(win, bg);
212
   evas_object_show(bg);
213

214
   bx = elm_box_add(win);
215
   elm_box_homogeneous_set(bx, EINA_TRUE);
216
   elm_box_horizontal_set(bx, EINA_TRUE);
217

218
   sc = elm_scroller_add(win);
219
   elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
220
   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
221
   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
222
   evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
223

224
   n = 0; m = 0;
225
   for (k = 0 ; k < 8; k++)
226
     {
227
        tb = elm_table_add(win);
228
        evas_object_size_hint_weight_set(tb, 0.0, 0.0);
229
        evas_object_size_hint_align_set(tb, 0.5, 0.5);
230

231
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
232
        evas_object_size_hint_min_set(pad, 470, 4);
233
        evas_object_size_hint_weight_set(pad, 0.0, 0.0);
234
        evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
235
        elm_table_pack(tb, pad, 1, 0, 5, 1);
236

237
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
238
        evas_object_size_hint_min_set(pad, 470, 4);
239
        evas_object_size_hint_weight_set(pad, 0.0, 0.0);
240
        evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
241
        elm_table_pack(tb, pad, 1, 11, 5, 1);
242

243
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
244
        evas_object_size_hint_min_set(pad, 4, 4);
245
        evas_object_size_hint_weight_set(pad, 0.0, 0.0);
246
        evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
247
        elm_table_pack(tb, pad, 0, 1, 1, 10);
248

249
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
250
        evas_object_size_hint_min_set(pad, 4, 4);
251
        evas_object_size_hint_weight_set(pad, 0.0, 0.0);
252
        evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
253
        elm_table_pack(tb, pad, 6, 1, 1, 10);
254

255
        mb = elm_mapbuf_add(win);
256
        elm_object_content_set(mb, tb);
257
        evas_object_show(tb);
258

259
        for (j = 0; j < 5; j++)
260
          {
261
             for (i = 0; i < 5; i++)
262
               {
263
                  ic = elm_icon_add(win);
264
                  elm_object_scale_set(ic, 0.5);
265
                  snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
266
                  elm_image_file_set(ic, buf, NULL);
267
                  elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
268
                  evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
269
                  evas_object_size_hint_align_set(ic, 0.5, 0.5);
270
                  elm_table_pack(tb, ic, 1 + i, 1 + (j * 2), 1, 1);
271
                  evas_object_show(ic);
272

273
                  lb = elm_label_add(win);
274
                  elm_object_style_set(lb, "marker");
275
                  elm_object_text_set(lb, names[m]);
276
                  evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
277
                  evas_object_size_hint_align_set(lb, 0.5, 0.5);
278
                  elm_table_pack(tb, lb, 1 + i, 1 + (j * 2) + 1, 1, 1);
279
                  evas_object_show(lb);
280

281
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_DEL, ic_del_cb, ic);
282

283
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_DOWN, ic_down_cb, ic);
284
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_UP,   ic_up_cb,   ic);
285
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_MOVE, ic_move_cb, ic);
286

287
                  evas_object_data_set(ic, "lb", lb);
288
                  evas_object_data_set(ic, "tb", tb);
289
                  evas_object_data_set(ic, "sc", sc);
290
                  evas_object_data_set(ic, "bx", bx);
291
                  evas_object_data_set(ic, "mb", mb);
292
                  evas_object_data_set(ic, "tbx", (void *)(uintptr_t)(1 + i));
293
                  evas_object_data_set(ic, "tby", (void *)(uintptr_t)(1 + (j * 2)));
294

295
                  n++; if (n > 23) n = 0;
296
                  m++; if (m > 15) m = 0;
297
               }
298
          }
299

300
        elm_box_pack_end(bx, mb);
301
        evas_object_show(mb);
302

303
        mbs = eina_list_append(mbs, mb);
304
     }
305

306
   // fixme: free mbs
307
   evas_object_data_set(win, "mbs", mbs);
308

309
   bx2 = elm_box_add(win);
310
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
311
   elm_box_horizontal_set(bx2, EINA_FALSE);
312
   elm_win_resize_object_add(win, bx2);
313
   evas_object_show(bx2);
314

315
   elm_object_content_set(sc, bx);
316
   evas_object_show(bx);
317

318
   elm_scroller_page_relative_set(sc, 1.0, 1.0);
319
   evas_object_show(sc);
320

321
   tb2 = elm_table_add(win);
322
   evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, 0.0);
323
   evas_object_size_hint_fill_set(tb2, EVAS_HINT_FILL, EVAS_HINT_FILL);
324
   elm_box_pack_end(bx2, tb2);
325

326
   elm_box_pack_end(bx2, sc);
327

328
   ck = elm_check_add(win);
329
   elm_object_text_set(ck, "Map");
330
   elm_check_state_set(ck, EINA_FALSE);
331
   evas_object_smart_callback_add(ck, "changed", mode_cb, win);
332
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
333
   evas_object_size_hint_align_set(ck, 0.05, 0.99);
334
   elm_table_pack(tb2, ck, 0, 0, 1, 1);
335
   evas_object_show(ck);
336

337
   ck = elm_check_add(win);
338
   elm_object_text_set(ck, "A");
339
   elm_check_state_set(ck, EINA_TRUE);
340
   evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
341
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
342
   evas_object_size_hint_align_set(ck, 0.20, 0.99);
343
   elm_table_pack(tb2, ck, 1, 0, 1, 1);
344
   evas_object_show(ck);
345

346
   ck = elm_check_add(win);
347
   elm_object_text_set(ck, "Smo");
348
   elm_check_state_set(ck, EINA_TRUE);
349
   evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
350
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
351
   evas_object_size_hint_align_set(ck, 0.40, 0.99);
352
   elm_table_pack(tb2, ck, 2, 0, 1, 1);
353
   evas_object_show(ck);
354

355
   ck = elm_check_add(win);
356
   elm_object_text_set(ck, "FS");
357
   elm_check_state_set(ck, EINA_FALSE);
358
   evas_object_smart_callback_add(ck, "changed", full_cb, win);
359
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
360
   evas_object_size_hint_align_set(ck, 0.5, 0.99);
361
   elm_table_pack(tb2, ck, 3, 0, 1, 1);
362
   evas_object_show(ck);
363

364
   bt = elm_button_add(win);
365
   elm_object_text_set(bt, "Close");
366
   evas_object_smart_callback_add(bt, "clicked", close_cb, win);
367
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
368
   evas_object_size_hint_align_set(bt, 0.95, 0.99);
369
   elm_table_pack(tb2, bt, 4, 0, 1, 1);
370
   evas_object_show(bt);
371

372
   evas_object_show(tb2);
373

374
   evas_object_resize(win, 480 * elm_config_scale_get(),
375
                           400 * elm_config_scale_get());
376
   evas_object_show(win);
377
}
378

379
void
380
test_launcher2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
381
{
382
   Evas_Object *win, *bg, *sc, *bt, *tb2, *mb, *ck, *bx, *ly;
383
   int k;
384
   char buf[PATH_MAX];
385
   Eina_List *mbs = NULL;
386

387
   win = elm_win_add(NULL, "launcher2", ELM_WIN_BASIC);
388
   elm_win_title_set(win, "Launcher 2");
389
   elm_win_autodel_set(win, EINA_TRUE);
390

391
   bg = elm_bg_add(win);
392
   snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
393
   elm_bg_file_set(bg, buf, NULL);
394
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
395
   elm_win_resize_object_add(win, bg);
396
   evas_object_show(bg);
397

398
   bx = elm_box_add(win);
399
   elm_box_homogeneous_set(bx, EINA_TRUE);
400
   elm_box_horizontal_set(bx, EINA_TRUE);
401

402
   for (k = 0 ; k < 8; k++)
403
     {
404
        ly = elm_layout_add(win);
405
        snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
406
        elm_layout_file_set(ly, buf, "layout");
407
        evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
408

409
        bt = elm_button_add(win);
410
        elm_object_text_set(bt, "Button 1");
411
        elm_object_part_content_set(ly, "element1", bt);
412
        evas_object_show(bt);
413

414
        bt = elm_button_add(win);
415
        elm_object_text_set(bt, "Button 2");
416
        elm_object_part_content_set(ly, "element2", bt);
417
        evas_object_show(bt);
418

419
        bt = elm_button_add(win);
420
        elm_object_text_set(bt, "Button 3");
421
        elm_object_part_content_set(ly, "element3", bt);
422
        evas_object_show(bt);
423

424
        mb = elm_mapbuf_add(win);
425
        elm_object_content_set(mb, ly);
426
        evas_object_show(ly);
427

428
        elm_box_pack_end(bx, mb);
429
        evas_object_show(mb);
430

431
        mbs = eina_list_append(mbs, mb);
432
     }
433

434
   // fixme: free mbs
435
   evas_object_data_set(win, "mbs", mbs);
436

437
   sc = elm_scroller_add(win);
438
   elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
439
   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
440
   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
441
   elm_win_resize_object_add(win, sc);
442

443
   elm_object_content_set(sc, bx);
444
   evas_object_show(bx);
445

446
   //content size of one page is 550 x 410
447
   elm_scroller_page_size_set(sc, 555, 410);
448
   evas_object_show(sc);
449

450
   tb2 = elm_table_add(win);
451
   evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
452
   elm_win_resize_object_add(win, tb2);
453

454
   ck = elm_check_add(win);
455
   elm_object_text_set(ck, "Map");
456
   elm_check_state_set(ck, EINA_FALSE);
457
   evas_object_smart_callback_add(ck, "changed", mode_cb, win);
458
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
459
   evas_object_size_hint_align_set(ck, 0.05, 0.99);
460
   elm_table_pack(tb2, ck, 0, 0, 1, 1);
461
   evas_object_show(ck);
462

463
   ck = elm_check_add(win);
464
   elm_object_text_set(ck, "A");
465
   elm_check_state_set(ck, EINA_TRUE);
466
   evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
467
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
468
   evas_object_size_hint_align_set(ck, 0.20, 0.99);
469
   elm_table_pack(tb2, ck, 1, 0, 1, 1);
470
   evas_object_show(ck);
471

472
   ck = elm_check_add(win);
473
   elm_object_text_set(ck, "Smo");
474
   elm_check_state_set(ck, EINA_TRUE);
475
   evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
476
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
477
   evas_object_size_hint_align_set(ck, 0.40, 0.99);
478
   elm_table_pack(tb2, ck, 2, 0, 1, 1);
479
   evas_object_show(ck);
480

481
   ck = elm_check_add(win);
482
   elm_object_text_set(ck, "FS");
483
   elm_check_state_set(ck, EINA_FALSE);
484
   evas_object_smart_callback_add(ck, "changed", full_cb, win);
485
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
486
   evas_object_size_hint_align_set(ck, 0.5, 0.99);
487
   elm_table_pack(tb2, ck, 3, 0, 1, 1);
488
   evas_object_show(ck);
489

490
   bt = elm_button_add(win);
491
   elm_object_text_set(bt, "Close");
492
   evas_object_smart_callback_add(bt, "clicked", close_cb, win);
493
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
494
   evas_object_size_hint_align_set(bt, 0.95, 0.99);
495
   elm_table_pack(tb2, bt, 4, 0, 1, 1);
496
   evas_object_show(bt);
497

498
   evas_object_show(tb2);
499

500
   evas_object_resize(win, 555 * elm_config_scale_get(),
501
                           410 * elm_config_scale_get());
502
   evas_object_show(win);
503
}
504

505
static void
506
l3_mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
507
{
508
   Evas_Object *win = data;
509
   Evas_Object *mb;
510
   Eina_List *mbs, *l;
511

512
   mbs = evas_object_data_get(win, "mbs");
513
   EINA_LIST_FOREACH(mbs, l, mb)
514
     {
515
        if (elm_mapbuf_enabled_get(mb))
516
          elm_mapbuf_enabled_set(mb, EINA_FALSE);
517
        else
518
          elm_mapbuf_enabled_set(mb, EINA_TRUE);
519
     }
520
}
521

522
static void
523
l3_full_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
524
{
525
   Evas_Object *win = data;
526
   elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win));
527
}
528

529
static void
530
l3_alpha_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
531
{
532
   Evas_Object *win = data;
533
   Evas_Object *mb;
534
   Eina_List *mbs, *l;
535

536
   mbs = evas_object_data_get(win, "mbs");
537
   EINA_LIST_FOREACH(mbs, l, mb)
538
     {
539
        elm_mapbuf_alpha_set(mb, elm_check_state_get(obj));
540
     }
541
}
542

543
static void
544
l3_smooth_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
545
{
546
   Evas_Object *win = data;
547
   Evas_Object *mb;
548
   Eina_List *mbs, *l;
549

550
   mbs = evas_object_data_get(win, "mbs");
551
   EINA_LIST_FOREACH(mbs, l, mb)
552
     {
553
        elm_mapbuf_smooth_set(mb, elm_check_state_get(obj));
554
     }
555
}
556

557
static void
558
l3_hidden_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
559
{
560
   Evas_Object *win = data;
561
   Evas_Object *mb;
562
   Eina_List *mbs, *l;
563

564
   mbs = evas_object_data_get(win, "mbs");
565
   EINA_LIST_FOREACH(mbs, l, mb)
566
     {
567
        if (evas_object_visible_get(mb)) evas_object_hide(mb);
568
        else evas_object_show(mb);
569
     }
570
}
571

572
static void
573
l3_close_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
574
{
575
   evas_object_del(data);
576
}
577

578
static Eina_Bool
579
l3_tim_cb(void *data)
580
{
581
   Evas_Object *ly, *ly2, *sc, *mb;
582
   Eina_List *list, *l;
583
   char buf[256];
584
   int slx, sly;
585

586
   evas_object_data_del(data, "timer");
587
   ly = evas_object_data_get(data, "ly");
588
   ly2 = evas_object_data_get(data, "ly2");
589
   sc = evas_object_data_get(data, "sc");
590
   elm_object_scroll_freeze_push(sc);
591
   evas_object_data_set(data, "dragging", (void *)(long)1);
592
   evas_object_color_set(data, 255, 255, 255, 255);
593
   list = (Eina_List *)evas_object_data_get
594
      (elm_object_top_widget_get(data), "mbs");
595
   EINA_LIST_FOREACH(list, l, mb)
596
      evas_object_color_set(mb, 128, 128, 128, 128);
597
   slx = (int)(uintptr_t)evas_object_data_get(data, "slx");
598
   sly = (int)(uintptr_t)evas_object_data_get(data, "sly");
599
   snprintf(buf, sizeof(buf), "slot.%i.%i", slx, sly);
600
   elm_object_part_content_unset(ly, buf);
601
   elm_layout_signal_emit(ly2, "drag", "app");
602
   return EINA_FALSE;
603
}
604

605
static void
606
l3_ic_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
607
{
608
   Ecore_Timer *tim;
609

610
   tim = evas_object_data_get(obj, "timer");
611
   if (tim)
612
     {
613
        evas_object_data_del(obj, "timer");
614
        ecore_timer_del(tim);
615
     }
616
}
617

618
static void
619
l3_ic_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
620
{
621
   Evas_Event_Mouse_Down *ev = event_info;
622
   Ecore_Timer *tim;
623
   Evas_Coord x, y, w, h;
624
   Evas_Object *ly2;
625

626
   tim = evas_object_data_get(obj, "timer");
627
   if (tim) evas_object_data_del(obj, "timer");
628
   tim = ecore_timer_add(1.0, l3_tim_cb, obj);
629
   evas_object_data_set(obj, "timer", tim);
630

631
   ly2 = evas_object_data_get(obj, "ly2");
632
   evas_object_geometry_get(ly2, &x, &y, &w, &h);
633
   evas_object_data_set(obj, "x", (void *)(uintptr_t)(ev->canvas.x));
634
   evas_object_data_set(obj, "y", (void *)(uintptr_t)(ev->canvas.y));
635
   evas_object_data_set(obj, "px", (void *)(uintptr_t)(x));
636
   evas_object_data_set(obj, "py", (void *)(uintptr_t)(y));
637

638
   elm_layout_signal_emit(ly2, "click", "app");
639

640
   if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
641
     {
642
        printf("double click %p\n", obj);
643
     }
644
}
645

646
static void
647
l3_ic_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
648
{
649
   Evas_Event_Mouse_Up *ev = event_info;
650
   Ecore_Timer *tim;
651
   Evas_Object *ly2;
652

653
   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
654

655
   ly2 = evas_object_data_get(obj, "ly2");
656
   tim = evas_object_data_get(obj, "timer");
657
   if (tim)
658
     {
659
        evas_object_data_del(obj, "timer");
660
        ecore_timer_del(tim);
661
     }
662
   if (evas_object_data_get(obj, "dragging"))
663
     {
664
        Evas_Object *ly, *sc, *mb;
665
        Eina_List *list, *l;
666
        int slx, sly;
667
        char buf[256];
668

669
        evas_object_data_del(obj, "dragging");
670
        ly = evas_object_data_get(obj, "ly");
671
        sc = evas_object_data_get(obj, "sc");
672
        elm_object_scroll_freeze_pop(sc);
673
        slx = (int)(uintptr_t)evas_object_data_get(obj, "slx");
674
        sly = (int)(uintptr_t)evas_object_data_get(obj, "sly");
675
        snprintf(buf, sizeof(buf), "slot.%i.%i", slx, sly);
676
        elm_object_part_content_set(ly, buf, ly2);
677
        list = (Eina_List *)evas_object_data_get
678
           (elm_object_top_widget_get(obj), "mbs");
679
        EINA_LIST_FOREACH(list, l, mb)
680
           evas_object_color_set(mb, 255, 255, 255, 255);
681
        elm_layout_signal_emit(ly2, "drop", "app");
682
     }
683
   else
684
      elm_layout_signal_emit(ly2, "unclick", "app");
685
}
686

687
static void
688
l3_ic_move_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
689
{
690
   Evas_Event_Mouse_Move *ev = event_info;
691
   Evas_Object *ly2;
692

693
   ly2 = evas_object_data_get(obj, "ly2");
694

695
   if (evas_object_data_get(obj, "dragging"))
696
     {
697
        Evas_Coord x, y, px, py;
698

699
        x = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "x");
700
        y = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "y");
701
        px = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "px");
702
        py = (Evas_Coord)(uintptr_t)evas_object_data_get(obj, "py");
703
        evas_object_move(ly2,
704
                         px + ev->cur.canvas.x - x,
705
                         py + ev->cur.canvas.y - y);
706
    }
707
   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
708
     {
709
        Ecore_Timer *tim;
710

711
        tim = evas_object_data_get(obj, "timer");
712
        if (tim)
713
          {
714
             evas_object_data_del(obj, "timer");
715
             ecore_timer_del(tim);
716
          }
717
        elm_layout_signal_emit(ly2, "cancel", "app");
718
        return;
719
     }
720
}
721

722
void
723
test_launcher3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
724
{
725
   Evas_Object *win, *bg, *sc, *tb, *pad, *bt, *ic, *tb2, *mb, *ck, *bx, *bx2, *ly, *ly2;
726
   int i, j, k, n, m;
727
   char buf[PATH_MAX];
728
   const char *names[] =
729
     {
730
        "Hello",    "World",    "Spam",  "Egg",
731
        "Ham",      "Good",     "Bad",   "Milk",
732
        "Smell",    "Of",       "Sky",   "Gold",
733
        "Hole",     "Pig",      "And",   "Calm"
734
     };
735
   Eina_List *mbs = NULL;
736

737
   win = elm_win_add(NULL, "launcher", ELM_WIN_BASIC);
738
   elm_win_title_set(win, "Launcher");
739
   elm_win_autodel_set(win, EINA_TRUE);
740

741
   bg = elm_bg_add(win);
742
   snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
743
   elm_bg_file_set(bg, buf, NULL);
744
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
745
   elm_win_resize_object_add(win, bg);
746
   evas_object_show(bg);
747

748
   bx = elm_box_add(win);
749
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
750
   evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
751
   elm_box_homogeneous_set(bx, EINA_TRUE);
752
   elm_box_horizontal_set(bx, EINA_TRUE);
753

754
   sc = elm_scroller_add(win);
755
   elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
756
   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
757
   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
758
   evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
759

760
   n = 0; m = 0;
761
   for (k = 0 ; k < 8; k++)
762
     {
763
        tb = elm_table_add(win);
764
        evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
765
        evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
766

767
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
768
        evas_object_size_hint_min_set(pad, 450, 10);
769
        elm_table_pack(tb, pad, 1, 0, 1, 1);
770

771
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
772
        evas_object_size_hint_min_set(pad, 450, 10);
773
        elm_table_pack(tb, pad, 1, 2, 1, 1);
774

775
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
776
        evas_object_size_hint_min_set(pad, 10, 450);
777
        elm_table_pack(tb, pad, 0, 1, 1, 1);
778

779
        pad = evas_object_rectangle_add(evas_object_evas_get(win));
780
        evas_object_size_hint_min_set(pad, 10, 450);
781
        elm_table_pack(tb, pad, 2, 1, 1, 1);
782

783
        mb = elm_mapbuf_add(win);
784
        mbs = eina_list_append(mbs, mb);
785

786
        elm_object_content_set(mb, tb);
787
        evas_object_show(tb);
788
        elm_box_pack_end(bx, mb);
789
        evas_object_show(mb);
790

791
        ly = elm_layout_add(win);
792
        snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
793
        elm_layout_file_set(ly, buf, "launcher_page");
794
        evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
795
        evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
796
        elm_table_pack(tb, ly, 1, 1, 1, 1);
797
        evas_object_show(ly);
798

799
        for (j = 0; j < 4; j++)
800
          {
801
             for (i = 0; i < 4; i++)
802
               {
803
                  ly2 = elm_layout_add(win);
804
                  snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
805
                  elm_layout_file_set(ly2, buf, "launcher_icon");
806
                  evas_object_size_hint_weight_set(ly2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
807
                  evas_object_size_hint_align_set(ly2, EVAS_HINT_FILL, EVAS_HINT_FILL);
808
                  elm_layout_text_set(ly2, "label", names[m]);
809

810
                  ic = elm_icon_add(win);
811
                  elm_object_scale_set(ic, 0.5);
812
                  snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
813
                  elm_image_file_set(ic, buf, NULL);
814
                  elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
815
                  evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
816
                  evas_object_size_hint_align_set(ic, 0.5, 0.5);
817
                  elm_object_part_content_set(ly2, "slot", ic);
818
                  evas_object_show(ic);
819

820
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_DEL, l3_ic_del_cb, ic);
821

822
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_DOWN, l3_ic_down_cb, ic);
823
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_UP,   l3_ic_up_cb,   ic);
824
                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_MOVE, l3_ic_move_cb, ic);
825

826
                  evas_object_data_set(ic, "ly", ly);
827
                  evas_object_data_set(ic, "ly2", ly2);
828
                  evas_object_data_set(ic, "sc", sc);
829
                  evas_object_data_set(ic, "bx", bx);
830
                  evas_object_data_set(ic, "mb", mb);
831
                  evas_object_data_set(ic, "slx", (void *)(uintptr_t)(i));
832
                  evas_object_data_set(ic, "sly", (void *)(uintptr_t)(j));
833

834
                  snprintf(buf, sizeof(buf), "slot.%i.%i", i, j);
835
                  elm_object_part_content_set(ly, buf, ly2);
836
                  evas_object_show(ly2);
837

838
                  n++; if (n > 23) n = 0;
839
                  m++; if (m > 15) m = 0;
840
               }
841
          }
842
     }
843

844
   // fixme: free mbs
845
   evas_object_data_set(win, "mbs", mbs);
846

847
   bx2 = elm_box_add(win);
848
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
849
   elm_box_horizontal_set(bx2, EINA_FALSE);
850
   elm_win_resize_object_add(win, bx2);
851
   evas_object_show(bx2);
852

853
   elm_object_content_set(sc, bx);
854
   evas_object_show(bx);
855

856
   elm_scroller_page_relative_set(sc, 1.0, 1.0);
857
   evas_object_show(sc);
858

859
   tb2 = elm_table_add(win);
860
   evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, 0.0);
861
   evas_object_size_hint_fill_set(tb2, EVAS_HINT_FILL, EVAS_HINT_FILL);
862
   elm_box_pack_end(bx2, tb2);
863

864
   elm_box_pack_end(bx2, sc);
865

866
   ck = elm_check_add(win);
867
   elm_object_text_set(ck, "Map");
868
   elm_check_state_set(ck, EINA_FALSE);
869
   evas_object_smart_callback_add(ck, "changed", l3_mode_cb, win);
870
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
871
   evas_object_size_hint_align_set(ck, 0.05, 0.99);
872
   elm_table_pack(tb2, ck, 0, 0, 1, 1);
873
   evas_object_show(ck);
874

875
   ck = elm_check_add(win);
876
   elm_object_text_set(ck, "A");
877
   elm_check_state_set(ck, EINA_TRUE);
878
   evas_object_smart_callback_add(ck, "changed", l3_alpha_cb, win);
879
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
880
   evas_object_size_hint_align_set(ck, 0.20, 0.99);
881
   elm_table_pack(tb2, ck, 1, 0, 1, 1);
882
   evas_object_show(ck);
883

884
   ck = elm_check_add(win);
885
   elm_object_text_set(ck, "Smo");
886
   elm_check_state_set(ck, EINA_TRUE);
887
   evas_object_smart_callback_add(ck, "changed", l3_smooth_cb, win);
888
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
889
   evas_object_size_hint_align_set(ck, 0.40, 0.99);
890
   elm_table_pack(tb2, ck, 2, 0, 1, 1);
891
   evas_object_show(ck);
892

893
   ck = elm_check_add(win);
894
   elm_object_text_set(ck, "FS");
895
   elm_check_state_set(ck, EINA_FALSE);
896
   evas_object_smart_callback_add(ck, "changed", l3_full_cb, win);
897
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
898
   evas_object_size_hint_align_set(ck, 0.5, 0.99);
899
   elm_table_pack(tb2, ck, 3, 0, 1, 1);
900
   evas_object_show(ck);
901

902
   ck = elm_check_add(win);
903
   elm_object_text_set(ck, "Hid");
904
   elm_check_state_set(ck, EINA_FALSE);
905
   evas_object_smart_callback_add(ck, "changed", l3_hidden_cb, win);
906
   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
907
   evas_object_size_hint_align_set(ck, 0.5, 0.99);
908
   elm_table_pack(tb2, ck, 4, 0, 1, 1);
909
   evas_object_show(ck);
910

911
   bt = elm_button_add(win);
912
   elm_object_text_set(bt, "Close");
913
   evas_object_smart_callback_add(bt, "clicked", l3_close_cb, win);
914
   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
915
   evas_object_size_hint_align_set(bt, 0.95, 0.99);
916
   elm_table_pack(tb2, bt, 5, 0, 1, 1);
917
   evas_object_show(bt);
918

919
   evas_object_show(tb2);
920

921
   evas_object_resize(win, 480 * elm_config_scale_get(),
922
                           400 * elm_config_scale_get());
923
   evas_object_show(win);
924
}
925

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

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

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

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