Evas_Object *clk_widget_create_button(Evas_Object * parent, const char *file, const char *group, Edje_Color_Class * color_class, Edje_Signal_Cb clicked_cb, void *data) { retvm_if(NULL_CHECK(parent), NULL, "parent null"); retvm_if(NULL_CHECK(file), NULL, "file null"); retvm_if(NULL_CHECK(group), NULL, "group null"); retvm_if(NULL_CHECK(color_class), NULL, "color_class null"); CLK_FUN_BEG(); Evas_Object *ret = NULL; ret = load_edj(parent, file, group); retvm_if(NULL_CHECK(ret), NULL, "ret null"); edje_object_signal_callback_add(_EDJ(ret), "mouse,down", "rect", _clk_btn_mouse_down_cb, (void *)color_class); edje_object_signal_callback_add(_EDJ(ret), "mouse,up", "rect", _clk_btn_mouse_up_cb, (void *)color_class); if (clicked_cb) { edje_object_signal_callback_add(_EDJ(ret), "mouse,clicked", "rect", clicked_cb, data); } CLK_FUN_END(); return ret; }
static Evas_Object *_animated_unpack_item(Evas_Object *scroller, Evas_Object *page, unsigned int pos) { Evas_Object *out = NULL; Evas_Object *item; Evas_Object *next_page; char buf[32]; unsigned int page_max_app; unsigned int page_no; page_scroller_sort_type_e sort_type; out = page_unpack_item_at(page, pos); retv_if(NULL == out, NULL); page_no = page_scroller_get_page_no(scroller, page); page_max_app = (unsigned int) evas_object_data_get(scroller, "page_max_app"); sort_type = (page_scroller_sort_type_e) evas_object_data_get(scroller, "sort_type"); pos ++; while (page && page_no < MAX_PAGE_NO) { if (0 == page_count_item(page)) { page_destroy(scroller, page); break; } for (; pos < page_max_app; pos ++) { item = page_unpack_item_at(page, pos); if (NULL == item) continue; page_pack_item(page, pos - 1, item); snprintf(buf, 32, "menu%d", pos - 1); edje_object_signal_emit(_EDJ(page), STR_MOVE_NEXT, buf); edje_object_signal_emit(_EDJ(page), STR_ANI_RETURN, buf); } if (sort_type == PAGE_SCROLLER_SORT_MAX) { return NULL; } page_no ++; next_page = page_scroller_get_page_at(scroller, page_no); if (next_page) { item = page_unpack_item_at(next_page, 0); if (NULL == item) continue; page_pack_item(page, page_max_app - 1, item); } else break; pos = 1; page = next_page; } return out; }
HAPI void layout_unload_edj(Evas_Object *layout) { Evas_Object *evas_object; ret_if(NULL == layout); evas_object = evas_object_data_get(_EDJ(layout), "evas_object"); if (evas_object) { evas_object_data_del(_EDJ(layout), "evas_object"); } evas_object_del(layout); }
static menu_screen_error_e _animated_pack_item(Evas_Object *item, Evas_Object *scroller, Evas_Object *page, int from) { Evas_Object *item_out_page = NULL; char buf[32]; int to; int page_no; retv_if(NULL == item, MENU_SCREEN_ERROR_INVALID_PARAMETER); retv_if(NULL == scroller, MENU_SCREEN_ERROR_INVALID_PARAMETER); retv_if(NULL == page, MENU_SCREEN_ERROR_INVALID_PARAMETER); page_no = page_scroller_get_page_no(scroller, page); do { to = page_find_empty_near(page, from); if (to < 0) { int page_max_app; page_max_app = (int) evas_object_data_get(page, "page_max_app"); to = page_max_app - 1; item_out_page = page_unpack_item_at(page, to); } for (to --; to >= from; to --) { Evas_Object *item_in_page; item_in_page = page_unpack_item_at(page, to); page_pack_item(page, to + 1, item_in_page); snprintf(buf, 32, "menu%d", to + 1); edje_object_signal_emit(_EDJ(page), STR_MOVE_PREV, buf); edje_object_signal_emit(_EDJ(page), STR_ANI_RETURN, buf); } page_pack_item(page, from, item); if (!item_out_page) break; page_no ++; page = page_scroller_get_page_at(scroller, page_no); if (!page) { int rotate; rotate = (int) evas_object_data_get(scroller, "rotate"); page = page_create(scroller, page_no, rotate); retv_if(NULL == page, MENU_SCREEN_ERROR_FAIL); mapbuf_enable(page, 0); } from = 0; item = item_out_page; item_out_page = NULL; } while (page && item); return MENU_SCREEN_ERROR_OK; }
HAPI void layout_enable_block(Evas_Object *layout) { ret_if(NULL == layout); _D("Enable layout blocker"); edje_object_signal_emit(_EDJ(layout), "block", "layout"); }
void item_event_register(Evas_Object *item) { Evas_Object *item_edje; item_edje = _EDJ(item); evas_object_data_set(item_edje, "item", item); edje_object_signal_callback_add(item_edje, "item,down", "menu", _item_down_cb, NULL); edje_object_signal_callback_add(item_edje, "item,up", "menu", _item_up_cb, NULL); }
void item_event_unregister(Evas_Object *item) { Evas_Object *item_edje; item_edje = _EDJ(item); edje_object_signal_callback_del(item_edje, "item,down", "menu", _item_down_cb); edje_object_signal_callback_del(item_edje, "item,up", "menu", _item_up_cb); evas_object_data_del(item_edje, "item"); }
HAPI Evas_Object* layout_load_edj(Evas_Object *parent, const char *edjname, const char *grpname) { Evas_Object *eo; retv_if(NULL == parent, NULL); eo = elm_layout_add(parent); retv_if(NULL == eo, NULL); retv_if(EINA_FALSE == elm_layout_file_set(eo, edjname, grpname), NULL); evas_object_data_set(_EDJ(eo), "evas_object", eo); evas_object_show(eo); return eo; }
Evas_Object *page_create(Evas_Object *scroller, int idx, int rotate) { Evas_Object *page; Evas_Object *bg; Evas_Object *index; Evas_Object *tab; Evas_Object *mapbuf; Evas_Object *box; char *page_edje; bool enable_bg_image; unsigned int count; int page_height; int page_width; _D("Create a new page[%d]", idx); page_edje = evas_object_data_get(scroller, "page_edje"); enable_bg_image = (bool) evas_object_data_get(scroller, "enable_bg_image"); page = layout_load_edj(scroller, page_edje, PAGE_GROUP_NAME); retv_if(!page, NULL); evas_object_event_callback_add(page, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints_cb, NULL); edje_object_signal_callback_add(_EDJ(page), "dim,down", "menu", _dim_down_cb, NULL); edje_object_signal_callback_add(_EDJ(page), "dim,up", "menu", _dim_up_cb, NULL); box = evas_object_data_get(scroller, "box"); mapbuf = mapbuf_bind(box, page); if (!mapbuf) { _D("Failed to bind the object with mapbuf"); } bg = evas_object_rectangle_add(menu_screen_get_evas()); if (!bg) { evas_object_del(page); return NULL; } evas_object_color_set(bg, 0, 0, 0, 0); page_width = menu_screen_get_root_width(); page_height = (int) ((double) PROP_PORTRAIT_HEIGHT * ((double) menu_screen_get_root_height())); evas_object_size_hint_min_set(bg, page_width, page_height); evas_object_size_hint_max_set(bg, page_width, page_height); elm_object_part_content_set(page, "bg", bg); evas_object_data_set(page, "win", evas_object_data_get(scroller, "win")); evas_object_data_set(page, "layout", evas_object_data_get(scroller, "layout")); evas_object_data_set(page, "controlbar", evas_object_data_get(scroller, "controlbar")); evas_object_data_set(page, "tab", evas_object_data_get(scroller, "tab")); evas_object_data_set(page, "scroller", scroller); evas_object_data_set(page, "page_edje", page_edje); evas_object_data_set(page, "page_max_app", evas_object_data_get(scroller, "page_max_app")); evas_object_data_set(page, "bg", bg); evas_object_data_set(page, "pending,list", NULL); evas_object_data_set(page, "dirty", (void *) 0); if (_insert_page_at(scroller, page, idx) != MENU_SCREEN_ERROR_OK) { evas_object_del(bg); evas_object_del(page); return NULL; } index = evas_object_data_get(scroller, "index"); if (index) { tab = evas_object_data_get(scroller, "tab"); count = page_scroller_count_page(scroller); index_update(tab, index, count); } return page; }