Initialize Tizen 2.3
[framework/uifw/elementary.git] / wearable / src / examples / diskselector_example_02.c
1 /**
2  * Elementary's <b>diskselector widget</b> example, illustrating its
3  * covering most of item functions.
4  *
5  * See stdout/stderr for output. Compile with:
6  *
7  * @verbatim
8  * gcc -g diskselector_example_02.c -o diskselector_example_02 `pkg-config --cflags --libs elementary`
9  * @endverbatim
10  */
11
12 #include <Elementary.h>
13
14 static int counter = 3;
15
16 static void
17 _on_done(void        *data,
18          Evas_Object *obj,
19          void        *event_info)
20 {
21    elm_exit();
22 }
23
24 static void
25 _add_cb(void *data, Evas_Object *obj, void *event_info)
26 {
27    Elm_Object_Item *ds_it;
28    Evas_Object *ds = data;
29    char label[32];
30
31    snprintf(label, sizeof(label), "Item %i", counter++);
32    ds_it = elm_diskselector_item_append(ds, label, NULL, NULL, NULL);
33    if (!ds_it) printf("Error adding item\n");
34 }
35
36 static void
37 _add_ic_cb(void *data, Evas_Object *obj, void *event_info)
38 {
39    Elm_Object_Item *ds_it;
40    Evas_Object *ic, *ds = data;
41    char label[32];
42
43    snprintf(label, sizeof(label), "Item %i", counter++);
44    ic = elm_icon_add(ds);
45    elm_icon_standard_set(ic, "home");
46
47    ds_it = elm_diskselector_item_append(ds, label, ic, NULL, NULL);
48    if (!ds_it) printf("Error adding item with icon\n");
49 }
50
51 static void
52 _sel_cb(void *data, Evas_Object *obj, void *event_info)
53 {
54    Elm_Object_Item *ds_it = event_info;
55    printf("Selected label: %s\n", elm_object_item_text_get(ds_it));
56 }
57
58 static void
59 _add_func_cb(void *data, Evas_Object *obj, void *event_info)
60 {
61    Elm_Object_Item *ds_it;
62    Evas_Object *ds = data;
63    char label[32];
64
65    snprintf(label, sizeof(label), "Item %i", counter++);
66    ds_it = elm_diskselector_item_append(ds, label, NULL, _sel_cb, NULL);
67    if (!ds_it) printf("Error adding item\n");
68 }
69
70 static void
71 _sel_data_cb(void *data, Evas_Object *obj, void *event_info)
72 {
73    char *content = data;
74    Elm_Object_Item *ds_it = event_info;
75    printf("Selected label: %s with data: %s\n",
76           elm_object_item_text_get(ds_it), content);
77 }
78
79 static void
80 _free_data(void *data, Evas_Object *obj, void *event_info)
81 {
82    free(data);
83 }
84
85 static void
86 _add_data_cb(void *data, Evas_Object *obj, void *event_info)
87 {
88    Elm_Object_Item *ds_it;
89    Evas_Object *ds = data;
90    char label[32];
91    char *content = malloc(sizeof(char) * 32);
92
93    snprintf(content, 32, "Item content %i", counter);
94    snprintf(label, sizeof(label), "Item %i", counter++);
95    ds_it = elm_diskselector_item_append(ds, label, NULL, _sel_data_cb, content);
96    if (!ds_it) {
97      printf("Error adding item\n");
98      return;
99    }
100    elm_object_item_del_cb_set(ds_it, _free_data);
101 }
102
103 static void
104 _del_cb(void *data, Evas_Object *obj, void *event_info)
105 {
106    Elm_Object_Item *selected_ds_it;
107    Evas_Object *ds = data;
108
109    selected_ds_it = elm_diskselector_selected_item_get(ds);
110    elm_object_item_del(selected_ds_it);
111 }
112
113 static void
114 _unselect_cb(void *data, Evas_Object *obj, void *event_info)
115 {
116    Elm_Object_Item *selected_ds_it;
117    Evas_Object *ds = data;
118
119    selected_ds_it = elm_diskselector_selected_item_get(ds);
120    elm_diskselector_item_selected_set(selected_ds_it, EINA_FALSE);
121 }
122
123 static void
124 _print_cb(void *data, Evas_Object *obj, void *event_info)
125 {
126    const Eina_List *l, *items;
127    Elm_Object_Item *ds_it;
128    Evas_Object *ds = data;
129
130    items = elm_diskselector_items_get(ds);
131    EINA_LIST_FOREACH(items, l, ds_it)
132      printf("%s\n", elm_object_item_text_get(ds_it));
133 }
134
135 static void
136 _clear_cb(void *data, Evas_Object *obj, void *event_info)
137 {
138    Evas_Object *ds = data;
139    elm_diskselector_clear(ds);
140 }
141
142 static void
143 _select_first_cb(void *data, Evas_Object *obj, void *event_info)
144 {
145    Elm_Object_Item *first_ds_it;
146    Evas_Object *ds = data;
147
148    first_ds_it = elm_diskselector_first_item_get(ds);
149    if (first_ds_it)
150      elm_diskselector_item_selected_set(first_ds_it, EINA_TRUE);
151 }
152
153 static void
154 _select_last_cb(void *data, Evas_Object *obj, void *event_info)
155 {
156    Elm_Object_Item *last_ds_it;
157    Evas_Object *ds = data;
158
159    last_ds_it = elm_diskselector_last_item_get(ds);
160    if (last_ds_it)
161      elm_diskselector_item_selected_set(last_ds_it, EINA_TRUE);
162 }
163
164 static void
165 _select_next_cb(void *data, Evas_Object *obj, void *event_info)
166 {
167    Elm_Object_Item *selected_ds_it, *next_ds_it;
168    Evas_Object *ds = data;
169
170    selected_ds_it = elm_diskselector_selected_item_get(ds);
171    if (!selected_ds_it) return;
172
173    next_ds_it = elm_diskselector_item_next_get(selected_ds_it);
174    if (next_ds_it)
175      elm_diskselector_item_selected_set(next_ds_it, EINA_TRUE);
176 }
177
178 static void
179 _select_prev_cb(void *data, Evas_Object *obj, void *event_info)
180 {
181    Elm_Object_Item *selected_ds_it, *prev_ds_it;
182    Evas_Object *ds = data;
183
184    selected_ds_it = elm_diskselector_selected_item_get(ds);
185    if (!selected_ds_it) return;
186
187    prev_ds_it = elm_diskselector_item_prev_get(selected_ds_it);
188    if (prev_ds_it)
189      elm_diskselector_item_selected_set(prev_ds_it, EINA_TRUE);
190 }
191
192 EAPI_MAIN int
193 elm_main(int argc, char **argv)
194 {
195    Evas_Object *win, *bg, *bx, *hbx, *ds, *bt;
196
197    win = elm_win_add(NULL, "diskselector", ELM_WIN_BASIC);
198    elm_win_title_set(win, "Diskselector Items Example");
199    evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
200
201    bg = elm_bg_add(win);
202    elm_win_resize_object_add(win, bg);
203    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
204    evas_object_show(bg);
205
206    bx = elm_box_add(win);
207    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
208    elm_win_resize_object_add(win, bx);
209    evas_object_show(bx);
210
211    ds = elm_diskselector_add(win);
212    evas_object_size_hint_weight_set(ds, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
213    evas_object_size_hint_align_set(ds, EVAS_HINT_FILL, EVAS_HINT_FILL);
214    elm_box_pack_end(bx, ds);
215    evas_object_show(ds);
216
217    elm_diskselector_item_append(ds, "Item 0", NULL, NULL, NULL);
218    elm_diskselector_item_append(ds, "Item 1", NULL, NULL, NULL);
219    elm_diskselector_item_append(ds, "Item 2", NULL, NULL, NULL);
220
221    hbx = elm_box_add(win);
222    elm_box_horizontal_set(hbx, EINA_TRUE);
223    evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
224    evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
225    elm_box_pack_end(bx, hbx);
226    evas_object_show(hbx);
227
228    bt = elm_button_add(win);
229    elm_object_text_set(bt, "Append item");
230    evas_object_smart_callback_add(bt, "clicked", _add_cb, ds);
231    elm_box_pack_end(hbx, bt);
232    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
233    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
234    evas_object_show(bt);
235
236    bt = elm_button_add(win);
237    elm_object_text_set(bt, "Append with icon");
238    evas_object_smart_callback_add(bt, "clicked", _add_ic_cb, ds);
239    elm_box_pack_end(hbx, bt);
240    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
241    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
242    evas_object_show(bt);
243
244    bt = elm_button_add(win);
245    elm_object_text_set(bt, "Append with selected function");
246    evas_object_smart_callback_add(bt, "clicked", _add_func_cb, ds);
247    elm_box_pack_end(hbx, bt);
248    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
249    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
250    evas_object_show(bt);
251
252    bt = elm_button_add(win);
253    elm_object_text_set(bt, "Append with data");
254    evas_object_smart_callback_add(bt, "clicked", _add_data_cb, ds);
255    elm_box_pack_end(hbx, bt);
256    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
257    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
258    evas_object_show(bt);
259
260    hbx = elm_box_add(win);
261    elm_box_horizontal_set(hbx, EINA_TRUE);
262    evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
263    evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
264    elm_box_pack_end(bx, hbx);
265    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
266    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
267    evas_object_show(hbx);
268
269    bt = elm_button_add(win);
270    elm_object_text_set(bt, "Delete item");
271    evas_object_smart_callback_add(bt, "clicked", _del_cb, ds);
272    elm_box_pack_end(hbx, bt);
273    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
274    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
275    evas_object_show(bt);
276
277    bt = elm_button_add(win);
278    elm_object_text_set(bt, "Unselect item");
279    evas_object_smart_callback_add(bt, "clicked", _unselect_cb, ds);
280    elm_box_pack_end(hbx, bt);
281    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
282    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
283    evas_object_show(bt);
284
285    bt = elm_button_add(win);
286    elm_object_text_set(bt, "Print items");
287    evas_object_smart_callback_add(bt, "clicked", _print_cb, ds);
288    elm_box_pack_end(hbx, bt);
289    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
290    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
291    evas_object_show(bt);
292
293    bt = elm_button_add(win);
294    elm_object_text_set(bt, "Clear");
295    evas_object_smart_callback_add(bt, "clicked", _clear_cb, ds);
296    elm_box_pack_end(hbx, bt);
297    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
298    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
299    evas_object_show(bt);
300
301    hbx = elm_box_add(win);
302    elm_box_horizontal_set(hbx, EINA_TRUE);
303    evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
304    evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
305    elm_box_pack_end(bx, hbx);
306    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
307    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
308    evas_object_show(hbx);
309
310    bt = elm_button_add(win);
311    elm_object_text_set(bt, "Select first item");
312    evas_object_smart_callback_add(bt, "clicked", _select_first_cb, ds);
313    elm_box_pack_end(hbx, bt);
314    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
315    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
316    evas_object_show(bt);
317
318    bt = elm_button_add(win);
319    elm_object_text_set(bt, "Select last item");
320    evas_object_smart_callback_add(bt, "clicked", _select_last_cb, ds);
321    elm_box_pack_end(hbx, bt);
322    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
323    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
324    evas_object_show(bt);
325
326    bt = elm_button_add(win);
327    elm_object_text_set(bt, "Select next item");
328    evas_object_smart_callback_add(bt, "clicked", _select_next_cb, ds);
329    elm_box_pack_end(hbx, bt);
330    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
331    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
332    evas_object_show(bt);
333
334    bt = elm_button_add(win);
335    elm_object_text_set(bt, "Select previous item");
336    evas_object_smart_callback_add(bt, "clicked", _select_prev_cb, ds);
337    elm_box_pack_end(hbx, bt);
338    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
339    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
340    evas_object_show(bt);
341
342    evas_object_show(win);
343
344    elm_run();
345    elm_shutdown();
346
347    return 0;
348 }
349 ELM_MAIN()