patch from zub in #e to fix example building
[framework/uifw/elementary.git] / src / examples / genlist_example_01.c
1 //Compile with:
2 //gcc -g `pkg-config --cflags --libs elementary` genlist_example_01.c -o genlist_example_01
3
4 #include <Elementary.h>
5 #ifdef HAVE_CONFIG_H
6 # include "elementary_config.h"
7 #else
8 # define __UNUSED__
9 #endif
10
11 #define N_ITEMS 30
12
13 static Elm_Genlist_Item_Class _itc;
14
15 static char *
16 _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
17 {
18    char buf[256];
19    snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
20    return strdup(buf);
21 }
22
23 static Evas_Object *
24 _item_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
25 {
26    Evas_Object *ic = elm_icon_add(obj);
27
28    if (!strcmp(part, "elm.swallow.icon"))
29      elm_icon_standard_set(ic, "clock");
30
31    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
32    return ic;
33 }
34
35 static void
36 _item_sel_cb(void *data, Evas_Object *obj, void *event_info)
37 {
38    printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
39           data, obj, event_info);
40 }
41
42 int
43 elm_main(int argc __UNUSED__, char **argv __UNUSED__)
44 {
45    Evas_Object *win, *bg;
46    Evas_Object *list;
47    int i;
48
49    win = elm_win_add(NULL, "icon", ELM_WIN_BASIC);
50    elm_win_title_set(win, "Icon");
51    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
52    elm_win_autodel_set(win, EINA_TRUE);
53
54    bg = elm_bg_add(win);
55    elm_bg_color_set(bg, 255,255 ,255);
56    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
57    elm_win_resize_object_add(win, bg);
58    evas_object_show(bg);
59
60    _itc.item_style = "default";
61    _itc.func.label_get = _item_label_get;
62    _itc.func.content_get = _item_content_get;
63    _itc.func.state_get = NULL;
64    _itc.func.del = NULL;
65
66    list = elm_genlist_add(win);
67
68    for (i = 0; i < N_ITEMS; i++)
69      {
70         elm_genlist_item_append(list, &_itc,
71                                 (void *)(long)i, NULL,
72                                 ELM_GENLIST_ITEM_NONE,
73                                 _item_sel_cb, NULL);
74      }
75
76    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
77    elm_win_resize_object_add(win, list);
78    evas_object_show(list);
79
80    evas_object_size_hint_min_set(bg, 160, 160);
81    evas_object_size_hint_max_set(bg, 640, 640);
82    evas_object_resize(win, 320, 320);
83    evas_object_show(win);
84
85    elm_run();
86
87    return 0;
88 }
89
90 ELM_MAIN()