diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index 900df82c33..d8c9854c4d 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -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 diff --git a/legacy/elementary/src/lib/elc_player.c b/legacy/elementary/src/lib/elc_player.c index db365243e0..25d67f286e 100644 --- a/legacy/elementary/src/lib/elc_player.c +++ b/legacy/elementary/src/lib/elc_player.c @@ -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" diff --git a/legacy/elementary/src/lib/elc_player.eo b/legacy/elementary/src/lib/elc_player.eo new file mode 100644 index 0000000000..f8579360e9 --- /dev/null +++ b/legacy/elementary/src/lib/elc_player.eo @@ -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; + } + +} diff --git a/legacy/elementary/src/lib/elm_video_eo.h b/legacy/elementary/src/lib/elm_video_eo.h index 6baa254b63..97658dbdad 100644 --- a/legacy/elementary/src/lib/elm_video_eo.h +++ b/legacy/elementary/src/lib/elm_video_eo.h @@ -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 diff --git a/legacy/elementary/src/lib/elm_widget_player.h b/legacy/elementary/src/lib/elm_widget_player.h index d92b9a1315..1cc71ce7c0 100644 --- a/legacy/elementary/src/lib/elm_widget_player.h +++ b/legacy/elementary/src/lib/elm_widget_player.h @@ -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); \