diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h index 9683ee74d0..35747e257e 100644 --- a/src/lib/elementary/Efl_Ui.h +++ b/src/lib/elementary/Efl_Ui.h @@ -182,6 +182,7 @@ EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel); # include # include # include +# include # include # include # include diff --git a/src/lib/elementary/efl_ui_default_item.c b/src/lib/elementary/efl_ui_default_item.c new file mode 100644 index 0000000000..4911a7a32d --- /dev/null +++ b/src/lib/elementary/efl_ui_default_item.c @@ -0,0 +1,43 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#define EFL_UI_LIST_DEFAULT_ITEM_PROTECTED +#define EFL_PART_PROTECTED + +#include + +#include "elm_priv.h" +#include "elm_part_helper.h" + +#define MY_CLASS EFL_UI_DEFAULT_ITEM_CLASS +#define MY_CLASS_PFX efl_ui_default_item + +#define MY_CLASS_NAME "Efl.Ui.Default_Item" + +ELM_PART_TEXT_DEFAULT_GET(efl_ui_default_item, "efl.text") +ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_default_item, void) +ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_default_item, void) +ELM_PART_CONTENT_DEFAULT_GET(efl_ui_default_item, "efl.icon") +ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_default_item, void) + +EOLIAN static Efl_Object * +_efl_ui_default_item_efl_part_part_get(const Eo *obj, void *pd EINA_UNUSED, const char *part) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); + if (eina_streq(part, "text")) + return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_TEXT_CLASS, obj, "efl.text"); + else if (eina_streq(part, "icon")) + return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_ICON_CLASS, obj, "efl.icon"); + else if (eina_streq(part, "extra")) + return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_EXTRA_CLASS, obj, "efl.extra"); + + return efl_part_get(efl_super(obj, MY_CLASS), part); +} + + +#define EFL_UI_DEFAULT_ITEM_EXTRA_OPS \ + ELM_PART_TEXT_DEFAULT_OPS(efl_ui_default_item), \ + ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_default_item) + +#include "efl_ui_default_item.eo.c" diff --git a/src/lib/elementary/efl_ui_default_item.eo b/src/lib/elementary/efl_ui_default_item.eo new file mode 100644 index 0000000000..9604f9b2d5 --- /dev/null +++ b/src/lib/elementary/efl_ui_default_item.eo @@ -0,0 +1,30 @@ +abstract @beta Efl.Ui.Default_Item extends Efl.Ui.Item implements + Efl.Text, + Efl.Text_Markup, + Efl.Ui.L10n, + Efl.Content +{ + [[Default Item Class. + + This class defines the standard parts of casual efl items. + The details about placement or item layout preferences are left to the extending classes. + Every text property related changes are mirrored to the text part. Content changes are mirrored to the content part. + + ]] + data: null; + parts { + text: Efl.Ui.Item_Part_Text; [[The text part for default item. + text part is the caption of the item.]] + icon: Efl.Ui.Item_Part_Icon; [[The icon content part for default item. + icon part is the main content of item.]] + extra : Efl.Ui.Item_Part_Extra; [[The extra content part for default item.]] + } + implements { + Efl.Text.text { get; set; } + Efl.Text_Markup.markup { get; set; } + Efl.Ui.L10n.l10n_text { get; set; } + Efl.Content.content { get; set; } + Efl.Content.content_unset; + Efl.Part.part_get; + } +} diff --git a/src/lib/elementary/efl_ui_grid_default_item.c b/src/lib/elementary/efl_ui_grid_default_item.c index 65d2c24cf1..4d28cbc7da 100644 --- a/src/lib/elementary/efl_ui_grid_default_item.c +++ b/src/lib/elementary/efl_ui_grid_default_item.c @@ -16,50 +16,16 @@ #define MY_CLASS_NAME "Efl.Ui.Grid_Default_Item" EOLIAN static Efl_Object * -_efl_ui_grid_default_item_efl_object_finalize(Eo *obj, void *pd EINA_UNUSED) +_efl_ui_grid_default_item_efl_object_constructor(Eo *obj, void *pd EINA_UNUSED) { Eo *eo; - eo = efl_finalize(efl_super(obj, MY_CLASS)); - ELM_WIDGET_DATA_GET_OR_RETURN(eo, wd, eo); - Eina_Error theme_apply = efl_ui_layout_theme_set(obj, "grid_item", NULL, NULL); - if (theme_apply == EFL_UI_THEME_APPLY_ERROR_GENERIC) - CRI("Default Item(%p) failed to set theme [efl/grid_item]!", eo); + eo = efl_constructor(efl_super(obj, MY_CLASS)); + + if (!elm_widget_theme_klass_get(obj)) + elm_widget_theme_klass_set(obj, "grid_item"); + return eo; } -EOLIAN static void -_efl_ui_grid_default_item_efl_object_destructor(Eo *obj, void *pd EINA_UNUSED) -{ - efl_destructor(efl_super(obj, MY_CLASS)); -} - -/* Efl.Part */ - -ELM_PART_TEXT_DEFAULT_GET(efl_ui_grid_default_item, "efl.text") -ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_grid_default_item, void) -ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_grid_default_item, void) -ELM_PART_CONTENT_DEFAULT_GET(efl_ui_grid_default_item, "efl.icon") -ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_grid_default_item, void) - -EOLIAN static Efl_Object * -_efl_ui_grid_default_item_efl_part_part_get(const Eo *obj, void *wd EINA_UNUSED, const char *part) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); - if (eina_streq(part, "text")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_TEXT_CLASS, obj, "efl.text"); - else if (eina_streq(part, "icon")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_ICON_CLASS, obj, "efl.icon"); - else if (eina_streq(part, "extra")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_EXTRA_CLASS, obj, "efl.extra"); - - return efl_part_get(efl_super(obj, MY_CLASS), part); -} -/* Efl.Part end */ - -/* Internal EO APIs and hidden overrides */ -#define EFL_UI_GRID_DEFAULT_ITEM_EXTRA_OPS \ - ELM_PART_TEXT_DEFAULT_OPS(efl_ui_grid_default_item), \ - ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_grid_default_item) - #include "efl_ui_grid_default_item.eo.c" diff --git a/src/lib/elementary/efl_ui_grid_default_item.eo b/src/lib/elementary/efl_ui_grid_default_item.eo index 90461b0b6e..d5c588eae4 100644 --- a/src/lib/elementary/efl_ui_grid_default_item.eo +++ b/src/lib/elementary/efl_ui_grid_default_item.eo @@ -1,33 +1,9 @@ -class @beta Efl.Ui.Grid_Default_Item extends Efl.Ui.Item implements - Efl.Text, - Efl.Text_Markup, - Efl.Ui.L10n, - Efl.Content +class @beta Efl.Ui.Grid_Default_Item extends Efl.Ui.Default_Item { - [[Grid Default Item class. - This class need to be sub object of list widget. - Text and contents can be set using @Efl.Text, - @Efl.Content or @Efl.Part.]] + [[Grid Default Item class.]] data: null; - parts { - text: Efl.Ui.Item_Part_Text; [[The text part for grid default item. - text part is the caption of grid item.]] - icon: Efl.Ui.Item_Part_Icon; [[The icon content part for grid default item. - icon part is the main content of grid item.]] - end: Efl.Ui.Item_Part_Extra; [[The extra content part for grid default item. - extra part is the spare content of grid item. - you can swallow small badge widget such as check, radio.]] - } implements { - //Efl.Object - Efl.Object.finalize; - Efl.Object.destructor; - Efl.Text.text { get; set; } - Efl.Text_Markup.markup { get; set; } - Efl.Ui.L10n.l10n_text { get; set; } - Efl.Content.content { get; set; } - Efl.Content.content_unset; - Efl.Part.part_get; + Efl.Object.constructor; } } diff --git a/src/lib/elementary/efl_ui_list_default_item.c b/src/lib/elementary/efl_ui_list_default_item.c index d95f988ee7..ff2ce75d87 100644 --- a/src/lib/elementary/efl_ui_list_default_item.c +++ b/src/lib/elementary/efl_ui_list_default_item.c @@ -16,47 +16,15 @@ #define MY_CLASS_NAME "Efl.Ui.List_Default_Item" EOLIAN static Efl_Object * -_efl_ui_list_default_item_efl_object_finalize(Eo *obj, void *pd EINA_UNUSED) +_efl_ui_list_default_item_efl_object_constructor(Eo *obj, void *pd EINA_UNUSED) { Eo *eo; - eo = efl_finalize(efl_super(obj, MY_CLASS)); - ELM_WIDGET_DATA_GET_OR_RETURN(eo, wd, eo); - Eina_Error theme_apply_ret = efl_ui_layout_theme_set(obj, "list_item", NULL, NULL); - if (theme_apply_ret == EFL_UI_THEME_APPLY_ERROR_GENERIC) - CRI("Default Item(%p) failed to set theme [efl/list_item]!", eo); + eo = efl_constructor(efl_super(obj, MY_CLASS)); + + if (!elm_widget_theme_klass_get(obj)) + elm_widget_theme_klass_set(obj, "list_item"); + return eo; } - -EOLIAN static void -_efl_ui_list_default_item_efl_object_destructor(Eo *obj, void *pd EINA_UNUSED) -{ - efl_destructor(efl_super(obj, MY_CLASS)); -} - -ELM_PART_TEXT_DEFAULT_GET(efl_ui_list_default_item, "efl.text") -ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_list_default_item, void) -ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_list_default_item, void) -ELM_PART_CONTENT_DEFAULT_GET(efl_ui_list_default_item, "efl.icon") -ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_list_default_item, void) - -EOLIAN static Efl_Object * -_efl_ui_list_default_item_efl_part_part_get(const Eo *obj, void *wd EINA_UNUSED, const char *part) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); - if (eina_streq(part, "text")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_TEXT_CLASS, obj, "efl.text"); - else if (eina_streq(part, "icon")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_ICON_CLASS, obj, "efl.icon"); - else if (eina_streq(part, "extra")) - return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_EXTRA_CLASS, obj, "efl.extra"); - - return efl_part_get(efl_super(obj, MY_CLASS), part); -} - -/* Internal EO APIs and hidden overrides */ -#define EFL_UI_LIST_DEFAULT_ITEM_EXTRA_OPS \ - ELM_PART_TEXT_DEFAULT_OPS(efl_ui_list_default_item), \ - ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_list_default_item) - #include "efl_ui_list_default_item.eo.c" diff --git a/src/lib/elementary/efl_ui_list_default_item.eo b/src/lib/elementary/efl_ui_list_default_item.eo index 90cc024b97..3b0c768920 100644 --- a/src/lib/elementary/efl_ui_list_default_item.eo +++ b/src/lib/elementary/efl_ui_list_default_item.eo @@ -1,30 +1,9 @@ -class @beta Efl.Ui.List_Default_Item extends Efl.Ui.Item implements - Efl.Text, - Efl.Text_Markup, - Efl.Content +class @beta Efl.Ui.List_Default_Item extends Efl.Ui.Default_Item { - [[List Default Item class. - This class need to be sub object of list widget. - text and contents can be appliable by efl_text, - efl_content or efl_part APIs.]] + [[List Default Item class.]] data: null; - parts { - text: Efl.Ui.Item_Part_Text; [[The text part for list default item.]] - icon: Efl.Ui.Item_Part_Icon; [[The icon content part for list default item. - icon part is the left-side content of list item.]] - extra: Efl.Ui.Item_Part_Extra; [[The extra content part for list default item. - extra part is the right-side content of list item.]] - } implements { - //Efl.Object - Efl.Object.finalize; - Efl.Object.destructor; - Efl.Text.text { get; set; } - Efl.Text_Markup.markup { get; set; } - Efl.Ui.L10n.l10n_text { get; set; } - Efl.Content.content { get; set; } - Efl.Content.content_unset; - Efl.Part.part_get; + Efl.Object.constructor; } } diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index 4ab0c20333..a7c9fcae25 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -121,6 +121,7 @@ pub_eo_files = [ 'efl_ui_item_part_extra.eo', 'efl_ui_item_part_content.eo', 'efl_ui_item.eo', + 'efl_ui_default_item.eo', 'efl_ui_list_default_item.eo', 'efl_ui_list_placeholder_item.eo', 'efl_ui_list.eo', @@ -895,6 +896,7 @@ elementary_src = [ 'efl_ui_focus_util.c', 'elm_widget_item_static_focus.c', 'efl_ui_item.c', + 'efl_ui_default_item.c', 'efl_ui_list_default_item.c', 'efl_ui_list_placeholder_item.c', 'efl_ui_list.c',