diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 87390e5c9e..7ceb4b1e21 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -214,8 +214,6 @@ elm_legacy_eolian_files = \ lib/elementary/elm_actionslider_part.eo \ lib/elementary/elm_bubble_part.eo \ lib/elementary/elm_fileselector_part.eo \ - lib/elementary/elm_naviframe.eo \ - lib/elementary/elm_naviframe_item.eo \ lib/elementary/elm_photo.eo \ lib/elementary/elm_prefs.eo \ lib/elementary/elm_segment_control.eo \ @@ -372,6 +370,10 @@ lib/elementary/elm_multibuttonentry_eo.c \ lib/elementary/elm_multibuttonentry_eo.legacy.c \ lib/elementary/elm_multibuttonentry_item_eo.c \ lib/elementary/elm_multibuttonentry_item_eo.legacy.c \ +lib/elementary/elm_naviframe_eo.c \ +lib/elementary/elm_naviframe_eo.legacy.c \ +lib/elementary/elm_naviframe_item_eo.c \ +lib/elementary/elm_naviframe_item_eo.legacy.c \ $(NULL) elm_legacy_eo_headers = \ @@ -521,6 +523,10 @@ lib/elementary/elm_multibuttonentry_eo.h \ lib/elementary/elm_multibuttonentry_eo.legacy.h \ lib/elementary/elm_multibuttonentry_item_eo.h \ lib/elementary/elm_multibuttonentry_item_eo.legacy.h \ +lib/elementary/elm_naviframe_eo.h \ +lib/elementary/elm_naviframe_eo.legacy.h \ +lib/elementary/elm_naviframe_item_eo.h \ +lib/elementary/elm_naviframe_item_eo.legacy.h \ $(NULL) diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c index a04f98d9fd..251b3eb44f 100644 --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -11,8 +11,8 @@ #include #include "elm_priv.h" -#include "elm_naviframe.eo.h" -#include "elm_naviframe_item.eo.h" +#include "elm_naviframe_eo.h" +#include "elm_naviframe_item_eo.h" #include "elm_widget_naviframe.h" #include "elm_widget_container.h" @@ -2052,5 +2052,5 @@ ELM_PART_OVERRIDE_TEXT_GET(elm_naviframe, ELM_NAVIFRAME, Elm_Naviframe_Data) ELM_LAYOUT_SIZING_EVAL_OPS(elm_naviframe), \ EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_naviframe) -#include "elm_naviframe_item.eo.c" -#include "elm_naviframe.eo.c" +#include "elm_naviframe_item_eo.c" +#include "elm_naviframe_eo.c" diff --git a/src/lib/elementary/elc_naviframe_legacy.h b/src/lib/elementary/elc_naviframe_legacy.h index 7bcba3a6a3..38f06ca186 100644 --- a/src/lib/elementary/elc_naviframe_legacy.h +++ b/src/lib/elementary/elc_naviframe_legacy.h @@ -19,5 +19,5 @@ EAPI void elm_naviframe_item_style_set(Elm_Object_Item *obj, const char *style); */ EAPI const char *elm_naviframe_item_style_get(const Elm_Object_Item *obj); -#include "elm_naviframe_item.eo.legacy.h" -#include "elm_naviframe.eo.legacy.h" +#include "elm_naviframe_item_eo.legacy.h" +#include "elm_naviframe_eo.legacy.h" diff --git a/src/lib/elementary/elm_naviframe.eo b/src/lib/elementary/elm_naviframe.eo deleted file mode 100644 index d3b44ccb64..0000000000 --- a/src/lib/elementary/elm_naviframe.eo +++ /dev/null @@ -1,162 +0,0 @@ -class Elm.Naviframe extends Efl.Ui.Layout_Base implements Efl.Access.Widget.Action, Efl.Ui.Legacy -{ - [[Elementary naviframe class]] - legacy_prefix: elm_naviframe; - eo_prefix: elm_obj_naviframe; - event_prefix: elm_naviframe; - methods { - @property event_enabled { - [[Control the event enabled when pushing/popping items - - If $enabled is $true, the contents of the naviframe item will - receives events from mouse and keyboard during view changing such as - item push/pop. - - Warning: Events will be blocked by calling evas_object_freeze_events_set() - internally. So don't call the API whiling pushing/popping items.]] - set { - } - get { - } - values { - enabled: bool; [[Events are received when enabled is $true, and ignored otherwise.]] - } - } - @property content_preserve_on_pop { - [[Preserve the content objects when items are popped.]] - set { - } - get { - } - values { - preserve: bool; [[Enable the preserve mode if $true, disable otherwise]] - } - } - @property prev_btn_auto_pushed { - [[Control if creating prev button automatically or not]] - set { - } - get { - } - values { - auto_pushed: bool; [[If $true, the previous button(back button) will be created internally when you pass the $NULL to the prev_btn parameter in elm_naviframe_item_push]] - } - } - @property items { - get { - [[Get a list of all the naviframe items.]] - - return: list @owned @warn_unused; [[A list of naviframe items, @Elm.Widget.Item, or $NULL on failure. Note: The returned list MUST be freed.]] - } - } - @property top_item { - get { - [[Get a top item on the naviframe stack]] - - return: Elm.Widget.Item; [[The top item on the naviframe stack or $NULL, if the stack is empty]] - } - } - @property bottom_item { - get { - [[Get a bottom item on the naviframe stack]] - - return: Elm.Widget.Item; [[The bottom item on the naviframe stack or $NULL, if the stack is empty]] - } - } - item_pop { - [[Pop an item that is on top of the stack - - This pops an item that is on the top(visible) of the naviframe, makes it - disappear, then deletes the item. The item that was underneath it on the - stack will become visible. - - When pop transition animation is in progress, new pop operation is blocked until current pop operation - is complete. - ]] - - return: Efl.Canvas.Object; [[$NULL or the content object(if the elm_naviframe_content_preserve_on_pop_get is true).]] - } - item_insert_before { - [[Insert a new item into the naviframe before item $before. - - The item is inserted into the naviframe straight away without any - transition operations. This item will be deleted when it is popped.]] - - return: Elm.Widget.Item; [[The created item or $NULL upon failure.]] - params { - @in before: Elm.Widget.Item; [[The naviframe item to insert before.]] - @in title_label: string @optional; [[The label in the title area. The name of the title label part is "elm.text.title"]] - @in prev_btn: Efl.Canvas.Object @nullable; [[The button to go to the previous item. If it is NULL, then naviframe will create a back button automatically. The name of the prev_btn part is "elm.swallow.prev_btn"]] - @in next_btn: Efl.Canvas.Object @nullable; [[The button to go to the next item. Or It could be just an extra function button. The name of the next_btn part is "elm.swallow.next_btn"]] - @in content: Efl.Canvas.Object; [[The main content object. The name of content part is "elm.swallow.content"]] - @in item_style: string @nullable; [[The current item style name. $NULL would be default.]] - } - } - item_push { - [[Push a new item to the top of the naviframe stack (and show it). - - - The item pushed becomes one page of the naviframe, this item will be - deleted when it is popped. - - When push transition animation is in progress, pop operation is blocked until push is complete. - - The following styles are available for this item: - "default"]] - - return: Elm.Widget.Item; [[The created item or $NULL upon failure.]] - params { - @in title_label: string @optional; [[The label in the title area. The name of the title label part is "elm.text.title"]] - @in prev_btn: Efl.Canvas.Object @nullable; [[The button to go to the previous item. If it is NULL, then naviframe will create a back button automatically. The name of the prev_btn part is "elm.swallow.prev_btn"]] - @in next_btn: Efl.Canvas.Object @nullable; [[The button to go to the next item. Or It could be just an extra function button. The name of the next_btn part is "elm.swallow.next_btn"]] - @in content: Efl.Canvas.Object; [[The main content object. The name of content part is "elm.swallow.content"]] - @in item_style: string @nullable; [[The current item style name. $NULL would be default.]] - } - } - item_simple_promote { - [[Simple version of item_promote.]] - - params { - @in content: Efl.Canvas.Object; [[Item to promote]] - } - } - item_insert_after { - [[Insert a new item into the naviframe after item $after. - - The item is inserted into the naviframe straight away without any - transition operations. This item will be deleted when it is popped. - - The following styles are available for this item: - "default"]] - - return: Elm.Widget.Item; [[The created item or $NULL upon failure.]] - params { - @in after: Elm.Widget.Item; [[The naviframe item to insert after.]] - @in title_label: string @optional; [[The label in the title area. The name of the title label part is "elm.text.title"]] - @in prev_btn: Efl.Canvas.Object @nullable; [[The button to go to the previous item. If it is NULL, then naviframe will create a back button automatically. The name of the prev_btn part is "elm.swallow.prev_btn"]] - @in next_btn: Efl.Canvas.Object @nullable; [[The button to go to the next item. Or It could be just an extra function button. The name of the next_btn part is "elm.swallow.next_btn"]] - @in content: Efl.Canvas.Object; [[The main content object. The name of content part is "elm.swallow.content"]] - @in item_style: string @nullable; [[The current item style name. $NULL would be default.]] - } - } - } - implements { - class.constructor; - Efl.Object.constructor; - Efl.Gfx.Entity.visible { set; } - Efl.Ui.Widget.on_access_update; - Efl.Ui.L10n.translation_update; - Efl.Ui.Widget.theme_apply; - Efl.Ui.Widget.widget_input_event_handler; - Efl.Layout.Signal.signal_emit; - Efl.Access.Widget.Action.elm_actions { get; } - Efl.Ui.Widget.resize_object { set; } - Efl.Part.part_get; - } - events { - transition,finished: Efl.Object; [[Called when naviframe transition finished]] - title,transition,finished: Efl.Object; [[Called when naviframe title transaction finished]] - title,clicked: Efl.Object; [[Called when naviframe title was clicked]] - item,activated: Efl.Object; [[Called when naviframe item was activated]] - } -} diff --git a/src/lib/elementary/elm_naviframe_eo.c b/src/lib/elementary/elm_naviframe_eo.c new file mode 100644 index 0000000000..c4ecbba429 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_eo.c @@ -0,0 +1,233 @@ +EWAPI const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TRANSITION_FINISHED = + EFL_EVENT_DESCRIPTION("transition,finished"); +EWAPI const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TITLE_TRANSITION_FINISHED = + EFL_EVENT_DESCRIPTION("title,transition,finished"); +EWAPI const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TITLE_CLICKED = + EFL_EVENT_DESCRIPTION("title,clicked"); +EWAPI const Efl_Event_Description _ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED = + EFL_EVENT_DESCRIPTION("item,activated"); + +void _elm_naviframe_event_enabled_set(Eo *obj, Elm_Naviframe_Data *pd, Eina_Bool enabled); + + +static Eina_Error +__eolian_elm_naviframe_event_enabled_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_naviframe_event_enabled_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_event_enabled_set, EFL_FUNC_CALL(enabled), Eina_Bool enabled); + +Eina_Bool _elm_naviframe_event_enabled_get(const Eo *obj, Elm_Naviframe_Data *pd); + + +static Eina_Value +__eolian_elm_naviframe_event_enabled_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_obj_naviframe_event_enabled_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_event_enabled_get, Eina_Bool, 0); + +void _elm_naviframe_content_preserve_on_pop_set(Eo *obj, Elm_Naviframe_Data *pd, Eina_Bool preserve); + + +static Eina_Error +__eolian_elm_naviframe_content_preserve_on_pop_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_naviframe_content_preserve_on_pop_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_content_preserve_on_pop_set, EFL_FUNC_CALL(preserve), Eina_Bool preserve); + +Eina_Bool _elm_naviframe_content_preserve_on_pop_get(const Eo *obj, Elm_Naviframe_Data *pd); + + +static Eina_Value +__eolian_elm_naviframe_content_preserve_on_pop_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_obj_naviframe_content_preserve_on_pop_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_content_preserve_on_pop_get, Eina_Bool, 0); + +void _elm_naviframe_prev_btn_auto_pushed_set(Eo *obj, Elm_Naviframe_Data *pd, Eina_Bool auto_pushed); + + +static Eina_Error +__eolian_elm_naviframe_prev_btn_auto_pushed_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_naviframe_prev_btn_auto_pushed_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_prev_btn_auto_pushed_set, EFL_FUNC_CALL(auto_pushed), Eina_Bool auto_pushed); + +Eina_Bool _elm_naviframe_prev_btn_auto_pushed_get(const Eo *obj, Elm_Naviframe_Data *pd); + + +static Eina_Value +__eolian_elm_naviframe_prev_btn_auto_pushed_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_obj_naviframe_prev_btn_auto_pushed_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_prev_btn_auto_pushed_get, Eina_Bool, 0); + +Eina_List *_elm_naviframe_items_get(const Eo *obj, Elm_Naviframe_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_items_get, Eina_List *, NULL); + +Elm_Widget_Item *_elm_naviframe_top_item_get(const Eo *obj, Elm_Naviframe_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_top_item_get, Elm_Widget_Item *, NULL); + +Elm_Widget_Item *_elm_naviframe_bottom_item_get(const Eo *obj, Elm_Naviframe_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_bottom_item_get, Elm_Widget_Item *, NULL); + +Efl_Canvas_Object *_elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *pd); + +EOAPI EFL_FUNC_BODY(elm_obj_naviframe_item_pop, Efl_Canvas_Object *, NULL); + +Elm_Widget_Item *_elm_naviframe_item_insert_before(Eo *obj, Elm_Naviframe_Data *pd, Elm_Widget_Item *before, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +EOAPI EFL_FUNC_BODYV(elm_obj_naviframe_item_insert_before, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(before, title_label, prev_btn, next_btn, content, item_style), Elm_Widget_Item *before, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +Elm_Widget_Item *_elm_naviframe_item_push(Eo *obj, Elm_Naviframe_Data *pd, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +EOAPI EFL_FUNC_BODYV(elm_obj_naviframe_item_push, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(title_label, prev_btn, next_btn, content, item_style), const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +void _elm_naviframe_item_simple_promote(Eo *obj, Elm_Naviframe_Data *pd, Efl_Canvas_Object *content); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_item_simple_promote, EFL_FUNC_CALL(content), Efl_Canvas_Object *content); + +Elm_Widget_Item *_elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *pd, Elm_Widget_Item *after, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +EOAPI EFL_FUNC_BODYV(elm_obj_naviframe_item_insert_after, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(after, title_label, prev_btn, next_btn, content, item_style), Elm_Widget_Item *after, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +Efl_Object *_elm_naviframe_efl_object_constructor(Eo *obj, Elm_Naviframe_Data *pd); + + +void _elm_naviframe_efl_gfx_entity_visible_set(Eo *obj, Elm_Naviframe_Data *pd, Eina_Bool v); + + +void _elm_naviframe_efl_ui_widget_on_access_update(Eo *obj, Elm_Naviframe_Data *pd, Eina_Bool enable); + + +void _elm_naviframe_efl_ui_l10n_translation_update(Eo *obj, Elm_Naviframe_Data *pd); + + +Eina_Error _elm_naviframe_efl_ui_widget_theme_apply(Eo *obj, Elm_Naviframe_Data *pd); + + +Eina_Bool _elm_naviframe_efl_ui_widget_widget_input_event_handler(Eo *obj, Elm_Naviframe_Data *pd, const Efl_Event *eo_event, Efl_Canvas_Object *source); + + +void _elm_naviframe_efl_layout_signal_signal_emit(Eo *obj, Elm_Naviframe_Data *pd, const char *emission, const char *source); + + +const Efl_Access_Action_Data *_elm_naviframe_efl_access_widget_action_elm_actions_get(const Eo *obj, Elm_Naviframe_Data *pd); + + +void _elm_naviframe_efl_ui_widget_resize_object_set(Eo *obj, Elm_Naviframe_Data *pd, Efl_Canvas_Object *sobj); + + +Efl_Object *_elm_naviframe_efl_part_part_get(const Eo *obj, Elm_Naviframe_Data *pd, const char *name); + + +static Eina_Bool +_elm_naviframe_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_NAVIFRAME_EXTRA_OPS +#define ELM_NAVIFRAME_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_event_enabled_set, _elm_naviframe_event_enabled_set), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_event_enabled_get, _elm_naviframe_event_enabled_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_content_preserve_on_pop_set, _elm_naviframe_content_preserve_on_pop_set), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_content_preserve_on_pop_get, _elm_naviframe_content_preserve_on_pop_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_prev_btn_auto_pushed_set, _elm_naviframe_prev_btn_auto_pushed_set), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_prev_btn_auto_pushed_get, _elm_naviframe_prev_btn_auto_pushed_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_items_get, _elm_naviframe_items_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_top_item_get, _elm_naviframe_top_item_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_bottom_item_get, _elm_naviframe_bottom_item_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_pop, _elm_naviframe_item_pop), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_insert_before, _elm_naviframe_item_insert_before), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_push, _elm_naviframe_item_push), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_simple_promote, _elm_naviframe_item_simple_promote), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_insert_after, _elm_naviframe_item_insert_after), + EFL_OBJECT_OP_FUNC(efl_constructor, _elm_naviframe_efl_object_constructor), + EFL_OBJECT_OP_FUNC(efl_gfx_entity_visible_set, _elm_naviframe_efl_gfx_entity_visible_set), + EFL_OBJECT_OP_FUNC(efl_ui_widget_on_access_update, _elm_naviframe_efl_ui_widget_on_access_update), + EFL_OBJECT_OP_FUNC(efl_ui_l10n_translation_update, _elm_naviframe_efl_ui_l10n_translation_update), + EFL_OBJECT_OP_FUNC(efl_ui_widget_theme_apply, _elm_naviframe_efl_ui_widget_theme_apply), + EFL_OBJECT_OP_FUNC(efl_ui_widget_input_event_handler, _elm_naviframe_efl_ui_widget_widget_input_event_handler), + EFL_OBJECT_OP_FUNC(efl_layout_signal_emit, _elm_naviframe_efl_layout_signal_signal_emit), + EFL_OBJECT_OP_FUNC(efl_access_widget_action_elm_actions_get, _elm_naviframe_efl_access_widget_action_elm_actions_get), + EFL_OBJECT_OP_FUNC(efl_ui_widget_resize_object_set, _elm_naviframe_efl_ui_widget_resize_object_set), + EFL_OBJECT_OP_FUNC(efl_part_get, _elm_naviframe_efl_part_part_get), + ELM_NAVIFRAME_EXTRA_OPS + ); + opsp = &ops; + + static const Efl_Object_Property_Reflection refl_table[] = { + {"event_enabled", __eolian_elm_naviframe_event_enabled_set_reflect, __eolian_elm_naviframe_event_enabled_get_reflect}, + {"content_preserve_on_pop", __eolian_elm_naviframe_content_preserve_on_pop_set_reflect, __eolian_elm_naviframe_content_preserve_on_pop_get_reflect}, + {"prev_btn_auto_pushed", __eolian_elm_naviframe_prev_btn_auto_pushed_set_reflect, __eolian_elm_naviframe_prev_btn_auto_pushed_get_reflect}, + }; + static const Efl_Object_Property_Reflection_Ops rops = { + refl_table, EINA_C_ARRAY_LENGTH(refl_table) + }; + ropsp = &rops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_naviframe_class_desc = { + EO_VERSION, + "Elm.Naviframe", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Naviframe_Data), + _elm_naviframe_class_initializer, + _elm_naviframe_class_constructor, + NULL +}; + +EFL_DEFINE_CLASS(elm_naviframe_class_get, &_elm_naviframe_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); + +#include "elm_naviframe_eo.legacy.c" diff --git a/src/lib/elementary/elm_naviframe_eo.h b/src/lib/elementary/elm_naviframe_eo.h new file mode 100644 index 0000000000..8b4f4d8c0e --- /dev/null +++ b/src/lib/elementary/elm_naviframe_eo.h @@ -0,0 +1,289 @@ +#ifndef _ELM_NAVIFRAME_EO_H_ +#define _ELM_NAVIFRAME_EO_H_ + +#ifndef _ELM_NAVIFRAME_EO_CLASS_TYPE +#define _ELM_NAVIFRAME_EO_CLASS_TYPE + +typedef Eo Elm_Naviframe; + +#endif + +#ifndef _ELM_NAVIFRAME_EO_TYPES +#define _ELM_NAVIFRAME_EO_TYPES + + +#endif +/** Elementary naviframe class + * + * @ingroup Elm_Naviframe + */ +#define ELM_NAVIFRAME_CLASS elm_naviframe_class_get() + +EWAPI const Efl_Class *elm_naviframe_class_get(void); + +/** + * @brief Control the event enabled when pushing/popping items + * + * If @c enabled is @c true, the contents of the naviframe item will receives + * events from mouse and keyboard during view changing such as item push/pop. + * + * @warning Events will be blocked by calling evas_object_freeze_events_set() + * internally. So don't call the API whiling pushing/popping items. + * + * @param[in] obj The object. + * @param[in] enabled Events are received when enabled is @c true, and ignored + * otherwise. + * + * @ingroup Elm_Naviframe + */ +EOAPI void elm_obj_naviframe_event_enabled_set(Eo *obj, Eina_Bool enabled); + +/** + * @brief Control the event enabled when pushing/popping items + * + * If @c enabled is @c true, the contents of the naviframe item will receives + * events from mouse and keyboard during view changing such as item push/pop. + * + * @warning Events will be blocked by calling evas_object_freeze_events_set() + * internally. So don't call the API whiling pushing/popping items. + * + * @param[in] obj The object. + * + * @return Events are received when enabled is @c true, and ignored otherwise. + * + * @ingroup Elm_Naviframe + */ +EOAPI Eina_Bool elm_obj_naviframe_event_enabled_get(const Eo *obj); + +/** + * @brief Preserve the content objects when items are popped. + * + * @param[in] obj The object. + * @param[in] preserve Enable the preserve mode if @c true, disable otherwise + * + * @ingroup Elm_Naviframe + */ +EOAPI void elm_obj_naviframe_content_preserve_on_pop_set(Eo *obj, Eina_Bool preserve); + +/** + * @brief Preserve the content objects when items are popped. + * + * @param[in] obj The object. + * + * @return Enable the preserve mode if @c true, disable otherwise + * + * @ingroup Elm_Naviframe + */ +EOAPI Eina_Bool elm_obj_naviframe_content_preserve_on_pop_get(const Eo *obj); + +/** + * @brief Control if creating prev button automatically or not + * + * @param[in] obj The object. + * @param[in] auto_pushed If @c true, the previous button(back button) will be + * created internally when you pass the @c NULL to the prev_btn parameter in + * elm_naviframe_item_push + * + * @ingroup Elm_Naviframe + */ +EOAPI void elm_obj_naviframe_prev_btn_auto_pushed_set(Eo *obj, Eina_Bool auto_pushed); + +/** + * @brief Control if creating prev button automatically or not + * + * @param[in] obj The object. + * + * @return If @c true, the previous button(back button) will be created + * internally when you pass the @c NULL to the prev_btn parameter in + * elm_naviframe_item_push + * + * @ingroup Elm_Naviframe + */ +EOAPI Eina_Bool elm_obj_naviframe_prev_btn_auto_pushed_get(const Eo *obj); + +/** + * @brief Get a list of all the naviframe items. + * + * @param[in] obj The object. + * + * @return A list of naviframe items, @ref Elm_Widget_Item, or @c NULL on + * failure. Note: The returned list MUST be freed. + * + * @ingroup Elm_Naviframe + */ +EOAPI Eina_List *elm_obj_naviframe_items_get(const Eo *obj) EINA_WARN_UNUSED_RESULT; + +/** + * @brief Get a top item on the naviframe stack + * + * @param[in] obj The object. + * + * @return The top item on the naviframe stack or @c NULL, if the stack is + * empty + * + * @ingroup Elm_Naviframe + */ +EOAPI Elm_Widget_Item *elm_obj_naviframe_top_item_get(const Eo *obj); + +/** + * @brief Get a bottom item on the naviframe stack + * + * @param[in] obj The object. + * + * @return The bottom item on the naviframe stack or @c NULL, if the stack is + * empty + * + * @ingroup Elm_Naviframe + */ +EOAPI Elm_Widget_Item *elm_obj_naviframe_bottom_item_get(const Eo *obj); + +/** + * @brief Pop an item that is on top of the stack + * + * This pops an item that is on the top(visible) of the naviframe, makes it + * disappear, then deletes the item. The item that was underneath it on the + * stack will become visible. + * + * When pop transition animation is in progress, new pop operation is blocked + * until current pop operation is complete. + * + * @param[in] obj The object. + * + * @return @c NULL or the content object(if the + * elm_naviframe_content_preserve_on_pop_get is true). + * + * @ingroup Elm_Naviframe + */ +EOAPI Efl_Canvas_Object *elm_obj_naviframe_item_pop(Eo *obj); + +/** + * @brief Insert a new item into the naviframe before item @c before. + * + * The item is inserted into the naviframe straight away without any transition + * operations. This item will be deleted when it is popped. + * + * @param[in] obj The object. + * @param[in] before The naviframe item to insert before. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe + */ +EOAPI Elm_Widget_Item *elm_obj_naviframe_item_insert_before(Eo *obj, Elm_Widget_Item *before, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +/** + * @brief Push a new item to the top of the naviframe stack (and show it). + * + * The item pushed becomes one page of the naviframe, this item will be deleted + * when it is popped. + * + * When push transition animation is in progress, pop operation is blocked + * until push is complete. + * + * The following styles are available for this item: "default" + * + * @param[in] obj The object. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe + */ +EOAPI Elm_Widget_Item *elm_obj_naviframe_item_push(Eo *obj, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +/** + * @brief Simple version of item_promote. + * + * @param[in] obj The object. + * @param[in] content Item to promote + * + * @ingroup Elm_Naviframe + */ +EOAPI void elm_obj_naviframe_item_simple_promote(Eo *obj, Efl_Canvas_Object *content); + +/** + * @brief Insert a new item into the naviframe after item @c after. + * + * The item is inserted into the naviframe straight away without any transition + * operations. This item will be deleted when it is popped. + * + * The following styles are available for this item: "default" + * + * @param[in] obj The object. + * @param[in] after The naviframe item to insert after. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe + */ +EOAPI Elm_Widget_Item *elm_obj_naviframe_item_insert_after(Eo *obj, Elm_Widget_Item *after, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +EWAPI extern const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TRANSITION_FINISHED; + +/** Called when naviframe transition finished + * @return Efl_Object * + * + * @ingroup Elm_Naviframe + */ +#define ELM_NAVIFRAME_EVENT_TRANSITION_FINISHED (&(_ELM_NAVIFRAME_EVENT_TRANSITION_FINISHED)) + +EWAPI extern const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TITLE_TRANSITION_FINISHED; + +/** Called when naviframe title transaction finished + * @return Efl_Object * + * + * @ingroup Elm_Naviframe + */ +#define ELM_NAVIFRAME_EVENT_TITLE_TRANSITION_FINISHED (&(_ELM_NAVIFRAME_EVENT_TITLE_TRANSITION_FINISHED)) + +EWAPI extern const Efl_Event_Description _ELM_NAVIFRAME_EVENT_TITLE_CLICKED; + +/** Called when naviframe title was clicked + * @return Efl_Object * + * + * @ingroup Elm_Naviframe + */ +#define ELM_NAVIFRAME_EVENT_TITLE_CLICKED (&(_ELM_NAVIFRAME_EVENT_TITLE_CLICKED)) + +EWAPI extern const Efl_Event_Description _ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED; + +/** Called when naviframe item was activated + * @return Efl_Object * + * + * @ingroup Elm_Naviframe + */ +#define ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED (&(_ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED)) + +#endif diff --git a/src/lib/elementary/elm_naviframe_eo.legacy.c b/src/lib/elementary/elm_naviframe_eo.legacy.c new file mode 100644 index 0000000000..02d4717b7d --- /dev/null +++ b/src/lib/elementary/elm_naviframe_eo.legacy.c @@ -0,0 +1,84 @@ + +EAPI void +elm_naviframe_event_enabled_set(Elm_Naviframe *obj, Eina_Bool enabled) +{ + elm_obj_naviframe_event_enabled_set(obj, enabled); +} + +EAPI Eina_Bool +elm_naviframe_event_enabled_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_event_enabled_get(obj); +} + +EAPI void +elm_naviframe_content_preserve_on_pop_set(Elm_Naviframe *obj, Eina_Bool preserve) +{ + elm_obj_naviframe_content_preserve_on_pop_set(obj, preserve); +} + +EAPI Eina_Bool +elm_naviframe_content_preserve_on_pop_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_content_preserve_on_pop_get(obj); +} + +EAPI void +elm_naviframe_prev_btn_auto_pushed_set(Elm_Naviframe *obj, Eina_Bool auto_pushed) +{ + elm_obj_naviframe_prev_btn_auto_pushed_set(obj, auto_pushed); +} + +EAPI Eina_Bool +elm_naviframe_prev_btn_auto_pushed_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_prev_btn_auto_pushed_get(obj); +} + +EAPI Eina_List * +elm_naviframe_items_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_items_get(obj); +} + +EAPI Elm_Widget_Item * +elm_naviframe_top_item_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_top_item_get(obj); +} + +EAPI Elm_Widget_Item * +elm_naviframe_bottom_item_get(const Elm_Naviframe *obj) +{ + return elm_obj_naviframe_bottom_item_get(obj); +} + +EAPI Efl_Canvas_Object * +elm_naviframe_item_pop(Elm_Naviframe *obj) +{ + return elm_obj_naviframe_item_pop(obj); +} + +EAPI Elm_Widget_Item * +elm_naviframe_item_insert_before(Elm_Naviframe *obj, Elm_Widget_Item *before, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style) +{ + return elm_obj_naviframe_item_insert_before(obj, before, title_label, prev_btn, next_btn, content, item_style); +} + +EAPI Elm_Widget_Item * +elm_naviframe_item_push(Elm_Naviframe *obj, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style) +{ + return elm_obj_naviframe_item_push(obj, title_label, prev_btn, next_btn, content, item_style); +} + +EAPI void +elm_naviframe_item_simple_promote(Elm_Naviframe *obj, Efl_Canvas_Object *content) +{ + elm_obj_naviframe_item_simple_promote(obj, content); +} + +EAPI Elm_Widget_Item * +elm_naviframe_item_insert_after(Elm_Naviframe *obj, Elm_Widget_Item *after, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style) +{ + return elm_obj_naviframe_item_insert_after(obj, after, title_label, prev_btn, next_btn, content, item_style); +} diff --git a/src/lib/elementary/elm_naviframe_eo.legacy.h b/src/lib/elementary/elm_naviframe_eo.legacy.h new file mode 100644 index 0000000000..155e7513fd --- /dev/null +++ b/src/lib/elementary/elm_naviframe_eo.legacy.h @@ -0,0 +1,246 @@ +#ifndef _ELM_NAVIFRAME_EO_LEGACY_H_ +#define _ELM_NAVIFRAME_EO_LEGACY_H_ + +#ifndef _ELM_NAVIFRAME_EO_CLASS_TYPE +#define _ELM_NAVIFRAME_EO_CLASS_TYPE + +typedef Eo Elm_Naviframe; + +#endif + +#ifndef _ELM_NAVIFRAME_EO_TYPES +#define _ELM_NAVIFRAME_EO_TYPES + + +#endif + +/** + * @brief Control the event enabled when pushing/popping items + * + * If @c enabled is @c true, the contents of the naviframe item will receives + * events from mouse and keyboard during view changing such as item push/pop. + * + * @warning Events will be blocked by calling evas_object_freeze_events_set() + * internally. So don't call the API whiling pushing/popping items. + * + * @param[in] obj The object. + * @param[in] enabled Events are received when enabled is @c true, and ignored + * otherwise. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI void elm_naviframe_event_enabled_set(Elm_Naviframe *obj, Eina_Bool enabled); + +/** + * @brief Control the event enabled when pushing/popping items + * + * If @c enabled is @c true, the contents of the naviframe item will receives + * events from mouse and keyboard during view changing such as item push/pop. + * + * @warning Events will be blocked by calling evas_object_freeze_events_set() + * internally. So don't call the API whiling pushing/popping items. + * + * @param[in] obj The object. + * + * @return Events are received when enabled is @c true, and ignored otherwise. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Eina_Bool elm_naviframe_event_enabled_get(const Elm_Naviframe *obj); + +/** + * @brief Preserve the content objects when items are popped. + * + * @param[in] obj The object. + * @param[in] preserve Enable the preserve mode if @c true, disable otherwise + * + * @ingroup Elm_Naviframe_Group + */ +EAPI void elm_naviframe_content_preserve_on_pop_set(Elm_Naviframe *obj, Eina_Bool preserve); + +/** + * @brief Preserve the content objects when items are popped. + * + * @param[in] obj The object. + * + * @return Enable the preserve mode if @c true, disable otherwise + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Elm_Naviframe *obj); + +/** + * @brief Control if creating prev button automatically or not + * + * @param[in] obj The object. + * @param[in] auto_pushed If @c true, the previous button(back button) will be + * created internally when you pass the @c NULL to the prev_btn parameter in + * elm_naviframe_item_push + * + * @ingroup Elm_Naviframe_Group + */ +EAPI void elm_naviframe_prev_btn_auto_pushed_set(Elm_Naviframe *obj, Eina_Bool auto_pushed); + +/** + * @brief Control if creating prev button automatically or not + * + * @param[in] obj The object. + * + * @return If @c true, the previous button(back button) will be created + * internally when you pass the @c NULL to the prev_btn parameter in + * elm_naviframe_item_push + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Eina_Bool elm_naviframe_prev_btn_auto_pushed_get(const Elm_Naviframe *obj); + +/** + * @brief Get a list of all the naviframe items. + * + * @param[in] obj The object. + * + * @return A list of naviframe items, @ref Elm_Widget_Item, or @c NULL on + * failure. Note: The returned list MUST be freed. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Eina_List *elm_naviframe_items_get(const Elm_Naviframe *obj) EINA_WARN_UNUSED_RESULT; + +/** + * @brief Get a top item on the naviframe stack + * + * @param[in] obj The object. + * + * @return The top item on the naviframe stack or @c NULL, if the stack is + * empty + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Elm_Widget_Item *elm_naviframe_top_item_get(const Elm_Naviframe *obj); + +/** + * @brief Get a bottom item on the naviframe stack + * + * @param[in] obj The object. + * + * @return The bottom item on the naviframe stack or @c NULL, if the stack is + * empty + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Elm_Widget_Item *elm_naviframe_bottom_item_get(const Elm_Naviframe *obj); + +/** + * @brief Pop an item that is on top of the stack + * + * This pops an item that is on the top(visible) of the naviframe, makes it + * disappear, then deletes the item. The item that was underneath it on the + * stack will become visible. + * + * When pop transition animation is in progress, new pop operation is blocked + * until current pop operation is complete. + * + * @param[in] obj The object. + * + * @return @c NULL or the content object(if the + * elm_naviframe_content_preserve_on_pop_get is true). + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Efl_Canvas_Object *elm_naviframe_item_pop(Elm_Naviframe *obj); + +/** + * @brief Insert a new item into the naviframe before item @c before. + * + * The item is inserted into the naviframe straight away without any transition + * operations. This item will be deleted when it is popped. + * + * @param[in] obj The object. + * @param[in] before The naviframe item to insert before. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Elm_Widget_Item *elm_naviframe_item_insert_before(Elm_Naviframe *obj, Elm_Widget_Item *before, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +/** + * @brief Push a new item to the top of the naviframe stack (and show it). + * + * The item pushed becomes one page of the naviframe, this item will be deleted + * when it is popped. + * + * When push transition animation is in progress, pop operation is blocked + * until push is complete. + * + * The following styles are available for this item: "default" + * + * @param[in] obj The object. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Elm_Widget_Item *elm_naviframe_item_push(Elm_Naviframe *obj, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +/** + * @brief Simple version of item_promote. + * + * @param[in] obj The object. + * @param[in] content Item to promote + * + * @ingroup Elm_Naviframe_Group + */ +EAPI void elm_naviframe_item_simple_promote(Elm_Naviframe *obj, Efl_Canvas_Object *content); + +/** + * @brief Insert a new item into the naviframe after item @c after. + * + * The item is inserted into the naviframe straight away without any transition + * operations. This item will be deleted when it is popped. + * + * The following styles are available for this item: "default" + * + * @param[in] obj The object. + * @param[in] after The naviframe item to insert after. + * @param[in] title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param[in] prev_btn The button to go to the previous item. If it is NULL, + * then naviframe will create a back button automatically. The name of the + * prev_btn part is "elm.swallow.prev_btn" + * @param[in] next_btn The button to go to the next item. Or It could be just + * an extra function button. The name of the next_btn part is + * "elm.swallow.next_btn" + * @param[in] content The main content object. The name of content part is + * "elm.swallow.content" + * @param[in] item_style The current item style name. @c NULL would be default. + * + * @return The created item or @c NULL upon failure. + * + * @ingroup Elm_Naviframe_Group + */ +EAPI Elm_Widget_Item *elm_naviframe_item_insert_after(Elm_Naviframe *obj, Elm_Widget_Item *after, const char *title_label, Efl_Canvas_Object *prev_btn, Efl_Canvas_Object *next_btn, Efl_Canvas_Object *content, const char *item_style); + +#endif diff --git a/src/lib/elementary/elm_naviframe_item.eo b/src/lib/elementary/elm_naviframe_item.eo deleted file mode 100644 index c35f345761..0000000000 --- a/src/lib/elementary/elm_naviframe_item.eo +++ /dev/null @@ -1,78 +0,0 @@ -type Elm_Naviframe_Item_Pop_Cb: __undefined_type; [[Elementary naviframe item pop callback type]] - -class Elm.Naviframe.Item extends Elm.Widget.Item implements Efl.Ui.Legacy -{ - [[Elementary naviframe item class]] - legacy_prefix: elm_naviframe_item; - eo_prefix: elm_obj_naviframe_item; - methods { - pop_to { - [[Pop the top item and delete the items between the top and the - above one on the given item. - - The items between the top and the given item will be deleted - first, and then the top item will be popped at last. - - Warning: The pop callback function set by - elm_naviframe_item_pop_cb_set is not called for items between the - top item and the destination item since those items are deleted - without being popped. - ]] - } - title_enabled_get @const { - [[Get a value whether title area is enabled or not.]] - return: bool; [[If $true, title area will be enabled, disabled otherwise]] - } - title_enabled_set { - [[Enable/Disable the title area with transition effect - - When the title area is disabled, then the controls would be - hidden so as to expand the content area to full-size. - ]] - params { - @in enable: bool; [[If $true, title area will be enabled, disabled otherwise]] - @in transition: bool; [[If $true, transition effect of the title will be visible, invisible otherwise]] - } - } - promote { - [[Promote an item already in the naviframe stack to the top of - the stack. - - This will take the indicated item and promote it to the top of - the stack as if it had been pushed there. The item must already - be inside the naviframe stack to work. - ]] - } - - pop_cb_set { - [[Set a function to be called when an item of the naviframe is - going to be popped. - - Warning: Don't set "clicked" callback to the prev button - additionally if the function does an exact same logic with - this $func. When hardware back key is pressed then both - callbacks will be called. - Warning: The pop callback function is called only if the item is - popped. Therefore, the pop callback function is not called if the - item is deleted without being popped. - - @since 1.8 - ]] - params { - @in func: Elm_Naviframe_Item_Pop_Cb @nullable; [[The callback function.]] - @in data: void_ptr @optional; [[Data to be passed to func call.]] - } - } - } - implements { - Efl.Object.constructor; - Efl.Object.invalidate; - Efl.Object.destructor; - Elm.Widget.Item.signal_emit; - Elm.Widget.Item.part_text { get; set; } - Elm.Widget.Item.part_content { get; set; } - Elm.Widget.Item.part_content_unset; - Elm.Widget.Item.style { set; } - Efl.Access.Object.access_children { get; } - } -} diff --git a/src/lib/elementary/elm_naviframe_item_eo.c b/src/lib/elementary/elm_naviframe_item_eo.c new file mode 100644 index 0000000000..49f0583e88 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_item_eo.c @@ -0,0 +1,102 @@ + +void _elm_naviframe_item_pop_to(Eo *obj, Elm_Naviframe_Item_Data *pd); + +EOAPI EFL_VOID_FUNC_BODY(elm_obj_naviframe_item_pop_to); + +Eina_Bool _elm_naviframe_item_title_enabled_get(const Eo *obj, Elm_Naviframe_Item_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_naviframe_item_title_enabled_get, Eina_Bool, 0); + +void _elm_naviframe_item_title_enabled_set(Eo *obj, Elm_Naviframe_Item_Data *pd, Eina_Bool enable, Eina_Bool transition); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_item_title_enabled_set, EFL_FUNC_CALL(enable, transition), Eina_Bool enable, Eina_Bool transition); + +void _elm_naviframe_item_promote(Eo *obj, Elm_Naviframe_Item_Data *pd); + +EOAPI EFL_VOID_FUNC_BODY(elm_obj_naviframe_item_promote); + +void _elm_naviframe_item_pop_cb_set(Eo *obj, Elm_Naviframe_Item_Data *pd, Elm_Naviframe_Item_Pop_Cb func, void *data); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_naviframe_item_pop_cb_set, EFL_FUNC_CALL(func, data), Elm_Naviframe_Item_Pop_Cb func, void *data); + +Efl_Object *_elm_naviframe_item_efl_object_constructor(Eo *obj, Elm_Naviframe_Item_Data *pd); + + +void _elm_naviframe_item_efl_object_invalidate(Eo *obj, Elm_Naviframe_Item_Data *pd); + + +void _elm_naviframe_item_efl_object_destructor(Eo *obj, Elm_Naviframe_Item_Data *pd); + + +void _elm_naviframe_item_elm_widget_item_signal_emit(Eo *obj, Elm_Naviframe_Item_Data *pd, const char *emission, const char *source); + + +void _elm_naviframe_item_elm_widget_item_part_text_set(Eo *obj, Elm_Naviframe_Item_Data *pd, const char *part, const char *label); + + +const char *_elm_naviframe_item_elm_widget_item_part_text_get(const Eo *obj, Elm_Naviframe_Item_Data *pd, const char *part); + + +void _elm_naviframe_item_elm_widget_item_part_content_set(Eo *obj, Elm_Naviframe_Item_Data *pd, const char *part, Efl_Canvas_Object *content); + + +Efl_Canvas_Object *_elm_naviframe_item_elm_widget_item_part_content_get(const Eo *obj, Elm_Naviframe_Item_Data *pd, const char *part); + + +Efl_Canvas_Object *_elm_naviframe_item_elm_widget_item_part_content_unset(Eo *obj, Elm_Naviframe_Item_Data *pd, const char *part); + + +void _elm_naviframe_item_elm_widget_item_style_set(Eo *obj, Elm_Naviframe_Item_Data *pd, const char *style); + + +Eina_List *_elm_naviframe_item_efl_access_object_access_children_get(const Eo *obj, Elm_Naviframe_Item_Data *pd); + + +static Eina_Bool +_elm_naviframe_item_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_NAVIFRAME_ITEM_EXTRA_OPS +#define ELM_NAVIFRAME_ITEM_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_pop_to, _elm_naviframe_item_pop_to), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_title_enabled_get, _elm_naviframe_item_title_enabled_get), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_title_enabled_set, _elm_naviframe_item_title_enabled_set), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_promote, _elm_naviframe_item_promote), + EFL_OBJECT_OP_FUNC(elm_obj_naviframe_item_pop_cb_set, _elm_naviframe_item_pop_cb_set), + EFL_OBJECT_OP_FUNC(efl_constructor, _elm_naviframe_item_efl_object_constructor), + EFL_OBJECT_OP_FUNC(efl_invalidate, _elm_naviframe_item_efl_object_invalidate), + EFL_OBJECT_OP_FUNC(efl_destructor, _elm_naviframe_item_efl_object_destructor), + EFL_OBJECT_OP_FUNC(elm_wdg_item_signal_emit, _elm_naviframe_item_elm_widget_item_signal_emit), + EFL_OBJECT_OP_FUNC(elm_wdg_item_part_text_set, _elm_naviframe_item_elm_widget_item_part_text_set), + EFL_OBJECT_OP_FUNC(elm_wdg_item_part_text_get, _elm_naviframe_item_elm_widget_item_part_text_get), + EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_set, _elm_naviframe_item_elm_widget_item_part_content_set), + EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_get, _elm_naviframe_item_elm_widget_item_part_content_get), + EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_unset, _elm_naviframe_item_elm_widget_item_part_content_unset), + EFL_OBJECT_OP_FUNC(elm_wdg_item_style_set, _elm_naviframe_item_elm_widget_item_style_set), + EFL_OBJECT_OP_FUNC(efl_access_object_access_children_get, _elm_naviframe_item_efl_access_object_access_children_get), + ELM_NAVIFRAME_ITEM_EXTRA_OPS + ); + opsp = &ops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_naviframe_item_class_desc = { + EO_VERSION, + "Elm.Naviframe.Item", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Naviframe_Item_Data), + _elm_naviframe_item_class_initializer, + NULL, + NULL +}; + +EFL_DEFINE_CLASS(elm_naviframe_item_class_get, &_elm_naviframe_item_class_desc, ELM_WIDGET_ITEM_CLASS, EFL_UI_LEGACY_INTERFACE, NULL); + +#include "elm_naviframe_item_eo.legacy.c" diff --git a/src/lib/elementary/elm_naviframe_item_eo.h b/src/lib/elementary/elm_naviframe_item_eo.h new file mode 100644 index 0000000000..d5b86840f3 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_item_eo.h @@ -0,0 +1,99 @@ +#ifndef _ELM_NAVIFRAME_ITEM_EO_H_ +#define _ELM_NAVIFRAME_ITEM_EO_H_ + +#ifndef _ELM_NAVIFRAME_ITEM_EO_CLASS_TYPE +#define _ELM_NAVIFRAME_ITEM_EO_CLASS_TYPE + +typedef Eo Elm_Naviframe_Item; + +#endif + +#ifndef _ELM_NAVIFRAME_ITEM_EO_TYPES +#define _ELM_NAVIFRAME_ITEM_EO_TYPES + + +#endif +/** Elementary naviframe item class + * + * @ingroup Elm_Naviframe_Item + */ +#define ELM_NAVIFRAME_ITEM_CLASS elm_naviframe_item_class_get() + +EWAPI const Efl_Class *elm_naviframe_item_class_get(void); + +/** + * @brief Pop the top item and delete the items between the top and the above + * one on the given item. + * + * The items between the top and the given item will be deleted first, and then + * the top item will be popped at last. + * + * @warning The pop callback function set by elm_naviframe_item_pop_cb_set is + * not called for items between the top item and the destination item since + * those items are deleted without being popped. + * @param[in] obj The object. + * + * @ingroup Elm_Naviframe_Item + */ +EOAPI void elm_obj_naviframe_item_pop_to(Eo *obj); + +/** + * @brief Get a value whether title area is enabled or not. + * + * @param[in] obj The object. + * + * @return If @c true, title area will be enabled, disabled otherwise + * + * @ingroup Elm_Naviframe_Item + */ +EOAPI Eina_Bool elm_obj_naviframe_item_title_enabled_get(const Eo *obj); + +/** + * @brief Enable/Disable the title area with transition effect + * + * When the title area is disabled, then the controls would be hidden so as to + * expand the content area to full-size. + * + * @param[in] obj The object. + * @param[in] enable If @c true, title area will be enabled, disabled otherwise + * @param[in] transition If @c true, transition effect of the title will be + * visible, invisible otherwise + * + * @ingroup Elm_Naviframe_Item + */ +EOAPI void elm_obj_naviframe_item_title_enabled_set(Eo *obj, Eina_Bool enable, Eina_Bool transition); + +/** + * @brief Promote an item already in the naviframe stack to the top of the + * stack. + * + * This will take the indicated item and promote it to the top of the stack as + * if it had been pushed there. The item must already be inside the naviframe + * stack to work. + * @param[in] obj The object. + * + * @ingroup Elm_Naviframe_Item + */ +EOAPI void elm_obj_naviframe_item_promote(Eo *obj); + +/** + * @brief Set a function to be called when an item of the naviframe is going to + * be popped. + * + * @warning Don't set "clicked" callback to the prev button additionally if the + * function does an exact same logic with this @c func. When hardware back key + * is pressed then both callbacks will be called. Warning: The pop callback + * function is called only if the item is popped. Therefore, the pop callback + * function is not called if the item is deleted without being popped. + * + * @param[in] obj The object. + * @param[in] func The callback function. + * @param[in] data Data to be passed to func call. + * + * @since 1.8 + * + * @ingroup Elm_Naviframe_Item + */ +EOAPI void elm_obj_naviframe_item_pop_cb_set(Eo *obj, Elm_Naviframe_Item_Pop_Cb func, void *data); + +#endif diff --git a/src/lib/elementary/elm_naviframe_item_eo.legacy.c b/src/lib/elementary/elm_naviframe_item_eo.legacy.c new file mode 100644 index 0000000000..83d18b5c20 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_item_eo.legacy.c @@ -0,0 +1,30 @@ + +EAPI void +elm_naviframe_item_pop_to(Elm_Naviframe_Item *obj) +{ + elm_obj_naviframe_item_pop_to(obj); +} + +EAPI Eina_Bool +elm_naviframe_item_title_enabled_get(const Elm_Naviframe_Item *obj) +{ + return elm_obj_naviframe_item_title_enabled_get(obj); +} + +EAPI void +elm_naviframe_item_title_enabled_set(Elm_Naviframe_Item *obj, Eina_Bool enable, Eina_Bool transition) +{ + elm_obj_naviframe_item_title_enabled_set(obj, enable, transition); +} + +EAPI void +elm_naviframe_item_promote(Elm_Naviframe_Item *obj) +{ + elm_obj_naviframe_item_promote(obj); +} + +EAPI void +elm_naviframe_item_pop_cb_set(Elm_Naviframe_Item *obj, Elm_Naviframe_Item_Pop_Cb func, void *data) +{ + elm_obj_naviframe_item_pop_cb_set(obj, func, data); +} diff --git a/src/lib/elementary/elm_naviframe_item_eo.legacy.h b/src/lib/elementary/elm_naviframe_item_eo.legacy.h new file mode 100644 index 0000000000..70be465dc8 --- /dev/null +++ b/src/lib/elementary/elm_naviframe_item_eo.legacy.h @@ -0,0 +1,92 @@ +#ifndef _ELM_NAVIFRAME_ITEM_EO_LEGACY_H_ +#define _ELM_NAVIFRAME_ITEM_EO_LEGACY_H_ + +#ifndef _ELM_NAVIFRAME_ITEM_EO_CLASS_TYPE +#define _ELM_NAVIFRAME_ITEM_EO_CLASS_TYPE + +typedef Eo Elm_Naviframe_Item; + +#endif + +#ifndef _ELM_NAVIFRAME_ITEM_EO_TYPES +#define _ELM_NAVIFRAME_ITEM_EO_TYPES + + +#endif + +/** + * @brief Pop the top item and delete the items between the top and the above + * one on the given item. + * + * The items between the top and the given item will be deleted first, and then + * the top item will be popped at last. + * + * @warning The pop callback function set by elm_naviframe_item_pop_cb_set is + * not called for items between the top item and the destination item since + * those items are deleted without being popped. + * @param[in] obj The object. + * + * @ingroup Elm_Naviframe_Item_Group + */ +EAPI void elm_naviframe_item_pop_to(Elm_Naviframe_Item *obj); + +/** + * @brief Get a value whether title area is enabled or not. + * + * @param[in] obj The object. + * + * @return If @c true, title area will be enabled, disabled otherwise + * + * @ingroup Elm_Naviframe_Item_Group + */ +EAPI Eina_Bool elm_naviframe_item_title_enabled_get(const Elm_Naviframe_Item *obj); + +/** + * @brief Enable/Disable the title area with transition effect + * + * When the title area is disabled, then the controls would be hidden so as to + * expand the content area to full-size. + * + * @param[in] obj The object. + * @param[in] enable If @c true, title area will be enabled, disabled otherwise + * @param[in] transition If @c true, transition effect of the title will be + * visible, invisible otherwise + * + * @ingroup Elm_Naviframe_Item_Group + */ +EAPI void elm_naviframe_item_title_enabled_set(Elm_Naviframe_Item *obj, Eina_Bool enable, Eina_Bool transition); + +/** + * @brief Promote an item already in the naviframe stack to the top of the + * stack. + * + * This will take the indicated item and promote it to the top of the stack as + * if it had been pushed there. The item must already be inside the naviframe + * stack to work. + * @param[in] obj The object. + * + * @ingroup Elm_Naviframe_Item_Group + */ +EAPI void elm_naviframe_item_promote(Elm_Naviframe_Item *obj); + +/** + * @brief Set a function to be called when an item of the naviframe is going to + * be popped. + * + * @warning Don't set "clicked" callback to the prev button additionally if the + * function does an exact same logic with this @c func. When hardware back key + * is pressed then both callbacks will be called. Warning: The pop callback + * function is called only if the item is popped. Therefore, the pop callback + * function is not called if the item is deleted without being popped. + * + * @param[in] obj The object. + * @param[in] func The callback function. + * @param[in] data Data to be passed to func call. + * + * @since 1.8 + * + * @ingroup Elm_Naviframe_Item_Group + */ +EAPI void elm_naviframe_item_pop_cb_set(Elm_Naviframe_Item *obj, Elm_Naviframe_Item_Pop_Cb func, void *data); + +#endif diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index b738020580..64379268de 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -30,8 +30,6 @@ pub_legacy_eo_files = [ 'elm_actionslider_part.eo', 'elm_bubble_part.eo', 'elm_fileselector_part.eo', - 'elm_naviframe.eo', - 'elm_naviframe_item.eo', 'elm_photo.eo', 'elm_prefs.eo', 'elm_segment_control.eo', @@ -775,6 +773,10 @@ elementary_pub_headers = [ 'elm_multibuttonentry_eo.legacy.h', 'elm_multibuttonentry_item_eo.h', 'elm_multibuttonentry_item_eo.legacy.h', + 'elm_naviframe_eo.h', + 'elm_naviframe_eo.legacy.h', + 'elm_naviframe_item_eo.h', + 'elm_naviframe_item_eo.legacy.h', ] elementary_header_src = [