efl

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

6
typedef struct
7
{
8
   Evas_Object *web;
9
   Evas_Object *btn_back;
10
   Evas_Object *btn_fwd;
11
   Evas_Object *url_entry;
12
   Evas_Object *bx;
13
   Evas_Object *hoversel;
14
   Eina_List *sub_wins;
15
   Eina_Bool js_hooks : 1;
16
} Web_Test;
17

18
static void
19
_btn_back_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
20
{
21
   Evas_Object *web = data;
22

23
   elm_web_back(web);
24
}
25

26
static void
27
_btn_fwd_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
28
{
29
   Evas_Object *web = data;
30

31
   elm_web_forward(web);
32
}
33

34
static void
35
_btn_reload_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
36
{
37
   Evas_Object *web = data;
38

39
   elm_web_reload(web);
40
}
41

42
static void
43
_url_entry_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
44
{
45
   Evas_Object *web = data;
46
   const char *url = elm_object_text_get(obj);
47

48
   elm_web_url_set(web, url);
49
}
50

51
static void
52
_toggle_inwin_mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
53
{
54
   elm_web_inwin_mode_set(data, !elm_web_inwin_mode_get(data));
55
}
56

57
static void
58
_title_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
59
{
60
   char buf[512];
61
   snprintf(buf, sizeof(buf), "Web - %s", (const char *)event_info);
62
   elm_win_title_set(data, buf);
63
}
64

65
static void
66
_url_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
67
{
68
   Web_Test *wt = data;
69

70
   elm_object_text_set(wt->url_entry, event_info);
71

72
   elm_object_disabled_set(wt->btn_back, !elm_web_back_possible_get(wt->web));
73
   elm_object_disabled_set(wt->btn_fwd, !elm_web_forward_possible_get(wt->web));
74
}
75

76
static void
77
_new_win_del_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
78
{
79
   Web_Test *wt = data;
80
   wt->sub_wins = eina_list_remove(wt->sub_wins, obj);
81
}
82

83
static void
84
_web_win_close_request_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
85
{
86
   evas_object_del(data);
87
}
88

89
static Evas_Object *
90
_new_window_hook(void *data, Evas_Object *obj, Eina_Bool js EINA_UNUSED, const Elm_Web_Window_Features *wf EINA_UNUSED)
91
{
92
   Web_Test *wt = data;
93
   Evas_Object *new_win, *new_web;
94

95
   new_win = elm_win_util_standard_add("elm-web-test-popup", "Elm Web Test Popup");
96
   elm_win_autodel_set(new_win, EINA_TRUE);
97
   evas_object_resize(new_win, 300, 300);
98
   evas_object_show(new_win);
99

100
   new_web = elm_web_add(new_win);
101
   elm_web_useragent_set(new_web, elm_web_useragent_get(obj));
102
   evas_object_size_hint_weight_set(new_web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
103
   elm_win_resize_object_add(new_win, new_web);
104
   evas_object_show(new_web);
105

106
   evas_object_smart_callback_add(new_win, "delete,request", _new_win_del_cb,
107
                                  wt);
108
   evas_object_smart_callback_add(new_web, "windows,close,request",
109
                                  _web_win_close_request_cb, new_win);
110
   wt->sub_wins = eina_list_append(wt->sub_wins, new_win);
111

112
   return new_web;
113
}
114

115
static void
116
_alert_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
117
{
118
   evas_object_del(obj);
119
}
120

121
static Evas_Object *
122
_alert_hook(void *data EINA_UNUSED, Evas_Object *obj, const char *message)
123
{
124
   Evas_Object *popup, *label;
125

126
   popup = elm_notify_add(obj);
127
   elm_notify_align_set(popup, 0.5, 0.5);
128
   // Using the timeout doesn't seem to go well with the second main loop
129
   //elm_notify_timeout_set(popup, 2.0);
130
   elm_notify_allow_events_set(popup, EINA_FALSE);
131
   evas_object_show(popup);
132

133
   evas_object_smart_callback_add(popup, "block,clicked", _alert_del, NULL);
134

135
   label = elm_label_add(obj);
136
   elm_object_text_set(label, message);
137
   elm_object_content_set(popup, label);
138
   evas_object_show(label);
139

140
   return popup;
141
}
142

143
static void
144
_confirm_ok_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
145
{
146
   Eina_Bool *response = data;
147
   *response = EINA_TRUE;
148
}
149

150
static void
151
_confirm_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
152
{
153
   Eina_Bool *response = data;
154
   *response = EINA_FALSE;
155
}
156

157
static void
158
_confirm_dismiss_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
159
{
160
   evas_object_del(data);
161
}
162

163
static Evas_Object *
164
_confirm_hook(void *data EINA_UNUSED, Evas_Object *obj, const char *message, Eina_Bool *response)
165
{
166
   Evas_Object *popup, *box, *box2, *label, *btn_ok, *btn_cancel;
167

168
   popup = elm_notify_add(obj);
169
   elm_notify_align_set(popup, 0.5, 0.5);
170
   elm_notify_allow_events_set(popup, EINA_FALSE);
171
   evas_object_show(popup);
172

173
   box = elm_box_add(obj);
174
   elm_object_content_set(popup, box);
175
   evas_object_show(box);
176

177
   label = elm_label_add(obj);
178
   elm_object_text_set(label, message);
179
   elm_box_pack_end(box, label);
180
   evas_object_show(label);
181

182
   box2 = elm_box_add(obj);
183
   elm_box_horizontal_set(box2, EINA_TRUE);
184
   elm_box_pack_end(box, box2);
185
   evas_object_show(box2);
186

187
   btn_ok = elm_button_add(obj);
188
   elm_object_text_set(btn_ok, "Ok");
189
   elm_box_pack_end(box2, btn_ok);
190
   evas_object_show(btn_ok);
191

192
   btn_cancel = elm_button_add(obj);
193
   elm_object_text_set(btn_cancel, "Cancel");
194
   elm_box_pack_end(box2, btn_cancel);
195
   evas_object_show(btn_cancel);
196

197
   evas_object_smart_callback_add(btn_ok, "clicked", _confirm_dismiss_cb,
198
                                  popup);
199
   evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_dismiss_cb,
200
                                  popup);
201
   evas_object_smart_callback_add(btn_ok, "clicked", _confirm_ok_cb, response);
202
   evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_cancel_cb,
203
                                  response);
204

205
   return popup;
206
}
207

208
static Evas_Object *
209
_prompt_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *message EINA_UNUSED, const char *default_value, const char **value, Eina_Bool *response)
210
{
211
   *response = EINA_TRUE;
212
   *value = default_value ? strdup(default_value) : "No default!";
213
   return NULL;
214
}
215

216
static Evas_Object *
217
_file_selector_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Eina_Bool allow_multiple EINA_UNUSED, Eina_List *accept_types EINA_UNUSED, Eina_List **selected_files, Eina_Bool *response)
218
{
219
   *selected_files = eina_list_append(NULL,
220
                                      strdup("/path/to/non_existing_file"));
221
   *response = EINA_TRUE;
222
   return NULL;
223
}
224

225
static void
226
_console_message_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *message, unsigned int line_number, const char *source_id)
227
{
228
   printf("CONSOLE: %s:%u:%s\n", source_id, line_number, message);
229
}
230

231
static void
232
_js_popup_hooks_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
233
{
234
   Web_Test *wt = data;
235

236
   wt->js_hooks = !wt->js_hooks;
237
   if (wt->js_hooks)
238
     {
239
        elm_web_dialog_alert_hook_set(wt->web, _alert_hook, NULL);
240
        elm_web_dialog_confirm_hook_set(wt->web, _confirm_hook, NULL);
241
        elm_web_dialog_prompt_hook_set(wt->web, _prompt_hook, NULL);
242
        elm_web_dialog_file_selector_hook_set(wt->web, _file_selector_hook,
243
                                              NULL);
244
        elm_web_console_message_hook_set(wt->web, _console_message_hook, NULL);
245
     }
246
   else
247
     {
248
        elm_web_dialog_alert_hook_set(wt->web, NULL, NULL);
249
        elm_web_dialog_confirm_hook_set(wt->web, NULL, NULL);
250
        elm_web_dialog_prompt_hook_set(wt->web, NULL, NULL);
251
        elm_web_dialog_file_selector_hook_set(wt->web, NULL, NULL);
252
        elm_web_console_message_hook_set(wt->web, NULL, NULL);
253
     }
254
}
255

256
static void
257
_zoom_out_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
258
{
259
   Web_Test *wt = data;
260
   double zoom;
261

262
   zoom = elm_web_zoom_get(wt->web);
263
   if (zoom > 1)
264
     zoom -= .5;
265
   else
266
     zoom /= 2;
267
   if (zoom < .05)
268
     zoom = .05;
269
   elm_web_zoom_set(wt->web, zoom);
270
}
271

272
static void
273
_zoom_in_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
274
{
275
   Web_Test *wt = data;
276
   double zoom;
277

278
   zoom = elm_web_zoom_get(wt->web);
279

280
   if (zoom < 1)
281
     zoom *= 2;
282
   else
283
     zoom += .5;
284
   if (zoom > 4)
285
     zoom = 4;
286
   elm_web_zoom_set(wt->web, zoom);
287
}
288

289
static void
290
_zoom_mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
291
{
292
   Web_Test *wt = data;
293
   Elm_Object_Item *hoversel_it = event_info;
294
   const char *lbl = elm_object_item_text_get(hoversel_it);
295

296
   if (!strcmp(lbl, "Manual"))
297
     elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_MANUAL);
298
   else if (!strcmp(lbl, "Fit"))
299
     elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_AUTO_FIT);
300
   else
301
     elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_AUTO_FILL);
302
}
303

304
static void
305
_show_region_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
306
{
307
   Web_Test *wt = data;
308
   elm_web_region_show(wt->web, 300, 300, 1, 1);
309
}
310

311
static void
312
_bring_in_region_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
313
{
314
   Web_Test *wt = data;
315
   elm_web_region_bring_in(wt->web, 50, 0, 1, 1);
316
}
317

318
static void
319
_on_fullscreen_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
320
{
321
   Web_Test *wt = data;
322
   elm_box_unpack(wt->bx, wt->hoversel);
323
   evas_object_hide(wt->hoversel);
324
}
325

326
static void
327
_on_unfullscreen_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
328
{
329
   Web_Test *wt = data;
330
   elm_box_pack_start(wt->bx, wt->hoversel);
331
   evas_object_show(wt->hoversel);
332
}
333

334
typedef struct
335
{
336
   const char* name;
337
   const char* useragent;
338
} User_Agent;
339

340
static User_Agent ua[] = {
341
    {"Default", NULL},
342
    {"Mobile/Iphone", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B142 Safari/8536.25"},
343
    {"Mobile/Android(Chrome)", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"},
344
    {"Mobile/Android", "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"},
345
    {"Desktop/Firefox", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"},
346
    {"Desktop/Chrome", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"}
347
};
348

349
static void
350
_useragent_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
351
{
352
   Web_Test *wt = data;
353
   Elm_Object_Item *hoversel_it = event_info;
354
   const char *lbl = elm_object_item_text_get(hoversel_it);
355
   unsigned i;
356

357
   for (i = 0; i < sizeof(ua) / sizeof(ua[0]); ++i)
358
     if (!strcmp(lbl, ua[i].name))
359
       {
360
           printf("New user agent : %s\n", ua[i].useragent ? ua[i].useragent : "Default");
361
           elm_web_useragent_set(wt->web, ua[i].useragent);
362
       }
363
}
364

365
static void
366
_dialog_test_cb(void *data, Evas_Object *obj, void *event_info)
367
{
368
   Web_Test *wt = data;
369
   const char *selected = elm_object_item_text_get(event_info);
370
   const char dialog_html[] = "<!doctype html><body>"
371
       "<script>"
372
       "var confirm_test = function() {"
373
       " if (window.confirm('confirm') == true) {"
374
       "   document.getElementById('r').innerHTML = 'You pressed OK';"
375
       " } else {"
376
       "   document.getElementById('r').innerHTML = 'You pressed Cancel';"
377
       " }"
378
       "};"
379
       "var prompt_test = function() {"
380
       " document.getElementById('r').innerHTML = window.prompt('Enter your name', 'EFL');"
381
       "};"
382
       "</script>"
383
       "Result: <div id='r'> </div>"
384
       "<input type='button' value='alert' onclick=\"window.alert('alert pressed');\">"
385
       "<input type='button' value='confirm' onclick=\"confirm_test();\">"
386
       "<input type='button' value='prompt' onclick=\"prompt_test();\">"
387
       "</body>";
388

389
   printf("selected test : %s\n", selected);
390
   elm_object_text_set(obj, selected);
391

392
   elm_web_html_string_load(wt->web, dialog_html, NULL, NULL);
393
}
394

395
static void
396
_select_tag_test_cb(void *data, Evas_Object *obj, void *event_info)
397
{
398
   Web_Test *wt = data;
399
   const char *selected = elm_object_item_text_get(event_info);
400
   const char select_html[] = "<!doctype html><body>"
401
       "<select>"
402
       "<option>eina</option>"
403
       "<option>ecore</option>"
404
       "<option>evas</option>"
405
       "<option>edje</option>"
406
       "<option>eet</option>"
407
       "<option>emotion</option>"
408
       "<option>elementary</option>"
409
       "</select>"
410
       "</body>";
411

412
   printf("selected test : %s\n", selected);
413
   elm_object_text_set(obj, selected);
414

415
   elm_web_html_string_load(wt->web, select_html, NULL, NULL);
416
}
417

418
static void
419
_new_window_test_cb(void *data, Evas_Object *obj, void *event_info)
420
{
421
   Web_Test *wt = data;
422
   const char *selected = elm_object_item_text_get(event_info);
423
   const char new_window_html[] = "<!doctype html><body>"
424
       "<script>"
425
       "var h = null;"
426
       "var test = function() {"
427
       "  if (!h) {"
428
       "    h = window.open('http://www.enlightenment.org','','width=400,height=300');"
429
       "    document.getElementById('btn').value='close window';"
430
       "  } else {"
431
       "    h.close();"
432
       "    h = null;"
433
       "    document.getElementById('btn').value='open new window';"
434
       "  }"
435
       "}"
436
       "</script>"
437
       "<input type='button' id='btn' onclick='test();' value='open new window'>"
438
       "</body>";
439

440
   printf("selected test : %s\n", selected);
441
   elm_object_text_set(obj, selected);
442

443
   elm_web_html_string_load(wt->web, new_window_html, NULL, NULL);
444
}
445

446
static void
447
_fullscreen_test_cb(void *data, Evas_Object *obj, void *event_info)
448
{
449
   Web_Test *wt = data;
450
   const char *selected = elm_object_item_text_get(event_info);
451
   const char fullscreen_html[] = "<!doctype html><body>"
452
       "<script>"
453
       "var launch = function(obj) {"
454
       "  var f = document.webkitFullscreenElement;"
455
       "  if (f) document.webkitExitFullscreen();"
456
       "  if (f != obj) obj.webkitRequestFullscreen();"
457
       "}\n"
458
       "var test_full = function() { launch(document.documentElement); }\n"
459
       "var test_small = function() { launch(document.getElementById('box')); }\n"
460
       "</script>"
461
       "<input type='button' onclick='test_full();' value='request fullscreen'>"
462
       "<div id='box' style='width:100px;height:100px;background-color:blue;' onclick='test_small();'>small box</div>"
463
       "<input type='button' onclick='test_small();' value='request fullscreen of box'>"
464
       "</body>";
465

466
   printf("selected test : %s\n", selected);
467
   elm_object_text_set(obj, selected);
468

469
   elm_web_html_string_load(wt->web, fullscreen_html, NULL, NULL);
470
}
471

472
static void
473
_main_web_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
474
{
475
   Web_Test *wt = data;
476
   Evas_Object *sub_win;
477

478
   EINA_LIST_FREE(wt->sub_wins, sub_win)
479
      evas_object_del(sub_win);
480

481
   free(wt);
482
}
483

484
void
485
test_web(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
486
{
487
   Evas_Object *win, *bx, *bx2, *bt, *web, *url;
488
   Web_Test *wt;
489
   unsigned i;
490

491
   elm_need_web();
492

493
   wt = calloc(1, sizeof(*wt));
494
   win = elm_win_util_standard_add("web", "Web");
495

496
   elm_win_autodel_set(win, EINA_TRUE);
497

498
   bx = elm_box_add(win);
499
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
500
   elm_win_resize_object_add(win, bx);
501
   evas_object_show(bx);
502

503
   bx2 = elm_box_add(win);
504
   elm_box_horizontal_set(bx2, EINA_TRUE);
505
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
506
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.0);
507
   elm_box_pack_end(bx, bx2);
508
   evas_object_show(bx2);
509

510
   web = elm_web_add(win);
511
   evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
512
   evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
513
   elm_box_pack_end(bx, web);
514
   evas_object_show(web);
515

516
   bt = elm_button_add(win);
517
   elm_object_text_set(bt, "<");
518
   elm_box_pack_end(bx2, bt);
519
   evas_object_show(bt);
520

521
   evas_object_smart_callback_add(bt, "clicked", _btn_back_cb, web);
522
   wt->btn_back = bt;
523

524
   bt = elm_button_add(win);
525
   elm_object_text_set(bt, "R");
526
   elm_box_pack_end(bx2, bt);
527
   evas_object_show(bt);
528

529
   evas_object_smart_callback_add(bt, "clicked", _btn_reload_cb, web);
530

531
   bt = elm_button_add(win);
532
   elm_object_text_set(bt, ">");
533
   elm_box_pack_end(bx2, bt);
534
   evas_object_show(bt);
535

536
   evas_object_smart_callback_add(bt, "clicked", _btn_fwd_cb, web);
537
   wt->btn_fwd = bt;
538

539
   url = elm_entry_add(win);
540
   elm_entry_single_line_set(url, EINA_TRUE);
541
   elm_entry_scrollable_set(url, EINA_TRUE);
542
   evas_object_size_hint_weight_set(url, EVAS_HINT_EXPAND, 0);
543
   evas_object_size_hint_align_set(url, EVAS_HINT_FILL, EVAS_HINT_FILL);
544
   elm_box_pack_end(bx2, url);
545
   evas_object_show(url);
546

547
   evas_object_smart_callback_add(url, "activated", _url_entry_changed_cb, web);
548
   wt->url_entry = url;
549

550
   bx2 = elm_box_add(win);
551
   elm_box_horizontal_set(bx2, EINA_TRUE);
552
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
553
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0);
554
   elm_box_pack_end(bx, bx2);
555
   evas_object_show(bx2);
556

557
   bt = elm_button_add(win);
558
   elm_object_text_set(bt, "Inwin Mode");
559
   elm_box_pack_end(bx2, bt);
560
   evas_object_show(bt);
561

562
   evas_object_smart_callback_add(bt, "clicked", _toggle_inwin_mode_cb, web);
563

564
   bt = elm_button_add(win);
565
   elm_object_text_set(bt, "Custom Hooks");
566
   elm_box_pack_end(bx2, bt);
567
   evas_object_show(bt);
568

569
   evas_object_smart_callback_add(bt, "clicked", _js_popup_hooks_set, wt);
570

571
   bt = elm_button_add(win);
572
   elm_object_text_set(bt, "-");
573
   elm_box_pack_end(bx2, bt);
574
   evas_object_show(bt);
575

576
   evas_object_smart_callback_add(bt, "clicked", _zoom_out_cb, wt);
577

578
   bt = elm_button_add(win);
579
   elm_object_text_set(bt, "+");
580
   elm_box_pack_end(bx2, bt);
581
   evas_object_show(bt);
582

583
   evas_object_smart_callback_add(bt, "clicked", _zoom_in_cb, wt);
584

585
   bt = elm_hoversel_add(win);
586
   elm_object_text_set(bt, "Zoom Mode");
587
   elm_box_pack_end(bx2, bt);
588
   evas_object_show(bt);
589

590
   elm_hoversel_item_add(bt, "Manual", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);
591
   elm_hoversel_item_add(bt, "Fit", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);
592
   elm_hoversel_item_add(bt, "Fill", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);
593

594
   bx2 = elm_box_add(win);
595
   elm_box_horizontal_set(bx2, EINA_TRUE);
596
   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
597
   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0);
598
   elm_box_pack_end(bx, bx2);
599
   evas_object_show(bx2);
600

601
   bt = elm_button_add(win);
602
   elm_object_text_set(bt, "Show 300, 300");
603
   elm_box_pack_end(bx2, bt);
604
   evas_object_show(bt);
605

606
   evas_object_smart_callback_add(bt, "clicked", _show_region_cb, wt);
607

608
   bt = elm_button_add(win);
609
   elm_object_text_set(bt, "Bring in 50, 0");
610
   elm_box_pack_end(bx2, bt);
611
   evas_object_show(bt);
612

613
   evas_object_smart_callback_add(bt, "clicked", _bring_in_region_cb, wt);
614

615
   bt = elm_hoversel_add(win);
616
   elm_object_text_set(bt, "User agent");
617
   elm_box_pack_end(bx2, bt);
618
   evas_object_show(bt);
619

620
   for (i = 0; i < sizeof(ua) / sizeof(ua[0]); ++i)
621
     elm_hoversel_item_add(bt, ua[i].name, NULL, ELM_ICON_NONE, _useragent_cb, wt);
622

623
   evas_object_smart_callback_add(web, "title,changed", _title_changed_cb, win);
624
   evas_object_smart_callback_add(web, "url,changed", _url_changed_cb, wt);
625

626
   evas_object_event_callback_add(web, EVAS_CALLBACK_DEL, _main_web_del_cb, wt);
627

628
   wt->web = web;
629

630
   elm_web_url_set(web, "http://www.enlightenment.org");
631

632
   elm_web_window_create_hook_set(web, _new_window_hook, wt);
633

634
   evas_object_resize(win, 320 * elm_config_scale_get(),
635
                           480 * elm_config_scale_get());
636
   evas_object_show(win);
637
}
638

639
void
640
test_web_ui(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
641
{
642
   Evas_Object *win, *bx, *web, *hoversel;
643
   Web_Test *wt;
644

645
   elm_need_web();
646

647
   wt = calloc(1, sizeof(*wt));
648
   win = elm_win_util_standard_add("web", "Web");
649

650
   evas_object_smart_callback_add(win, "fullscreen", _on_fullscreen_cb, wt);
651
   evas_object_smart_callback_add(win, "unfullscreen", _on_unfullscreen_cb, wt);
652
   elm_win_autodel_set(win, EINA_TRUE);
653

654
   bx = elm_box_add(win);
655
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
656
   elm_win_resize_object_add(win, bx);
657
   evas_object_show(bx);
658

659
   hoversel = elm_hoversel_add(bx);
660
   elm_hoversel_hover_parent_set(hoversel, win);
661
   elm_object_text_set(hoversel, "Test cases");
662

663
   elm_hoversel_item_add(hoversel, "alert/confirm/prompt", NULL, ELM_ICON_NONE,
664
                         _dialog_test_cb, wt);
665
   elm_hoversel_item_add(hoversel, "<select> tag", NULL, ELM_ICON_NONE,
666
                         _select_tag_test_cb, wt);
667
   elm_hoversel_item_add(hoversel, "new window", NULL, ELM_ICON_NONE,
668
                         _new_window_test_cb, wt);
669
   elm_hoversel_item_add(hoversel, "fullscreen", NULL, ELM_ICON_NONE,
670
                         _fullscreen_test_cb, wt);
671
   elm_box_pack_end(bx, hoversel);
672
   evas_object_show(hoversel);
673

674
   web = elm_web_add(win);
675
   evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
676
   evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
677
   elm_box_pack_end(bx, web);
678
   evas_object_show(web);
679

680
   elm_web_window_create_hook_set(web, _new_window_hook, wt);
681

682
   evas_object_event_callback_add(web, EVAS_CALLBACK_DEL, _main_web_del_cb, wt);
683
   wt->web = web;
684
   wt->bx = bx;
685
   wt->hoversel = hoversel;
686

687

688
   elm_web_html_string_load(wt->web,
689
                            "<!doctype html><body>Hello, WebKit/Efl</body>",
690
                            NULL, NULL);
691

692
   evas_object_resize(win, 320 * elm_config_scale_get(),
693
                           480 * elm_config_scale_get());
694
   evas_object_show(win);
695
}
696

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

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

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

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