package upload
[framework/uifw/elementary.git] / src / bin / test_scroller.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6 void
7 my_bt_go_300_300(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
8 {
9    elm_scroller_region_bring_in((Evas_Object *)data, 300, 300, 318, 318);
10 }
11
12 void
13 my_bt_go_900_300(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
14 {
15    elm_scroller_region_bring_in((Evas_Object *)data, 900, 300, 318, 318);
16 }
17
18 void
19 my_bt_go_300_900(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
20 {
21    elm_scroller_region_bring_in((Evas_Object *)data, 300, 900, 318, 318);
22 }
23
24 void
25 my_bt_go_900_900(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
26 {
27    elm_scroller_region_bring_in((Evas_Object *)data, 900, 900, 318, 318);
28 }
29
30 void
31 my_bt_freeze_toggle(void *data, Evas_Object *obj, void *event_info __UNUSED__)
32 {
33    if (elm_check_state_get(obj))
34      elm_object_scroll_freeze_push((Evas_Object *)data);
35    else
36      elm_object_scroll_freeze_pop((Evas_Object *)data);
37 }
38
39 void
40 my_bt_hold_toggle(void *data, Evas_Object *obj, void *event_info __UNUSED__)
41 {
42    if (elm_check_state_get(obj))
43      elm_object_scroll_hold_push((Evas_Object *)data);
44    else
45      elm_object_scroll_hold_pop((Evas_Object *)data);
46 }
47
48 void
49 _sc_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
50 {
51    Evas_Coord x = 0, y = 0;
52    evas_object_geometry_get(obj, &x, &y, NULL, NULL);
53    evas_object_move(data, x, y);
54 }
55
56 void
57 _sc_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
58 {
59    Evas_Coord w = 0, h = 0;
60    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
61    evas_object_resize(data, w, h);
62 }
63
64 void
65 test_scroller(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
66 {
67    Evas_Object *win, *bg2, *tb, *tb2, *sc, *bt, *ck1, *ck2, *bx, *bx2, *fr;
68    int i, j, n;
69    char buf[PATH_MAX];
70    Evas_Coord x = 0, y = 0, w = 0, h = 0;
71    const char *img[9] =
72      {
73         "panel_01.jpg",
74         "plant_01.jpg",
75         "rock_01.jpg",
76         "rock_02.jpg",
77         "sky_01.jpg",
78         "sky_02.jpg",
79         "sky_03.jpg",
80         "sky_04.jpg",
81         "wood_01.jpg"
82      };
83
84    win = elm_win_util_standard_add("scroller", "Scroller");
85    elm_win_autodel_set(win, EINA_TRUE);
86
87    bx = elm_box_add(win);
88    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
89    elm_win_resize_object_add(win, bx);
90    evas_object_show(bx);
91
92    fr = elm_frame_add(win);
93    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
94    evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.0);
95    elm_object_text_set(fr, "Options");
96    elm_box_pack_end(bx, fr);
97    evas_object_show(fr);
98
99    bx2 = elm_box_add(win);
100    elm_object_content_set(fr, bx2);
101    elm_box_horizontal_set(bx2, EINA_TRUE);
102    evas_object_show(bx2);
103
104    ck1 = elm_check_add(win);
105    elm_object_text_set(ck1, "Freeze");
106    elm_box_pack_end(bx2, ck1);
107    evas_object_show(ck1);
108
109    ck2 = elm_check_add(win);
110    elm_object_text_set(ck2, "Hold");
111    elm_box_pack_end(bx2, ck2);
112    evas_object_show(ck2);
113
114    sc = elm_scroller_add(win);
115    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
116    evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
117    elm_box_pack_end(bx, sc);
118
119    tb = elm_table_add(win);
120
121    n = 0;
122    for (j = 0; j < 12; j++)
123      {
124         for (i = 0; i < 12; i++)
125           {
126              bg2 = elm_bg_add(win);
127              snprintf(buf, sizeof(buf), "%s/images/%s",
128                       elm_app_data_dir_get(), img[n]);
129              n++;
130              if (n >= 9) n = 0;
131              elm_bg_file_set(bg2, buf, NULL);
132              evas_object_size_hint_weight_set(bg2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
133              evas_object_size_hint_align_set(bg2, EVAS_HINT_FILL, EVAS_HINT_FILL);
134              evas_object_size_hint_min_set(bg2, 318, 318);
135              elm_table_pack(tb, bg2, i, j, 1, 1);
136              evas_object_show(bg2);
137           }
138      }
139
140    elm_object_content_set(sc, tb);
141    evas_object_show(tb);
142
143    elm_scroller_page_relative_set(sc, 1.0, 1.0);
144    evas_object_show(sc);
145
146    evas_object_smart_callback_add(ck1, "changed", my_bt_freeze_toggle, tb);
147    evas_object_smart_callback_add(ck2, "changed", my_bt_hold_toggle, tb);
148
149    tb2 = elm_table_add(win);
150
151    bt = elm_button_add(win);
152    elm_object_text_set(bt, "to 300 300");
153    evas_object_smart_callback_add(bt, "clicked", my_bt_go_300_300, sc);
154    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
155    evas_object_size_hint_align_set(bt, 0.1, 0.1);
156    elm_table_pack(tb2, bt, 0, 0, 1, 1);
157    evas_object_show(bt);
158
159    bt = elm_button_add(win);
160    elm_object_text_set(bt, "to 900 300");
161    evas_object_smart_callback_add(bt, "clicked", my_bt_go_900_300, sc);
162    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
163    evas_object_size_hint_align_set(bt, 0.9, 0.1);
164    elm_table_pack(tb2, bt, 2, 0, 1, 1);
165    evas_object_show(bt);
166
167    bt = elm_button_add(win);
168    elm_object_text_set(bt, "to 300 900");
169    evas_object_smart_callback_add(bt, "clicked", my_bt_go_300_900, sc);
170    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
171    evas_object_size_hint_align_set(bt, 0.1, 0.9);
172    elm_table_pack(tb2, bt, 0, 2, 1, 1);
173    evas_object_show(bt);
174
175    bt = elm_button_add(win);
176    elm_object_text_set(bt, "to 900 900");
177    evas_object_smart_callback_add(bt, "clicked", my_bt_go_900_900, sc);
178    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
179    evas_object_size_hint_align_set(bt, 0.9, 0.9);
180    elm_table_pack(tb2, bt, 2, 2, 1, 1);
181    evas_object_show(bt);
182
183    evas_object_event_callback_add(sc, EVAS_CALLBACK_MOVE, _sc_move_cb, tb2);
184    evas_object_event_callback_add(sc, EVAS_CALLBACK_RESIZE, _sc_resize_cb, tb2);
185    evas_object_geometry_get(sc, &x, &y, &w, &h);
186    evas_object_move(tb2, x, y);
187    evas_object_resize(tb2, w, h);
188    evas_object_show(tb2);
189
190    evas_object_resize(win, 320, 420);
191    evas_object_show(win);
192 }
193
194 void
195 click_through(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
196 {
197    printf("click went through on %p\n", obj);
198 }
199
200 void
201 test_scroller2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
202 {
203    Evas_Object *win, *bt, *bx, *bx2, *sc, *tb, *tb2, *rc;
204    int i, j;
205
206    win = elm_win_util_standard_add("scroller2", "Scroller 2");
207    elm_win_autodel_set(win, EINA_TRUE);
208
209    bx = elm_box_add(win);
210    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
211    evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
212
213    /* { */
214    for (i = 0; i < 3; i++)
215      {
216         bt = elm_button_add(win);
217         elm_object_text_set(bt, "Vertical");
218         evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
219         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
220         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
221         elm_box_pack_end(bx, bt);
222         evas_object_show(bt);
223      }
224    /* } */
225
226    /* { */
227    sc = elm_scroller_add(win);
228    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);
229    evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);
230    elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
231    elm_scroller_content_min_limit(sc, 0, 1);
232    elm_box_pack_end(bx, sc);
233    evas_object_show(sc);
234
235    bx2 = elm_box_add(win);
236    elm_box_horizontal_set(bx2, EINA_TRUE);
237
238    for (i = 0; i < 10; i++)
239      {
240         bt = elm_button_add(win);
241         elm_object_text_set(bt, "... Horizontal scrolling ...");
242         evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
243         elm_box_pack_end(bx2, bt);
244         evas_object_show(bt);
245      }
246
247    elm_object_content_set(sc, bx2);
248    evas_object_show(bx2);
249    /* } */
250
251    /* { */
252    for (i = 0; i < 3; i++)
253      {
254         bt = elm_button_add(win);
255         elm_object_text_set(bt, "Vertical");
256         evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
257         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
258         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
259         elm_box_pack_end(bx, bt);
260         evas_object_show(bt);
261      }
262    /* } */
263
264    /* { */
265    tb = elm_table_add(win);
266    evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
267    evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
268    elm_box_pack_end(bx, tb);
269    evas_object_show(tb);
270
271    rc = evas_object_rectangle_add(evas_object_evas_get(win));
272    evas_object_size_hint_min_set(rc, 200, 120);
273    elm_table_pack(tb, rc, 0, 0, 1, 1);
274
275    sc = elm_scroller_add(win);
276    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
277    evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
278    elm_table_pack(tb, sc, 0, 0, 1, 1);
279    evas_object_show(sc);
280
281    tb2 = elm_table_add(win);
282
283    for (j = 0; j < 16; j++)
284      {
285         for (i = 0; i < 16; i++)
286           {
287              bt = elm_button_add(win);
288              elm_object_text_set(bt, "Both");
289              evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
290              elm_table_pack(tb2, bt, i, j, 1, 1);
291              evas_object_show(bt);
292           }
293      }
294
295    elm_object_content_set(sc, tb2);
296    evas_object_show(tb2);
297    /* } */
298
299    for (i = 0; i < 24; i++)
300      {
301         bt = elm_button_add(win);
302         elm_object_text_set(bt, "Vertical");
303         evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
304         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
305         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
306         elm_box_pack_end(bx, bt);
307         evas_object_show(bt);
308      }
309
310    sc = elm_scroller_add(win);
311    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
312    elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
313    elm_win_resize_object_add(win, sc);
314    elm_object_content_set(sc, bx);
315    evas_object_show(bx);
316    evas_object_show(sc);
317
318    evas_object_resize(win, 320, 480);
319    evas_object_show(win);
320 }
321 #endif