forked from enlightenment/efl
Eolian: Integration of Player
This commit is contained in:
parent
8423df2f41
commit
246e0f4934
|
@ -624,7 +624,9 @@ BUILT_SOURCES = \
|
|||
elm_photocam_pan.eo.c \
|
||||
elm_photocam_pan.eo.h \
|
||||
elm_photo.eo.c \
|
||||
elm_photo.eo.h
|
||||
elm_photo.eo.h \
|
||||
elc_player.eo.c \
|
||||
elc_player.eo.h
|
||||
|
||||
EXTRA_DIST += \
|
||||
elm_widget.eo \
|
||||
|
@ -676,7 +678,8 @@ EXTRA_DIST += \
|
|||
elm_panes.eo \
|
||||
elm_photocam.eo \
|
||||
elm_photocam_pan.eo \
|
||||
elm_photo.eo
|
||||
elm_photo.eo \
|
||||
elc_player.eo
|
||||
|
||||
nodist_includesunstable_HEADERS = \
|
||||
elm_widget.eo.h \
|
||||
|
@ -728,5 +731,6 @@ nodist_includesunstable_HEADERS = \
|
|||
elm_panes.eo.h \
|
||||
elm_photocam.eo.h \
|
||||
elm_photocam_pan.eo.h \
|
||||
elm_photo.eo.h
|
||||
elm_photo.eo.h \
|
||||
elc_player.eo.h
|
||||
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
#include "elm_widget_layout.h"
|
||||
#include "elm_widget_player.h"
|
||||
|
||||
EAPI Eo_Op ELM_OBJ_PLAYER_BASE_ID = EO_NOOP;
|
||||
|
||||
#define MY_CLASS ELM_OBJ_PLAYER_CLASS
|
||||
|
||||
#define MY_CLASS_NAME "Elm_Player"
|
||||
|
@ -56,22 +54,16 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
|
|||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
_elm_player_smart_event(Eo *obj, void *_pd, va_list *list)
|
||||
EOLIAN static Eina_Bool
|
||||
_elm_player_elm_widget_event(Eo *obj, Elm_Player_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info)
|
||||
{
|
||||
Evas_Object *src = va_arg(*list, Evas_Object *);
|
||||
Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
|
||||
Evas_Event_Key_Down *ev = va_arg(*list, void *);
|
||||
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
|
||||
Elm_Player_Smart_Data *sd = _pd;
|
||||
|
||||
if (ret) *ret = EINA_FALSE;
|
||||
Evas_Event_Key_Down *ev = event_info;
|
||||
(void) src;
|
||||
|
||||
if (elm_widget_disabled_get(obj)) return;
|
||||
if (type != EVAS_CALLBACK_KEY_DOWN) return;
|
||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
||||
if (!sd->video) return;
|
||||
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
|
||||
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
|
||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
|
||||
if (!sd->video) return EINA_FALSE;
|
||||
|
||||
if ((!strcmp(ev->key, "Left")) ||
|
||||
((!strcmp(ev->key, "KP_Left")) && (!ev->string)))
|
||||
|
@ -116,11 +108,11 @@ _elm_player_smart_event(Eo *obj, void *_pd, va_list *list)
|
|||
goto success;
|
||||
}
|
||||
|
||||
return;
|
||||
return EINA_FALSE;
|
||||
|
||||
success:
|
||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||
if (ret) *ret = EINA_TRUE;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -161,16 +153,13 @@ _update_theme_slider(Evas_Object *obj, Evas_Object *sl, const char *name, const
|
|||
elm_object_disabled_set(sl, elm_widget_disabled_get(obj));
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_player_smart_theme(Eo *obj, void *_pd, va_list *list)
|
||||
EOLIAN static Eina_Bool
|
||||
_elm_player_elm_widget_theme_apply(Eo *obj, Elm_Player_Data *sd)
|
||||
{
|
||||
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
|
||||
if (ret) *ret = EINA_FALSE;
|
||||
Eina_Bool int_ret;
|
||||
|
||||
Elm_Player_Smart_Data *sd = _pd;
|
||||
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
|
||||
if (!int_ret) return;
|
||||
if (!int_ret) return EINA_FALSE;
|
||||
|
||||
_update_theme_button(obj, sd->forward, "forward");
|
||||
_update_theme_button(obj, sd->info, "info");
|
||||
_update_theme_button(obj, sd->next, "next");
|
||||
|
@ -187,11 +176,11 @@ _elm_player_smart_theme(Eo *obj, void *_pd, va_list *list)
|
|||
_update_theme_slider(obj, sd->vslider, "volume", "volumeslider");
|
||||
elm_layout_sizing_eval(obj);
|
||||
|
||||
if (ret) *ret = EINA_TRUE;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_player_smart_sizing_eval(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_elm_player_elm_layout_sizing_eval(Eo *obj, Elm_Player_Data *sd EINA_UNUSED)
|
||||
{
|
||||
Evas_Coord w, h;
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
|
@ -440,7 +429,7 @@ _play_finished(void *data,
|
|||
}
|
||||
|
||||
static void
|
||||
_on_video_del(Elm_Player_Smart_Data *sd)
|
||||
_on_video_del(Elm_Player_Data *sd)
|
||||
{
|
||||
elm_object_disabled_set(sd->forward, EINA_TRUE);
|
||||
elm_object_disabled_set(sd->info, EINA_TRUE);
|
||||
|
@ -536,16 +525,10 @@ _str_free(char *data)
|
|||
* treating this special case here and delegating other objects to own
|
||||
* layout */
|
||||
|
||||
static void
|
||||
_elm_player_smart_content_set(Eo *obj, void *_pd, va_list *list)
|
||||
EOLIAN static Eina_Bool
|
||||
_elm_player_elm_container_content_set(Eo *obj, Elm_Player_Data *sd, const char *part, Evas_Object *content)
|
||||
{
|
||||
const char *part = va_arg(*list, const char *);
|
||||
Evas_Object *content = va_arg(*list, Evas_Object *);
|
||||
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
|
||||
if (ret) *ret = EINA_FALSE;
|
||||
Eina_Bool int_ret = EINA_FALSE;
|
||||
Elm_Player_Smart_Data *sd = _pd;
|
||||
|
||||
double pos, length;
|
||||
Eina_Bool seekable;
|
||||
|
||||
|
@ -553,15 +536,13 @@ _elm_player_smart_content_set(Eo *obj, void *_pd, va_list *list)
|
|||
{
|
||||
eo_do_super(obj, MY_CLASS,
|
||||
elm_obj_container_content_set(part, content, &int_ret));
|
||||
if (ret) *ret = int_ret;
|
||||
return;
|
||||
return int_ret;
|
||||
}
|
||||
if ((!part) || (!strcmp(part, "video"))) part = "elm.swallow.content";
|
||||
eo_do_super(obj, MY_CLASS,
|
||||
elm_obj_container_content_set(part, content, &int_ret));
|
||||
if (ret) *ret = int_ret;
|
||||
|
||||
if (!_elm_video_check(content)) return;
|
||||
if (!_elm_video_check(content)) return EINA_FALSE;
|
||||
if (sd->video == content) goto end;
|
||||
|
||||
evas_object_del(sd->video);
|
||||
|
@ -619,13 +600,12 @@ _elm_player_smart_content_set(Eo *obj, void *_pd, va_list *list)
|
|||
|
||||
/* FIXME: track info from video */
|
||||
end:
|
||||
if (ret) *ret = EINA_TRUE;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_player_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_elm_player_evas_smart_add(Eo *obj, Elm_Player_Data *priv)
|
||||
{
|
||||
Elm_Player_Smart_Data *priv = _pd;
|
||||
char buf[256];
|
||||
|
||||
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
|
||||
|
@ -691,8 +671,8 @@ _elm_player_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
elm_widget_can_focus_set(obj, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_player_smart_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_elm_player_evas_smart_del(Eo *obj, Elm_Player_Data *sd EINA_UNUSED)
|
||||
{
|
||||
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
|
||||
}
|
||||
|
@ -706,8 +686,8 @@ elm_player_add(Evas_Object *parent)
|
|||
return obj;
|
||||
}
|
||||
|
||||
static void
|
||||
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_elm_player_eo_base_constructor(Eo *obj, Elm_Player_Data *sd EINA_UNUSED)
|
||||
{
|
||||
eo_do_super(obj, MY_CLASS, eo_constructor());
|
||||
eo_do(obj,
|
||||
|
@ -715,40 +695,10 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
|
||||
}
|
||||
|
||||
static void
|
||||
_class_constructor(Eo_Class *klass)
|
||||
EOLIAN static void
|
||||
_elm_player_class_constructor(Eo_Class *klass)
|
||||
{
|
||||
const Eo_Op_Func_Description func_desc[] = {
|
||||
|
||||
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_player_smart_add),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_player_smart_del),
|
||||
|
||||
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_player_smart_theme),
|
||||
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_player_smart_event),
|
||||
|
||||
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_player_smart_content_set),
|
||||
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_player_smart_sizing_eval),
|
||||
EO_OP_FUNC_SENTINEL
|
||||
};
|
||||
eo_class_funcs_set(klass, func_desc);
|
||||
|
||||
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
||||
}
|
||||
|
||||
static const Eo_Op_Description op_desc[] = {
|
||||
EO_OP_DESCRIPTION_SENTINEL
|
||||
};
|
||||
|
||||
static const Eo_Class_Description class_desc = {
|
||||
EO_VERSION,
|
||||
MY_CLASS_NAME,
|
||||
EO_CLASS_TYPE_REGULAR,
|
||||
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_PLAYER_BASE_ID, op_desc, ELM_OBJ_PLAYER_SUB_ID_LAST),
|
||||
NULL,
|
||||
sizeof(Elm_Player_Smart_Data),
|
||||
_class_constructor,
|
||||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(elm_obj_player_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
|
||||
#include "elc_player.eo.c"
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
class Elm_Player (Elm_Layout)
|
||||
{
|
||||
eo_prefix: elm_obj_player;
|
||||
implements {
|
||||
class::constructor;
|
||||
Eo_Base::constructor;
|
||||
Evas_Smart::add;
|
||||
Evas_Smart::del;
|
||||
Elm_Widget::theme_apply;
|
||||
Elm_Widget::event;
|
||||
Elm_Container::content_set;
|
||||
Elm_Layout::sizing_eval;
|
||||
}
|
||||
events {
|
||||
forward,clicked;
|
||||
info,clicked;
|
||||
next,clicked;
|
||||
pause,clicked;
|
||||
play,clicked;
|
||||
prev,clicked;
|
||||
rewind,clicked;
|
||||
quality,clicked;
|
||||
eject,clicked;
|
||||
volume,clicked;
|
||||
mute,clicked;
|
||||
language,changed;
|
||||
focused;
|
||||
unfocused;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,3 +1,5 @@
|
|||
#include "elc_player.eo.h"
|
||||
#if 0
|
||||
#define ELM_OBJ_PLAYER_CLASS elm_obj_player_class_get()
|
||||
|
||||
const Eo_Class *elm_obj_player_class_get(void) EINA_CONST;
|
||||
|
@ -10,6 +12,7 @@ enum
|
|||
};
|
||||
|
||||
#define ELM_OBJ_PLAYER_ID(sub_id) (ELM_OBJ_PLAYER_BASE_ID + sub_id)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ELM_OBJ_VIDEO_CLASS
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
/**
|
||||
* Base layout smart data extended with player instance data.
|
||||
*/
|
||||
typedef struct _Elm_Player_Smart_Data Elm_Player_Smart_Data;
|
||||
struct _Elm_Player_Smart_Data
|
||||
typedef struct _Elm_Player_Data Elm_Player_Data;
|
||||
struct _Elm_Player_Data
|
||||
{
|
||||
Evas_Object *video;
|
||||
Evas_Object *emotion;
|
||||
|
@ -46,7 +46,7 @@ struct _Elm_Player_Smart_Data
|
|||
*/
|
||||
|
||||
#define ELM_PLAYER_DATA_GET(o, sd) \
|
||||
Elm_Player_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_PLAYER_CLASS)
|
||||
Elm_Player_Data * sd = eo_data_scope_get(o, ELM_OBJ_PLAYER_CLASS)
|
||||
|
||||
#define ELM_PLAYER_DATA_GET_OR_RETURN(o, ptr) \
|
||||
ELM_PLAYER_DATA_GET(o, ptr); \
|
||||
|
|
Loading…
Reference in New Issue