Merge branch 'master' of eunmi15.lee@165.213.180.234:/git/slp/pkgs/elementary
[framework/uifw/elementary.git] / src / bin / test_pager.c
1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
3 typedef struct _Pginfo Pginfo;
4
5 struct _Pginfo
6 {
7    Evas_Object *win, *pager, *pg1, *pg2, *pg3;
8 };
9
10 static void
11 my_pager_1(void *data, Evas_Object *obj, void *event_info)
12 {
13    Pginfo *info = data;
14    elm_pager_content_promote(info->pager, info->pg2);
15 }
16
17 static void
18 my_pager_2(void *data, Evas_Object *obj, void *event_info)
19 {
20    Pginfo *info = data;
21    elm_pager_content_promote(info->pager, info->pg3);
22 }
23
24 static void
25 my_pager_3(void *data, Evas_Object *obj, void *event_info)
26 {
27    Pginfo *info = data;
28    elm_pager_content_promote(info->pager, info->pg1);
29 }
30
31 static void
32 my_pager_pop(void *data, Evas_Object *obj, void *event_info)
33 {
34    Pginfo *info = data;
35    elm_pager_content_pop(info->pager);
36 }
37
38 void
39 test_pager(void *data, Evas_Object *obj, void *event_info)
40 {
41    Evas_Object *win, *bg, *pg, *bx, *lb, *bt;
42    static Pginfo info;
43
44    win = elm_win_add(NULL, "pager", ELM_WIN_BASIC);
45    elm_win_title_set(win, "Pager");
46    elm_win_autodel_set(win, 1);
47    info.win = win;
48
49    bg = elm_bg_add(win);
50    elm_win_resize_object_add(win, bg);
51    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
52    evas_object_show(bg);
53
54    pg = elm_pager_add(win);
55    elm_win_resize_object_add(win, pg);
56    evas_object_show(pg);
57
58    info.pager = pg;
59
60    bx = elm_box_add(win);
61    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
62    evas_object_show(bx);
63
64    lb = elm_label_add(win);
65    elm_label_label_set(lb,
66                        "This is page 1 in a pager stack.<br>"
67                        "<br>"
68                        "So what is a pager stack? It is a stack<br>"
69                        "of pages that hold widgets in it. The<br>"
70                        "pages can be pushed and popped on and<br>"
71                        "off the stack, activated and otherwise<br>"
72                        "activated if already in the stack<br>"
73                        "(activated means promoted to the top of<br>"
74                        "the stack).<br>"
75                        "<br>"
76                        "The theme may define the animation how<br>"
77                        "show and hide of pages.");
78    elm_box_pack_end(bx, lb);
79    evas_object_show(lb);
80
81    bt = elm_button_add(win);
82    elm_button_label_set(bt, "Flip to 2");
83    evas_object_smart_callback_add(bt, "clicked", my_pager_1, &info);
84    elm_box_pack_end(bx, bt);
85    evas_object_show(bt);
86
87    bt = elm_button_add(win);
88    elm_button_label_set(bt, "Popme");
89    evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
90    elm_box_pack_end(bx, bt);
91    evas_object_show(bt);
92    elm_pager_content_push(pg, bx);
93    info.pg1 = bx;
94
95    bx = elm_box_add(win);
96    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
97    evas_object_show(bx);
98
99    lb = elm_label_add(win);
100    elm_label_label_set(lb,
101                        "This is page 2 in a pager stack.<br>"
102                        "<br>"
103                        "This is just like the previous page in<br>"
104                        "the pager stack."
105                        );
106    elm_box_pack_end(bx, lb);
107    evas_object_show(lb);
108
109    bt = elm_button_add(win);
110    elm_button_label_set(bt, "Flip to 3");
111    evas_object_smart_callback_add(bt, "clicked", my_pager_2, &info);
112    elm_box_pack_end(bx, bt);
113    evas_object_show(bt);
114
115    bt = elm_button_add(win);
116    elm_button_label_set(bt, "Popme");
117    evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
118    elm_box_pack_end(bx, bt);
119    evas_object_show(bt);
120    elm_pager_content_push(pg, bx);
121    info.pg2 = bx;
122
123    bx = elm_box_add(win);
124    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
125    evas_object_show(bx);
126
127    lb = elm_label_add(win);
128    elm_label_label_set(lb,
129                        "This is page 3 in a pager stack.<br>"
130                        "<br>"
131                        "This is just like the previous page in<br>"
132                        "the pager stack.");
133    elm_box_pack_end(bx, lb);
134    evas_object_show(lb);
135
136    bt = elm_button_add(win);
137    elm_button_label_set(bt, "Flip to 1");
138    evas_object_smart_callback_add(bt, "clicked", my_pager_3, &info);
139    elm_box_pack_end(bx, bt);
140    evas_object_show(bt);
141
142    bt = elm_button_add(win);
143    elm_button_label_set(bt, "Popme");
144    evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
145    elm_box_pack_end(bx, bt);
146    evas_object_show(bt);
147    elm_pager_content_push(pg, bx);
148    info.pg3 = bx;
149
150    evas_object_show(win);
151 }
152
153 static void
154 my_pager_push(void *data, Evas_Object *obj, void *event_info)
155 {
156    Pginfo *info = data;
157    Evas_Object *bx, *bt, *lb;
158    static int count = 2;
159    char buf[32];
160
161    bx = elm_box_add(info->win);
162    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
163    evas_object_show(bx);
164
165    lb = elm_label_add(info->win);
166    snprintf(buf, sizeof(buf), "This is page %d in the slide pager<br><br>", count++);
167    elm_label_label_set(lb, buf);
168    elm_box_pack_end(bx, lb);
169    evas_object_show(lb);
170
171    bt = elm_button_add(info->win);
172    elm_button_label_set(bt, "Push a new page");
173    evas_object_smart_callback_add(bt, "clicked", my_pager_push, info);
174    elm_box_pack_end(bx, bt);
175    evas_object_show(bt);
176
177    bt = elm_button_add(info->win);
178    elm_button_label_set(bt, "Go back (pop)");
179    evas_object_smart_callback_add(bt, "clicked", my_pager_pop, info);
180    elm_box_pack_end(bx, bt);
181    evas_object_show(bt);
182    elm_pager_content_push(info->pager, bx);
183 }
184
185 void
186 test_pager_slide(void *data, Evas_Object *obj, void *event_info)
187 {
188    Evas_Object *win, *bg, *pg, *bx, *lb, *bt;
189    static Pginfo info;
190
191    win = elm_win_add(NULL, "pager", ELM_WIN_BASIC);
192    elm_win_title_set(win, "Pager Slide");
193    elm_win_autodel_set(win, 1);
194    info.win = win;
195
196    bg = elm_bg_add(win);
197    elm_win_resize_object_add(win, bg);
198    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
199    evas_object_show(bg);
200
201    pg = elm_pager_add(win);
202    elm_win_resize_object_add(win, pg);
203    elm_object_style_set(pg, "slide");
204    evas_object_show(pg);
205    info.pager = pg;
206
207    bx = elm_box_add(win);
208    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
209    evas_object_show(bx);
210
211    lb = elm_label_add(win);
212    elm_label_label_set(lb,
213                        "This is page 1 in a slide pager.<br>"
214                        "<br>"
215                        "The slide pager style is usefull for browsing<br>"
216                        "a hierarchy of objects, as it makes clear<br>"
217                        "the direction of the browse.<br>"
218                        "This is the 'slide' style, also available<br>"
219                        "a fully transparent style named 'slide_invisble'.<br>"
220                        "<br>");
221    elm_box_pack_end(bx, lb);
222    evas_object_show(lb);
223
224    bt = elm_button_add(win);
225    elm_button_label_set(bt, "Push a new page");
226    evas_object_smart_callback_add(bt, "clicked", my_pager_push, &info);
227    elm_box_pack_end(bx, bt);
228    evas_object_show(bt);
229
230    bt = elm_button_add(win);
231    elm_button_label_set(bt, "Go back (pop)");
232    evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
233    elm_box_pack_end(bx, bt);
234    evas_object_show(bt);
235    elm_pager_content_push(pg, bx);
236
237    evas_object_show(win);
238 }
239 #endif