efl_ui : refactoring efl.part in item based classes.
authorSangHyeon Jade Lee <sh10233.lee@samsung.com>
Thu, 30 May 2019 04:22:03 +0000 (13:22 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 3 Jun 2019 07:04:09 +0000 (16:04 +0900)
Summary:
Most of item-based class will have similar efl.part such as text, icon, end.
creating this efl part per each class will be very hard to maintaining the class
and unnecessary eo generation.
so combine them in efl.parts of efl_ui_item.
sub item classes can use this efl.part by declairing ther own eo definition.

Reviewers: cedric, Jaehyun_Cho, segfaultxavi, eagleeye

Reviewed By: cedric, eagleeye

Subscribers: herb, woohyun, q66, lauromoura, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8582

21 files changed:
data/elementary/themes/edc/efl/grid.edc
data/elementary/themes/edc/efl/list.edc
src/Makefile_Elementary.am
src/examples/elementary/efl_ui_list_example_1.c
src/lib/elementary/Elementary.h
src/lib/elementary/efl_ui_grid_default_item.c
src/lib/elementary/efl_ui_grid_default_item.eo
src/lib/elementary/efl_ui_grid_default_item_part_end.eo [deleted file]
src/lib/elementary/efl_ui_grid_default_item_part_icon.eo [deleted file]
src/lib/elementary/efl_ui_item.c
src/lib/elementary/efl_ui_item_part_content.eo [new file with mode: 0644]
src/lib/elementary/efl_ui_item_part_extra.eo [new file with mode: 0644]
src/lib/elementary/efl_ui_item_part_icon.eo [new file with mode: 0644]
src/lib/elementary/efl_ui_item_part_text.eo [new file with mode: 0644]
src/lib/elementary/efl_ui_list_default_item.c
src/lib/elementary/efl_ui_list_default_item.eo
src/lib/elementary/efl_ui_list_default_item_part_end.eo [deleted file]
src/lib/elementary/efl_ui_list_default_item_part_icon.eo [deleted file]
src/lib/elementary/efl_ui_list_empty_item.c
src/lib/elementary/efl_ui_list_empty_item.eo
src/lib/elementary/meson.build

index 4fa1ee7..fec2e8e 100644 (file)
@@ -180,7 +180,7 @@ group { "efl/grid_item";
             rel2.to: "icon_area";
          }
       }
-      swallow { "efl.end";
+      swallow { "efl.extra";
          clip_to: "icon_area";
          desc { "default";
             fixed: 1 1;
index ca3c5b4..e10c64b 100644 (file)
@@ -99,7 +99,7 @@ group { "efl/list_item";
             rel1.to_x: "efl.icon";
             rel2.offset: -3 -3;
             rel2.relative: 0.0 1.0;
-            rel2.to_x: "efl.end";
+            rel2.to_x: "efl.extra";
             color: FN_COL_DEFAULT;
             color_class: "list_item";
             text { font: FN; size: 10;
@@ -179,7 +179,7 @@ group { "efl/list_item";
             rel2.offset: 2 -3;
          }
       }
-      swallow { "efl.end";
+      swallow { "efl.extra";
          desc { "default";
             fixed: 1 0;
             align: 1.0 0.5;
index 48c21b5..3dd53e5 100644 (file)
@@ -80,16 +80,16 @@ elm_public_eolian_files = \
        lib/elementary/efl_ui_list_view.eo \
        lib/elementary/efl_ui_list_view_model.eo \
        lib/elementary/efl_ui_list_view_pan.eo \
+       lib/elementary/efl_ui_item_part_text.eo \
+       lib/elementary/efl_ui_item_part_icon.eo \
+       lib/elementary/efl_ui_item_part_extra.eo \
+       lib/elementary/efl_ui_item_part_content.eo \
        lib/elementary/efl_ui_item.eo \
        lib/elementary/efl_ui_list_item.eo \
-       lib/elementary/efl_ui_list_default_item_part_icon.eo \
-       lib/elementary/efl_ui_list_default_item_part_end.eo \
        lib/elementary/efl_ui_list_default_item.eo \
        lib/elementary/efl_ui_list_empty_item.eo \
        lib/elementary/efl_ui_list.eo \
        lib/elementary/efl_ui_grid_item.eo \
-       lib/elementary/efl_ui_grid_default_item_part_icon.eo \
-       lib/elementary/efl_ui_grid_default_item_part_end.eo \
        lib/elementary/efl_ui_grid_default_item.eo \
        lib/elementary/efl_ui_grid.eo \
        lib/elementary/efl_ui_panes_part.eo \
index 2f4e9c9..f3c29e9 100644 (file)
@@ -172,7 +172,7 @@ elm_main(int argc EINA_UNUSED, char **argv)
 
              check = efl_add(EFL_UI_CHECK_CLASS, item);
              if ((i % 3) == 0)
-               efl_content_set(efl_part(item, "end"), check);
+               efl_content_set(efl_part(item, "extra"), check);
              else if ((i % 3) == 1)
                efl_content_set(efl_part(item, "icon"), check);
              else
index f0f5946..7830e49 100644 (file)
@@ -345,16 +345,16 @@ typedef Eo Efl_Ui_Focus_Manager;
 # include <efl_ui_slider.eo.h>
 # include <efl_ui_slider_interval.eo.h>
 # include <efl_ui_layout_factory.eo.h>
+# include <efl_ui_item_part_text.eo.h>
+# include <efl_ui_item_part_icon.eo.h>
+# include <efl_ui_item_part_extra.eo.h>
+# include <efl_ui_item_part_content.eo.h>
 # include <efl_ui_item.eo.h>
 # include <efl_ui_list_item.eo.h>
-# include <efl_ui_list_default_item_part_icon.eo.h>
-# include <efl_ui_list_default_item_part_end.eo.h>
 # include <efl_ui_list_default_item.eo.h>
 # include <efl_ui_list_empty_item.eo.h>
 # include <efl_ui_list.eo.h>
 # include <efl_ui_grid_item.eo.h>
-# include <efl_ui_grid_default_item_part_icon.eo.h>
-# include <efl_ui_grid_default_item_part_end.eo.h>
 # include <efl_ui_grid_default_item.eo.h>
 # include <efl_ui_grid.eo.h>
 # include <efl_ui_list_view_types.eot.h>
index d088429..65d2c24 100644 (file)
@@ -8,8 +8,6 @@
 #include <Elementary.h>
 
 #include "elm_priv.h"
-#include "efl_ui_grid_default_item_part_icon.eo.h"
-#include "efl_ui_grid_default_item_part_end.eo.h"
 #include "elm_part_helper.h"
 
 #define MY_CLASS      EFL_UI_GRID_DEFAULT_ITEM_CLASS
@@ -42,63 +40,18 @@ 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
-)
-
-Eina_Bool
-_efl_ui_grid_default_item_part_icon_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
-}
-
-Efl_Gfx_Entity *
-_efl_ui_grid_default_item_part_icon_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-
-Efl_Gfx_Entity *
-_efl_ui_grid_default_item_part_icon_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-#include "efl_ui_grid_default_item_part_icon.eo.c"
-
-Eina_Bool
-_efl_ui_grid_default_item_part_end_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
-}
-
-Efl_Gfx_Entity *
-_efl_ui_grid_default_item_part_end_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-
-Efl_Gfx_Entity *
-_efl_ui_grid_default_item_part_end_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-#include "efl_ui_grid_default_item_part_end.eo.c"
+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_LAYOUT_PART_TEXT_CLASS, obj, "efl.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_GRID_DEFAULT_ITEM_PART_ICON_CLASS, obj, "efl.icon");
-   else if (eina_streq(part, "end"))
-     return ELM_PART_IMPLEMENT(EFL_UI_GRID_DEFAULT_ITEM_PART_END_CLASS, obj, "efl.end");
+     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);
 }
index 4cbe74e..9b3a0eb 100644 (file)
@@ -11,8 +11,13 @@ class @beta Efl.Ui.Grid_Default_Item extends Efl.Ui.Grid_Item implements
      @Efl.Content or @Efl.Part.]]
    data: null;
    parts {
-     icon: Efl.Ui.Grid_Default_Item_Part_Icon; [[]]
-     end: Efl.Ui.Grid_Default_Item_Part_End; [[]]
+     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
diff --git a/src/lib/elementary/efl_ui_grid_default_item_part_end.eo b/src/lib/elementary/efl_ui_grid_default_item_part_end.eo
deleted file mode 100644 (file)
index dc3b6df..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-class @beta Efl.Ui.Grid_Default_Item_Part_End extends Efl.Ui.Layout_Part implements Efl.Content
-{
-   [[Grid Default Item internal content of end part class]]
-       data: null;
-   implements {
-      Efl.Content.content { get; set; }
-      Efl.Content.content_unset;
-   }
-}
diff --git a/src/lib/elementary/efl_ui_grid_default_item_part_icon.eo b/src/lib/elementary/efl_ui_grid_default_item_part_icon.eo
deleted file mode 100644 (file)
index 47e290b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-class @beta Efl.Ui.Grid_Default_Item_Part_Icon extends Efl.Ui.Layout_Part implements Efl.Content
-{
-   [[Grid Default Item internal content of icon part class]]
-       data: null;
-   implements {
-      Efl.Content.content { get; set; }
-      Efl.Content.content_unset;
-   }
-}
index 65f488e..3f87832 100644 (file)
 
 #include "elm_priv.h"
 #include "efl_ui_item_private.h"
+//part
+#include "efl_ui_item_part_text.eo.h"
+#include "efl_ui_item_part_icon.eo.h"
+#include "efl_ui_item_part_extra.eo.h"
+#include "efl_ui_item_part_content.eo.h"
+#include "elm_part_helper.h"
 
 #define MY_CLASS      EFL_UI_ITEM_CLASS
 #define MY_CLASS_PFX  efl_ui_item
 
 #define MY_CLASS_NAME "Efl.Ui.Item"
 
+/* Efl.Part */
+EOLIAN static void
+_efl_ui_item_part_text_efl_text_text_set(Eo *obj, void *pd EINA_UNUSED, const char *text)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   efl_text_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), text);
+
+   efl_layout_signal_emit(wd->obj, "efl,state,text,set", "efl");
+   elm_layout_sizing_eval(wd->obj);
+}
+
+EOLIAN static const char*
+_efl_ui_item_part_text_efl_text_text_get(const Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_text_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+
+EOLIAN static void
+_efl_ui_item_part_text_efl_text_markup_markup_set(Eo *obj, void *pd EINA_UNUSED, const char *markup)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   efl_text_markup_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), markup);
+
+   efl_layout_signal_emit(obj, "efl,state,text,set", "efl");
+   elm_layout_sizing_eval(obj);
+}
+
+EOLIAN static const char*
+_efl_ui_item_part_text_efl_text_markup_markup_get(const Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_text_markup_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+
+EOLIAN static const char *
+_efl_ui_item_part_text_efl_ui_l10n_l10n_text_get(const Eo *obj, void *_pd EINA_UNUSED, const char **domain)
+{
+   Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return elm_widget_part_translatable_text_get(pd->obj, pd->part, domain);
+}
+
+EOLIAN static void
+_efl_ui_item_part_text_efl_ui_l10n_l10n_text_set(Eo *obj, void *_pd EINA_UNUSED, const char *text, const char *domain)
+{
+   Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   elm_widget_part_translatable_text_set(pd->obj, pd->part, text, domain);
+}
+#include "efl_ui_item_part_text.eo.c"
+
+/* Efl.Ui.List_Default_Item_Part_Icon */
+
+Eina_Bool
+_efl_ui_item_part_icon_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_icon_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_icon_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+#include "efl_ui_item_part_icon.eo.c"
+
+Eina_Bool
+_efl_ui_item_part_extra_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_extra_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_extra_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+#include "efl_ui_item_part_extra.eo.c"
+
+Eina_Bool
+_efl_ui_item_part_content_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_content_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+
+Efl_Gfx_Entity *
+_efl_ui_item_part_content_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
+{
+   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
+   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
+}
+#include "efl_ui_item_part_content.eo.c"
+/* Efl.Part */
+
 static void
 _item_select(Eo *obj, Efl_Ui_Item_Data *pd)
 {
diff --git a/src/lib/elementary/efl_ui_item_part_content.eo b/src/lib/elementary/efl_ui_item_part_content.eo
new file mode 100644 (file)
index 0000000..010f850
--- /dev/null
@@ -0,0 +1,9 @@
+class @beta Efl.Ui.Item_Part_Content extends Efl.Ui.Layout_Part implements Efl.Content
+{
+   [[Item internal content part class]]
+       data: null;
+   implements {
+      Efl.Content.content { get; set; }
+      Efl.Content.content_unset;
+   }
+}
diff --git a/src/lib/elementary/efl_ui_item_part_extra.eo b/src/lib/elementary/efl_ui_item_part_extra.eo
new file mode 100644 (file)
index 0000000..c6433fc
--- /dev/null
@@ -0,0 +1,9 @@
+class @beta Efl.Ui.Item_Part_Extra extends Efl.Ui.Layout_Part implements Efl.Content
+{
+   [[Item internal content of extra part class]]
+       data: null;
+   implements {
+      Efl.Content.content { get; set; }
+      Efl.Content.content_unset;
+   }
+}
diff --git a/src/lib/elementary/efl_ui_item_part_icon.eo b/src/lib/elementary/efl_ui_item_part_icon.eo
new file mode 100644 (file)
index 0000000..5c9a9e3
--- /dev/null
@@ -0,0 +1,9 @@
+class @beta Efl.Ui.Item_Part_Icon extends Efl.Ui.Layout_Part implements Efl.Content
+{
+   [[Item internal content of icon part class]]
+       data: null;
+   implements {
+      Efl.Content.content { get; set; }
+      Efl.Content.content_unset;
+   }
+}
diff --git a/src/lib/elementary/efl_ui_item_part_text.eo b/src/lib/elementary/efl_ui_item_part_text.eo
new file mode 100644 (file)
index 0000000..97fdc0e
--- /dev/null
@@ -0,0 +1,11 @@
+class @beta Efl.Ui.Item_Part_Text extends Efl.Ui.Layout_Part implements
+                                          Efl.Text, Efl.Text_Markup, Efl.Ui.L10n
+{
+   [[Item internal text part class]]
+  data: null;
+   implements {
+      Efl.Text.text { set; get; }
+      Efl.Text_Markup.markup { get; set; }
+      Efl.Ui.L10n.l10n_text { get; set; }
+   }
+}
index 3fcf9e7..d95f988 100644 (file)
@@ -8,8 +8,6 @@
 #include <Elementary.h>
 
 #include "elm_priv.h"
-#include "efl_ui_list_default_item_part_icon.eo.h"
-#include "efl_ui_list_default_item_part_end.eo.h"
 #include "elm_part_helper.h"
 
 #define MY_CLASS      EFL_UI_LIST_DEFAULT_ITEM_CLASS
@@ -36,73 +34,25 @@ _efl_ui_list_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_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
-)
-
-Eina_Bool
-_efl_ui_list_default_item_part_icon_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
-}
-
-Efl_Gfx_Entity *
-_efl_ui_list_default_item_part_icon_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-
-Efl_Gfx_Entity *
-_efl_ui_list_default_item_part_icon_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-#include "efl_ui_list_default_item_part_icon.eo.c"
-
-Eina_Bool
-_efl_ui_list_default_item_part_end_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
-}
-
-Efl_Gfx_Entity *
-_efl_ui_list_default_item_part_end_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-
-Efl_Gfx_Entity *
-_efl_ui_list_default_item_part_end_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
-{
-   Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
-   return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
-}
-#include "efl_ui_list_default_item_part_end.eo.c"
+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_LAYOUT_PART_TEXT_CLASS, obj, "efl.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_LIST_DEFAULT_ITEM_PART_ICON_CLASS, obj, "efl.icon");
-   else if (eina_streq(part, "end"))
-     return ELM_PART_IMPLEMENT(EFL_UI_LIST_DEFAULT_ITEM_PART_END_CLASS, obj, "efl.end");
+     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_LIST_DEFAULT_ITEM_EXTRA_OPS             \
index 5ea4d2e..ee4e770 100644 (file)
@@ -9,6 +9,13 @@ class @beta Efl.Ui.List_Default_Item extends Efl.Ui.List_Item implements
      text and contents can be appliable by efl_text,
      efl_content or efl_part APIs.]]
    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;
diff --git a/src/lib/elementary/efl_ui_list_default_item_part_end.eo b/src/lib/elementary/efl_ui_list_default_item_part_end.eo
deleted file mode 100644 (file)
index 9ff2d11..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-class @beta Efl.Ui.List_Default_Item_Part_End extends Efl.Ui.Layout_Part implements Efl.Content
-{
-   [[List Default Item internal content of end part class]]
-       data: null;
-   implements {
-      Efl.Content.content { get; set; }
-      Efl.Content.content_unset;
-   }
-}
diff --git a/src/lib/elementary/efl_ui_list_default_item_part_icon.eo b/src/lib/elementary/efl_ui_list_default_item_part_icon.eo
deleted file mode 100644 (file)
index 232b0d9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-class @beta Efl.Ui.List_Default_Item_Part_Icon extends Efl.Ui.Layout_Part implements Efl.Content
-{
-   [[List Default Item internal content of icon part class]]
-       data: null;
-   implements {
-      Efl.Content.content { get; set; }
-      Efl.Content.content_unset;
-   }
-}
index bc4aab1..8df9b78 100644 (file)
@@ -44,7 +44,7 @@ _efl_ui_list_empty_item_efl_part_part_get(const Eo *obj, void *wd EINA_UNUSED, c
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
    if (eina_streq(part, "content"))
-     return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_CONTENT_CLASS, obj, "efl.content");
+     return ELM_PART_IMPLEMENT(EFL_UI_ITEM_PART_CONTENT_CLASS, obj, "efl.content");
 
    return efl_part_get(efl_super(obj, MY_CLASS), part);
 }
index 070b605..a656c75 100644 (file)
@@ -5,6 +5,11 @@ class @beta Efl.Ui.List_Empty_Item extends Efl.Ui.List_Item implements Efl.Conte
      thus user can decorate item by filling the swallow with
      any kind of container.]]
    data: null;
+   parts {
+     content: Efl.Ui.Item_Part_Content; [[the content part for list empty item.
+                                        the content part is empty slot for user customizing.
+                                        fill the place with container widget such as layout, box, table.]]
+   }
    implements {
       //Efl.Object
       Efl.Object.finalize;
index f28e85f..dee3f5c 100644 (file)
@@ -120,16 +120,16 @@ pub_eo_files = [
   'efl_ui_list_view.eo',
   'efl_ui_list_view_model.eo',
   'efl_ui_list_view_pan.eo',
+  'efl_ui_item_part_text.eo',
+  'efl_ui_item_part_icon.eo',
+  'efl_ui_item_part_extra.eo',
+  'efl_ui_item_part_content.eo',
   'efl_ui_item.eo',
   'efl_ui_list_item.eo',
-  'efl_ui_list_default_item_part_icon.eo',
-  'efl_ui_list_default_item_part_end.eo',
   'efl_ui_list_default_item.eo',
   'efl_ui_list_empty_item.eo',
   'efl_ui_list.eo',
   'efl_ui_grid_item.eo',
-  'efl_ui_grid_default_item_part_icon.eo',
-  'efl_ui_grid_default_item_part_end.eo',
   'efl_ui_grid_default_item.eo',
   'efl_ui_grid.eo',
   'efl_ui_panes_part.eo',