[genlist, gen, gen_common] merge upstream except for elm_genlist.c
[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 = NULL;
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    if (!_itc)
61      {
62         _itc = elm_genlist_item_class_new();
63         _itc->item_style = "default";
64         _itc->func.text_get = _item_label_get;
65         _itc->func.content_get = _item_content_get;
66         _itc->func.state_get = NULL;
67         _itc->func.del = NULL;
68      }
69
70    list = elm_genlist_add(win);
71
72    for (i = 0; i < N_ITEMS; i++)
73      {
74         elm_genlist_item_append(list, _itc,
75                                 (void *)(long)i, NULL,
76                                 ELM_GENLIST_ITEM_NONE,
77                                 _item_sel_cb, NULL);
78      }
79
80    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
81    elm_win_resize_object_add(win, list);
82    evas_object_show(list);
83
84    evas_object_size_hint_min_set(bg, 160, 160);
85    evas_object_size_hint_max_set(bg, 640, 640);
86    evas_object_resize(win, 320, 320);
87    evas_object_show(win);
88
89    elm_run();
90
91    return 0;
92 }
93
94 ELM_MAIN()