1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5
6 typedef struct _Testitem
7 {
8 Elm_Object_Item *item;
9 const char *path;
10 int mode;
11 int onoff;
12 } Testitem;
13
14 static Elm_Gengrid_Item_Class gic;
15
16 char *
grdt_lbl_get(void * data,Evas_Object * obj EINA_UNUSED,const char * part EINA_UNUSED)17 grdt_lbl_get(void *data,
18 Evas_Object *obj EINA_UNUSED,
19 const char *part EINA_UNUSED)
20 {
21 const Testitem *ti = data;
22 char buf[256];
23 snprintf(buf, sizeof(buf), "Photo %s", ti->path);
24 return strdup(buf);
25 }
26
27 Evas_Object *
grdt_content_get(void * data,Evas_Object * obj,const char * part)28 grdt_content_get(void *data,
29 Evas_Object *obj,
30 const char *part)
31 {
32 const Testitem *ti = data;
33 if (!strcmp(part, "elm.swallow.icon"))
34 {
35 Evas_Object *icon = elm_bg_add(obj);
36 elm_bg_file_set(icon, ti->path, NULL);
37 evas_object_size_hint_aspect_set(icon,
38 EVAS_ASPECT_CONTROL_VERTICAL,
39 1, 1);
40 evas_object_show(icon);
41 return icon;
42 }
43 return NULL;
44 }
45
46 static Elm_Genlist_Item_Class itct;
47
48 static void
gltt_exp(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info)49 gltt_exp(void *data EINA_UNUSED,
50 Evas_Object *obj EINA_UNUSED,
51 void *event_info)
52 {
53 Elm_Object_Item *glit = event_info;
54 Evas_Object *gl = elm_object_item_widget_get(glit);
55 int val = (int)(uintptr_t) elm_object_item_data_get(glit);
56 Elm_Object_Item *glit1, *glit2, *glit3;
57
58 val *= 10;
59 glit1 = elm_genlist_item_append(gl, &itct, (void *)(uintptr_t) (val + 1), glit,
60 ELM_GENLIST_ITEM_NONE, NULL, NULL);
61 glit2 = elm_genlist_item_append(gl, &itct, (void *)(uintptr_t) (val + 2), glit,
62 ELM_GENLIST_ITEM_NONE, NULL, NULL);
63 glit3 = elm_genlist_item_append(gl, &itct, (void *)(uintptr_t) (val + 3), glit,
64 ELM_GENLIST_ITEM_TREE, NULL, NULL);
65
66 elm_genlist_item_tooltip_text_set(glit1, "Testing A");
67 elm_genlist_item_tooltip_text_set(glit2, "Testing B");
68 elm_genlist_item_tooltip_text_set(glit3, "Testing C");
69 }
70
71 static void
gltt_con(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info)72 gltt_con(void *data EINA_UNUSED,
73 Evas_Object *obj EINA_UNUSED,
74 void *event_info)
75 {
76 Elm_Object_Item *glit = event_info;
77 elm_genlist_item_subitems_clear(glit);
78 }
79
80 static void
gltt_exp_req(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info)81 gltt_exp_req(void *data EINA_UNUSED,
82 Evas_Object *obj EINA_UNUSED,
83 void *event_info)
84 {
85 Elm_Object_Item *glit = event_info;
86 elm_genlist_item_expanded_set(glit, EINA_TRUE);
87 }
88
89 static void
gltt_con_req(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info)90 gltt_con_req(void *data EINA_UNUSED,
91 Evas_Object *obj EINA_UNUSED,
92 void *event_info)
93 {
94 Elm_Object_Item *glit = event_info;
95 elm_genlist_item_expanded_set(glit, EINA_FALSE);
96 }
97
98 char *
gltt_text_get(void * data,Evas_Object * obj EINA_UNUSED,const char * part EINA_UNUSED)99 gltt_text_get(void *data,
100 Evas_Object *obj EINA_UNUSED,
101 const char *part EINA_UNUSED)
102 {
103 char buf[256];
104 snprintf(buf, sizeof(buf), "Item mode %i", (int)(uintptr_t)data);
105 return strdup(buf);
106 }
107
108 static Evas_Object *
_tt_item_icon(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt,void * item EINA_UNUSED)109 _tt_item_icon(void *data EINA_UNUSED,
110 Evas_Object *obj EINA_UNUSED,
111 Evas_Object *tt,
112 void *item EINA_UNUSED)
113 {
114 Evas_Object *ic = elm_icon_add(tt);
115 char buf[PATH_MAX];
116 snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
117 elm_app_data_dir_get());
118 elm_image_file_set(ic, buf, NULL);
119 elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
120 evas_object_resize(ic, 64, 64);
121 return ic;
122 }
123
124 static Evas_Object *
_tt_item_icon2(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt,void * item EINA_UNUSED)125 _tt_item_icon2(void *data EINA_UNUSED,
126 Evas_Object *obj EINA_UNUSED,
127 Evas_Object *tt,
128 void *item EINA_UNUSED)
129 {
130 Evas_Object *ic = elm_icon_add(tt);
131 char buf[PATH_MAX];
132 snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
133 elm_image_file_set(ic, buf, NULL);
134 elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
135 return ic;
136 }
137
138 static Evas_Object *
_tt_item_icon3(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt,void * item EINA_UNUSED)139 _tt_item_icon3(void *data EINA_UNUSED,
140 Evas_Object *obj EINA_UNUSED,
141 Evas_Object *tt,
142 void *item EINA_UNUSED)
143 {
144 int w, h, sw, sh;
145 Evas_Object *ic = elm_icon_add(tt);
146
147 char buf[PATH_MAX];
148 snprintf(buf, sizeof(buf), "%s/images/insanely_huge_test_image.jpg", elm_app_data_dir_get());
149 elm_image_file_set(ic, buf, NULL);
150 elm_image_object_size_get(ic, &w, &h);
151 elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
152 elm_win_screen_size_get(tt, NULL, NULL, &sw, &sh);
153 if ((w > sw) || (h > sh))
154 {
155 float sc = 0;
156 if ((float)w / (float)sw >= 0.8)
157 sc = ((float)sw * 0.8) / (float)w;
158 else if ((float)h / (float)sh >= 0.8)
159 sc = ((float)sh * 0.8) / (float)h;
160 if (EINA_FLT_NONZERO(sc)) elm_object_scale_set(ic, sc);
161 }
162 return ic;
163 }
164
165 static Evas_Object *
_tt_item_label(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt,void * item EINA_UNUSED)166 _tt_item_label(void *data EINA_UNUSED,
167 Evas_Object *obj EINA_UNUSED,
168 Evas_Object *tt,
169 void *item EINA_UNUSED)
170 {
171 Evas_Object *l = elm_label_add(tt);
172 elm_object_text_set(l, "Something useful here?<ps/>"
173 "No probably not, but this is a super long label<ps/>"
174 "which probably breaks on your system, now doesn't it?<ps/>"
175 "Yeah, I thought so.");
176 elm_label_line_wrap_set(l, ELM_WRAP_MIXED);
177 return l;
178 }
179
180 static void
_tt_item_icon_del(void * data,Evas_Object * obj EINA_UNUSED,void * event_info)181 _tt_item_icon_del(void *data,
182 Evas_Object *obj EINA_UNUSED,
183 void *event_info)
184 {
185 // test to check for del_cb behavior!
186 printf("_tt_icon_del: data=%ld (== 456?), event_info=%p\n",
187 (long)(uintptr_t)data, event_info);
188 }
189
190 static void
_tt_text_replace(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)191 _tt_text_replace(void *data EINA_UNUSED,
192 Evas_Object *obj,
193 void *event_info EINA_UNUSED)
194 {
195 static int count = 0;
196 char buf[64];
197 snprintf(buf, sizeof(buf), "count=%d", count);
198 count++;
199 elm_object_tooltip_text_set(obj, buf);
200 }
201
202 static void
_tt_move_freeze(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)203 _tt_move_freeze(void *data EINA_UNUSED,
204 Evas_Object *obj,
205 void *event_info EINA_UNUSED)
206 {
207 if (elm_object_tooltip_move_freeze_get(obj) == 0)
208 {
209 elm_object_tooltip_move_freeze_push(obj);
210 elm_object_tooltip_text_set(obj, "Fronzen");
211 }
212 else
213 {
214 elm_object_tooltip_move_freeze_pop(obj);
215 elm_object_tooltip_text_set(obj, "Free");
216 }
217 }
218
219 static void
_tt_orient_text_replace(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)220 _tt_orient_text_replace(void *data EINA_UNUSED,
221 Evas_Object *obj,
222 void *event_info EINA_UNUSED)
223 {
224 static Elm_Tooltip_Orient orient;
225
226 orient = elm_object_tooltip_orient_get(obj);
227 orient++;
228 if (orient >= ELM_TOOLTIP_ORIENT_LAST)
229 orient = ELM_TOOLTIP_ORIENT_TOP_LEFT;
230 switch(orient)
231 {
232 case ELM_TOOLTIP_ORIENT_TOP_LEFT:
233 {
234 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_TOP_LEFT);
235 elm_object_tooltip_text_set(obj, "Top Left");
236 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_TOP_LEFT\n");
237 break;
238 }
239 case ELM_TOOLTIP_ORIENT_TOP:
240 {
241 elm_object_tooltip_text_set(obj, "Top");
242 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_TOP);
243 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_TOP\n");
244 break;
245 }
246 case ELM_TOOLTIP_ORIENT_TOP_RIGHT:
247 {
248 elm_object_tooltip_text_set(obj, "Top Right");
249 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_TOP_RIGHT);
250 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_TOP_RIGHT\n");
251 break;
252 }
253 case ELM_TOOLTIP_ORIENT_LEFT:
254 {
255 elm_object_tooltip_text_set(obj, "Left");
256 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_LEFT);
257 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_LEFT\n");
258 break;
259 }
260 case ELM_TOOLTIP_ORIENT_CENTER:
261 {
262 elm_object_tooltip_text_set(obj, "Center");
263 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_CENTER);
264 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_CENTER\n");
265 break;
266 }
267 case ELM_TOOLTIP_ORIENT_RIGHT:
268 {
269 elm_object_tooltip_text_set(obj, "Right");
270 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_RIGHT);
271 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_RIGHT\n");
272 break;
273 }
274 case ELM_TOOLTIP_ORIENT_BOTTOM_LEFT:
275 {
276 elm_object_tooltip_text_set(obj, "Bottom Left");
277 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_BOTTOM_LEFT);
278 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_BOTTOM_LEFT\n");
279 break;
280 }
281 case ELM_TOOLTIP_ORIENT_BOTTOM:
282 {
283 elm_object_tooltip_text_set(obj, "Bottom");
284 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_BOTTOM);
285 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_BOTTOM\n");
286 break;
287 }
288 case ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT:
289 {
290 elm_object_tooltip_text_set(obj, "Bottom Right");
291 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT);
292 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT\n");
293 break;
294 }
295 default:
296 {
297 elm_object_tooltip_text_set(obj, "No Orientation");
298 elm_object_tooltip_orient_set(obj, ELM_TOOLTIP_ORIENT_NONE);
299 printf("elm_object_tooltip_orient_get :: Orientation: ELM_TOOLTIP_ORIENT_NONE\n");
300 }
301 };
302 }
303
304 static void
_tt_timer_del(void * data EINA_UNUSED,Evas * e EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)305 _tt_timer_del(void *data EINA_UNUSED,
306 Evas *e EINA_UNUSED,
307 Evas_Object *obj,
308 void *event_info EINA_UNUSED)
309 {
310 Ecore_Timer *timer = evas_object_data_del(obj, "test-timer");
311 if (!timer) return;
312 ecore_timer_del(timer);
313 }
314
315 static Eina_Bool
_tt_text_replace_timer_cb(void * data)316 _tt_text_replace_timer_cb(void *data)
317 {
318 _tt_text_replace(NULL, data, NULL);
319 return EINA_TRUE;
320 }
321
322 static void
_tt_text_replace_timed(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)323 _tt_text_replace_timed(void *data EINA_UNUSED,
324 Evas_Object *obj,
325 void *event_info EINA_UNUSED)
326 {
327 Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
328 if (timer)
329 {
330 ecore_timer_del(timer);
331 evas_object_data_del(obj, "test-timer");
332 elm_object_text_set(obj, "Simple text tooltip, click to start"
333 " changed timed");
334 return;
335 }
336
337 timer = ecore_timer_add(1.5, _tt_text_replace_timer_cb, obj);
338 evas_object_data_set(obj, "test-timer", timer);
339 elm_object_text_set(obj, "Simple text tooltip, click to stop changed"
340 " timed");
341 }
342
343 static Evas_Object *
_no_min_tt_icon(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt)344 _no_min_tt_icon(void *data EINA_UNUSED,
345 Evas_Object *obj EINA_UNUSED,
346 Evas_Object *tt)
347 {
348 Evas_Object *box = elm_box_add(tt);
349 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
350 evas_object_show(box);
351
352 return box;
353 }
354
355 static Evas_Object *
_tt_icon(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt)356 _tt_icon(void *data EINA_UNUSED,
357 Evas_Object *obj EINA_UNUSED,
358 Evas_Object *tt)
359 {
360 Evas_Object *ic = elm_icon_add(tt);
361 char buf[PATH_MAX];
362 snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
363 elm_app_data_dir_get());
364 elm_image_file_set(ic, buf, NULL);
365 elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
366 evas_object_resize(ic, 64, 64);
367 return ic;
368 }
369
370 static Evas_Object *
_tt_icon2(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,Evas_Object * tt)371 _tt_icon2(void *data EINA_UNUSED,
372 Evas_Object *obj EINA_UNUSED,
373 Evas_Object *tt)
374 {
375 Evas_Object *ic = elm_icon_add(tt);
376 char buf[PATH_MAX];
377 snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
378 elm_image_file_set(ic, buf, NULL);
379 elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
380 evas_object_resize(ic, 64, 64);
381 return ic;
382 }
383
384 static void
_tt_icon_del(void * data,Evas_Object * obj EINA_UNUSED,void * event_info)385 _tt_icon_del(void *data,
386 Evas_Object *obj EINA_UNUSED,
387 void *event_info)
388 {
389 // test to check for del_cb behavior!
390 printf("_tt_icon_del: data=%ld (== 123?), event_info=%p\n",
391 (long)(uintptr_t)data, event_info);
392 }
393
394 static Eina_Bool
_tt_icon_replace_timer_cb(void * data)395 _tt_icon_replace_timer_cb(void *data)
396 {
397 static int current = 0;
398
399 elm_object_tooltip_content_cb_set
400 (data, current ? _tt_icon2 : _tt_icon, NULL, NULL);
401
402 current = !current;
403 return EINA_TRUE;
404 }
405
406 static void
_tt_icon_replace_timed(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)407 _tt_icon_replace_timed(void *data EINA_UNUSED,
408 Evas_Object *obj,
409 void *event_info EINA_UNUSED)
410 {
411 Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
412 if (timer)
413 {
414 ecore_timer_del(timer);
415 evas_object_data_del(obj, "test-timer");
416 elm_object_text_set(obj, "Icon tooltip, click to start changed"
417 " timed");
418 return;
419 }
420
421 timer = ecore_timer_add(1.5, _tt_icon_replace_timer_cb, obj);
422 evas_object_data_set(obj, "test-timer", timer);
423 elm_object_text_set(obj, "Icon tooltip, click to stop changed timed");
424 }
425
426 static Eina_Bool
_tt_style_replace_timer_cb(void * data)427 _tt_style_replace_timer_cb(void *data)
428 {
429 static int current = 0;
430 elm_object_tooltip_style_set(data, current ? NULL : "transparent");
431 current = !current;
432 return EINA_TRUE;
433 }
434
435 static void
_tt_style_replace_timed(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)436 _tt_style_replace_timed(void *data EINA_UNUSED,
437 Evas_Object *obj,
438 void *event_info EINA_UNUSED)
439 {
440 Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
441 if (timer)
442 {
443 ecore_timer_del(timer);
444 evas_object_data_del(obj, "test-timer");
445 elm_object_text_set(obj, "Icon tooltip style, click to start"
446 " changed timed");
447 return;
448 }
449
450 timer = ecore_timer_add(1.5, _tt_style_replace_timer_cb, obj);
451 evas_object_data_set(obj, "test-timer", timer);
452 elm_object_text_set(obj, "Icon tooltip style, click to stop changed"
453 " timed");
454 }
455
456 static void
_tt_visible_lock_toggle(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)457 _tt_visible_lock_toggle(void *data EINA_UNUSED,
458 Evas_Object *obj,
459 void *event_info EINA_UNUSED)
460 {
461 static int locked = 0;
462
463 locked = !locked;
464 if (locked)
465 {
466 elm_object_text_set(obj, "Locked tooltip visibility");
467 elm_object_tooltip_text_set(obj, "This tooltip is locked"
468 " visible,<br/> click the button"
469 " to unlock!");
470 elm_object_tooltip_show(obj);
471 }
472 else
473 {
474 elm_object_text_set(obj, "Unlocked tooltip visibility");
475 elm_object_tooltip_text_set(obj, "This tooltip is unlocked"
476 " visible,<br/> click the button"
477 " to lock!");
478 elm_object_tooltip_hide(obj);
479 }
480 }
481
482 void
test_tooltip(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)483 test_tooltip(void *data EINA_UNUSED,
484 Evas_Object *obj EINA_UNUSED,
485 void *event_info EINA_UNUSED)
486 {
487 Evas_Object *win, *bx, *tb, *bt, *se, *lst;
488 Elm_Object_Item *tb_it;
489 Elm_Object_Item *lit;
490
491 win = elm_win_util_standard_add("tooltip", "Tooltip");
492 elm_win_autodel_set(win, EINA_TRUE);
493
494 bx = elm_box_add(win);
495 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
496 elm_win_resize_object_add(win, bx);
497 evas_object_show(bx);
498
499 tb = elm_toolbar_add(win);
500 elm_toolbar_homogeneous_set(tb, EINA_FALSE);
501 evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0.0);
502 evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
503 elm_box_pack_end(bx, tb);
504 evas_object_show(tb);
505
506 tb_it = elm_toolbar_item_append(tb, NULL, "Open", NULL, NULL);
507 elm_object_item_tooltip_text_set(tb_it, "Opens a file");
508
509 tb_it = elm_toolbar_item_append(tb, NULL, "Icon", NULL, NULL);
510 elm_object_item_tooltip_content_cb_set
511 (tb_it, _tt_item_icon, (void *)456L, _tt_item_icon_del);
512 elm_object_item_tooltip_style_set(tb_it, "transparent");
513
514 bt = elm_button_add(win);
515 elm_object_text_set(bt, "Simple text tooltip");
516 elm_object_tooltip_text_set(bt, "Simple text tooltip");
517 elm_box_pack_end(bx, bt);
518 evas_object_show(bt);
519
520 bt = elm_button_add(win);
521 elm_object_text_set(bt, "Movement Freeze Tooltip, click to change");
522 elm_object_tooltip_text_set(bt, "Free");
523 evas_object_smart_callback_add(bt, "clicked", _tt_move_freeze, NULL);
524 elm_box_pack_end(bx, bt);
525 evas_object_show(bt);
526
527 bt = elm_button_add(win);
528 elm_object_text_set(bt, "Orient Tooltip, click to change");
529 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_TOP_LEFT);
530 elm_object_tooltip_text_set(bt, "Top Left");
531 evas_object_smart_callback_add(bt, "clicked", _tt_orient_text_replace, NULL);
532 elm_box_pack_end(bx, bt);
533 evas_object_show(bt);
534
535 bt = elm_button_add(win);
536 elm_object_text_set(bt, "Simple text tooltip, click to change");
537 elm_object_tooltip_text_set(bt, "Initial");
538 evas_object_smart_callback_add(bt, "clicked", _tt_text_replace, NULL);
539 elm_box_pack_end(bx, bt);
540 evas_object_show(bt);
541
542 bt = elm_button_add(win);
543 elm_object_text_set(bt, "Simple text tooltip, click to start"
544 " changed timed");
545 elm_object_tooltip_text_set(bt, "Initial");
546 evas_object_smart_callback_add(bt, "clicked", _tt_text_replace_timed,
547 NULL);
548 elm_box_pack_end(bx, bt);
549 evas_object_show(bt);
550 evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
551 NULL);
552
553 /* Add no min size tooltip style */
554 elm_theme_extension_add(NULL, eina_slstr_printf("%s/objects/test_tooltip.edj", elm_app_data_dir_get()));
555
556 bt = elm_button_add(win);
557 elm_object_text_set(bt, "Tooltip with no min size");
558 elm_object_tooltip_content_cb_set(bt, _no_min_tt_icon, (void *)123L, _tt_icon_del);
559 elm_object_tooltip_style_set(bt, "nomin");
560 elm_box_pack_end(bx, bt);
561 evas_object_show(bt);
562
563 bt = elm_button_add(win);
564 elm_object_text_set(bt, "Icon tooltip, click to start changed timed");
565 elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
566 evas_object_smart_callback_add(bt, "clicked", _tt_icon_replace_timed,
567 NULL);
568 elm_box_pack_end(bx, bt);
569 evas_object_show(bt);
570 evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
571 NULL);
572
573 bt = elm_button_add(win);
574 elm_object_text_set(bt, "Transparent Icon tooltip");
575 elm_object_tooltip_style_set(bt, "transparent");
576 elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
577 elm_box_pack_end(bx, bt);
578 evas_object_show(bt);
579
580 bt = elm_button_add(win);
581 elm_object_text_set(bt, "Icon tooltip style, click to start changed"
582 " timed");
583 elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
584 evas_object_smart_callback_add(bt, "clicked", _tt_style_replace_timed,
585 NULL);
586 elm_box_pack_end(bx, bt);
587 evas_object_show(bt);
588 evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
589 NULL);
590
591 bt = elm_button_add(win);
592 elm_object_text_set(bt, "Unlocked tooltip visibility");
593 elm_object_tooltip_text_set(bt, "This tooltip is unlocked visible,<br/>"
594 " click the button to lock!");
595 evas_object_smart_callback_add(bt, "clicked", _tt_visible_lock_toggle,
596 NULL);
597 elm_box_pack_end(bx, bt);
598 evas_object_show(bt);
599
600 se = elm_entry_add(win);
601 elm_entry_scrollable_set(se, EINA_TRUE);
602 evas_object_size_hint_weight_set(se, EVAS_HINT_EXPAND, 0.0);
603 evas_object_size_hint_align_set(se, EVAS_HINT_FILL, 0.5);
604 elm_scroller_policy_set(se, ELM_SCROLLER_POLICY_OFF,
605 ELM_SCROLLER_POLICY_OFF);
606 elm_object_text_set(se, "Hello, some entry here!");
607 elm_object_tooltip_text_set(se, "Type something here!");
608 elm_entry_single_line_set(se, EINA_TRUE);
609 elm_box_pack_end(bx, se);
610 evas_object_show(se);
611
612 lst = elm_list_add(win);
613 lit = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL);
614 elm_object_item_tooltip_window_mode_set(lit, EINA_TRUE);
615 elm_object_item_tooltip_content_cb_set(lit, _tt_item_label, NULL, NULL);
616 lit = elm_list_item_append(lst, "Icon Tooltip", NULL, NULL, NULL, NULL);
617 elm_object_item_tooltip_content_cb_set(lit, _tt_item_icon, NULL, NULL);
618 lit = elm_list_item_append(lst, "Big Icon Tooltip", NULL, NULL, NULL, NULL);
619 elm_object_item_tooltip_content_cb_set(lit, _tt_item_icon2, NULL, NULL);
620 elm_object_item_tooltip_style_set(lit, "transparent");
621 elm_object_item_tooltip_window_mode_set(lit, EINA_TRUE);
622 lit = elm_list_item_append(lst, "Insanely Big Icon Tooltip", NULL, NULL, NULL, NULL);
623 elm_object_item_tooltip_content_cb_set(lit, _tt_item_icon3, NULL, NULL);
624 elm_object_item_tooltip_style_set(lit, "transparent");
625 elm_object_item_tooltip_window_mode_set(lit, EINA_TRUE);
626 evas_object_size_hint_weight_set(lst, EVAS_HINT_EXPAND,
627 EVAS_HINT_EXPAND);
628 evas_object_size_hint_align_set(lst, EVAS_HINT_FILL, EVAS_HINT_FILL);
629 evas_object_size_hint_min_set(lst, 100, 100);
630 elm_list_go(lst);
631 elm_box_pack_end(bx, lst);
632 evas_object_show(lst);
633
634 evas_object_resize(win, 320, 580);
635 evas_object_show(win);
636 }
637
638 void
test_tooltip2(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)639 test_tooltip2(void *data EINA_UNUSED,
640 Evas_Object *obj EINA_UNUSED,
641 void *event_info EINA_UNUSED)
642 {
643 Evas_Object *win, *bx, *grid, *gl;
644 Elm_Object_Item *glit1, *glit2, *glit3;
645 static Testitem ti[144];
646 int i, n;
647 char buf[PATH_MAX];
648 const char *img[9] =
649 {
650 "panel_01.jpg",
651 "plant_01.jpg",
652 "rock_01.jpg",
653 "rock_02.jpg",
654 "sky_01.jpg",
655 "sky_02.jpg",
656 "sky_03.jpg",
657 "sky_04.jpg",
658 "wood_01.jpg",
659 };
660
661 win = elm_win_util_standard_add("tooltip2", "Tooltip 2");
662 elm_win_autodel_set(win, EINA_TRUE);
663
664 bx = elm_box_add(win);
665 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
666 elm_win_resize_object_add(win, bx);
667 evas_object_show(bx);
668
669 grid = elm_gengrid_add(win);
670 elm_gengrid_item_size_set(grid, 100, 100);
671 elm_gengrid_horizontal_set(grid, EINA_FALSE);
672 elm_gengrid_multi_select_set(grid, EINA_TRUE);
673 evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
674 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND,
675 EVAS_HINT_EXPAND);
676
677 gic.item_style = "default";
678 gic.func.text_get = grdt_lbl_get;
679 gic.func.content_get = grdt_content_get;
680
681 n = 0;
682 for (i = 0; i < 9; i++)
683 {
684 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(),
685 img[n]);
686 n++;
687 ti[i].mode = i;
688 ti[i].path = eina_stringshare_add(buf);
689 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), NULL,
690 NULL);
691 if (n % 2)
692 elm_gengrid_item_tooltip_text_set(ti[i].item, "Testing X");
693 else
694 elm_gengrid_item_tooltip_text_set(ti[i].item, "Testing Y");
695 if (!(i % 5))
696 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
697 }
698
699 elm_box_pack_end(bx, grid);
700 evas_object_show(grid);
701
702 gl = elm_genlist_add(win);
703 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
704 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND,
705 EVAS_HINT_EXPAND);
706
707 itct.item_style = "default";
708 itct.func.text_get = gltt_text_get;
709
710 glit1 = elm_genlist_item_append(gl, &itct, (void *)1, NULL,
711 ELM_GENLIST_ITEM_TREE, NULL, NULL);
712 glit2 = elm_genlist_item_append(gl, &itct, (void *)2, NULL,
713 ELM_GENLIST_ITEM_TREE, NULL, NULL);
714 glit3 = elm_genlist_item_append(gl, &itct, (void *)3, NULL,
715 ELM_GENLIST_ITEM_NONE, NULL, NULL);
716
717 elm_genlist_item_tooltip_text_set(glit1, "Testing 1");
718 elm_genlist_item_tooltip_text_set(glit2, "Testing 2");
719 elm_genlist_item_tooltip_text_set(glit3, "Testing 3");
720
721 evas_object_smart_callback_add(gl, "expand,request", gltt_exp_req, gl);
722 evas_object_smart_callback_add(gl, "contract,request", gltt_con_req,
723 gl);
724 evas_object_smart_callback_add(gl, "expanded", gltt_exp, gl);
725 evas_object_smart_callback_add(gl, "contracted", gltt_con, gl);
726
727 elm_box_pack_end(bx, gl);
728 evas_object_show(gl);
729
730 evas_object_resize(win, 320, 480);
731 evas_object_show(win);
732 }
733
734 void
test_tooltip3(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)735 test_tooltip3(void *data EINA_UNUSED,
736 Evas_Object *obj EINA_UNUSED,
737 void *event_info EINA_UNUSED)
738 {
739 Evas_Object *win, *bt, *rect;
740
741 win = elm_win_util_standard_add("tooltip3", "Tooltip 3");
742 elm_win_autodel_set(win, EINA_TRUE);
743
744 bt = elm_button_add(win);
745 elm_object_text_set(bt, "I have layer 200, below rect has layer 100.");
746 elm_object_tooltip_text_set(bt, "Can you see me?");
747 evas_object_resize(bt, 250, 30);
748 evas_object_move(bt, 25, 135);
749 evas_object_layer_set(bt, 200);
750 evas_object_show(bt);
751
752 rect = evas_object_rectangle_add(evas_object_evas_get(bt));
753 evas_object_resize(rect, 150, 300);
754 evas_object_move(rect, 0, 0);
755 evas_object_show(rect);
756 evas_object_layer_set(rect, 100);
757
758 evas_object_resize(win, 300, 300);
759 evas_object_show(win);
760 }
761
762 void
test_tooltip4(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)763 test_tooltip4(void *data EINA_UNUSED,
764 Evas_Object *obj EINA_UNUSED,
765 void *event_info EINA_UNUSED)
766 {
767 Evas_Object *win, *bt;
768
769 win = elm_win_util_standard_add("tooltip4", "Tooltip 4");
770 elm_win_autodel_set(win, EINA_TRUE);
771 evas_object_resize(win, 300, 300);
772 evas_object_show(win);
773
774 bt = elm_button_add(win);
775 elm_object_tooltip_text_set(bt, "Tooltip!!!!!!!!!!!!!!!!!!");
776 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_BOTTOM);
777 evas_object_resize(bt, 30, 30);
778 evas_object_move(bt, 5, 5);
779 evas_object_show(bt);
780
781 bt = elm_button_add(win);
782 elm_object_tooltip_text_set(bt, "Tooltip!!!!!!!!!!!!!!!!!!");
783 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_BOTTOM);
784 evas_object_resize(bt, 30, 30);
785 evas_object_move(bt, 250, 5);
786 evas_object_show(bt);
787
788 bt = elm_button_add(win);
789 elm_object_tooltip_text_set(bt, "Tooltip!!!!!!!!!!!!!!!!!!");
790 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_TOP);
791 evas_object_resize(bt, 30, 30);
792 evas_object_move(bt, 25, 265);
793 evas_object_show(bt);
794
795 bt = elm_button_add(win);
796 elm_object_tooltip_text_set(bt, "Tooltip!!!!!!!!!!!!!!!!!!");
797 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_TOP);
798 evas_object_resize(bt, 30, 30);
799 evas_object_move(bt, 235, 265);
800 evas_object_show(bt);
801
802 bt = elm_button_add(win);
803 elm_object_tooltip_content_cb_set(bt, _tt_icon, (void *)123L,
804 _tt_icon_del);
805 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_RIGHT);
806 evas_object_resize(bt, 30, 30);
807 evas_object_move(bt, 135, 5);
808 evas_object_show(bt);
809
810 bt = elm_button_add(win);
811 elm_object_tooltip_content_cb_set(bt, _tt_icon, (void *)123L,
812 _tt_icon_del);
813 elm_object_tooltip_orient_set(bt, ELM_TOOLTIP_ORIENT_LEFT);
814 evas_object_resize(bt, 30, 30);
815 evas_object_move(bt, 135, 255);
816 evas_object_show(bt);
817 }
818