introduce efl_ui_{pager/scroller}

They are just helpers, so a user does not need to handcreate spotlight
managers. This also leaves us the possibility of letting
spotlight_managers beeing @beta.

ref T7991

Differential Revision: https://phab.enlightenment.org/D10773
This commit is contained in:
Marcel Hollerbach 2019-12-02 16:25:36 +01:00
parent 509b1c8f6d
commit 6d2a9ae1f8
8 changed files with 85 additions and 7 deletions

View File

@ -881,12 +881,10 @@ test_ui_spotlight_stack(void *data EINA_UNUSED,
efl_file_load(efl_added),
efl_content_set(efl_part(panes, "second"), efl_added));
spotlight = efl_add(EFL_UI_SPOTLIGHT_CONTAINER_CLASS, layout,
spotlight = efl_add(EFL_UI_STACK_CLASS, layout,
efl_content_set(efl_part(layout, "pager"), efl_added),
efl_ui_spotlight_size_set(efl_added, EINA_SIZE2D(200, 300)));
efl_ui_spotlight_manager_set(spotlight, efl_new(EFL_UI_SPOTLIGHT_MANAGER_STACK_CLASS));
efl_add(EFL_UI_BUTTON_CLASS, layout,
efl_text_set(efl_added, "Pop"),
efl_event_callback_add(efl_added,
@ -1073,12 +1071,10 @@ test_ui_spotlight_scroll(void *data EINA_UNUSED,
efl_file_load(efl_added),
efl_content_set(efl_part(panes, "second"), efl_added));
spotlight = efl_add(EFL_UI_SPOTLIGHT_CONTAINER_CLASS, layout,
spotlight = efl_add(EFL_UI_PAGER_CLASS, layout,
efl_content_set(efl_part(layout, "pager"), efl_added),
efl_ui_spotlight_size_set(efl_added, EINA_SIZE2D(200, 300)));
efl_ui_spotlight_manager_set(spotlight, efl_new(EFL_UI_SPOTLIGHT_MANAGER_SCROLL_CLASS));
efl_add(EFL_UI_BUTTON_CLASS, layout,
efl_text_set(efl_added, "Prev"),
efl_event_callback_add(efl_added,

View File

@ -273,6 +273,8 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
# include <efl_ui_spotlight_manager_scroll.eo.h>
# include <efl_ui_spotlight_manager_stack.eo.h>
# include <efl_ui_spotlight_util.eo.h>
# include <efl_ui_stack.eo.h>
# include <efl_ui_pager.eo.h>
# include <efl_ui_navigation_bar.eo.h>
# include <efl_ui_navigation_bar_part.eo.h>

View File

@ -0,0 +1,27 @@
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#include <Efl_Ui.h>
#include "elm_priv.h"
#define MY_CLASS EFL_UI_PAGER_CLASS
typedef struct {
} Efl_Ui_Pager_Data;
EOLIAN static Efl_Object *
_efl_ui_pager_efl_object_constructor(Eo *obj, Efl_Ui_Pager_Data *sd EINA_UNUSED)
{
Eo *scroller;
obj = efl_constructor(efl_super(obj, MY_CLASS));
scroller = efl_new(EFL_UI_SPOTLIGHT_MANAGER_SCROLL_CLASS);
efl_ui_spotlight_manager_set(obj, scroller);
return obj;
}
#include "efl_ui_pager.eo.c"

View File

@ -0,0 +1,10 @@
class @beta Efl.Ui.Pager extends Efl.Ui.Spotlight.Container
{
[[A spotlight with predefined @Efl.Ui.Spotlight.Container.spotlight_manager
The container will slide in the content sideways, the old content will slide out.
]]
implements {
Efl.Object.constructor;
}
}

View File

@ -0,0 +1,27 @@
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#include <Efl_Ui.h>
#include "elm_priv.h"
#define MY_CLASS EFL_UI_STACK_CLASS
typedef struct {
} Efl_Ui_Stack_Data;
EOLIAN static Efl_Object *
_efl_ui_stack_efl_object_constructor(Eo *obj, Efl_Ui_Stack_Data *sd EINA_UNUSED)
{
Eo *stack;
obj = efl_constructor(efl_super(obj, MY_CLASS));
stack = efl_new(EFL_UI_SPOTLIGHT_MANAGER_STACK_CLASS);
efl_ui_spotlight_manager_set(obj, stack);
return obj;
}
#include "efl_ui_stack.eo.c"

View File

@ -0,0 +1,10 @@
class @beta Efl.Ui.Stack extends Efl.Ui.Spotlight.Container
{
[[A spotlight with predefined @Efl.Ui.Spotlight.Container.spotlight_manager
The container will alpha-blend the new content over the old content.
]]
implements {
Efl.Object.constructor;
}
}

View File

@ -188,6 +188,8 @@ pub_eo_files = [
'efl_ui_collection_view.eo',
'efl_ui_collection_view_focus_manager.eo',
'efl_ui_grid_view.eo',
'efl_ui_pager.eo',
'efl_ui_stack.eo',
]
foreach eo_file : pub_eo_files
@ -944,6 +946,8 @@ elementary_src = [
'efl_ui_select_model.c',
'efl_ui_view_model.c',
'efl_ui_collection_view.c',
'efl_ui_pager.c',
'efl_ui_stack.c'
]
elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]

View File

@ -46,7 +46,9 @@
"Efl.Ui.Relative_Container",
"Efl.Ui.Animation_View",
"Efl.Ui.Table",
"Efl.Ui.Flip"
"Efl.Ui.Flip",
"Efl.Ui.Stack",
"Efl.Ui.Pager"
],
"custom-mapping" : {
"Efl.Ui.Grid" : "EFL_UI_GRID_DEFAULT_ITEM_CLASS",