static Evas_Object * _trans_object_add(Evas *evas) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord w, h; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->obj = obj; o = edje_object_add(evas); wd->o_frame = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/preview"); evas_object_show(o); e_widget_sub_object_add(obj, o); e_widget_resize_object_set(obj, o); o = edje_object_add(evas); wd->o_trans = o; edje_extern_object_min_size_set(o, 200, 200); edje_extern_object_max_size_set(o, 200, 200); edje_object_signal_callback_add(o, "e,state,done", "*", _trans_object_trans_done, wd); evas_object_show(o); edje_object_part_swallow(wd->o_frame, "e.swallow.content", o); // e_widget_sub_object_add(obj, o); o = e_livethumb_add(evas); wd->o_bg = o; e_livethumb_vsize_set(o, 400, 400); edje_extern_object_min_size_set(o, 200, 200); edje_extern_object_max_size_set(o, 200, 200); evas_object_layer_set(o, -1); evas_object_show(o); edje_object_part_swallow(wd->o_trans, "e.swallow.bg.new", wd->o_bg); edje_object_part_swallow(wd->o_trans, "e.swallow.bg.old", wd->o_bg); edje_object_part_swallow(wd->o_frame, "e.swallow.content", o); e_widget_data_set(obj, wd); e_widget_can_focus_set(obj, 0); edje_object_size_min_calc(wd->o_frame, &w, &h); e_widget_min_size_set(obj, w, h); e_widget_sub_object_add(obj, o); return obj; } static void _trans_object_file_set(Evas_Object *obj, const char *file) { E_Widget_Data *wd; wd = e_widget_data_get(obj); if (wd->o_thumb) evas_object_del(wd->o_thumb); wd->o_thumb = edje_object_add(e_livethumb_evas_get(wd->o_bg)); edje_object_file_set(wd->o_thumb, file, "e/desktop/background"); evas_object_show(wd->o_thumb); e_livethumb_thumb_set(wd->o_bg, wd->o_thumb); } static void _trans_object_trans_set(Evas_Object *obj, const char *trans) { E_Widget_Data *wd; wd = e_widget_data_get(obj); e_theme_edje_object_set(wd->o_trans, "base/theme/transitions", trans); edje_object_signal_emit(wd->o_trans, "e,action,start", "e"); } static void _trans_object_trans_done(void *data, Evas_Object *obj, const char *emission, const char *source) { E_Widget_Data *wd; wd = data; // evas_object_layer_set(wd->o_trans, -1); // evas_object_layer_set(wd->o_bg, 1); } static void _e_wid_del_hook(Evas_Object *obj) { E_Widget_Data *wd; wd = e_widget_data_get(obj); free(wd); }