forked from enlightenment/efl
Introduce Micro controller widget class
This commit is contained in:
parent
b2e56fd9d8
commit
4dff49c026
|
@ -227,6 +227,9 @@ typedef void (*Context_Item_Clicked_Cb)(void *data, Eo *obj, void *event_info);
|
|||
# include <efl_ui_textbox_async.eo.h>
|
||||
|
||||
# include <efl_ui_vg_animation.eo.h>
|
||||
# include <efl_ui_mi_rule.eo.h>
|
||||
# include <efl_ui_mi_state.eo.h>
|
||||
# include <efl_ui_mi_controller.eo.h>
|
||||
# include <efl_ui_clock.eo.h>
|
||||
# include <efl_ui_video.eo.h>
|
||||
|
||||
|
|
|
@ -0,0 +1,257 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "elementary_config.h"
|
||||
#endif
|
||||
|
||||
#define EFL_ACCESS_OBJECT_PROTECTED
|
||||
#define EFL_PART_PROTECTED
|
||||
|
||||
#include <Elementary.h>
|
||||
|
||||
#include "elm_priv.h"
|
||||
#include "efl_ui_mi_state.eo.h"
|
||||
#include "efl_ui_mi_controller_private.h"
|
||||
//#include "efl_ui_mi_controller_part.eo.h"
|
||||
//#include "elm_part_helper.h"
|
||||
|
||||
#define MY_CLASS EFL_UI_MI_CONTROLLER_CLASS
|
||||
|
||||
#define MY_CLASS_NAME "Efl_Ui_Mi_Controller"
|
||||
|
||||
static const char SIG_FOCUSED[] = "focused";
|
||||
static const char SIG_UNFOCUSED[] = "unfocused";
|
||||
|
||||
/* smart callbacks coming from efl_ui_mi_controller objects: */
|
||||
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
|
||||
{SIG_FOCUSED, ""},
|
||||
{SIG_UNFOCUSED, ""},
|
||||
{SIG_WIDGET_LANG_CHANGED, ""}, /**< handled by elm_widget */
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_controller_repeat_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Controller_Data *pd, Efl_Ui_Mi_Controller_Repeat_Mode mode)
|
||||
{
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Mi_Controller_Repeat_Mode
|
||||
_efl_ui_mi_controller_repeat_mode_get(const Eo *obj EINA_UNUSED, Efl_Ui_Mi_Controller_Data *pd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
_efl_ui_mi_controller_trigger(Eo *obj, Efl_Ui_Mi_Controller_Data *pd, const char *start, Eina_Bool animation)
|
||||
{
|
||||
|
||||
Efl_Ui_Mi_State *state;
|
||||
Eina_Array_Iterator iter;
|
||||
unsigned int i;
|
||||
const char *_start;
|
||||
const char *_end;
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(pd->states, i, state, iter)
|
||||
{
|
||||
efl_ui_mi_state_sector_get(state, &_start, NULL);
|
||||
if (_start && !strcmp(start, _start))
|
||||
break;
|
||||
}
|
||||
|
||||
pd->cur_state_idx = i;
|
||||
efl_ui_mi_state_sector_get(state, &_start, &_end);
|
||||
if (_start)
|
||||
efl_ui_vg_animation_playing_sector(pd->anim, _start, _end);
|
||||
else
|
||||
ERR("No start point");
|
||||
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
_efl_ui_mi_controller_trigger_next(Eo *obj, Efl_Ui_Mi_Controller_Data *pd, Eina_Bool animation)
|
||||
{
|
||||
if (!pd->states) return EINA_FALSE;
|
||||
|
||||
int states = eina_array_count_get (pd->states);
|
||||
int cur_idx = 0;
|
||||
if (states < pd->cur_state_idx)
|
||||
cur_idx = pd->cur_state_idx;
|
||||
else
|
||||
cur_idx = pd->cur_state_idx + 1;
|
||||
|
||||
|
||||
Efl_Ui_Mi_State *cur_state = eina_array_data_get (pd->states, cur_idx);
|
||||
if (!cur_state) return EINA_FALSE;
|
||||
|
||||
const char *_start;
|
||||
const char *_end;
|
||||
efl_ui_mi_state_sector_get(cur_state, &_start, &_end);
|
||||
|
||||
if (_start)
|
||||
efl_ui_vg_animation_playing_sector(pd->anim, _start, _end);
|
||||
else
|
||||
ERR("No start point");
|
||||
|
||||
pd->cur_state_idx++;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
_efl_ui_mi_controller_trigger_prev(Eo *obj, Efl_Ui_Mi_Controller_Data *pd, Eina_Bool animation)
|
||||
{
|
||||
//change state and play
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOLIAN static Eo*
|
||||
_efl_ui_mi_controller_state_get(const Eo *eo_obj, Efl_Ui_Mi_Controller_Data *pd,
|
||||
const char *state_name)
|
||||
{
|
||||
Efl_Ui_Mi_State *state;
|
||||
Eina_Array_Iterator iter;
|
||||
unsigned int i;
|
||||
const char *_name;
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(pd->states, i, state, iter)
|
||||
{
|
||||
efl_ui_mi_state_sector_get(state, &_name, NULL);
|
||||
if (_name && !strcmp(state_name, _name))
|
||||
return state;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
_efl_ui_mi_controller_state_add(Eo *obj, Efl_Ui_Mi_Controller_Data *pd, Efl_Ui_Mi_State *state)
|
||||
{
|
||||
|
||||
if (!state) return EINA_FALSE;
|
||||
if (!pd->states)
|
||||
{
|
||||
pd->states = eina_array_new(sizeof(Efl_Ui_Mi_State*));
|
||||
}
|
||||
|
||||
eina_array_push(pd->states, state);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_sizing_eval(Eo *obj, void *data)
|
||||
{
|
||||
Efl_Ui_Mi_Controller_Data *pd = data;
|
||||
if (!efl_file_loaded_get(pd->anim)) return;
|
||||
|
||||
double hw,hh;
|
||||
efl_gfx_hint_weight_get(obj, &hw, &hh);
|
||||
|
||||
Eina_Size2D size = efl_ui_vg_animation_default_view_size_get(pd->anim);
|
||||
|
||||
Eina_Size2D min = {-1, -1};
|
||||
if (hw == 0) min.w = size.w;
|
||||
if (hh == 0) min.h = size.h;
|
||||
efl_gfx_hint_size_min_set(obj, min);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Error
|
||||
_efl_ui_mi_controller_efl_file_load(Eo *obj, Efl_Ui_Mi_Controller_Data *pd)
|
||||
{
|
||||
Eina_Error err;
|
||||
Eina_Bool ret;
|
||||
const char *file;
|
||||
const char *key;
|
||||
|
||||
if (efl_file_loaded_get(obj)) return 0;
|
||||
|
||||
err = efl_file_load(efl_super(obj, MY_CLASS));
|
||||
if (err) return err;
|
||||
|
||||
file = efl_file_get(obj);
|
||||
key = efl_file_key_get(obj);
|
||||
ret = efl_file_simple_load(pd->anim, file, key);
|
||||
if (!ret)
|
||||
{
|
||||
ERR("Efl.Ui.Mi_Controller File load fail : %s\n", file);
|
||||
efl_file_unload(obj);
|
||||
return eina_error_get();
|
||||
}
|
||||
_sizing_eval(obj, pd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_controller_efl_gfx_view_view_size_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Mi_Controller_Data *pd,
|
||||
Eina_Size2D size)
|
||||
{
|
||||
efl_gfx_view_size_set(pd->anim, size);
|
||||
}
|
||||
|
||||
EOLIAN Eina_Size2D
|
||||
_efl_ui_mi_controller_efl_gfx_view_view_size_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Mi_Controller_Data *pd)
|
||||
{
|
||||
Eina_Size2D view_size = efl_gfx_view_size_get(pd->anim);
|
||||
|
||||
return view_size;
|
||||
}
|
||||
static void
|
||||
_size_hint_event_cb(void *data, const Efl_Event *event)
|
||||
{
|
||||
_sizing_eval(event->object, data);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_controller_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Mi_Controller_Data *pd)
|
||||
{
|
||||
efl_canvas_group_add(efl_super(obj, MY_CLASS));
|
||||
elm_widget_sub_object_parent_add(obj);
|
||||
|
||||
pd->anim = efl_add(EFL_UI_VG_ANIMATION_CLASS, obj);
|
||||
elm_widget_resize_object_set(obj, pd->anim);
|
||||
|
||||
efl_key_data_set(obj, "anim", pd->anim);
|
||||
|
||||
efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_HINTS_CHANGED, _size_hint_event_cb, pd);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_controller_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Mi_Controller_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_canvas_group_del(efl_super(obj, MY_CLASS));
|
||||
|
||||
if (pd->states) eina_array_free(pd->states);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_controller_efl_object_destructor(Eo *obj,
|
||||
Efl_Ui_Mi_Controller_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_destructor(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
_efl_ui_mi_controller_efl_object_constructor(Eo *obj,
|
||||
Efl_Ui_Mi_Controller_Data *pd EINA_UNUSED)
|
||||
{
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/* Efl.Part begin */
|
||||
/*ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Controller_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Controller_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Controller_Data)
|
||||
#include "efl_ui_mi_controller_part.eo.c"*/
|
||||
/* Efl.Part end */
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
||||
|
||||
#define EFL_UI_MI_CONTROLLER_EXTRA_OPS \
|
||||
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_mi_controller)
|
||||
|
||||
#include "efl_ui_mi_controller.eo.c"
|
|
@ -0,0 +1,77 @@
|
|||
enum Efl.Ui.Mi_Controller.Repeat_Mode {
|
||||
none,
|
||||
loop,
|
||||
once,
|
||||
play_rewind
|
||||
}
|
||||
|
||||
|
||||
class @beta Efl.Ui.Mi_Controller extends Efl.Ui.Widget implements Efl.File, Efl.Gfx.View
|
||||
{
|
||||
[[ Micro controller Widget class
|
||||
@since 1.24
|
||||
]]
|
||||
event_c_prefix: efl_ui_mi_controller;
|
||||
methods {
|
||||
@property repeat_mode {
|
||||
[[ repeat mode , normal/ play_rewind /loop
|
||||
]]
|
||||
set {
|
||||
}
|
||||
get {
|
||||
}
|
||||
values {
|
||||
mode: Efl.Ui.Mi_Controller.Repeat_Mode; [[mode]]
|
||||
}
|
||||
}
|
||||
@property state {
|
||||
[[ ]]
|
||||
get {
|
||||
}
|
||||
keys {
|
||||
state_name: string;
|
||||
}
|
||||
values {
|
||||
state: Efl.Object;
|
||||
}
|
||||
|
||||
}
|
||||
//temporary
|
||||
state_add {
|
||||
[[ ]]
|
||||
params {
|
||||
@in state: Efl.Ui.Mi_State;
|
||||
}
|
||||
return: bool; [[$true when it's successful. $false otherwise.]]
|
||||
}
|
||||
//
|
||||
trigger {
|
||||
[[ ]]
|
||||
params {
|
||||
@in state: string; [[ ]]
|
||||
@in animation: bool; [[ ]]
|
||||
}
|
||||
return: bool; [[$true when it's successful. $false otherwise.]]
|
||||
}
|
||||
trigger_next {
|
||||
[[ ]]
|
||||
params {
|
||||
@in animation: bool; [[ ]]
|
||||
}
|
||||
return: bool; [[$true when it's successful. $false otherwise.]]
|
||||
}
|
||||
trigger_prev {
|
||||
[[ ]]
|
||||
params {
|
||||
@in animation: bool; [[ ]]
|
||||
}
|
||||
return: bool; [[$true when it's successful. $false otherwise.]]
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
Efl.File.load;
|
||||
Efl.Gfx.View.view_size { set; get; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef EFL_UI_MI_CONTROLLER_PRIVATE_H
|
||||
#define EFL_UI_MI_CONTROLLER_PRIVATE_H
|
||||
|
||||
#include "Elementary.h"
|
||||
#include "efl_ui_mi_controller.eo.h"
|
||||
|
||||
typedef struct _Efl_Ui_Mi_Controller_Data Efl_Ui_Mi_Controller_Data;
|
||||
|
||||
struct _Efl_Ui_Mi_Controller_Data
|
||||
{
|
||||
Efl_Ui_Vg_Animation* anim;
|
||||
int cur_state_idx;
|
||||
Eina_Array* states;
|
||||
//Eina_Inarray *states; //array of Efl_Ui_Mi_State*;
|
||||
|
||||
};
|
||||
|
||||
#define EFL_UI_MI_CONTROLLER_DATA_GET(o, sd) \
|
||||
Efl_Ui_Mi_Controller_Data * sd = efl_data_scope_safe_get(o, EFL_UI_MI_CONTROLLER_CLASS)
|
||||
|
||||
#define EFL_UI_MI_CONTROLLER_DATA_GET_OR_RETURN(o, ptr) \
|
||||
EFL_UI_MI_CONTROLLER_DATA_GET(o, ptr); \
|
||||
if (EINA_UNLIKELY(!ptr)) \
|
||||
{ \
|
||||
ERR("No widget data for object %p (%s)", \
|
||||
o, evas_object_type_get(o)); \
|
||||
return; \
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,140 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "elementary_config.h"
|
||||
#endif
|
||||
|
||||
#define EFL_ACCESS_OBJECT_PROTECTED
|
||||
#define EFL_PART_PROTECTED
|
||||
|
||||
#include <Elementary.h>
|
||||
|
||||
#include "elm_priv.h"
|
||||
#include "efl_ui_mi_rule_private.h"
|
||||
//#include "efl_ui_mi_controller_part.eo.h"
|
||||
//#include "elm_part_helper.h"
|
||||
|
||||
#define MY_CLASS EFL_UI_MI_RULE_CLASS
|
||||
|
||||
#define MY_CLASS_NAME "Efl_Ui_Mi_Rule"
|
||||
|
||||
void
|
||||
_tb_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
int x, y, w,h;
|
||||
|
||||
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
||||
evas_object_move(data, x, y);
|
||||
evas_object_resize(data, w, h);
|
||||
evas_object_color_set(data, 0, 0, 0, 0);
|
||||
evas_object_show(data);
|
||||
}
|
||||
|
||||
static void
|
||||
tap_gesture_cb(void *data , const Efl_Event *ev)
|
||||
{
|
||||
Eo* obj = (Eo*)data;
|
||||
Efl_Canvas_Gesture *g = ev->info;
|
||||
switch(efl_gesture_state_get(g))
|
||||
{
|
||||
/* case EFL_GESTURE_STATE_STARTED:
|
||||
break;
|
||||
case EFL_GESTURE_STATE_CANCELED:
|
||||
break;*/
|
||||
case EFL_GESTURE_STATE_FINISHED:
|
||||
efl_event_callback_call(obj, EFL_EVENT_GESTURE_TAP, &ev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_rule_keypath_set(Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd, const char* keypath)
|
||||
{
|
||||
Eo *parent;
|
||||
Eo *object = obj;
|
||||
Evas *e = NULL;
|
||||
do
|
||||
{
|
||||
parent = efl_parent_get(object);
|
||||
if (!parent) continue;
|
||||
|
||||
if (efl_class_get(parent) == EFL_UI_MI_CONTROLLER_CLASS)
|
||||
{
|
||||
e = evas_object_evas_get(parent);
|
||||
}
|
||||
object = parent;
|
||||
} while(!e);
|
||||
|
||||
pd->event_rect = evas_object_rectangle_add(e);
|
||||
|
||||
efl_event_callback_add(pd->event_rect, EFL_EVENT_GESTURE_TAP, tap_gesture_cb, obj);
|
||||
|
||||
#if DEBUG
|
||||
printf("%s (%p)\n", efl_class_name_get(efl_class_get(parent)), parent);
|
||||
#endif
|
||||
|
||||
evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _tb_resize, pd->event_rect);
|
||||
if (!strcmp(keypath, "*"))
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
/* tracking keypath object */
|
||||
|
||||
/* Set rect geometry */
|
||||
|
||||
|
||||
}
|
||||
|
||||
EOLIAN const char*
|
||||
_efl_ui_mi_rule_keypath_get(const Eo *obj EINA_UNUSED, Efl_Ui_Mi_Rule_Data *pd)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_rule_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Mi_Rule_Data *priv)
|
||||
{
|
||||
efl_canvas_group_add(efl_super(obj, MY_CLASS));
|
||||
elm_widget_sub_object_parent_add(obj);
|
||||
|
||||
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_rule_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Mi_Rule_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_canvas_group_del(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_rule_efl_object_destructor(Eo *obj,
|
||||
Efl_Ui_Mi_Rule_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_destructor(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
_efl_ui_mi_rule_efl_object_constructor(Eo *obj,
|
||||
Efl_Ui_Mi_Rule_Data *pd EINA_UNUSED)
|
||||
{
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
//evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/* Efl.Part begin */
|
||||
/*ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Rule_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Rule_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_Rule_Data)
|
||||
#include "efl_ui_mi_controller_part.eo.c"*/
|
||||
/* Efl.Part end */
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
||||
#define EFL_UI_MI_RULE_EXTRA_OPS \
|
||||
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_mi_rule)
|
||||
|
||||
#include "efl_ui_mi_rule.eo.c"
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
class @beta Efl.Ui.Mi_Rule extends Efl.Object implements Efl.Canvas.Gesture_Events
|
||||
{
|
||||
[[ Micro Interaction Rule class
|
||||
@since 1.24
|
||||
]]
|
||||
event_c_prefix: efl_ui_mi_rule;
|
||||
methods {
|
||||
@property keypath {
|
||||
[[
|
||||
]]
|
||||
set {
|
||||
}
|
||||
get {
|
||||
}
|
||||
values {
|
||||
keypath: string; [[ ]]
|
||||
}
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
}
|
||||
events {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef EFL_UI_MI_RULE_PRIVATE_H
|
||||
#define EFL_UI_MI_RULE_PRIVATE_H
|
||||
|
||||
#include "Elementary.h"
|
||||
#include "efl_ui_mi_rule.eo.h"
|
||||
|
||||
typedef struct _Efl_Ui_Mi_Rule_Data Efl_Ui_Mi_Rule_Data;
|
||||
|
||||
struct _Efl_Ui_Mi_Rule_Data
|
||||
{
|
||||
Evas_Object *event_rect;
|
||||
};
|
||||
|
||||
#define EFL_UI_MI_RULE_DATA_GET(o, sd) \
|
||||
Efl_Ui_Mi_Rule_Data * sd = efl_data_scope_safe_get(o, EFL_UI_MI_RULE_CLASS)
|
||||
|
||||
#define EFL_UI_MI_RULE_DATA_GET_OR_RETURN(o, ptr) \
|
||||
EFL_UI_MI_RULE_DATA_GET(o, ptr); \
|
||||
if (EINA_UNLIKELY(!ptr)) \
|
||||
{ \
|
||||
ERR("No widget data for object %p (%s)", \
|
||||
o, evas_object_type_get(o)); \
|
||||
return; \
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,107 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "elementary_config.h"
|
||||
#endif
|
||||
|
||||
#define EFL_ACCESS_OBJECT_PROTECTED
|
||||
#define EFL_PART_PROTECTED
|
||||
|
||||
#include <Elementary.h>
|
||||
|
||||
#include "elm_priv.h"
|
||||
#include "efl_ui_mi_state_private.h"
|
||||
//#include "efl_ui_mi_controller_part.eo.h"
|
||||
//#include "elm_part_helper.h"
|
||||
|
||||
#define MY_CLASS EFL_UI_MI_STATE_CLASS
|
||||
|
||||
#define MY_CLASS_NAME "Efl_Ui_Mi_State"
|
||||
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_state_sector_set(Eo *eo_obj, Efl_Ui_Mi_State_Data *pd,
|
||||
const char *start, const char *end)
|
||||
{
|
||||
if (!start) return ;
|
||||
|
||||
if (pd->start) free(pd->start);
|
||||
pd->start = strdup(start);
|
||||
|
||||
if (!end) return ;
|
||||
|
||||
if (pd->end) free(pd->end);
|
||||
pd->end = strdup(end);
|
||||
|
||||
}
|
||||
|
||||
EOLIAN void
|
||||
_efl_ui_mi_state_sector_get(const Eo *obj, Efl_Ui_Mi_State_Data *pd, const char **start, const char **end)
|
||||
{
|
||||
if (start)
|
||||
*start = pd->start;
|
||||
if (end)
|
||||
*end = pd->end;
|
||||
}
|
||||
|
||||
EOLIAN void
|
||||
_efl_ui_mi_state_rule_set(Eo *obj, Efl_Ui_Mi_State_Data *pd, const char *keypath, Efl_Ui_Mi_Rule *rule)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
EOLIAN Efl_Ui_Mi_Rule*
|
||||
_efl_ui_mi_state_rule_get(const Eo *obj, Efl_Ui_Mi_State_Data *pd, const char *keypath)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_state_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Mi_State_Data *pd)
|
||||
{
|
||||
efl_canvas_group_add(efl_super(obj, MY_CLASS));
|
||||
elm_widget_sub_object_parent_add(obj);
|
||||
|
||||
|
||||
pd->start = NULL;
|
||||
pd->end = NULL;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_state_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Mi_State_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_canvas_group_del(efl_super(obj, MY_CLASS));
|
||||
|
||||
if (pd->start) free(pd->start);
|
||||
if (pd->end) free(pd->end);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_mi_state_efl_object_destructor(Eo *obj,
|
||||
Efl_Ui_Mi_State_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_destructor(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
_efl_ui_mi_state_efl_object_constructor(Eo *obj,
|
||||
Efl_Ui_Mi_State_Data *pd EINA_UNUSED)
|
||||
{
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
//evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/* Efl.Part begin */
|
||||
/*ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_State_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_State_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_mi_controller, EFL_UI_MI_CONTROLLER, Efl_Ui_Mi_State_Data)
|
||||
#include "efl_ui_mi_controller_part.eo.c"*/
|
||||
/* Efl.Part end */
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
||||
#define EFL_UI_MI_STATE_EXTRA_OPS \
|
||||
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_mi_state)
|
||||
|
||||
#include "efl_ui_mi_state.eo.c"
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
class @beta Efl.Ui.Mi_State extends Efl.Object
|
||||
{
|
||||
[[ Micro Interaction State class
|
||||
@since 1.24
|
||||
]]
|
||||
event_c_prefix: efl_ui_mi_state;
|
||||
methods {
|
||||
@property sector {
|
||||
[[ sector info
|
||||
]]
|
||||
set {}
|
||||
get {}
|
||||
values {
|
||||
start: string; [[ The name of start sector ]]
|
||||
end: string; [[ The name of end sector ]]
|
||||
}
|
||||
}
|
||||
@property rule {
|
||||
[[ rule get/set ]]
|
||||
set {}
|
||||
get {}
|
||||
keys {
|
||||
keypath: string; [[ rule_name (keypath) ]]
|
||||
}
|
||||
values {
|
||||
rule: Efl.Ui.Mi_Rule;
|
||||
}
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
}
|
||||
events {
|
||||
trigger : bool;
|
||||
feedback : float;
|
||||
feedback,done : bool;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef EFL_UI_MI_STATE_PRIVATE_H
|
||||
#define EFL_UI_MI_STATE_PRIVATE_H
|
||||
|
||||
#include "Elementary.h"
|
||||
#include "efl_ui_mi_state.eo.h"
|
||||
|
||||
typedef struct _Efl_Ui_Mi_State_Data Efl_Ui_Mi_State_Data;
|
||||
|
||||
struct _Efl_Ui_Mi_State_Data
|
||||
{
|
||||
const char *start;
|
||||
const char *end;
|
||||
};
|
||||
|
||||
#define EFL_UI_MI_STATE_DATA_GET(o, sd) \
|
||||
Efl_Ui_Mi_State_Data * sd = efl_data_scope_safe_get(o, EFL_UI_MI_STATE_CLASS)
|
||||
|
||||
#define EFL_UI_MI_STATE_DATA_GET_OR_RETURN(o, ptr) \
|
||||
EFL_UI_MI_STATE_DATA_GET(o, ptr); \
|
||||
if (EINA_UNLIKELY(!ptr)) \
|
||||
{ \
|
||||
ERR("No widget data for object %p (%s)", \
|
||||
o, evas_object_type_get(o)); \
|
||||
return; \
|
||||
}
|
||||
|
||||
#endif
|
|
@ -41,6 +41,9 @@ pub_eo_files = [
|
|||
'efl_ui_widget_scrollable_content.eo',
|
||||
'efl_ui_vg_animation.eo',
|
||||
'efl_ui_vg_animation_part.eo',
|
||||
'efl_ui_mi_controller.eo',
|
||||
'efl_ui_mi_state.eo',
|
||||
'efl_ui_mi_rule.eo',
|
||||
'efl_ui_bg.eo',
|
||||
'efl_ui_button.eo',
|
||||
'efl_ui_calendar.eo',
|
||||
|
@ -301,6 +304,9 @@ elementary_headers_unstable = [
|
|||
'elm_widget_flipselector.h',
|
||||
'efl_ui_widget_frame.h',
|
||||
'efl_ui_vg_animation_private.h',
|
||||
'efl_ui_mi_controller_private.h',
|
||||
'efl_ui_mi_state_private.h',
|
||||
'efl_ui_mi_rule_private.h',
|
||||
'elm_widget_gengrid.h',
|
||||
'elm_widget_genlist.h',
|
||||
'elm_widget_glview.h',
|
||||
|
@ -731,6 +737,9 @@ elementary_src = [
|
|||
'elc_scrolled_entry.c',
|
||||
'elm_access.c',
|
||||
'efl_ui_vg_animation.c',
|
||||
'efl_ui_mi_controller.c',
|
||||
'efl_ui_mi_state.c',
|
||||
'efl_ui_mi_rule.c',
|
||||
'elm_actionslider.c',
|
||||
'elm_atspi_app_object.c',
|
||||
'elm_atspi_bridge.c',
|
||||
|
|
|
@ -396,6 +396,7 @@ _efl_canvas_vg_object_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Object_Data *pd
|
|||
return obj;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Object_Data *pd,
|
||||
void *engine, void *output, void *context, Efl_VG *node,
|
||||
|
@ -1017,6 +1018,18 @@ _efl_canvas_vg_object_default_size_get(const Eo *eo_obj EINA_UNUSED,
|
|||
return evas_cache_vg_entry_default_size_get(pd->vg_entry);
|
||||
}
|
||||
|
||||
EOLIAN Eina_List *
|
||||
_efl_canvas_vg_object_list_by_keypath_get(Eo *obj, Efl_Canvas_Vg_Object_Data *pd, const char *keypath)
|
||||
{
|
||||
|
||||
// *
|
||||
|
||||
|
||||
|
||||
// *path.path
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* the actual api call to add a vector graphic object */
|
||||
EAPI Eo *
|
||||
evas_object_vg_add(Evas *e)
|
||||
|
|
|
@ -74,6 +74,13 @@ class @beta Efl.Canvas.Vg.Object extends Efl.Canvas.Object implements Efl.File,
|
|||
size: Eina.Size2D;
|
||||
}
|
||||
}
|
||||
list_by_keypath_get {
|
||||
[[ ]]
|
||||
params {
|
||||
keypath: string;
|
||||
}
|
||||
return: list<Efl.Object>;
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
|
|
|
@ -359,6 +359,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int
|
|||
for (int i = 0; i < depth; i++) printf(" ");
|
||||
printf("%s (%p), real mask:%d => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mask->mMode, mtarget);
|
||||
#endif
|
||||
|
||||
_construct_mask_nodes(msource, mask, depth + 1);
|
||||
|
||||
Efl_Gfx_Vg_Composite_Method mask_mode;
|
||||
|
|
Loading…
Reference in New Issue