efl
1964 строки · 69.8 Кб
1#include "test.h"2#include <Elementary_Cursor.h>3#ifdef HAVE_CONFIG_H4# include "elementary_config.h"5#endif6#include <Elementary.h>7
8Evas_Object * _focus_autoscroll_mode_frame_create(Evas_Object *parent);9
10struct _api_data11{
12unsigned int state; /* What state we are testing */13void *list;14};15typedef struct _api_data api_data;16
17enum _api_state18{
19ITEM_PREPEND, /* 0 */20ITEM_INSERT_BEFORE, /* 1 */21ITEM_INSERT_AFTER, /* 2 */22ITEM_SEPARATOR_SET, /* 3 */23LIST_ITEM_DEL, /* 4 */24SCROLLER_POLICY_SET_ON,25SCROLLER_POLICY_SET_OFF, /* Back to AUTO next */26TOOLTIP_TEXT_SET, /* 7 */27TOOLTIP_UNSET, /* 8 */28ITEM_CURSOR_SET, /* 9 */29ITEM_CURSOR_STYLE_SET,30DISABLED_SET, /* 11 */31MODE_SET_COMPRESS, /* 12 */32MODE_SET_LIMIT, /* 13 */33MODE_SET_EXPAND, /* 14 */34HORIZONTAL_SET, /* 15 */35BOUNCE_SET, /* 16 */36LIST_CLEAR, /* 17 */37API_STATE_LAST
38};39typedef enum _api_state api_state;40
41static void42set_api_state(api_data *api)43{
44/** HOW TO TEST ************************
450 ITEM PREPEND
46Scroll to end
471 INSERT BEFORE
48Scroll to end
492 INSERT AFTER
503 INSERT SEPARATOR
51Scroll to end
524 ITEM DEL
535 POLICY ON, BOUNCE_SET(TRUE, TRUE)
546 POLICY OFF
55Scroll to end
567 TOOLTIP last-item
578 Cancel tootip
589 Curosr set on last item
5910 Cursor style set last item
6011 DISABLE last item
6112 MODE COMPRESS
6213 MODE LIMIT
6314 MODE EXPAND
6415 HORIZ SET
6516 VERT MODE, BOUNCE(TRUE, FALSE) try to bounce on Y-axis
6617 List clear
67*** HOW TO TEST ***********************/
68Evas_Object *li = api->list;69
70switch(api->state)71{ /* Put all api-changes under switch */72case ITEM_PREPEND: /* 0 */73{74const Eina_List *items = elm_list_items_get(li);75elm_list_item_prepend(li, "PREPEND", NULL, NULL, NULL, NULL);76elm_list_go(li);77elm_list_item_bring_in(eina_list_nth(items, 0));78}79break;80
81case ITEM_INSERT_BEFORE: /* 1 */82{83const Eina_List *items = elm_list_items_get(li);84if (eina_list_count(items))85{86elm_list_item_insert_before(li,87eina_list_nth(items, eina_list_count(items)-1),88"1-before-last", NULL, NULL, NULL, NULL);89elm_list_go(li);90elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));91}92}93break;94
95case ITEM_INSERT_AFTER: /* 2 */96{97const Eina_List *items = elm_list_items_get(li);98if (eina_list_count(items))99{100elm_list_item_insert_after(li,101eina_list_nth(items, eina_list_count(items)-2),102"insert-after", NULL, NULL, NULL, NULL);103elm_list_go(li);104elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));105}106}107break;108
109case ITEM_SEPARATOR_SET: /* 3 */110{111const Eina_List *items = elm_list_items_get(li);112if (eina_list_count(items))113{114elm_list_item_separator_set(eina_list_nth(items, eina_list_count(items)-3), EINA_TRUE);115elm_list_item_bring_in(eina_list_nth(items, eina_list_count(items)-3));116elm_list_go(li);117}118}119break;120
121case LIST_ITEM_DEL: /* 4 */122{123const Eina_List *items = elm_list_items_get(li);124if (eina_list_count(items))125{126elm_object_item_del(eina_list_data_get(eina_list_last(items)));127}128}129break;130
131case SCROLLER_POLICY_SET_ON: /* 5 */132elm_scroller_bounce_set(li, EINA_TRUE, EINA_TRUE);133elm_scroller_policy_set(li, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);134break;135
136case SCROLLER_POLICY_SET_OFF: /* Back to AUTO next (6) */137elm_scroller_policy_set(li, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);138break;139
140case TOOLTIP_TEXT_SET: /* 7 */141{142const Eina_List *items = elm_list_items_get(li);143if (eina_list_count(items))144{145elm_object_item_tooltip_text_set(eina_list_data_get(eina_list_last(items)), "Tooltip set from API");146}147elm_scroller_policy_set(li, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);148}149break;150
151case TOOLTIP_UNSET: /* 8 */152{153const Eina_List *items = elm_list_items_get(li);154if (eina_list_count(items))155{156elm_object_item_tooltip_unset(eina_list_data_get(eina_list_last(items)));157}158}159break;160
161case ITEM_CURSOR_SET: /* 9 */162{163const Eina_List *items = elm_list_items_get(li);164if (eina_list_count(items))165{166elm_object_item_cursor_set(eina_list_data_get(eina_list_last(items)), ELM_CURSOR_HAND2);167}168}169break;170
171case ITEM_CURSOR_STYLE_SET: /* 10 */172{173const Eina_List *items = elm_list_items_get(li);174if (eina_list_count(items))175{176elm_object_item_cursor_style_set(eina_list_data_get(eina_list_last(items)), "transparent");177}178}179break;180
181case DISABLED_SET: /* 11 */182{183const Eina_List *items = elm_list_items_get(li);184if (eina_list_count(items))185{186elm_object_item_disabled_set(eina_list_data_get(eina_list_last(items)), EINA_TRUE);187}188}189break;190
191case MODE_SET_COMPRESS: /* 12 */192elm_list_mode_set(li, ELM_LIST_COMPRESS);193break;194
195case MODE_SET_LIMIT: /* 13 */196elm_list_mode_set(li, ELM_LIST_LIMIT);197break;198
199case MODE_SET_EXPAND: /* 14 */200elm_list_mode_set(li, ELM_LIST_EXPAND);201break;202
203case HORIZONTAL_SET: /* 15 */204elm_list_mode_set(li, ELM_LIST_SCROLL); /* return to default mode */205elm_list_horizontal_set(li, EINA_TRUE);206break;207
208case BOUNCE_SET: /* 16 */209elm_list_horizontal_set(li, EINA_FALSE);210elm_scroller_bounce_set(li, EINA_TRUE, EINA_FALSE);211break;212
213case LIST_CLEAR: /* 17 */214elm_list_clear(li);215break;216
217case API_STATE_LAST:218break;219
220default:221return;222}223}
224
225static void226_api_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)227{ /* Will add here a SWITCH command containing code to modify test-object */228/* in accordance a->state value. */229api_data *a = data;230char str[128];231
232printf("clicked event on API Button: api_state=<%d>\n", a->state);233set_api_state(a);234a->state++;235sprintf(str, "Next API function (%u)", a->state);236elm_object_text_set(obj, str);237elm_object_disabled_set(obj, a->state == API_STATE_LAST);238}
239
240static void241my_show_it(void *data,242Evas_Object *obj EINA_UNUSED,243void *event_info EINA_UNUSED)244{
245elm_list_item_show(data);246}
247
248static void249scroll_top(void *data EINA_UNUSED,250Evas_Object *obj EINA_UNUSED,251void *event_info EINA_UNUSED)252{
253printf("Top edge!\n");254}
255
256static void257scroll_bottom(void *data EINA_UNUSED,258Evas_Object *obj EINA_UNUSED,259void *event_info EINA_UNUSED)260{
261printf("Bottom edge!\n");262}
263
264static void265clicked_right(void *data EINA_UNUSED,266Evas_Object *obj EINA_UNUSED,267void *event_info EINA_UNUSED)268{
269printf("Clicked right!\n");270}
271
272static void273scroll_left(void *data EINA_UNUSED,274Evas_Object *obj EINA_UNUSED,275void *event_info EINA_UNUSED)276{
277printf("Left edge!\n");278}
279
280static void281scroll_right(void *data EINA_UNUSED,282Evas_Object *obj EINA_UNUSED,283void *event_info EINA_UNUSED)284{
285printf("Right edge!\n");286}
287
288static void289_cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,290void *event_info EINA_UNUSED)291{
292free(data);293}
294
295void
296test_list(void *data EINA_UNUSED,297Evas_Object *obj EINA_UNUSED,298void *event_info EINA_UNUSED)299{
300Evas_Object *win, *li, *ic, *ic2, *bx, *tb2, *bt, *bxx;301char buf[PATH_MAX];302Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4, *list_it5;303api_data *api = calloc(1, sizeof(api_data));304
305win = elm_win_util_standard_add("list", "List");306elm_win_autodel_set(win, EINA_TRUE);307evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);308
309bxx = elm_box_add(win);310evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);311elm_win_resize_object_add(win, bxx);312evas_object_show(bxx);313
314li = elm_list_add(win);315elm_list_mode_set(li, ELM_LIST_LIMIT);316evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);317evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);318api->list = li;319
320bt = elm_button_add(win);321elm_object_text_set(bt, "Next API function");322evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);323elm_box_pack_end(bxx, bt);324elm_object_disabled_set(bt, api->state == API_STATE_LAST);325evas_object_show(bt);326
327elm_box_pack_end(bxx, li);328
329ic = elm_icon_add(win);330snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());331elm_image_file_set(ic, buf, NULL);332list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);333ic = elm_icon_add(win);334snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());335elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);336elm_image_file_set(ic, buf, NULL);337elm_list_item_append(li, "world", ic, NULL, NULL, NULL);338ic = elm_icon_add(win);339elm_icon_standard_set(ic, "edit");340elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);341elm_list_item_append(li, ".", ic, NULL, NULL, NULL);342
343ic = elm_icon_add(win);344elm_icon_standard_set(ic, "delete");345elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);346ic2 = elm_icon_add(win);347elm_icon_standard_set(ic2, "clock");348elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);349list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);350
351bx = elm_box_add(win);352elm_box_horizontal_set(bx, EINA_TRUE);353
354ic = elm_icon_add(win);355snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());356elm_image_file_set(ic, buf, NULL);357elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);358evas_object_size_hint_align_set(ic, 0.5, 0.5);359elm_box_pack_end(bx, ic);360evas_object_show(ic);361
362ic = elm_icon_add(win);363snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());364elm_image_file_set(ic, buf, NULL);365elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);366evas_object_size_hint_align_set(ic, 0.5, 0.0);367elm_box_pack_end(bx, ic);368evas_object_show(ic);369
370ic = elm_icon_add(win);371snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());372elm_image_file_set(ic, buf, NULL);373elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);374evas_object_size_hint_align_set(ic, 0.0, 1.0);375elm_box_pack_end(bx, ic);376evas_object_show(ic);377elm_list_item_append(li, "are", bx, NULL, NULL, NULL);378
379elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);380list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);381elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);382elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);383elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);384elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);385list_it4 = elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);386elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);387elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);388elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);389elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);390elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);391list_it5 = elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);392
393elm_list_go(li);394
395evas_object_show(li);396
397tb2 = elm_table_add(win);398evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);399elm_win_resize_object_add(win, tb2);400
401bt = elm_button_add(win);402elm_object_text_set(bt, "Hello");403evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);404evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);405evas_object_size_hint_align_set(bt, 0.9, 0.5);406elm_table_pack(tb2, bt, 0, 0, 1, 1);407evas_object_show(bt);408
409bt = elm_button_add(win);410elm_object_text_set(bt, "How");411evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);412evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);413evas_object_size_hint_align_set(bt, 0.9, 0.5);414elm_table_pack(tb2, bt, 0, 1, 1, 1);415evas_object_show(bt);416
417bt = elm_button_add(win);418elm_object_text_set(bt, "doing");419evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);420evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);421evas_object_size_hint_align_set(bt, 0.9, 0.5);422elm_table_pack(tb2, bt, 0, 2, 1, 1);423evas_object_show(bt);424
425bt = elm_button_add(win);426elm_object_text_set(bt, "Here");427evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);428evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);429evas_object_size_hint_align_set(bt, 0.9, 0.5);430elm_table_pack(tb2, bt, 0, 3, 1, 1);431evas_object_show(bt);432
433bt = elm_button_add(win);434elm_object_text_set(bt, "Maybe this...");435evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it5);436evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);437evas_object_size_hint_align_set(bt, 0.9, 0.5);438elm_table_pack(tb2, bt, 0, 4, 1, 1);439evas_object_show(bt);440
441evas_object_show(tb2);442
443evas_object_resize(win, 320 * elm_config_scale_get(),444300 * elm_config_scale_get());445evas_object_show(win);446
447evas_object_smart_callback_add(li, "edge,top", scroll_top, NULL);448evas_object_smart_callback_add(li, "edge,bottom", scroll_bottom, NULL);449evas_object_smart_callback_add(li, "clicked,right", clicked_right, NULL);450}
451
452void
453test_list_horizontal(void *data EINA_UNUSED,454Evas_Object *obj EINA_UNUSED,455void *event_info EINA_UNUSED)456{
457Evas_Object *win, *li, *ic, *ic2, *bx, *tb2, *bt;458char buf[PATH_MAX];459Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4;460
461win = elm_win_util_standard_add("list-horizontal", "List Horizontal");462elm_win_autodel_set(win, EINA_TRUE);463
464li = elm_list_add(win);465elm_list_horizontal_set(li, EINA_TRUE);466elm_list_mode_set(li, ELM_LIST_LIMIT);467evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);468elm_win_resize_object_add(win, li);469
470evas_object_smart_callback_add(li, "edge,left", scroll_left, NULL);471evas_object_smart_callback_add(li, "edge,right", scroll_right, NULL);472
473ic = elm_icon_add(win);474snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());475elm_image_file_set(ic, buf, NULL);476list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);477ic = elm_icon_add(win);478snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());479elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);480elm_image_file_set(ic, buf, NULL);481elm_list_item_append(li, "world", ic, NULL, NULL, NULL);482ic = elm_icon_add(win);483elm_icon_standard_set(ic, "edit");484elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);485elm_list_item_append(li, ".", ic, NULL, NULL, NULL);486
487ic = elm_icon_add(win);488elm_icon_standard_set(ic, "delete");489elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);490ic2 = elm_icon_add(win);491elm_icon_standard_set(ic2, "clock");492elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);493list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);494
495bx = elm_box_add(win);496
497ic = elm_icon_add(win);498snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());499elm_image_file_set(ic, buf, NULL);500elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);501evas_object_size_hint_align_set(ic, 0.5, 0.5);502elm_box_pack_end(bx, ic);503evas_object_show(ic);504
505ic = elm_icon_add(win);506snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());507elm_image_file_set(ic, buf, NULL);508elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);509evas_object_size_hint_align_set(ic, 0.5, 0.0);510elm_box_pack_end(bx, ic);511evas_object_show(ic);512
513elm_list_item_append(li, "are", bx, NULL, NULL, NULL);514
515elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);516list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);517elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);518elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);519elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);520elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);521
522list_it4 = elm_list_item_append(li, "And", NULL, NULL, NULL, NULL);523elm_list_item_append(li, "here", NULL, NULL, NULL, NULL);524elm_list_item_append(li, "we", NULL, NULL, NULL, NULL);525elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);526elm_list_item_append(li, "done", NULL, NULL, NULL, NULL);527elm_object_item_disabled_set(elm_list_item_append(li, "with", NULL, NULL, NULL, NULL), EINA_TRUE);528elm_object_item_disabled_set(elm_list_item_append(li, "items.", NULL, NULL, NULL, NULL), EINA_TRUE);529
530elm_list_go(li);531
532evas_object_show(li);533
534tb2 = elm_table_add(win);535evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);536elm_win_resize_object_add(win, tb2);537
538bt = elm_button_add(win);539elm_object_text_set(bt, "Hello");540evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);541evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);542evas_object_size_hint_align_set(bt, 0.5, 0.9);543elm_table_pack(tb2, bt, 0, 0, 1, 1);544evas_object_show(bt);545
546bt = elm_button_add(win);547elm_object_text_set(bt, "How");548evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);549evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);550evas_object_size_hint_align_set(bt, 0.5, 0.9);551elm_table_pack(tb2, bt, 1, 0, 1, 1);552evas_object_show(bt);553
554bt = elm_button_add(win);555elm_object_text_set(bt, "doing");556evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);557evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);558evas_object_size_hint_align_set(bt, 0.5, 0.9);559elm_table_pack(tb2, bt, 2, 0, 1, 1);560evas_object_show(bt);561
562bt = elm_button_add(win);563elm_object_text_set(bt, "And");564evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);565evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);566evas_object_size_hint_align_set(bt, 0.5, 0.9);567elm_table_pack(tb2, bt, 3, 0, 1, 1);568evas_object_show(bt);569
570evas_object_show(tb2);571
572evas_object_resize(win, 320 * elm_config_scale_get(),573300 * elm_config_scale_get());574evas_object_show(win);575}
576
577/***********/
578
579static void580my_li2_clear(void *data,581Evas_Object *obj EINA_UNUSED,582void *event_info EINA_UNUSED)583{
584elm_list_clear(data);585}
586
587static void588my_li2_sel(void *data EINA_UNUSED,589Evas_Object *obj,590void *event_info EINA_UNUSED)591{
592Elm_Object_Item *list_it = elm_list_selected_item_get(obj);593elm_list_item_selected_set(list_it, EINA_FALSE);594printf("item selected\n");595}
596
597void
598test_list2(void *data EINA_UNUSED,599Evas_Object *obj EINA_UNUSED,600void *event_info EINA_UNUSED)601{
602Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *bx2, *bt;603char buf[PATH_MAX];604Elm_Object_Item *list_it;605
606win = elm_win_add(NULL, "list2", ELM_WIN_BASIC);607elm_win_title_set(win, "List 2");608elm_win_autodel_set(win, EINA_TRUE);609
610bg = elm_bg_add(win);611snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());612elm_bg_file_set(bg, buf, NULL);613evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);614elm_win_resize_object_add(win, bg);615evas_object_show(bg);616
617bx = elm_box_add(win);618evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);619elm_win_resize_object_add(win, bx);620evas_object_show(bx);621
622li = elm_list_add(bx);623evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);624evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);625elm_list_mode_set(li, ELM_LIST_LIMIT);626
627ic = elm_icon_add(win);628snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());629elm_image_file_set(ic, buf, NULL);630elm_list_item_append(li, "Unselect on selected", ic, NULL, my_li2_sel, NULL);631
632ic = elm_icon_add(win);633snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());634elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);635elm_image_file_set(ic, buf, NULL);636list_it = elm_list_item_append(li, "world", ic, NULL, NULL, NULL);637elm_list_item_selected_set(list_it, EINA_TRUE);638
639ic = elm_icon_add(win);640elm_icon_standard_set(ic, "edit");641elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);642elm_list_item_append(li, ".", ic, NULL, NULL, NULL);643
644ic = elm_icon_add(win);645elm_icon_standard_set(ic, "delete");646elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);647ic2 = elm_icon_add(win);648elm_icon_standard_set(ic2, "clock");649elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);650elm_list_item_append(li, "How", ic, ic2, NULL, NULL);651
652bx2 = elm_box_add(win);653elm_box_horizontal_set(bx2, EINA_TRUE);654
655ic = elm_icon_add(win);656snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());657elm_image_file_set(ic, buf, NULL);658elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);659evas_object_size_hint_align_set(ic, 0.5, 0.5);660elm_box_pack_end(bx2, ic);661evas_object_show(ic);662
663ic = elm_icon_add(win);664snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());665elm_image_file_set(ic, buf, NULL);666elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);667evas_object_size_hint_align_set(ic, 0.5, 0.0);668elm_box_pack_end(bx2, ic);669evas_object_show(ic);670elm_list_item_append(li, "are", bx2, NULL, NULL, NULL);671
672elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);673elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);674elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);675elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);676elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);677elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);678elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);679elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);680elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);681elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);682elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);683elm_list_item_append(li, "Longer label.", NULL, NULL, NULL, NULL);684
685elm_list_go(li);686
687elm_box_pack_end(bx, li);688evas_object_show(li);689
690bt = elm_button_add(bx);691elm_object_text_set(bt, "Clear");692evas_object_smart_callback_add(bt, "clicked", my_li2_clear, li);693evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);694evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);695elm_box_pack_end(bx, bt);696evas_object_show(bt);697
698evas_object_resize(win, 320 * elm_config_scale_get(),699500 * elm_config_scale_get());700evas_object_show(win);701}
702
703/***********/
704
705static void706_bt_clicked(void *data EINA_UNUSED,707Evas_Object *obj EINA_UNUSED,708void *event_info EINA_UNUSED)709{
710printf("button was clicked\n");711}
712
713static void714_it_clicked(void *data, Evas_Object *obj EINA_UNUSED,715void *event_info EINA_UNUSED)716{
717printf("item was clicked\n");718if (!data) return;719Evas_Object *li = data;720Evas_Object *lb;721char str[128];722
723Elm_Object_Item *lit = elm_list_selected_item_get(li);724if (!lit) return;725sprintf(str, "%s is selected", elm_object_item_text_get(lit));726
727lb = evas_object_data_get(li, "label");728elm_object_text_set(lb, str);729}
730
731void
732test_list3(void *data EINA_UNUSED,733Evas_Object *obj EINA_UNUSED,734void *event_info EINA_UNUSED)735{
736Evas_Object *win, *li, *ic, *ic2, *bx;737char buf[PATH_MAX];738
739win = elm_win_util_standard_add("list3", "List 3");740elm_win_autodel_set(win, EINA_TRUE);741
742li = elm_list_add(win);743evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);744elm_win_resize_object_add(win, li);745elm_list_mode_set(li, ELM_LIST_COMPRESS);746
747ic = elm_icon_add(win);748snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());749elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);750elm_image_file_set(ic, buf, NULL);751ic2 = elm_button_add(win);752elm_object_text_set(ic2, "Click me");753evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);754evas_object_propagate_events_set(ic2, EINA_FALSE);755elm_list_item_append(li, "Hello", ic, ic2, _it_clicked, NULL);756
757ic = elm_icon_add(win);758snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());759elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);760elm_image_file_set(ic, buf, NULL);761ic2 = elm_button_add(win);762elm_object_text_set(ic2, "Click me");763evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);764elm_list_item_append(li, "world", ic, ic2, _it_clicked, NULL);765
766ic = elm_icon_add(win);767elm_icon_standard_set(ic, "edit");768elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);769elm_list_item_append(li, ".", ic, NULL, NULL, NULL);770
771ic = elm_icon_add(win);772elm_icon_standard_set(ic, "delete");773elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);774ic2 = elm_icon_add(win);775elm_icon_standard_set(ic2, "clock");776elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);777elm_list_item_append(li, "How", ic, ic2, NULL, NULL);778
779bx = elm_box_add(win);780elm_box_horizontal_set(bx, EINA_TRUE);781
782ic = elm_icon_add(win);783snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());784elm_image_file_set(ic, buf, NULL);785elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);786evas_object_size_hint_align_set(ic, 0.5, 0.5);787elm_box_pack_end(bx, ic);788evas_object_show(ic);789
790ic = elm_icon_add(win);791snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());792elm_image_file_set(ic, buf, NULL);793elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);794evas_object_size_hint_align_set(ic, 0.5, 0.0);795elm_box_pack_end(bx, ic);796evas_object_show(ic);797
798ic = elm_icon_add(win);799snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());800elm_image_file_set(ic, buf, NULL);801elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);802evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);803elm_box_pack_end(bx, ic);804evas_object_show(ic);805
806elm_list_item_append(li, "are", bx, NULL, NULL, NULL);807elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);808elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);809elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);810elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);811elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);812elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);813elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);814elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);815elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);816elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);817elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);818elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);819elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);820
821elm_list_go(li);822
823evas_object_show(li);824
825evas_object_resize(win, 320 * elm_config_scale_get(),826300 * elm_config_scale_get());827evas_object_show(win);828}
829
830///////////////////////////////////////////////////////////////////////////////////////
831
832struct Pginfo833{
834Evas_Object *naviframe, *win;835};836
837static void838test_list4_back_cb(void *data,839Evas_Object *obj EINA_UNUSED,840void *event_info EINA_UNUSED)841{
842struct Pginfo *info = data;843if (!info) return;844
845elm_naviframe_item_pop(info->naviframe);846}
847
848static void849test_list4_swipe(void *data,850Evas_Object *obj EINA_UNUSED,851void *event_info)852{
853Evas_Object *box, *entry, *button;854struct Pginfo *info = data;855char *item_data;856if ((!event_info) || (!data)) return;857
858item_data = elm_object_item_data_get(event_info);859
860box = elm_box_add(info->win);861elm_box_horizontal_set(box, EINA_FALSE);862elm_box_homogeneous_set(box, EINA_FALSE);863evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);864evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);865evas_object_show(box);866
867entry = elm_entry_add(info->win);868elm_entry_scrollable_set(entry, EINA_TRUE);869elm_entry_editable_set(entry, EINA_FALSE);870elm_object_text_set(entry, item_data);871evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);872evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);873evas_object_show(entry);874
875button = elm_button_add(info->win);876elm_object_text_set(button, "back");877evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);878evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);879evas_object_smart_callback_add(button, "clicked", test_list4_back_cb, info);880evas_object_show(button);881
882elm_box_pack_start(box, entry);883elm_box_pack_end(box, button);884
885elm_naviframe_item_simple_push(info->naviframe, box);886}
887
888void
889test_list4(void *data EINA_UNUSED,890Evas_Object *obj EINA_UNUSED,891void *event_info EINA_UNUSED)892{
893Evas_Object *win, *li, *ic, *ic2, *naviframe;894static struct Pginfo info = {NULL, NULL};895char buf[PATH_MAX];896
897win = elm_win_util_standard_add("list4", "List 4");898elm_win_autodel_set(win, EINA_TRUE);899info.win = win;900
901naviframe = elm_naviframe_add(win);902evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);903elm_win_resize_object_add(win, naviframe);904evas_object_show(naviframe);905info.naviframe = naviframe;906
907li = elm_list_add(win);908evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);909elm_list_mode_set(li, ELM_LIST_COMPRESS);910evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);911elm_naviframe_item_simple_push(naviframe, li);912
913static char pf_data[] = "Pink Floyd were formed in 1965, and originally consisted of university" \914"students Roger Waters, Nick Mason, Richard Wright, and Syd Barrett. The group were a popular" \915"fixture on London's underground music scene, and under Barrett's leadership released two " \916"charting singles, \"Arnold Layne\" and \"See Emily Play\", and a successful debut album, " \917"ThePiper at the Gates of Dawn. In 1968, guitarist and singer David Gilmour joined the " \918"line-up. Barrett was soon removed, due to his increasingly erratic behaviour. Following " \919"Barrett's departure, bass player and singer Roger Waters became the band's lyricist and " \920"conceptual leader, with Gilmour assuming lead guitar and much of the vocals. With this " \921"line-up, Floyd went on to achieve worldwide critical and commercial success with the " \922"conceptalbums The Dark Side of the Moon, Wish You Were Here, Animals, and The Wall.";923ic = elm_icon_add(win);924snprintf(buf, sizeof(buf), "%s/images/mystrale.jpg", elm_app_data_dir_get());925elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);926elm_image_file_set(ic, buf, NULL);927elm_list_item_append(li, "Pink Floyd", ic, NULL, NULL, &pf_data);928
929static char ds_data[] = "Dire Straits were a British rock band, formed by Mark Knopfler " \930"(lead vocals and lead guitar), his younger brother David Knopfler (rhythm guitar and " \931"backing vocals), John Illsley (bass guitar and backing vocals), and Pick Withers (drums " \932"and percussion), and managed by Ed Bicknell, active between 1977 and 1995. Although the " \933"band was formed in an era when punk rock was at the forefront, Dire Straits played a more "934"bluesy style, albeit with a stripped-down sound that appealed to audiences weary of the " \935"overproduced stadium rock of the 1970s.[citation needed] In their early days, Mark and " \936"David requested that pub owners turn down their sound so that patrons could converse " \937"while the band played, an indication of their unassuming demeanor. Despite this oddly " \938"self-effacing approach to rock and roll, Dire Straits soon became hugely successful, with " \939"their first album going multi-platinum globally.";940ic = elm_icon_add(win);941snprintf(buf, sizeof(buf), "%s/images/mystrale_2.jpg", elm_app_data_dir_get());942elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);943elm_image_file_set(ic, buf, NULL);944elm_list_item_append(li, "Dire Straits", ic, NULL, NULL, &ds_data);945
946static char uh_data[] = "Uriah Heep are an English hard rock band. The band released several " \947"commercially successful albums in the 1970s such as Uriah Heep Live (1973), but their " \948"audience declined by the 1980s, to the point where they became essentially a cult band in " \949"the United States and United Kingdom. Uriah Heep maintain a significant following in " \950"Germany, the Netherlands, Scandinavia, the Balkans, Japan and Russia, where they still " \951"perform at stadium-sized venues.";952ic = elm_icon_add(win);953snprintf(buf, sizeof(buf), "%s/images/icon_17.png", elm_app_data_dir_get());954elm_image_file_set(ic, buf, NULL);955elm_list_item_append(li, "Uriah Heep", ic, NULL, NULL, &uh_data);956
957static char r_data[] = "Rush is a Canadian rock band formed in August 1968, in the Willowdale " \958"neighbourhood of Toronto, Ontario. The band is composed of bassist, keyboardist, and lead " \959"vocalist Geddy Lee, guitarist Alex Lifeson, and drummer and lyricist Neil Peart. The band " \960"and its membership went through a number of re-configurations between 1968 and 1974, " \961"achieving their current form when Peart replaced original drummer John Rutsey in July 1974, " \962"two weeks before the group's first United States tour.";963ic = elm_icon_add(win);964snprintf(buf, sizeof(buf), "%s/images/icon_21.png", elm_app_data_dir_get());965elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);966elm_image_file_set(ic, buf, NULL);967ic2 = elm_icon_add(win);968elm_icon_standard_set(ic2, "clock");969elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);970elm_list_item_append(li, "Rush", ic, ic2, NULL, &r_data);971
972elm_list_go(li);973
974evas_object_show(li);975evas_object_resize(win, 320 * elm_config_scale_get(),976300 * elm_config_scale_get());977evas_object_show(win);978}
979
980/////////////////////////////////////////////////////////////////////////////////////////
981struct list5_data_cb982{
983Evas_Object *win, *list;984};985
986static void987test_list5_item_del(void *data,988Evas_Object *obj EINA_UNUSED,989void *event_info EINA_UNUSED)990{
991elm_object_item_del(data);992}
993
994static void995test_list5_swipe(void *data EINA_UNUSED,996Evas_Object *obj EINA_UNUSED,997void *event_info)998{
999Evas_Object *button;1000struct list5_data_cb *info = elm_object_item_data_get(event_info);1001
1002if (elm_object_item_part_content_get(event_info, "end")) return;1003
1004button = elm_button_add(info->win);1005elm_object_text_set(button, "delete");1006evas_object_propagate_events_set(button, EINA_FALSE);1007evas_object_smart_callback_add(button, "clicked", test_list5_item_del,1008event_info);1009elm_object_item_part_content_set(event_info, "end", button);1010elm_object_item_part_text_set(event_info, "default", "Enlightenment");1011}
1012
1013void
1014test_list5(void *data EINA_UNUSED,1015Evas_Object *obj EINA_UNUSED,1016void *event_info EINA_UNUSED)1017{
1018Evas_Object *win, *li;1019static struct list5_data_cb info;1020
1021win = elm_win_util_standard_add("list5", "List 5");1022elm_win_autodel_set(win, EINA_TRUE);1023info.win = win;1024
1025li = elm_list_add(win);1026evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1027elm_list_mode_set(li, ELM_LIST_COMPRESS);1028evas_object_smart_callback_add(li, "swipe", test_list5_swipe, NULL);1029elm_win_resize_object_add(win, li);1030evas_object_show(li);1031info.list = li;1032
1033elm_list_item_append(li, "Network", NULL, NULL, NULL, &info);1034elm_list_item_append(li, "Audio", NULL, NULL, NULL, &info);1035
1036elm_list_go(li);1037evas_object_resize(win, 320 * elm_config_scale_get(),1038300 * elm_config_scale_get());1039evas_object_show(win);1040}
1041
1042static void1043_first_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED,1044void *event_info EINA_UNUSED)1045{
1046char str[128];1047Evas_Object *li = data, *lb;1048Elm_Object_Item *lit = elm_list_first_item_get(li);1049if (!lit) return;1050
1051sprintf(str, "%s is selected", elm_object_item_text_get(lit));1052elm_list_item_bring_in(lit);1053elm_list_item_selected_set(lit, EINA_TRUE);1054
1055lb = evas_object_data_get(li, "label");1056elm_object_text_set(lb, str);1057}
1058
1059static void1060_prev_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED,1061void *event_info EINA_UNUSED)1062{
1063char str[128];1064Evas_Object *li = data, *lb;1065
1066Elm_Object_Item *lit = elm_list_selected_item_get(li);1067if (!lit) return;1068lit = elm_list_item_prev(lit);1069if (!lit) return;1070
1071sprintf(str, "%s is selected", elm_object_item_text_get(lit));1072elm_list_item_bring_in(lit);1073elm_list_item_selected_set(lit, EINA_TRUE);1074
1075lb = evas_object_data_get(li, "label");1076elm_object_text_set(lb, str);1077}
1078
1079static void1080_next_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED,1081void *event_info EINA_UNUSED)1082{
1083char str[128];1084Evas_Object *li = data, *lb;1085
1086Elm_Object_Item *lit = elm_list_selected_item_get(li);1087if (!lit) return;1088lit = elm_list_item_next(lit);1089if (!lit) return;1090
1091sprintf(str, "%s is selected", elm_object_item_text_get(lit));1092elm_list_item_bring_in(lit);1093elm_list_item_selected_set(lit, EINA_TRUE);1094
1095lb = evas_object_data_get(li, "label");1096elm_object_text_set(lb, str);1097}
1098
1099static void1100_last_bt_clicked(void *data, Evas_Object *obj EINA_UNUSED,1101void *event_info EINA_UNUSED)1102{
1103char str[128];1104Evas_Object *li = data, *lb;1105Elm_Object_Item *lit = elm_list_last_item_get(li);1106if (!lit) return;1107
1108sprintf(str, "%s is selected", elm_object_item_text_get(lit));1109elm_list_item_bring_in(lit);1110elm_list_item_selected_set(lit, EINA_TRUE);1111
1112lb = evas_object_data_get(li, "label");1113elm_object_text_set(lb, str);1114}
1115
1116void
1117test_list6(void *data EINA_UNUSED,1118Evas_Object *obj EINA_UNUSED,1119void *event_info EINA_UNUSED)1120{
1121Evas_Object *win, *gd, *bt, *li, *lb;1122
1123win = elm_win_util_standard_add("list6", "List 6");1124elm_win_autodel_set(win, EINA_TRUE);1125
1126gd = elm_grid_add(win);1127elm_grid_size_set(gd, 100, 100);1128evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1129elm_win_resize_object_add(win, gd);1130
1131li = elm_list_add(win);1132evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1133elm_list_mode_set(li, ELM_LIST_COMPRESS);1134elm_grid_pack(gd, li, 4, 4, 92, 72);1135evas_object_show(li);1136
1137elm_list_item_append(li, "Eina", NULL, NULL, _it_clicked, li);1138elm_list_item_append(li, "Eet", NULL, NULL, _it_clicked, li);1139elm_list_item_append(li, "Evas", NULL, NULL, _it_clicked, li);1140elm_list_item_append(li, "Ecore", NULL, NULL, _it_clicked, li);1141elm_list_item_append(li, "Embryo", NULL, NULL, _it_clicked, li);1142elm_list_item_append(li, "Edje", NULL, NULL, _it_clicked, li);1143elm_list_item_append(li, "Efreet", NULL, NULL, _it_clicked, li);1144elm_list_item_append(li, "E_dbus", NULL, NULL, _it_clicked, li);1145elm_list_item_append(li, "Eeze", NULL, NULL, _it_clicked, li);1146elm_list_item_append(li, "Expedite", NULL, NULL, _it_clicked, li);1147elm_list_item_append(li, "Emotion", NULL, NULL, _it_clicked, li);1148elm_list_item_append(li, "Ethumb", NULL, NULL, _it_clicked, li);1149elm_list_item_append(li, "Elementary", NULL, NULL, _it_clicked, li);1150elm_list_go(li);1151
1152bt = elm_button_add(win);1153elm_object_text_set(bt, "First");1154evas_object_smart_callback_add(bt, "clicked", _first_bt_clicked, li);1155elm_grid_pack(gd, bt, 4, 80, 20, 10);1156evas_object_show(bt);1157
1158bt = elm_button_add(win);1159elm_object_text_set(bt, "Prev");1160evas_object_smart_callback_add(bt, "clicked", _prev_bt_clicked, li);1161elm_grid_pack(gd, bt, 28, 80, 20, 10);1162evas_object_show(bt);1163
1164bt = elm_button_add(win);1165elm_object_text_set(bt, "Next");1166evas_object_smart_callback_add(bt, "clicked", _next_bt_clicked, li);1167elm_grid_pack(gd, bt, 52, 80, 20, 10);1168evas_object_show(bt);1169
1170bt = elm_button_add(win);1171elm_object_text_set(bt, "Last");1172evas_object_smart_callback_add(bt, "clicked", _last_bt_clicked, li);1173elm_grid_pack(gd, bt, 76, 80, 20, 10);1174evas_object_show(bt);1175
1176lb = elm_label_add(win);1177elm_object_text_set(lb, "Nothing is selected");1178elm_grid_pack(gd, lb, 4, 90, 92, 10);1179evas_object_show(lb);1180
1181evas_object_data_set(li, "label", lb);1182
1183evas_object_show(gd);1184evas_object_resize(win, 480 * elm_config_scale_get(),1185480 * elm_config_scale_get());1186evas_object_show(win);1187}
1188
1189static void1190_it_clicked_cb(void *data EINA_UNUSED, Evas_Object *li,1191void *event_info EINA_UNUSED)1192{
1193Elm_Object_Item *lit = elm_list_selected_item_get(li);1194printf("Item clicked. %s is selected\n", elm_object_item_text_get(lit));1195}
1196
1197void
1198test_list7(void *data EINA_UNUSED,1199Evas_Object *obj EINA_UNUSED,1200void *event_info EINA_UNUSED)1201{
1202Evas_Object *win, *bg, *li;1203char buf[PATH_MAX];1204
1205win = elm_win_add(NULL, "list7", ELM_WIN_BASIC);1206elm_win_title_set(win, "List Always Select Mode");1207elm_win_autodel_set(win, EINA_TRUE);1208
1209bg = elm_bg_add(win);1210snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());1211elm_bg_file_set(bg, buf, NULL);1212evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1213elm_win_resize_object_add(win, bg);1214evas_object_show(bg);1215
1216li = elm_list_add(win);1217evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1218elm_win_resize_object_add(win, li);1219elm_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_ALWAYS);1220
1221elm_list_item_append(li, "Items", NULL, NULL, _it_clicked_cb, NULL);1222elm_list_item_append(li, "callbacks", NULL, NULL, _it_clicked_cb, NULL);1223elm_list_item_append(li, "should be called", NULL, NULL, _it_clicked_cb,1224NULL);1225elm_list_item_append(li, "only once, each time", NULL, NULL, _it_clicked_cb,1226NULL);1227elm_list_item_append(li, "an item is clicked.", NULL, NULL, _it_clicked_cb,1228NULL);1229elm_list_item_append(li, "Including already", NULL, NULL, _it_clicked_cb,1230NULL);1231elm_list_item_append(li, "selected ones.", NULL, NULL, _it_clicked_cb, NULL);1232
1233elm_list_go(li);1234evas_object_show(li);1235
1236evas_object_resize(win, 320 * elm_config_scale_get(),1237300 * elm_config_scale_get());1238evas_object_show(win);1239}
1240
1241static const char *_list_focus_names[] = {"None", "Square", "Button", "Check", "Box"};1242static const int _list_focus_combo[] = { 1, 0, 2, 33, 43, 44, 10, 30, 22, 11, 10, -1 };1243
1244static Evas_Object *1245test_list_focus_content_get(Evas_Object *obj, unsigned type, Eina_Bool horiz)1246{
1247Evas_Object *cnt = NULL;1248
1249switch(type)1250{1251case 1:1252cnt = elm_bg_add(obj);1253evas_object_color_set(cnt, 128, 18, 128, 255);1254evas_object_size_hint_min_set(cnt, 50, 50);1255break;1256case 2:1257cnt = elm_button_add(obj);1258break;1259case 3:1260cnt = elm_check_add(obj);1261break;1262case 4:1263cnt = elm_box_add(obj);1264elm_box_horizontal_set(cnt, !horiz);1265evas_object_size_hint_align_set(cnt, EVAS_HINT_FILL, EVAS_HINT_FILL);1266elm_box_pack_end(cnt, test_list_focus_content_get(obj, 2, horiz));1267elm_box_pack_end(cnt, test_list_focus_content_get(obj, 3, horiz));1268elm_box_pack_end(cnt, test_list_focus_content_get(obj, 2, horiz));1269break;1270default:1271break;1272
1273}1274
1275if (cnt)1276{1277evas_object_size_hint_weight_set(cnt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1278evas_object_show(cnt);1279}1280
1281return cnt;1282}
1283
1284static void1285test_list_focus_focus_on_selection_set(Evas_Object *gl,1286Evas_Object *chk, Eina_Bool focus)1287{
1288elm_list_focus_on_selection_set(gl, focus);1289elm_check_state_set(chk, focus);1290printf("list_focus_on_selection = %s\n", (focus) ? "true" : "false");1291}
1292
1293static void1294test_list_focus_focus_check_changed(void *data, Evas_Object *obj,1295void *event_info EINA_UNUSED)1296{
1297Eina_Bool nextstate = !elm_list_focus_on_selection_get(data);1298test_list_focus_focus_on_selection_set(data, obj, nextstate);1299}
1300
1301static void1302test_list_focus_win_auto_focus_enable_check_changed(void *data EINA_UNUSED,1303Evas_Object *obj,1304void *event_info EINA_UNUSED)1305{
1306elm_config_window_auto_focus_enable_set(elm_check_state_get(obj));1307}
1308
1309static void1310test_list_focus_win_auto_focus_animate_check_changed(void *data EINA_UNUSED,1311Evas_Object *obj,1312void *event_info EINA_UNUSED)1313{
1314elm_config_window_auto_focus_animate_set(elm_check_state_get(obj));1315}
1316
1317static void1318test_list_focus_focus_highlight_check_changed(void *data, Evas_Object *obj,1319void *event_info EINA_UNUSED)1320{
1321elm_win_focus_highlight_enabled_set((Evas_Object *)data,1322elm_check_state_get(obj));1323}
1324
1325static void1326test_list_focus_focus_animate_check_changed(void *data, Evas_Object *obj,1327void *event_info EINA_UNUSED)1328{
1329elm_win_focus_highlight_animate_set((Evas_Object *)data,1330elm_check_state_get(obj));1331}
1332
1333static void1334test_list_focus_focus_move_policy_changed(void *data EINA_UNUSED,1335Evas_Object *obj,1336void *event_info EINA_UNUSED)1337{
1338int val = elm_radio_value_get(obj);1339
1340if (val == 0)1341elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);1342else if (val == 1)1343elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_IN);1344}
1345
1346static void1347test_list_focus_item_loop_enable_check_changed(void *data, Evas_Object *obj,1348void *event_info EINA_UNUSED)1349{
1350Evas_Object *li = data;1351elm_object_scroll_item_loop_enabled_set(li, elm_check_state_get(obj));1352}
1353
1354static void1355test_list_focus_item_select_on_focus_disable_changed(void *data EINA_UNUSED, Evas_Object *obj,1356void *event_info EINA_UNUSED)1357{
1358elm_config_item_select_on_focus_disabled_set(elm_check_state_get(obj));1359}
1360
1361static void1362test_list_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,1363void *event_info EINA_UNUSED)1364{
1365elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));1366}
1367
1368static void1369_item_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)1370{
1371printf("%s: %p\n", (char *)data, event_info);1372}
1373
1374static void1375_list_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,1376Evas_Object *obj EINA_UNUSED, void *event_info)1377{
1378Evas_Event_Key_Down *ev = event_info;1379printf("\n=== Key Down : %s ===\n", ev->keyname);1380}
1381
1382static Ecore_Timer *timer = NULL;1383static void1384_test_list_focus_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,1385Evas_Object *obj EINA_UNUSED,1386void *event_info EINA_UNUSED)1387{
1388ecore_timer_del(timer);1389timer = NULL;1390}
1391
1392static Eina_Bool1393_focus_timer_cb(void *data)1394{
1395elm_object_item_focus_set(data, EINA_TRUE);1396timer = NULL;1397
1398return ECORE_CALLBACK_CANCEL;1399}
1400
1401static Eina_Bool1402_select_timer_cb(void *data)1403{
1404elm_list_item_selected_set(data, EINA_TRUE);1405timer = NULL;1406
1407return ECORE_CALLBACK_CANCEL;1408}
1409
1410static void1411_focus_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,1412void *event_info EINA_UNUSED)1413{
1414ecore_timer_del(timer);1415timer = ecore_timer_add(1.5, _focus_timer_cb, data);1416}
1417
1418static void1419_sel_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,1420void *event_info EINA_UNUSED)1421{
1422ecore_timer_del(timer);1423timer = ecore_timer_add(1.5, _select_timer_cb, data);1424}
1425
1426static void1427_dis_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,1428void *event_info EINA_UNUSED)1429{
1430elm_object_item_disabled_set(data, EINA_TRUE);1431}
1432
1433static void1434_focus_button_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,1435void *event_info EINA_UNUSED)1436{
1437printf("Button clicked: %s\n", (char *)data);1438}
1439
1440static void1441_test_list_focus(const char *name, const char *title, Eina_Bool horiz)1442{
1443Evas_Object *win, *li, *btn, *bx, *bx2, *fr, *bx_opt, *chk, *bx_btn;1444Evas_Object *btn_focus, *btn_sel, *btn_dis, *bx_mv, *rd, *rdg;1445unsigned int lhand, rhand, idx;1446char buf[256];1447Elm_Object_Item *it = NULL, *it_0 = NULL, *it_3 = NULL;1448
1449win = elm_win_util_standard_add(name, title);1450elm_win_autodel_set(win, EINA_TRUE);1451evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,1452_test_list_focus_win_del_cb, NULL);1453
1454elm_config_window_auto_focus_enable_set(EINA_TRUE);1455elm_config_window_auto_focus_animate_set(EINA_TRUE);1456elm_win_focus_highlight_enabled_set(win, EINA_FALSE);1457elm_win_focus_highlight_animate_set(win, EINA_FALSE);1458
1459bx = elm_box_add(win);1460evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1461elm_win_resize_object_add(win, bx);1462evas_object_show(bx);1463
1464btn = elm_button_add(bx);1465elm_object_text_set(btn, "Up");1466elm_box_pack_end(bx, btn);1467evas_object_smart_callback_add(btn, "clicked",1468_focus_button_clicked_cb, "Up");1469evas_object_show(btn);1470
1471bx2 = elm_box_add(bx);1472elm_box_horizontal_set(bx2, EINA_TRUE);1473evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1474evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);1475elm_box_pack_end(bx, bx2);1476evas_object_show(bx2);1477
1478btn = elm_button_add(bx2);1479elm_object_text_set(btn, "Left");1480elm_box_pack_end(bx2, btn);1481evas_object_smart_callback_add(btn, "clicked",1482_focus_button_clicked_cb, "Left");1483evas_object_show(btn);1484
1485li = elm_list_add(win);1486evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1487evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);1488elm_list_horizontal_set(li, horiz);1489elm_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_ALWAYS);1490elm_box_pack_end(bx2, li);1491evas_object_show(li);1492evas_object_smart_callback_add(li, "item,focused", _item_cb, "item,focused");1493evas_object_smart_callback_add(li, "item,unfocused", _item_cb, "item,unfocused");1494evas_object_smart_callback_add(li, "selected", _item_cb, "selected");1495evas_object_smart_callback_add(li, "unselected", _item_cb, "unselected");1496evas_object_smart_callback_add(li, "activated", _item_cb, "activated");1497evas_object_smart_callback_add(li, "highlighted", _item_cb, "highlighted");1498evas_object_smart_callback_add(li, "unhighlighted", _item_cb, "unhighlighted");1499evas_object_event_callback_add(li, EVAS_CALLBACK_KEY_DOWN, _list_key_down_cb, NULL);1500
1501btn = elm_button_add(bx2);1502elm_object_text_set(btn, "Right");1503elm_box_pack_end(bx2, btn);1504evas_object_smart_callback_add(btn, "clicked",1505_focus_button_clicked_cb, "Right");1506evas_object_show(btn);1507
1508btn = elm_button_add(bx);1509elm_object_text_set(btn, "Down");1510elm_box_pack_end(bx, btn);1511evas_object_smart_callback_add(btn, "clicked",1512_focus_button_clicked_cb, "Down");1513evas_object_show(btn);1514
1515// Options1516fr = elm_frame_add(bx);1517elm_object_text_set(fr, "Options");1518evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);1519evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);1520elm_box_pack_end(bx, fr);1521evas_object_show(fr);1522
1523bx_opt = elm_box_add(fr);1524elm_box_horizontal_set(bx_opt, EINA_TRUE);1525elm_object_content_set(fr, bx_opt);1526evas_object_show(bx_opt);1527
1528chk = elm_check_add(bx_opt);1529elm_object_text_set(chk, "Window Auto Focus Enable");1530elm_check_state_set(chk, EINA_TRUE);1531evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1532evas_object_smart_callback_add(chk, "changed",1533test_list_focus_win_auto_focus_enable_check_changed,1534NULL);1535elm_box_pack_end(bx_opt, chk);1536evas_object_show(chk);1537
1538chk = elm_check_add(bx_opt);1539elm_object_text_set(chk, "Window Auto Focus Animate");1540elm_check_state_set(chk, EINA_TRUE);1541evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1542evas_object_smart_callback_add(chk, "changed",1543test_list_focus_win_auto_focus_animate_check_changed,1544NULL);1545elm_box_pack_end(bx_opt, chk);1546evas_object_show(chk);1547
1548chk = elm_check_add(bx_opt);1549elm_object_text_set(chk, "Focus Highlight");1550elm_check_state_set(chk, EINA_FALSE);1551evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1552evas_object_smart_callback_add(chk, "changed",1553test_list_focus_focus_highlight_check_changed,1554win);1555elm_box_pack_end(bx_opt, chk);1556evas_object_show(chk);1557
1558chk = elm_check_add(bx_opt);1559elm_object_text_set(chk, "Focus Animation");1560elm_check_state_set(chk, EINA_FALSE);1561evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1562evas_object_smart_callback_add(chk, "changed",1563test_list_focus_focus_animate_check_changed,1564win);1565elm_box_pack_end(bx_opt, chk);1566evas_object_show(chk);1567
1568chk = elm_check_add(bx_opt);1569elm_object_text_set(chk, "Focus on selection");1570evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1571evas_object_smart_callback_add(chk, "changed",1572test_list_focus_focus_check_changed, li);1573elm_box_pack_end(bx_opt, chk);1574evas_object_show(chk);1575
1576test_list_focus_focus_on_selection_set(li, chk, EINA_FALSE);1577
1578chk = elm_check_add(bx_opt);1579elm_object_text_set(chk, "Item Looping Enable");1580elm_check_state_set(chk, elm_object_scroll_item_loop_enabled_get(li));1581evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1582evas_object_smart_callback_add(chk, "changed",1583test_list_focus_item_loop_enable_check_changed,1584li);1585elm_box_pack_end(bx_opt, chk);1586evas_object_show(chk);1587
1588chk = elm_check_add(bx_opt);1589elm_object_text_set(chk, "Item Select on Focus disable");1590elm_check_state_set(chk, elm_config_item_select_on_focus_disabled_get());1591evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1592evas_object_smart_callback_add(chk, "changed",1593test_list_focus_item_select_on_focus_disable_changed,1594NULL);1595elm_box_pack_end(bx_opt, chk);1596evas_object_show(chk);1597
1598chk = elm_check_add(bx_opt);1599elm_object_text_set(chk, "First item focus on first focus in");1600elm_check_state_set(chk, elm_config_first_item_focus_on_first_focusin_get());1601evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);1602evas_object_smart_callback_add(chk, "changed",1603test_list_first_item_focus_on_first_focus_in_cb,1604NULL);1605elm_box_pack_end(bx_opt, chk);1606evas_object_show(chk);1607
1608// Focus Autoscroll Mode1609fr = _focus_autoscroll_mode_frame_create(bx);1610elm_box_pack_end(bx, fr);1611
1612// Focus Movement Policy1613fr = elm_frame_add(bx);1614elm_object_text_set(fr, "Focus Movement Policy");1615evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);1616evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);1617elm_box_pack_end(bx, fr);1618evas_object_show(fr);1619
1620bx_mv = elm_box_add(fr);1621elm_box_horizontal_set(bx_mv, EINA_TRUE);1622elm_object_content_set(fr, bx_mv);1623evas_object_show(bx_mv);1624
1625rdg = rd = elm_radio_add(bx_mv);1626elm_object_text_set(rd, "Focus Move by Click");1627elm_radio_state_value_set(rd, 0);1628evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);1629evas_object_smart_callback_add(rd, "changed",1630test_list_focus_focus_move_policy_changed,1631NULL);1632elm_box_pack_end(bx_mv, rd);1633evas_object_show(rd);1634
1635rd = elm_radio_add(bx_mv);1636elm_object_text_set(rd, "Focus Move by Mouse-In");1637elm_radio_group_add(rd, rdg);1638elm_radio_state_value_set(rd, 1);1639evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);1640evas_object_smart_callback_add(rd, "changed",1641test_list_focus_focus_move_policy_changed,1642NULL);1643elm_box_pack_end(bx_mv, rd);1644evas_object_show(rd);1645
1646// Focus/Selection1647fr = elm_frame_add(bx);1648elm_object_text_set(fr, "Focus/Selection");1649evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);1650evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);1651elm_box_pack_end(bx, fr);1652evas_object_show(fr);1653
1654bx_btn = elm_box_add(fr);1655elm_object_content_set(fr, bx_btn);1656evas_object_show(bx_btn);1657
1658btn_focus = elm_button_add(bx_btn);1659elm_object_text_set(btn_focus, "Focus 3rd Item after 1.5 seconds.");1660evas_object_size_hint_weight_set(btn_focus, 0.0, EVAS_HINT_EXPAND);1661evas_object_size_hint_align_set(btn_focus, EVAS_HINT_FILL, EVAS_HINT_FILL);1662elm_box_pack_end(bx_btn, btn_focus);1663evas_object_show(btn_focus);1664
1665btn_sel = elm_button_add(bx_btn);1666elm_object_text_set(btn_sel, "Select 3rd Item after 1.5 seconds.");1667evas_object_size_hint_weight_set(btn_sel, 0.0, EVAS_HINT_EXPAND);1668evas_object_size_hint_align_set(btn_sel, EVAS_HINT_FILL, EVAS_HINT_FILL);1669elm_box_pack_end(bx_btn, btn_sel);1670evas_object_show(btn_sel);1671
1672btn_dis = elm_button_add(bx_btn);1673elm_object_text_set(btn_dis, "Disable 1st Item.");1674evas_object_size_hint_weight_set(btn_dis, 0.0, EVAS_HINT_EXPAND);1675evas_object_size_hint_align_set(btn_dis, EVAS_HINT_FILL, EVAS_HINT_FILL);1676elm_box_pack_end(bx_btn, btn_dis);1677evas_object_show(btn_dis);1678
1679for (idx = 0; _list_focus_combo[idx] >= 0; idx++)1680{1681lhand = _list_focus_combo[idx] / 10;1682rhand = _list_focus_combo[idx] % 10;1683
1684if (lhand > 4) lhand = 4;1685if (rhand > 4) rhand = 4;1686snprintf(buf, sizeof(buf), " %s / %s ",1687_list_focus_names[lhand],1688_list_focus_names[rhand]);1689
1690it = elm_list_item_append(li, buf,1691test_list_focus_content_get(li, lhand, horiz),1692test_list_focus_content_get(li, rhand, horiz),1693NULL, NULL);1694if (idx == 0)1695it_0 = it;1696if (idx == 4)1697elm_object_item_disabled_set(it, EINA_TRUE);1698if (idx == 2)1699it_3 = it;1700}1701
1702evas_object_smart_callback_add(btn_focus, "clicked", _focus_btn_cb, it_3);1703evas_object_smart_callback_add(btn_sel, "clicked", _sel_btn_cb, it_3);1704evas_object_smart_callback_add(btn_dis, "clicked", _dis_btn_cb, it_0);1705
1706elm_list_go(li);1707evas_object_show(li);1708
1709evas_object_resize(win, 420 * elm_config_scale_get(),1710600 * elm_config_scale_get());1711evas_object_show(win);1712}
1713
1714void
1715test_list_focus(void *data EINA_UNUSED,1716Evas_Object *obj EINA_UNUSED,1717void *event_info EINA_UNUSED)1718{
1719_test_list_focus("list-focus", "List Focus", EINA_FALSE);1720}
1721
1722void
1723test_list_horiz_focus(void *data EINA_UNUSED,1724Evas_Object *obj EINA_UNUSED,1725void *event_info EINA_UNUSED)1726{
1727_test_list_focus("list-focus-horizontal", "List Focus Horizontal", EINA_TRUE);1728}
1729
1730void
1731test_list_separator(void *data EINA_UNUSED,1732Evas_Object *obj EINA_UNUSED,1733void *event_info EINA_UNUSED)1734{
1735Evas_Object *win, *li, *ic, *ic2, *bx, *bxx;1736char buf[PATH_MAX];1737Elm_Object_Item *list_it_sep;1738
1739win = elm_win_util_standard_add("list", "List Separator");1740elm_win_autodel_set(win, EINA_TRUE);1741
1742bxx = elm_box_add(win);1743evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1744elm_win_resize_object_add(win, bxx);1745evas_object_show(bxx);1746
1747li = elm_list_add(win);1748evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1749evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);1750elm_box_pack_end(bxx, li);1751
1752ic = elm_icon_add(win);1753snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());1754elm_image_file_set(ic, buf, NULL);1755elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);1756
1757list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1758elm_list_item_separator_set(list_it_sep, EINA_TRUE);1759
1760ic = elm_icon_add(win);1761snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());1762elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1763elm_image_file_set(ic, buf, NULL);1764elm_list_item_append(li, "world", ic, NULL, NULL, NULL);1765
1766list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1767elm_list_item_separator_set(list_it_sep, EINA_TRUE);1768
1769ic = elm_icon_add(win);1770elm_icon_standard_set(ic, "edit");1771elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1772elm_list_item_append(li, ".", ic, NULL, NULL, NULL);1773
1774list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1775elm_list_item_separator_set(list_it_sep, EINA_TRUE);1776
1777ic = elm_icon_add(win);1778elm_icon_standard_set(ic, "delete");1779elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1780ic2 = elm_icon_add(win);1781elm_icon_standard_set(ic2, "clock");1782elm_image_resizable_set(ic2, EINA_FALSE, EINA_FALSE);1783elm_list_item_append(li, "How", ic, ic2, NULL, NULL);1784
1785list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1786elm_list_item_separator_set(list_it_sep, EINA_TRUE);1787
1788bx = elm_box_add(win);1789elm_box_horizontal_set(bx, EINA_TRUE);1790
1791ic = elm_icon_add(win);1792snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());1793elm_image_file_set(ic, buf, NULL);1794elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1795evas_object_size_hint_align_set(ic, 0.5, 0.5);1796elm_box_pack_end(bx, ic);1797evas_object_show(ic);1798
1799ic = elm_icon_add(win);1800snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());1801elm_image_file_set(ic, buf, NULL);1802elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1803evas_object_size_hint_align_set(ic, 0.5, 0.0);1804elm_box_pack_end(bx, ic);1805evas_object_show(ic);1806
1807ic = elm_icon_add(win);1808snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());1809elm_image_file_set(ic, buf, NULL);1810elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);1811evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);1812elm_box_pack_end(bx, ic);1813evas_object_show(ic);1814elm_list_item_append(li, "are", bx, NULL, NULL, NULL);1815
1816list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1817elm_list_item_separator_set(list_it_sep, EINA_TRUE);1818
1819elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);1820
1821list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1822elm_list_item_separator_set(list_it_sep, EINA_TRUE);1823
1824elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);1825
1826list_it_sep = elm_list_item_append(li, NULL, NULL, NULL, NULL, NULL);1827elm_list_item_separator_set(list_it_sep, EINA_TRUE);1828
1829elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);1830
1831elm_list_go(li);1832
1833evas_object_show(li);1834
1835evas_object_resize(win, 320 * elm_config_scale_get(),1836300 * elm_config_scale_get());1837evas_object_show(win);1838}
1839
1840/***********/
1841
1842typedef struct _List_Multi_Data List_Multi_Data;1843struct _List_Multi_Data1844{
1845Evas_Object *list;1846Evas_Object *rd1;1847Evas_Object *rd2;1848};1849
1850static void1851_multi_select_changed_cb(void *data, Evas_Object *obj,1852void *event_info EINA_UNUSED)1853{
1854Eina_Bool multi = elm_check_state_get(obj);1855List_Multi_Data *ld = data;1856if (!ld) return;1857
1858elm_list_multi_select_set(ld->list, multi);1859elm_object_disabled_set(ld->rd1, !multi);1860elm_object_disabled_set(ld->rd2, !multi);1861}
1862
1863static void1864_multi_select_mode_changed_cb(void *data, Evas_Object *obj,1865void *event_info EINA_UNUSED)1866{
1867elm_list_multi_select_mode_set(data, elm_radio_value_get(obj));1868}
1869
1870static void1871_multi_select_frame_create(Evas_Object *bx, List_Multi_Data *ld)1872{
1873Evas_Object *fr, *bx2, *bx3, *tg, *rd, *rdg;1874if (!ld) return;1875
1876fr = elm_frame_add(bx);1877evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);1878evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);1879elm_object_text_set(fr, "Multi Select Option");1880elm_box_pack_end(bx, fr);1881evas_object_show(fr);1882
1883bx2 = elm_box_add(fr);1884elm_object_content_set(fr, bx2);1885evas_object_show(bx2);1886
1887tg = elm_check_add(bx2);1888elm_object_style_set(tg, "toggle");1889elm_object_text_set(tg, "Multi Select Mode");1890elm_box_pack_end(bx2, tg);1891evas_object_show(tg);1892
1893bx3 = elm_box_add(bx2);1894elm_box_horizontal_set(bx3, EINA_TRUE);1895elm_box_pack_end(bx2, bx3);1896evas_object_show(bx3);1897
1898ld->rd1 = rdg = rd = elm_radio_add(bx3);1899elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT);1900elm_object_text_set(rd, "Default Mode");1901elm_box_pack_end(bx3, rd);1902evas_object_show(rd);1903elm_object_disabled_set(rd, EINA_TRUE);1904evas_object_smart_callback_add(rd, "changed",1905_multi_select_mode_changed_cb, ld->list);1906
1907ld->rd2 = rd = elm_radio_add(bx3);1908elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL);1909elm_radio_group_add(rd, rdg);1910elm_object_text_set(rd, "With Control Mode");1911elm_box_pack_end(bx3, rd);1912evas_object_show(rd);1913elm_object_disabled_set(rd, EINA_TRUE);1914evas_object_smart_callback_add(rd, "changed",1915_multi_select_mode_changed_cb, ld->list);1916
1917evas_object_smart_callback_add(tg, "changed",1918_multi_select_changed_cb, ld);1919}
1920
1921void
1922test_list_multi_select(void *data EINA_UNUSED,1923Evas_Object *obj EINA_UNUSED,1924void *event_info EINA_UNUSED)1925{
1926Evas_Object *win, *li, *bx;1927List_Multi_Data *ld = calloc(1, sizeof(List_Multi_Data));1928
1929win = elm_win_util_standard_add("list-multi-select", "List Multi Select");1930elm_win_autodel_set(win, EINA_TRUE);1931evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, ld);1932
1933bx = elm_box_add(win);1934evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1935elm_win_resize_object_add(win, bx);1936evas_object_show(bx);1937
1938ld->list = li = elm_list_add(bx);1939_multi_select_frame_create(bx, ld);1940
1941evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1942evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);1943elm_box_pack_end(bx, li);1944evas_object_show(li);1945
1946elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);1947elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);1948elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);1949elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);1950elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);1951elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);1952elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);1953elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);1954elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);1955elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);1956elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);1957elm_list_item_append(li, "Longer label.", NULL, NULL, NULL, NULL);1958
1959elm_list_go(li);1960
1961evas_object_resize(win, 320 * elm_config_scale_get(),1962500 * elm_config_scale_get());1963evas_object_show(win);1964}
1965