Elm Popup Item: Migrate to Eo

This commit is contained in:
Daniel Zaoui 2014-09-28 08:16:15 +03:00
parent 99971686d3
commit f0ede508f8
4 changed files with 83 additions and 71 deletions

View File

@ -620,7 +620,8 @@ elm_genlist_item.eo \
elm_gengrid_item.eo \
elm_list_item.eo \
elm_toolbar_item.eo \
elm_diskselector_item.eo
elm_diskselector_item.eo \
elm_popup_item.eo
elm_eolian_c = $(elm_eolian_files:%.eo=%.eo.c)
elm_eolian_h = $(elm_eolian_files:%.eo=%.eo.h)
@ -748,7 +749,8 @@ elementaryeolianfiles_DATA = \
elm_gengrid_item.eo \
elm_list_item.eo \
elm_toolbar_item.eo \
elm_diskselector_item.eo
elm_diskselector_item.eo \
elm_popup_item.eo
EXTRA_DIST += ${elementaryeolianfiles_DATA}

View File

@ -4,11 +4,14 @@
#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
#define ELM_WIDGET_ITEM_PROTECTED
#include <Elementary.h>
#include "elm_priv.h"
#include "elm_widget_popup.h"
#include "elm_popup_item.eo.h"
#define MY_CLASS ELM_POPUP_CLASS
#define MY_CLASS_NAME "Elm_Popup"
@ -51,11 +54,11 @@ static void _on_content_del(void *data, Evas *e, Evas_Object *obj, void *event_
EOLIAN static Eina_Bool
_elm_popup_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd)
{
Elm_Popup_Item *it;
Elm_Popup_Item_Data *it;
Eina_List *l;
EINA_LIST_FOREACH(sd->items, l, it)
elm_widget_item_translate(it);
eo_do((Eo *)EO_OBJ(it), elm_wdg_item_translate());
eo_do_super(obj, MY_CLASS, elm_obj_widget_translate());
eo_do(sd->main_layout, elm_obj_widget_translate());
@ -176,12 +179,12 @@ _list_del(Elm_Popup_Data *sd)
static void
_items_remove(Elm_Popup_Data *sd)
{
Elm_Popup_Item *it;
Elm_Popup_Item_Data *it;
if (!sd->items) return;
EINA_LIST_FREE(sd->items, it)
elm_widget_item_del(it);
eo_do((Eo *)EO_OBJ(it), elm_wdg_item_del());
sd->items = NULL;
}
@ -289,7 +292,7 @@ _access_obj_process(Eo *obj, Eina_Bool is_access)
EOLIAN static Eina_Bool
_elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data *sd)
{
Elm_Popup_Item *it;
Elm_Popup_Item_Data *it;
unsigned int i = 0;
Eina_List *elist;
char buf[1024], style[1024];
@ -366,7 +369,7 @@ _elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data *sd)
}
static void
_item_sizing_eval(Elm_Popup_Item *it)
_item_sizing_eval(Elm_Popup_Item_Data *it)
{
Evas_Coord min_w = -1, min_h = -1, max_w = -1, max_h = -1;
Evas_Object *edje = elm_layout_edje_get(VIEW(it));
@ -381,7 +384,7 @@ EOLIAN static void
_elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data *sd)
{
Eina_List *elist;
Elm_Popup_Item *it;
Elm_Popup_Item_Data *it;
Evas_Coord h_box = 0, minh_box = 0;
Evas_Coord minw = -1, minh = -1;
@ -410,7 +413,7 @@ _elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data *sd)
EOLIAN static Eina_Bool
_elm_popup_elm_widget_sub_object_del(Eo *obj, Elm_Popup_Data *sd, Evas_Object *sobj)
{
Elm_Popup_Item *it;
Elm_Popup_Item_Data *it;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_sub_object_del(sobj));
@ -618,15 +621,15 @@ _item_select_cb(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
Elm_Popup_Item *it = data;
Elm_Popup_Item_Data *it = data;
if (!it || it->disabled) return;
if (it->func)
it->func((void *)it->base.data, WIDGET(it), data);
it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it));
}
static void
_item_text_set(Elm_Popup_Item *it,
_item_text_set(Elm_Popup_Item_Data *it,
const char *label)
{
if (!eina_stringshare_replace(&it->label, label)) return;
@ -643,13 +646,11 @@ _item_text_set(Elm_Popup_Item *it,
edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
}
static void
_item_text_set_hook(Elm_Object_Item *item,
EOLIAN static void
_elm_popup_item_elm_widget_item_part_text_set(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *part,
const char *label)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it);
if ((!part) || (!strcmp(part, "default")))
@ -661,12 +662,10 @@ _item_text_set_hook(Elm_Object_Item *item,
WRN("The part name is invalid! : popup=%p", WIDGET(it));
}
static const char *
_item_text_get_hook(const Elm_Object_Item *item,
EOLIAN static const char *
_elm_popup_item_elm_widget_item_part_text_get(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *part)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it, NULL);
if ((!part) || (!strcmp(part, "default")))
@ -678,7 +677,7 @@ _item_text_get_hook(const Elm_Object_Item *item,
}
static void
_item_icon_set(Elm_Popup_Item *it,
_item_icon_set(Elm_Popup_Item_Data *it,
Evas_Object *icon)
{
if (it->icon == icon) return;
@ -698,13 +697,11 @@ _item_icon_set(Elm_Popup_Item *it,
edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
}
static void
_item_content_set_hook(Elm_Object_Item *item,
EOLIAN static void
_elm_popup_item_elm_widget_item_part_content_set(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *part,
Evas_Object *content)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it);
if ((!(part)) || (!strcmp(part, "default")))
@ -713,12 +710,10 @@ _item_content_set_hook(Elm_Object_Item *item,
WRN("The part name is invalid! : popup=%p", WIDGET(it));
}
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *item,
EOLIAN static Evas_Object *
_elm_popup_item_elm_widget_item_part_content_get(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *part)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it, NULL);
if ((!(part)) || (!strcmp(part, "default")))
@ -730,7 +725,7 @@ _item_content_get_hook(const Elm_Object_Item *item,
}
static Evas_Object *
_item_icon_unset(Elm_Popup_Item *it)
_item_icon_unset(Elm_Popup_Item_Data *it)
{
Evas_Object *icon = it->icon;
@ -744,12 +739,11 @@ _item_icon_unset(Elm_Popup_Item *it)
return icon;
}
static Evas_Object *
_item_content_unset_hook(const Elm_Object_Item *item,
EOLIAN static Evas_Object *
_elm_popup_item_elm_widget_item_part_content_unset(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *part)
{
Evas_Object *content = NULL;
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it, NULL);
@ -761,11 +755,9 @@ _item_content_unset_hook(const Elm_Object_Item *item,
return content;
}
static void
_item_disable_hook(Elm_Object_Item *item)
EOLIAN static void
_elm_popup_item_elm_widget_item_disable(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it);
if (elm_widget_item_disabled_get(it))
@ -774,11 +766,9 @@ _item_disable_hook(Elm_Object_Item *item)
elm_layout_signal_emit(VIEW(it), "elm,state,item,enabled", "elm");
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *item)
EOLIAN static Eina_Bool
_elm_popup_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it)
{
Elm_Popup_Item *it = (Elm_Popup_Item *)item;
ELM_POPUP_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
ELM_POPUP_DATA_GET(WIDGET(it), sd);
@ -793,8 +783,8 @@ _item_del_pre_hook(Elm_Object_Item *item)
return EINA_TRUE;
}
static void
_item_signal_emit_hook(Elm_Object_Item *it,
EOLIAN static void
_elm_popup_item_elm_widget_item_signal_emit(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it,
const char *emission,
const char *source)
{
@ -806,9 +796,9 @@ _item_focused_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Elm_Object_Item *it = data;
Elm_Popup_Item_Data *it = data;
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_FOCUSED, it);
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_FOCUSED, EO_OBJ(it));
}
static void
@ -816,25 +806,23 @@ _item_unfocused_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Elm_Object_Item *it = data;
Elm_Popup_Item_Data *it = data;
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_UNFOCUSED, it);
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_UNFOCUSED, EO_OBJ(it));
}
EOLIAN static void
_elm_popup_item_eo_base_constructor(Eo *eo_it, Elm_Popup_Item_Data *it)
{
eo_do_super(eo_it, ELM_POPUP_ITEM_CLASS, eo_constructor());
it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
}
static void
_item_new(Elm_Popup_Item *it)
_item_new(Elm_Popup_Item_Data *it)
{
char style[1024];
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
elm_widget_item_disable_hook_set(it, _item_disable_hook);
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
VIEW(it) = elm_layout_add(WIDGET(it));
elm_object_focus_allow_set(VIEW(it), EINA_TRUE);
@ -1653,11 +1641,11 @@ EOLIAN static Elm_Object_Item*
_elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
{
Evas_Object *prev_content;
Elm_Popup_Item *it;
Eo *eo_it;
it = elm_widget_item_new(obj, Elm_Popup_Item);
if (!it) return NULL;
eo_it = eo_add(ELM_POPUP_ITEM_CLASS, obj);
if (!eo_it) return NULL;
ELM_POPUP_ITEM_DATA_GET(eo_it, it);
if (sd->content || sd->text_content_obj)
{
prev_content = eo_do(sd->content_area,
@ -1670,7 +1658,7 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const char *label, Evas_Obje
_list_add(obj);
it->func = func;
it->base.data = data;
it->base->data = data;
_item_new(it);
_item_icon_set(it, icon);
@ -1682,7 +1670,7 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const char *label, Evas_Obje
_scroller_size_calc(obj);
elm_layout_sizing_eval(obj);
return (Elm_Object_Item *)it;
return EO_OBJ(it);
}
static void
@ -1707,3 +1695,4 @@ _elm_popup_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED
}
#include "elm_popup.eo.c"
#include "elm_popup_item.eo.c"

View File

@ -0,0 +1,17 @@
class Elm_Popup_Item(Elm_Widget_Item)
{
legacy_prefix: null;
eo_prefix: elm_obj_popup_item;
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Elm_Widget_Item.disable;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.part_text.set;
Elm_Widget_Item.part_content.get;
Elm_Widget_Item.part_content.set;
Elm_Widget_Item.part_content_unset;
}
}

View File

@ -10,6 +10,7 @@
* IT AT RUNTIME.
*/
#include "elm_object_item_migration_temp.h"
/**
* @addtogroup Widget
* @{
@ -54,10 +55,10 @@ struct _Elm_Popup_Data
Eina_Bool scr_size_recalc : 1;
};
typedef struct _Elm_Popup_Item Elm_Popup_Item;
struct _Elm_Popup_Item
typedef struct _Elm_Popup_Item_Data Elm_Popup_Item_Data;
struct _Elm_Popup_Item_Data
{
Elm_Widget_Item_Data base;
Elm_Widget_Item_Data *base;
const char *label;
Evas_Object *icon;
@ -102,11 +103,14 @@ struct _Action_Area_Data
return
#define ELM_POPUP_ITEM_CHECK(it) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, ); \
ELM_POPUP_CHECK(it->base.widget);
ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, ); \
ELM_POPUP_CHECK(it->base->widget);
#define ELM_POPUP_ITEM_CHECK_OR_RETURN(it, ...) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, __VA_ARGS__); \
ELM_POPUP_CHECK(it->base.widget) __VA_ARGS__;
ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, __VA_ARGS__); \
ELM_POPUP_CHECK(it->base->widget) __VA_ARGS__;
#define ELM_POPUP_ITEM_DATA_GET(o, sd) \
Elm_Popup_Item_Data* sd = eo_data_scope_get((Eo *)o, ELM_POPUP_ITEM_CLASS)
#endif