bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=185659669837011a092c0328fa8d05b0b808d828

commit 185659669837011a092c0328fa8d05b0b808d828
Author: Marcel Hollerbach <[email protected]>
Date:   Fri Aug 16 09:05:24 2019 +0200

    introduce default item
    
    default item is used as base class for all "normal style" efl items.
    
    A "normal style" efl item does have a text,content & extra part.
    
    - The text part is usally used to express some text in the item
    - Content part is the *main* content part where the user attention is
    on.
    - Extra can be used to display some elements that are not directly
    getting the attention of the user, it can be seen as something more than
    the decoration item field.
    
    ref T8115
    
    Differential Revision: https://phab.enlightenment.org/D9629
---
 src/lib/elementary/Efl_Ui.h                    |  1 +
 src/lib/elementary/efl_ui_default_item.c       | 43 +++++++++++++++++++++++++
 src/lib/elementary/efl_ui_default_item.eo      | 30 ++++++++++++++++++
 src/lib/elementary/efl_ui_grid_default_item.c  | 44 +++-----------------------
 src/lib/elementary/efl_ui_grid_default_item.eo | 30 ++----------------
 src/lib/elementary/efl_ui_list_default_item.c  | 42 +++---------------------
 src/lib/elementary/efl_ui_list_default_item.eo | 27 ++--------------
 src/lib/elementary/meson.build                 |  2 ++
 8 files changed, 92 insertions(+), 127 deletions(-)

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 <efl_ui_layout_part_text.eo.h>
 # include <efl_ui_layout_part_table.eo.h>
 # include <efl_ui_item.eo.h>
+# include <efl_ui_default_item.eo.h>
 # include <efl_ui_win_part.eo.h>
 # include <efl_ui_bg.eo.h>
 # include <efl_ui_box.eo.h>
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 <Elementary.h>
+
+#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);
-   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 */
+   eo = efl_constructor(efl_super(obj, MY_CLASS));
 
-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)
+   if (!elm_widget_theme_klass_get(obj))
+     elm_widget_theme_klass_set(obj, "grid_item");
 
-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);
+   return eo;
 }
-/* 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);
-   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));
-}
+   eo = efl_constructor(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)
+   if (!elm_widget_theme_klass_get(obj))
+     elm_widget_theme_klass_set(obj, "list_item");
 
-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);
+   return eo;
 }
-
-/* 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',

-- 


Reply via email to