2 # include "elementary_config.h"
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
7 #define WEIGHT evas_object_size_hint_weight_set
8 #define ALIGN evas_object_size_hint_align_set
9 #define EXPAND(X) WEIGHT((X), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
10 #define FILL(X) ALIGN((X), EVAS_HINT_FILL, EVAS_HINT_FILL)
12 #define BUTTON_TEXT_SET(BT, TEXT) \
13 elm_object_text_set((BT), (TEXT)); \
14 elm_object_tooltip_text_set((BT), (TEXT)); \
15 elm_object_tooltip_window_mode_set((BT), EINA_TRUE)
17 static const char *img1 = PACKAGE_DATA_DIR "/images/logo.png";
18 static const char *img2 = PACKAGE_DATA_DIR "/images/plant_01.jpg";
19 static const char *img3 = PACKAGE_DATA_DIR "/images/rock_01.jpg";
20 static const char *img4 = PACKAGE_DATA_DIR "/images/rock_02.jpg";
21 static const char *img5 = PACKAGE_DATA_DIR "/images/sky_01.jpg";
22 static const char *img6 = PACKAGE_DATA_DIR "/images/sky_02.jpg";
23 static const char *img7 = PACKAGE_DATA_DIR "/images/sky_03.jpg";
26 gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
29 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
34 gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
37 Evas_Object *ic = elm_icon_add(obj);
38 if (!strcmp(part, "elm.swallow.end"))
39 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
41 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
42 elm_icon_file_set(ic, buf, NULL);
43 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
47 static Elm_Genlist_Item_Class itc =
49 .version = ELM_GENLIST_ITEM_CLASS_VERSION,
50 .item_style = "default",
53 .text_get = gl_text_get,
54 .content_get = gl_content_get,
61 _content_image_new(Evas_Object *parent, const char *img)
65 ic = elm_icon_add(parent);
66 elm_icon_file_set(ic, img, NULL);
67 elm_icon_fill_outside_set(ic, EINA_FALSE);
72 _gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
74 printf("selected: %p\n", event_info);
78 _gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
80 printf("double clicked: %p\n", event_info);
84 _gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
86 printf("longpress %p\n", event_info);
90 _content_list_populate_cb(Evas_Object *gl)
93 for (i = 0; i < 10; i++)
94 elm_genlist_item_append(gl, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
95 if (elm_genlist_items_count(gl) < 500)
96 ecore_job_add((Ecore_Cb)_content_list_populate_cb, gl);
100 _content_list_new(Evas_Object *parent)
104 gl = elm_genlist_add(parent);
105 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
106 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
107 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
108 // FIXME: This causes genlist to resize the horiz axis very slowly :(
109 // Reenable this and resize the window horizontally, then try to resize it back
110 //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
112 ecore_job_add((Ecore_Cb)_content_list_populate_cb, gl);
117 _navi_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
119 elm_naviframe_item_pop(data);
123 _navi_it_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
125 elm_object_item_del(data);
129 _title_visible(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
131 elm_naviframe_item_title_visible_set(data,
132 !elm_naviframe_item_title_visible_get(data));
136 _promote(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
138 elm_naviframe_item_promote(data);
142 _page7(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
144 Evas_Object *bt, *bt2, *content, *nf = data;
147 bt = elm_button_add(nf);
148 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
149 BUTTON_TEXT_SET(bt, "Page 6");
151 bt2 = elm_button_add(nf);
152 evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
153 BUTTON_TEXT_SET(bt2, "Page 1");
154 evas_object_smart_callback_add(bt2, "clicked", _promote,
155 evas_object_data_get(nf, "page1"));
156 content = _content_image_new(nf, img6);
157 it = elm_naviframe_item_push(nf, "Page 7", bt, bt2, content, "overlap");
158 elm_object_item_part_text_set(it, "subtitle", "Overlap style!");
160 evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);
164 _page6(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
166 Evas_Object *bt, *bt2, *content, *nf = data;
169 bt = elm_button_add(nf);
170 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
171 BUTTON_TEXT_SET(bt, "Page 5");
173 bt2 = elm_button_add(nf);
174 evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
175 BUTTON_TEXT_SET(bt2, "Page 7");
176 evas_object_smart_callback_add(bt2, "clicked", _page7, nf);
178 content = _content_image_new(nf, img7);
179 it = elm_naviframe_item_push(nf, "Page 6", bt, bt2, content, "overlap");
180 elm_object_item_part_text_set(it, "subtitle", "Overlap style!");
182 evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);
186 _page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
188 Evas_Object *bt, *bt2, *content, *nf = data;
191 bt = elm_button_add(nf);
192 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
193 BUTTON_TEXT_SET(bt, "Page 4");
195 bt2 = elm_button_add(nf);
196 evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
197 BUTTON_TEXT_SET(bt2, "Page 6");
198 evas_object_smart_callback_add(bt2, "clicked", _page6, nf);
200 content = _content_image_new(nf, img5);
201 it = elm_naviframe_item_insert_after(nf,
202 elm_naviframe_top_item_get(nf),
208 elm_object_item_part_text_set(it, "subtitle", "This page is inserted without transition");
209 evas_object_smart_callback_add(bt, "clicked", _navi_it_del, it);
213 _page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
215 Evas_Object *bt, *ic, *content, *nf = data;
219 ic = elm_icon_add(nf);
220 snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
221 elm_app_data_dir_get());
222 elm_icon_file_set(ic, buf, NULL);
223 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
225 bt = elm_button_add(nf);
226 evas_object_smart_callback_add(bt, "clicked", _page5, nf);
227 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
228 elm_object_part_content_set(bt, "icon", ic);
230 content = _content_image_new(nf, img4);
232 it = elm_naviframe_item_push(nf,
238 elm_object_item_part_text_set(it, "subtitle", "Title area visibility test");
240 ic = elm_icon_add(nf);
241 snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
242 elm_app_data_dir_get());
243 elm_icon_file_set(ic, buf, NULL);
244 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
245 elm_object_item_part_content_set(it, "icon", ic);
246 elm_naviframe_item_title_visible_set(it, EINA_FALSE);
247 evas_object_smart_callback_add(content, "clicked", _title_visible, it);
251 _page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
253 Evas_Object *bt, *bt2, *ic, *content, *nf = data;
257 bt = elm_button_add(nf);
258 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
259 BUTTON_TEXT_SET(bt, "Prev");
260 evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);
262 bt2 = elm_button_add(nf);
263 evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
264 BUTTON_TEXT_SET(bt2, "Next");
265 evas_object_smart_callback_add(bt2, "clicked", _page4, nf);
267 content = _content_image_new(nf, img3);
269 it = elm_naviframe_item_push(nf,
275 ic = elm_icon_add(nf);
276 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
277 elm_icon_file_set(ic, buf, NULL);
278 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
280 elm_object_item_part_content_set(it, "icon", ic);
284 _page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
286 Evas_Object *bt, *content, *ic, *nf = data;
290 bt = elm_button_add(nf);
291 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
292 evas_object_smart_callback_add(bt, "clicked", _page3, nf);
294 ic = elm_icon_add(nf);
295 snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
296 elm_app_data_dir_get());
297 elm_icon_file_set(ic, buf, NULL);
298 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
299 elm_object_part_content_set(bt, "icon", ic);
301 content = _content_image_new(nf, img2);
303 it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content, NULL);
304 elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");
308 test_naviframe_complex(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
310 Evas_Object *win, *nf, *btn, *box, *content, *tb, *o;
314 win = elm_win_util_standard_add("naviframe", "Naviframe");
315 elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
316 elm_win_autodel_set(win, EINA_TRUE);
318 box = elm_box_add(win);
321 elm_box_horizontal_set(box, EINA_TRUE);
322 elm_win_resize_object_add(win, box);
323 evas_object_show(box);
325 tb = elm_toolbar_add(win);
326 WEIGHT(tb, 0, EVAS_HINT_EXPAND);
328 elm_toolbar_horizontal_set(tb, EINA_FALSE);
329 elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);
330 elm_box_pack_end(box, tb);
331 evas_object_show(tb);
333 nf = elm_naviframe_add(win);
336 elm_box_pack_end(box, nf);
337 evas_object_show(nf);
339 for (x = 0; x < 4; x++)
341 const char *label[] = { "View 1", "View 2", "View 3", "View 4" };
342 o = elm_naviframe_add(win);
345 btn = elm_button_add(o);
346 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
347 evas_object_smart_callback_add(btn, "clicked", _page2, o);
348 BUTTON_TEXT_SET(btn, "Next");
349 evas_object_show(btn);
352 content = _content_image_new(o, img1);
354 content = _content_list_new(o);
355 evas_object_data_set(o, "page1", elm_naviframe_item_push(o, "Page 1", NULL, btn, content, NULL));
357 it = elm_naviframe_item_simple_push(nf, o);
358 it = elm_toolbar_item_append(tb, NULL, label[x], _promote, it);
362 elm_toolbar_item_selected_set(elm_toolbar_last_item_get(tb), EINA_TRUE);
363 evas_object_resize(win, 400, 600);
364 evas_object_show(win);