elm: Refactoring. Removed trailing whitespaces and fixed indentation.
[framework/uifw/elementary.git] / src / bin / test_factory.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 // 32 ^ 5 = 33mil
8 #define BLOK 32
9
10 static void
11 fac_unrealize(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
12 {
13    // setting factory content to null deletes it
14    printf("DELETE for factory %p\n", obj);
15    elm_factory_content_set(obj, NULL);
16 }
17
18 static void
19 fac_realize_end(void *data, Evas_Object *obj, void *event_info __UNUSED__)
20 {
21    Evas_Object *win = data;
22    Evas_Object *bx, *bt;
23    int i;
24
25    printf("ADD for factory 4 %p [%i]\n", obj, (BLOK * (int)evas_object_data_get(obj, "num")));
26    bx = elm_box_add(win);
27    elm_box_homogeneous_set(bx, EINA_TRUE);
28
29    for (i = 0; i < BLOK; i++)
30      {
31         char buf[32];
32
33         snprintf(buf, sizeof(buf), "%i",
34                  (i + (BLOK * (int)evas_object_data_get(obj, "num"))));
35
36         bt = elm_button_add(win);
37         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
38         evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
39         elm_object_text_set(bt, buf);
40         elm_box_pack_end(bx, bt);
41         evas_object_show(bt);
42      }
43
44    elm_factory_content_set(obj, bx);
45    evas_object_show(bx);
46 }
47
48 static void
49 fac_realize3(void *data, Evas_Object *obj, void *event_info __UNUSED__)
50 {
51    Evas_Object *win = data;
52    Evas_Object *bx, *fc;
53    int i;
54
55    printf("ADD for factory 3 %p [%i]\n", obj, (BLOK * (int)evas_object_data_get(obj, "num")));
56    bx = elm_box_add(win);
57    elm_box_homogeneous_set(bx, EINA_TRUE);
58
59    for (i = 0; i < BLOK; i++)
60      {
61         fc = elm_factory_add(win);
62         // initial height per factory of 1000
63         // scrollbar will be wrong until enough
64         // children have been realized and the
65         // real size is known
66         evas_object_data_set(fc, "num", (void *)(i + (BLOK * (int)evas_object_data_get(obj, "num"))));
67         evas_object_size_hint_min_set(fc, 0, 1000);
68         evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
69         evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
70         evas_object_smart_callback_add(fc, "realize", fac_realize_end, win);
71         evas_object_smart_callback_add(fc, "unrealize", fac_unrealize, win);
72         elm_box_pack_end(bx, fc);
73         evas_object_show(fc);
74      }
75
76    elm_factory_content_set(obj, bx);
77    evas_object_show(bx);
78 }
79
80 static void
81 fac_realize2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
82 {
83    Evas_Object *win = data;
84    Evas_Object *bx, *fc;
85    int i;
86
87    printf("ADD for factory 2 %p [%i]\n", obj, (BLOK * (int)evas_object_data_get(obj, "num")));
88    bx = elm_box_add(win);
89    elm_box_homogeneous_set(bx, EINA_TRUE);
90
91    for (i = 0; i < BLOK; i++)
92      {
93         fc = elm_factory_add(win);
94         // initial height per factory of 1000
95         // scrollbar will be wrong until enough
96         // children have been realized and the
97         // real size is known
98         evas_object_data_set(fc, "num", (void *)(i + (BLOK * (int)evas_object_data_get(obj, "num"))));
99         evas_object_size_hint_min_set(fc, 0, 1000);
100         evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
101         evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
102         evas_object_smart_callback_add(fc, "realize", fac_realize3, win);
103         evas_object_smart_callback_add(fc, "unrealize", fac_unrealize, win);
104         elm_box_pack_end(bx, fc);
105         evas_object_show(fc);
106      }
107
108    elm_factory_content_set(obj, bx);
109    evas_object_show(bx);
110 }
111
112 static void
113 fac_realize1(void *data, Evas_Object *obj, void *event_info __UNUSED__)
114 {
115    Evas_Object *win = data;
116    Evas_Object *bx, *fc;
117    int i;
118
119    printf("ADD for factory 1 %p [%i]\n", obj, (BLOK * (int)evas_object_data_get(obj, "num")));
120    bx = elm_box_add(win);
121    elm_box_homogeneous_set(bx, EINA_TRUE);
122
123    for (i = 0; i < BLOK; i++)
124      {
125         fc = elm_factory_add(win);
126         // initial height per factory of 1000
127         // scrollbar will be wrong until enough
128         // children have been realized and the
129         // real size is known
130         evas_object_data_set(fc, "num", (void *)(i + (BLOK * (int)evas_object_data_get(obj, "num"))));
131         evas_object_size_hint_min_set(fc, 0, 1000);
132         evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
133         evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
134         evas_object_smart_callback_add(fc, "realize", fac_realize2, win);
135         evas_object_smart_callback_add(fc, "unrealize", fac_unrealize, win);
136         elm_box_pack_end(bx, fc);
137         evas_object_show(fc);
138      }
139
140    elm_factory_content_set(obj, bx);
141    evas_object_show(bx);
142 }
143
144 void
145 test_factory(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
146 {
147    Evas_Object *win, *bg, *bx, *sc, *fc;
148    int i;
149
150    win = elm_win_add(NULL, "factory", ELM_WIN_BASIC);
151    elm_win_title_set(win, "Factory");
152    elm_win_autodel_set(win, EINA_TRUE);
153
154    bg = elm_bg_add(win);
155    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
156    elm_win_resize_object_add(win, bg);
157    evas_object_show(bg);
158
159    bx = elm_box_add(win);
160    elm_box_homogeneous_set(bx, EINA_TRUE);
161    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
162
163    for (i = 0; i < BLOK; i++)
164      {
165         fc = elm_factory_add(win);
166         // initial height per factory of 1000
167         // scrollbar will be wrong until enough
168         // children have been realized and the
169         // real size is known
170         evas_object_data_set(fc, "num", (void *)i);
171         evas_object_size_hint_min_set(fc, 0, 1000);
172         evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
173         evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
174         evas_object_smart_callback_add(fc, "realize", fac_realize1, win);
175         evas_object_smart_callback_add(fc, "unrealize", fac_unrealize, win);
176         elm_box_pack_end(bx, fc);
177         evas_object_show(fc);
178      }
179
180    sc = elm_scroller_add(win);
181    elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
182    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
183    elm_win_resize_object_add(win, sc);
184
185    elm_scroller_content_set(sc, bx);
186    evas_object_show(bx);
187
188    evas_object_show(sc);
189
190    evas_object_resize(win, 320, 480);
191    evas_object_show(win);
192 }
193 #endif