[JungWooHyun] doing merge job ~
[framework/uifw/elementary.git] / src / examples / genlist_example_02.c
1 //Compile with:
2 //gcc -g `pkg-config --cflags --libs elementary` genlist_example_01.c -o genlist_example_01
3
4 #include <time.h>
5 #include <Elementary.h>
6 #ifdef HAVE_CONFIG_H
7 # include "elementary_config.h"
8 #else
9 # define __UNUSED__
10 #endif
11
12 #define N_ITEMS 300
13
14 <<<<<<< HEAD
15 static Elm_Genlist_Item_Class _itc;
16
17 static char *
18 _item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
19 =======
20 static Elm_Genlist_Item_Class *_itc = NULL;
21
22 static char *
23 _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
24 >>>>>>> remotes/origin/upstream
25 {
26    time_t t = (time_t)ecore_time_unix_get();
27    char buf[256];
28    int i = (int)(long)data;
29    if (i % 2)
30      {
31         int n;
32         snprintf(buf, sizeof(buf), "Very Long Item # %i - realized at %s", i, ctime(&t));
33         n = strlen(buf);
34         buf[n - 1] = '\0';
35      }
36    else
37      snprintf(buf, sizeof(buf), "short item # %i", i);
38    return strdup(buf);
39 }
40
41 static Evas_Object *
42 _item_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
43 {
44    Evas_Object *ic = elm_icon_add(obj);
45
46    if (!strcmp(part, "elm.swallow.icon"))
47      elm_icon_standard_set(ic, "clock");
48
49    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
50    return ic;
51 }
52
53 static void
54 _item_sel_cb(void *data, Evas_Object *obj, void *event_info)
55 {
56    printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
57           data, obj, event_info);
58 }
59
60 static void
61 _show_status_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
62 {
63    Evas_Object *list = data;
64    Evas_Coord x, y, w, h, mx, my;
65 <<<<<<< HEAD
66    Elm_Object_Item *it = elm_genlist_selected_item_get(list);
67
68    const Eina_List *selected, *l, *realized;
69    printf("\nfirst selected item: %p\n", it);
70
71    selected = elm_genlist_selected_items_get(list);
72    printf("all selected items (%d): ", eina_list_count(selected));
73    EINA_LIST_FOREACH(selected, l, it)
74      printf("%p ", it);
75 =======
76    Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
77
78    const Eina_List *selected, *l, *realized;
79    printf("\nfirst selected item: %p\n", glit);
80
81    selected = elm_genlist_selected_items_get(list);
82    printf("all selected items (%d): ", eina_list_count(selected));
83    EINA_LIST_FOREACH(selected, l, glit)
84      printf("%p ", glit);
85 >>>>>>> remotes/origin/upstream
86    printf("\n");
87
88    realized = elm_genlist_realized_items_get(list);
89    printf("realized items (%d): ", eina_list_count(realized));
90 <<<<<<< HEAD
91    EINA_LIST_FOREACH(realized, l, it)
92       printf("%p  ", it);
93    printf("\n");
94    printf("genlist mode: %s\n", elm_genlist_mode_get(list));
95    printf("mode item: %p\n", elm_genlist_mode_item_get(list));
96 =======
97    EINA_LIST_FOREACH(realized, l, glit)
98      printf("%p  ", glit);
99    printf("\n");
100    printf("genlist mode: %s\n", elm_genlist_decorate_mode_get(list));
101    printf("mode item: %p\n", elm_genlist_decorated_item_get(list));
102 >>>>>>> remotes/origin/upstream
103
104    evas_object_geometry_get(list, &x, &y, &w, &h);
105    mx = w / 2 + x;
106    my = h / 2 + y;
107 <<<<<<< HEAD
108    it = elm_genlist_at_xy_item_get(list, mx, my, NULL);
109    printf("item in the middle of the screen: %p\n", it);
110 =======
111    glit = elm_genlist_at_xy_item_get(list, mx, my, NULL);
112    printf("item in the middle of the screen: %p\n", glit);
113 >>>>>>> remotes/origin/upstream
114 }
115
116 static void
117 _realize_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
118 {
119    Evas_Object *list = data;
120    elm_genlist_realized_items_update(list);
121 }
122
123 int
124 elm_main(int argc __UNUSED__, char **argv __UNUSED__)
125 {
126    Evas_Object *win, *bg, *box, *hbox;
127    Evas_Object *list, *btn;
128    int i;
129
130    win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
131    elm_win_title_set(win, "Genlist - simple");
132    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
133    elm_win_autodel_set(win, EINA_TRUE);
134
135    bg = elm_bg_add(win);
136    elm_bg_color_set(bg, 255,255 ,255);
137    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
138    elm_win_resize_object_add(win, bg);
139    evas_object_show(bg);
140
141    box = elm_box_add(win);
142    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
143    evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
144    elm_win_resize_object_add(win, box);
145    evas_object_show(box);
146
147    list = elm_genlist_add(win);
148
149 <<<<<<< HEAD
150    _itc.item_style = "default";
151    _itc.func.text_get = _item_text_get;
152    _itc.func.content_get = _item_content_get;
153    _itc.func.state_get = NULL;
154    _itc.func.del = NULL;
155
156    Eina_Bool hbounce, vbounce;
157    Elm_Scroller_Policy hp, vp;
158
159    printf("default values:\n");
160    printf("always select: %d\n", elm_genlist_always_select_mode_get(list));
161    elm_genlist_bounce_get(list, &hbounce, &vbounce);
162    printf("bounce - horizontal: %d, vertical: %d\n", hbounce, vbounce);
163    printf("compress mode: %d\n", elm_genlist_compress_mode_get(list));
164    printf("homogeneous: %d\n", elm_genlist_homogeneous_get(list));
165    printf("horizontal mode: %d\n", elm_genlist_horizontal_mode_get(list));
166    printf("longpress timeout: %0.3f\n",
167           elm_genlist_longpress_timeout_get(list));
168    printf("multi selection: %d\n", elm_genlist_multi_select_get(list));
169    printf("no selection mode: %d\n", elm_genlist_no_select_mode_get(list));
170    printf("height for width enabled: %d\n",
171           elm_genlist_height_for_width_mode_get(list));
172 =======
173    if (!_itc)
174      {
175         _itc = elm_genlist_item_class_new();
176         _itc->item_style = "default";
177         _itc->func.text_get = _item_label_get;
178         _itc->func.content_get = _item_content_get;
179         _itc->func.state_get = NULL;
180         _itc->func.del = NULL;
181      }
182
183    Eina_Bool hbounce, vbounce, always, no_sel;
184    Elm_Scroller_Policy hp, vp;
185    Elm_Object_Select_Mode sel_mode;
186
187    always = no_sel = EINA_FALSE;
188    sel_mode = elm_genlist_select_mode_get(list);
189    if (sel_mode = ELM_OBJECT_SELECT_MODE_ALWAYS)
190      always = EINA_TRUE;
191    else if (sel_mode = ELM_OBJECT_SELECT_MODE_NONE)
192      no_sel = EINA_TRUE;
193
194    printf("default values:\n");
195    printf("always select: %d\n", always);
196    elm_genlist_bounce_get(list, &hbounce, &vbounce);
197    printf("bounce - horizontal: %d, vertical: %d\n", hbounce, vbounce);
198    printf("homogeneous: %d\n", elm_genlist_homogeneous_get(list));
199    printf("horizontal mode: %d\n", elm_genlist_mode_get(list));
200    printf("longpress timeout: %0.3f\n",
201           elm_genlist_longpress_timeout_get(list));
202    printf("multi selection: %d\n", elm_genlist_multi_select_get(list));
203    printf("no selection mode: %d\n", no_sel);
204 >>>>>>> remotes/origin/upstream
205    elm_genlist_scroller_policy_get(list, &hp, &vp);
206    printf("scroller policy - horizontal: %d, vertical: %d\n", hp, vp);
207    printf("block count: %d\n", elm_genlist_block_count_get(list));
208    printf("\n");
209
210 <<<<<<< HEAD
211    elm_genlist_always_select_mode_set(list, EINA_FALSE);
212    elm_genlist_bounce_set(list, EINA_FALSE, EINA_FALSE);
213    elm_genlist_compress_mode_set(list, EINA_TRUE);
214    elm_genlist_homogeneous_set(list, EINA_FALSE);
215    elm_genlist_horizontal_mode_set(list, ELM_LIST_LIMIT);
216    elm_genlist_multi_select_set(list, EINA_TRUE);
217    elm_genlist_no_select_mode_set(list, EINA_FALSE);
218    elm_genlist_height_for_width_mode_set(list, EINA_FALSE);
219 =======
220    elm_genlist_bounce_set(list, EINA_FALSE, EINA_FALSE);
221    elm_genlist_homogeneous_set(list, EINA_FALSE);
222    elm_genlist_mode_set(list, ELM_LIST_LIMIT);
223    elm_genlist_multi_select_set(list, EINA_TRUE);
224    elm_genlist_select_mode_set(list, ELM_OBJECT_SELECT_MODE_DEFAULT);
225 >>>>>>> remotes/origin/upstream
226    elm_genlist_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
227    elm_genlist_longpress_timeout_set(list, 0.5);
228    elm_genlist_block_count_set(list, 16);
229
230    for (i = 0; i < N_ITEMS; i++)
231      {
232 <<<<<<< HEAD
233         elm_genlist_item_append(list, &_itc,
234 =======
235         elm_genlist_item_append(list, _itc,
236 >>>>>>> remotes/origin/upstream
237                                 (void *)(long)i, NULL,
238                                 ELM_GENLIST_ITEM_NONE,
239                                 _item_sel_cb, NULL);
240      }
241
242    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
243    evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
244    elm_box_pack_end(box, list);
245    evas_object_show(list);
246
247    hbox = elm_box_add(win);
248    elm_box_horizontal_set(hbox, EINA_TRUE);
249    evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0);
250    evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
251    elm_box_pack_end(box, hbox);
252    evas_object_show(hbox);
253
254    btn = elm_button_add(win);
255    elm_object_text_set(btn, "Show status");
256    evas_object_size_hint_weight_set(btn, 0, 0);
257    evas_object_size_hint_align_set(btn, 0.5, 0.5);
258    evas_object_smart_callback_add(btn, "clicked", _show_status_cb, list);
259    elm_box_pack_end(hbox, btn);
260    evas_object_show(btn);
261
262    btn = elm_button_add(win);
263    elm_object_text_set(btn, "Realize");
264    evas_object_size_hint_weight_set(btn, 0, 0);
265    evas_object_size_hint_align_set(btn, 0.5, 0.5);
266    evas_object_smart_callback_add(btn, "clicked", _realize_cb, list);
267    elm_box_pack_end(hbox, btn);
268    evas_object_show(btn);
269
270    evas_object_size_hint_min_set(bg, 160, 160);
271    evas_object_size_hint_max_set(bg, 200, 640);
272    evas_object_resize(win, 200, 320);
273    evas_object_show(win);
274
275    elm_run();
276
277    return 0;
278 }
279
280 ELM_MAIN()