diff options
Diffstat (limited to 'libraries/elementary/src/examples/genlist_example_03.c')
-rw-r--r-- | libraries/elementary/src/examples/genlist_example_03.c | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/libraries/elementary/src/examples/genlist_example_03.c b/libraries/elementary/src/examples/genlist_example_03.c new file mode 100644 index 0000000..6264266 --- /dev/null +++ b/libraries/elementary/src/examples/genlist_example_03.c | |||
@@ -0,0 +1,131 @@ | |||
1 | //Compile with: | ||
2 | //gcc -g genlist_example_03.c -o genlist_example_03 `pkg-config --cflags --libs elementary` | ||
3 | |||
4 | #include <Elementary.h> | ||
5 | |||
6 | #define N_ITEMS 30 | ||
7 | |||
8 | static Elm_Genlist_Item_Class *_itc = NULL; | ||
9 | |||
10 | static char * | ||
11 | _item_label_get(void *data, Evas_Object *obj, const char *part) | ||
12 | { | ||
13 | time_t t = (time_t)ecore_time_unix_get(); | ||
14 | char buf[256]; | ||
15 | int i = (int)(long)data; | ||
16 | |||
17 | if (!strcmp(part, "elm.text")) | ||
18 | snprintf(buf, sizeof(buf), "Item # %i", i); | ||
19 | else | ||
20 | { | ||
21 | int n; | ||
22 | snprintf(buf, sizeof(buf), "created at %s", ctime(&t)); | ||
23 | n = strlen(buf); | ||
24 | buf[n - 1] = '\0'; | ||
25 | } | ||
26 | |||
27 | return strdup(buf); | ||
28 | } | ||
29 | |||
30 | static Evas_Object * | ||
31 | _item_content_get(void *data, Evas_Object *obj, const char *part) | ||
32 | { | ||
33 | Evas_Object *ic = elm_icon_add(obj); | ||
34 | |||
35 | if (!strcmp(part, "elm.swallow.icon")) | ||
36 | elm_icon_standard_set(ic, "clock"); | ||
37 | |||
38 | evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); | ||
39 | return ic; | ||
40 | } | ||
41 | |||
42 | static void | ||
43 | _item_sel_cb(void *data, Evas_Object *obj, void *event_info) | ||
44 | { | ||
45 | printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", | ||
46 | data, obj, event_info); | ||
47 | } | ||
48 | |||
49 | static Evas_Object * | ||
50 | _genlist_add(Evas_Object *box) | ||
51 | { | ||
52 | Evas_Object *list = elm_genlist_add(elm_object_parent_widget_get(box)); | ||
53 | evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); | ||
54 | evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
55 | evas_object_size_hint_min_set(list, 200, 160); | ||
56 | elm_box_pack_end(box, list); | ||
57 | evas_object_show(list); | ||
58 | |||
59 | return list; | ||
60 | } | ||
61 | |||
62 | static void | ||
63 | _genlist_fill(Evas_Object *list) | ||
64 | { | ||
65 | int i; | ||
66 | |||
67 | for (i = 0; i < N_ITEMS; i++) | ||
68 | { | ||
69 | elm_genlist_item_append(list, _itc, | ||
70 | (void *)(long)i, NULL, | ||
71 | ELM_GENLIST_ITEM_NONE, | ||
72 | _item_sel_cb, NULL); | ||
73 | } | ||
74 | } | ||
75 | |||
76 | EAPI_MAIN int | ||
77 | elm_main(int argc, char **argv) | ||
78 | { | ||
79 | Evas_Object *win, *bg, *box; | ||
80 | Evas_Object *list; | ||
81 | |||
82 | win = elm_win_add(NULL, "icon", ELM_WIN_BASIC); | ||
83 | elm_win_title_set(win, "Icon"); | ||
84 | elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); | ||
85 | elm_win_autodel_set(win, EINA_TRUE); | ||
86 | |||
87 | bg = elm_bg_add(win); | ||
88 | elm_bg_color_set(bg, 255,255 ,255); | ||
89 | evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); | ||
90 | elm_win_resize_object_add(win, bg); | ||
91 | evas_object_show(bg); | ||
92 | |||
93 | box = elm_box_add(win); | ||
94 | elm_box_horizontal_set(box, EINA_TRUE); | ||
95 | evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); | ||
96 | evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
97 | elm_win_resize_object_add(win, box); | ||
98 | evas_object_show(box); | ||
99 | |||
100 | if (!_itc) | ||
101 | { | ||
102 | _itc = elm_genlist_item_class_new(); | ||
103 | _itc->item_style = "double_label"; | ||
104 | _itc->func.text_get = _item_label_get; | ||
105 | _itc->func.content_get = _item_content_get; | ||
106 | _itc->func.state_get = NULL; | ||
107 | _itc->func.del = NULL; | ||
108 | } | ||
109 | |||
110 | list = _genlist_add(box); | ||
111 | _genlist_fill(list); | ||
112 | |||
113 | list = _genlist_add(box); | ||
114 | elm_genlist_mode_set(list, ELM_LIST_LIMIT); | ||
115 | _genlist_fill(list); | ||
116 | |||
117 | list = _genlist_add(box); | ||
118 | elm_genlist_mode_set(list, ELM_LIST_COMPRESS); | ||
119 | _genlist_fill(list); | ||
120 | |||
121 | evas_object_size_hint_min_set(bg, 800, 160); | ||
122 | evas_object_size_hint_max_set(bg, 800, 640); | ||
123 | evas_object_resize(win, 800, 320); | ||
124 | evas_object_show(win); | ||
125 | |||
126 | elm_run(); | ||
127 | elm_shutdown(); | ||
128 | |||
129 | return 0; | ||
130 | } | ||
131 | ELM_MAIN() | ||