2c3dd79c816fa91fb1fdd00b790dd4359286b49e
[framework/uifw/elementary.git] / src / bin / test_naviframe.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 #define BUTTON_TEXT_SET(BT, TEXT) \
8    elm_object_text_set((BT), (TEXT)); \
9    elm_object_tooltip_text_set((BT), (TEXT)); \
10    elm_object_tooltip_window_mode_set((BT), EINA_TRUE)
11
12 static const char *img1 = PACKAGE_DATA_DIR "/images/logo.png";
13 static const char *img2 = PACKAGE_DATA_DIR "/images/plant_01.jpg";
14 static const char *img3 = PACKAGE_DATA_DIR "/images/rock_01.jpg";
15 static const char *img4 = PACKAGE_DATA_DIR "/images/rock_02.jpg";
16 static const char *img5 = PACKAGE_DATA_DIR "/images/sky_01.jpg";
17
18 Evas_Object *
19 _content_new(Evas_Object *parent, const char *img)
20 {
21    Evas_Object *photo = elm_photo_add(parent);
22    elm_photo_file_set(photo, img);
23    elm_photo_fill_inside_set(photo, EINA_TRUE);
24    elm_object_style_set(photo, "shadow");
25    return photo;
26 }
27
28 void
29 _navi_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
30 {
31    elm_naviframe_item_pop(data);
32 }
33
34 void
35 _navi_it_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
36 {
37    elm_object_item_del(data);
38 }
39
40 void
41 _title_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
42 {
43    printf("Title Clicked!\n");
44 }
45
46 void
47 <<<<<<< HEAD
48 _title_visible(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
49 =======
50 _title_visible(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
51 >>>>>>> remotes/origin/upstream
52 {
53    elm_naviframe_item_title_visible_set(data,
54                                !elm_naviframe_item_title_visible_get(data));
55 }
56
57 void
58 <<<<<<< HEAD
59 _promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
60 =======
61 _promote(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
62 >>>>>>> remotes/origin/upstream
63 {
64    elm_naviframe_item_promote(data);
65 }
66
67 void
68 _page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
69 {
70    Evas_Object *bt, *bt2, *content, *nf = data;
71    Elm_Object_Item *it;
72
73    bt = elm_button_add(nf);
74    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
75    BUTTON_TEXT_SET(bt, "Prev");
76
77    bt2 = elm_button_add(nf);
78    evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
79    BUTTON_TEXT_SET(bt2, "Page 1");
80    evas_object_smart_callback_add(bt2, "clicked", _promote,
81                                   evas_object_data_get(nf, "page1"));
82
83    content = _content_new(nf, img5);
84 <<<<<<< HEAD
85    it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf),
86 =======
87    it = elm_naviframe_item_insert_after(obj,
88                                         elm_naviframe_top_item_get(nf),
89 >>>>>>> remotes/origin/upstream
90                                         "Page 5",
91                                         bt,
92                                         bt2,
93                                         content,
94                                         NULL);
95
96    evas_object_smart_callback_add(bt, "clicked", _navi_it_del, it);
97 }
98
99 void
100 _page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
101 {
102    Evas_Object *bt, *ic, *content, *nf = data;
103    char buf[PATH_MAX];
104    Elm_Object_Item *it;
105
106    ic = elm_icon_add(nf);
107    snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
108             elm_app_data_dir_get());
109    elm_icon_file_set(ic, buf, NULL);
110    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
111
112    bt = elm_button_add(nf);
113    evas_object_smart_callback_add(bt, "clicked", _page5, nf);
114    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
115    elm_object_part_content_set(bt, "icon", ic);
116
117    content = _content_new(nf, img4);
118
119    it = elm_naviframe_item_push(nf,
120                                 "Page 4",
121                                 NULL,
122                                 bt,
123                                 content,
124                                 NULL);
125
126    ic = elm_icon_add(nf);
127    snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
128             elm_app_data_dir_get());
129    elm_icon_file_set(ic, buf, NULL);
130    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
131    elm_object_item_part_content_set(it, "icon", ic);
132    elm_naviframe_item_title_visible_set(it, EINA_FALSE);
133    evas_object_smart_callback_add(content, "clicked", _title_visible, it);
134 }
135
136 void
137 _page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
138 {
139    Evas_Object *bt, *bt2, *ic, *content, *nf = data;
140    char buf[PATH_MAX];
141    Elm_Object_Item *it;
142
143    bt = elm_button_add(nf);
144    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
145    BUTTON_TEXT_SET(bt, "Prev");
146    evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);
147
148    bt2 = elm_button_add(nf);
149    evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
150    BUTTON_TEXT_SET(bt2, "Next");
151    evas_object_smart_callback_add(bt2, "clicked", _page4, nf);
152
153    content = _content_new(nf, img3);
154
155    it = elm_naviframe_item_push(nf,
156                                 "Page 3",
157                                 bt,
158                                 bt2,
159                                 content,
160                                 NULL);
161    ic = elm_icon_add(nf);
162    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
163    elm_icon_file_set(ic, buf, NULL);
164    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
165
166    elm_object_item_part_content_set(it, "icon", ic);
167 }
168
169 void
170 _page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
171 {
172    Evas_Object *bt, *content, *ic, *nf = data;
173    char buf[PATH_MAX];
174    Elm_Object_Item *it;
175
176    bt = elm_button_add(nf);
177    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
178    evas_object_smart_callback_add(bt, "clicked", _page3, nf);
179
180    ic = elm_icon_add(nf);
181    snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
182             elm_app_data_dir_get());
183    elm_icon_file_set(ic, buf, NULL);
184    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
185    elm_object_part_content_set(bt, "icon", ic);
186
187    content = _content_new(nf, img2);
188
189    it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content,  NULL);
190    elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");
191 }
192
193 void
194 test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
195 {
196    Evas_Object *win, *bg, *nf, *btn, *content;
197    Elm_Object_Item *it;
198
199    win = elm_win_add(NULL, "naviframe", ELM_WIN_BASIC);
200    elm_win_title_set(win, "Naviframe");
201    elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
202    elm_win_autodel_set(win, EINA_TRUE);
203
204    bg = elm_bg_add(win);
205    elm_win_resize_object_add(win, bg);
206    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
207    evas_object_show(bg);
208
209    nf = elm_naviframe_add(win);
210    elm_win_resize_object_add(win, nf);
211    evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
212    evas_object_show(nf);
213    evas_object_smart_callback_add(nf, "title,clicked", _title_clicked, 0);
214
215    btn = elm_button_add(nf);
216    evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
217    evas_object_smart_callback_add(btn, "clicked", _page2, nf);
218    BUTTON_TEXT_SET(btn, "Next");
219    evas_object_show(btn);
220
221    content = _content_new(nf, img1);
222    it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
223    evas_object_data_set(nf, "page1", it);
224
225    evas_object_resize(win, 400, 600);
226    evas_object_show(win);
227 }
228 #endif