From e71cfba201d977d4d81ccf5c39aad92a9200e05b Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 15 Jan 2020 09:24:12 -0500 Subject: [PATCH] elementary_test: Apply changed event related to Efl.Ui.Vg_Animation Summary: Events has changed from Efl.Ui.Vg_Animation to Efl.Player. Apply the changes. ref T8476 Depends on D11080 Test Plan: elementary_test -to "Vector Graphics Animation" Reviewers: zmike, Hermet, kimcinoo Reviewed By: zmike Subscribers: cedric, #reviewers, #committers, segfaultxavi, bu5hm4n Tags: #efl Maniphest Tasks: T8476 Differential Revision: https://phab.enlightenment.org/D11100 --- .../test_efl_gfx_vg_value_provider.c | 163 ++++++++++-------- src/bin/elementary/test_efl_ui_vg_animation.c | 92 ++++++---- 2 files changed, 152 insertions(+), 103 deletions(-) diff --git a/src/bin/elementary/test_efl_gfx_vg_value_provider.c b/src/bin/elementary/test_efl_gfx_vg_value_provider.c index c8f55c85b7..5b9424c8d6 100644 --- a/src/bin/elementary/test_efl_gfx_vg_value_provider.c +++ b/src/bin/elementary/test_efl_gfx_vg_value_provider.c @@ -15,6 +15,12 @@ #ifdef BUILD_VG_LOADER_JSON +typedef struct _App_Data +{ + Eo *label; + Eo *slider; +} App_Data; + Evas_Object *values[4], *anim_view; Evas_Object *path_entry, *type_hoversel; @@ -185,58 +191,6 @@ limit_frame_cb(void *data, const Efl_Event *event) } } -static void -update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) -{ - Efl_Ui_Vg_Animation_State state = efl_ui_vg_animation_state_get(anim_view); - - switch (state) - { - case EFL_UI_VG_ANIMATION_STATE_NOT_READY: - efl_text_set(label, "State = Not Ready"); - break; - case EFL_UI_VG_ANIMATION_STATE_PLAYING: - efl_text_set(label, "State = Playing"); - break; - case EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS: - efl_text_set(label, "State = Playing Backwards"); - - break; - case EFL_UI_VG_ANIMATION_STATE_PAUSED: - efl_text_set(label, "State = Paused"); - break; - case EFL_UI_VG_ANIMATION_STATE_STOPPED: - efl_text_set(label, "State = Stopped"); - break; - } -} - -static void -_play_updated(void *data, Evas_Object *obj, void *ev EINA_UNUSED) -{ - Evas_Object *slider = data; - efl_ui_range_value_set(slider, efl_player_playback_progress_get(obj)); -} - -static void -_state_update(void *data, Evas_Object *obj, void *ev EINA_UNUSED) -{ - Evas_Object *label = data; - update_anim_view_state(obj, label); -} - -static void -_play_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - printf("done!\n"); -} - -static void -_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - printf("repeated!\n"); -} - static void _slider_changed_cb(void *data, const Efl_Event *ev) { @@ -244,13 +198,6 @@ _slider_changed_cb(void *data, const Efl_Event *ev) efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); } -static void -_slider_reset(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - Evas_Object *slider = data; - efl_ui_range_value_set(slider, 0); -} - void values_input(Eo* box, const char* type) { for (int i = 0; i < 4; i++) @@ -300,18 +247,102 @@ _hover_item_selected_cb(void *data, Evas_Object *obj, void *event_info) values_input(box, selected); } +static void +update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) +{ + Efl_Ui_Vg_Animation_State state = efl_ui_vg_animation_state_get(anim_view); + + switch (state) + { + case EFL_UI_VG_ANIMATION_STATE_NOT_READY: + efl_text_set(label, "State = Not Ready"); + break; + case EFL_UI_VG_ANIMATION_STATE_PLAYING: + efl_text_set(label, "State = Playing"); + break; + case EFL_UI_VG_ANIMATION_STATE_PLAYING_BACKWARDS: + efl_text_set(label, "State = Playing Backwards"); + + break; + case EFL_UI_VG_ANIMATION_STATE_PAUSED: + efl_text_set(label, "State = Paused"); + break; + case EFL_UI_VG_ANIMATION_STATE_STOPPED: + efl_text_set(label, "State = Stopped"); + break; + } +} + +static void +_animation_playing_changed_cb(void *data, const Efl_Event *event) +{ + Eina_Bool playing = *(Eina_Bool*)event->info; + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); + //Stopped + if (!playing) + efl_ui_range_value_set(ad->slider, 0); +} + +static void +_animation_paused_changed_cb(void *data, const Efl_Event *event) +{ + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); +} + +static void +_animation_playback_progress_changed_cb(void *data, const Efl_Event *event) +{ + double progress = *(double*)event->info; + App_Data *ad = data; + efl_ui_range_value_set(ad->slider, progress); +} + +static void +_animation_playback_repeated_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) +{ + int repeated_times = *(int*)event->info; + printf("repeated! (times: %d)\n", repeated_times); +} + +static void +_animation_playback_finished_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) +{ + printf("done!\n"); +} + +EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb, + {EFL_PLAYER_EVENT_PLAYING_CHANGED, _animation_playing_changed_cb }, + {EFL_PLAYER_EVENT_PAUSED_CHANGED, _animation_paused_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_PROGRESS_CHANGED, _animation_playback_progress_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_REPEATED, _animation_playback_repeated_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_FINISHED, _animation_playback_finished_changed_cb }, +) + +static void +_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) +{ + App_Data *ad = data; + free(ad); +} + void test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Eo *win, *box, *box_sub, *label, *check, *slider, *list; char buf[255]; + App_Data *ad = calloc(1, sizeof(App_Data)); + if (!ad) return; + // This line must to need. setenv("ELM_ACCEL", "gl", 1); win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC), efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), - efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + efl_ui_win_autodel_set(efl_added, EINA_TRUE), + efl_event_callback_add(efl_added, EFL_EVENT_DEL, _win_del_cb, ad)); // Create a box in Canvas box = efl_add(EFL_UI_BOX_CLASS, win, @@ -558,16 +589,10 @@ test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNU efl_pack(box_sub, efl_added), efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); - evas_object_smart_callback_add(anim_view, "play,start", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,stop", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,pause", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,resume", _state_update, label); + efl_event_callback_array_add(anim_view, animation_stats_cb(), ad); - evas_object_smart_callback_add(anim_view, "play,repeat", _play_repeated, label); - evas_object_smart_callback_add(anim_view, "play,done", _play_done, label); - - evas_object_smart_callback_add(anim_view, "play,update", _play_updated, slider); - evas_object_smart_callback_add(anim_view, "play,stop", _slider_reset, slider); + ad->label = label; + ad->slider = slider; update_anim_view_state(anim_view, label); diff --git a/src/bin/elementary/test_efl_ui_vg_animation.c b/src/bin/elementary/test_efl_ui_vg_animation.c index 8c6f38d8a6..b51491906d 100644 --- a/src/bin/elementary/test_efl_ui_vg_animation.c +++ b/src/bin/elementary/test_efl_ui_vg_animation.c @@ -14,6 +14,12 @@ #ifdef BUILD_VG_LOADER_JSON +typedef struct _App_Data +{ + Eo *label; + Eo *slider; +} App_Data; + static void btn_clicked_cb(void *data , const Efl_Event *ev ) { @@ -78,6 +84,13 @@ limit_frame_cb(void *data, const Efl_Event *event) } } +static void +_slider_changed_cb(void *data, const Efl_Event *ev) +{ + Evas_Object *anim_view = data; + efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); +} + static void update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) { @@ -104,43 +117,57 @@ update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) } static void -_play_updated(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +_animation_playing_changed_cb(void *data, const Efl_Event *event) { - Evas_Object *slider = data; - efl_ui_range_value_set(slider, efl_player_playback_progress_get(obj)); + Eina_Bool playing = *(Eina_Bool*)event->info; + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); + //Stopped + if (!playing) + efl_ui_range_value_set(ad->slider, 0); } static void -_state_update(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +_animation_paused_changed_cb(void *data, const Efl_Event *event) { - Evas_Object *label = data; - update_anim_view_state(obj, label); + App_Data *ad = data; + update_anim_view_state(event->object, ad->label); } static void -_play_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +_animation_playback_progress_changed_cb(void *data, const Efl_Event *event) +{ + double progress = *(double*)event->info; + App_Data *ad = data; + efl_ui_range_value_set(ad->slider, progress); +} + +static void +_animation_playback_repeated_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) +{ + int repeated_times = *(int*)event->info; + printf("repeated! (times: %d)\n", repeated_times); +} + +static void +_animation_playback_finished_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) { printf("done!\n"); } -static void -_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - printf("repeated!\n"); -} +EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb, + {EFL_PLAYER_EVENT_PLAYING_CHANGED, _animation_playing_changed_cb }, + {EFL_PLAYER_EVENT_PAUSED_CHANGED, _animation_paused_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_PROGRESS_CHANGED, _animation_playback_progress_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_REPEATED, _animation_playback_repeated_changed_cb }, + {EFL_PLAYER_EVENT_PLAYBACK_FINISHED, _animation_playback_finished_changed_cb }, +) static void -_slider_changed_cb(void *data, const Efl_Event *ev) +_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) { - Evas_Object *anim_view = data; - efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); -} - -static void -_slider_reset(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) -{ - Evas_Object *slider = data; - efl_ui_range_value_set(slider, 0); + App_Data *ad = data; + free(ad); } void @@ -148,10 +175,13 @@ test_efl_ui_vg_animation(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v { Eo *win, *box, *box2, *box3, *box4, *label, *anim_view, *check, *slider; char buf[255]; + App_Data *ad = calloc(1, sizeof(App_Data)); + if (!ad) return; win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), - efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), - efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + efl_text_set(efl_added, "Efl_Ui_Vg_Animation demo"), + efl_ui_win_autodel_set(efl_added, EINA_TRUE), + efl_event_callback_add(efl_added, EFL_EVENT_DEL, _win_del_cb, ad)); // Create a box in Canvas box = efl_add(EFL_UI_BOX_CLASS, win, @@ -279,19 +309,13 @@ test_efl_ui_vg_animation(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v efl_pack(box4, efl_added), efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); - evas_object_smart_callback_add(anim_view, "play,start", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,stop", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,pause", _state_update, label); - evas_object_smart_callback_add(anim_view, "play,resume", _state_update, label); - - evas_object_smart_callback_add(anim_view, "play,repeat", _play_repeated, label); - evas_object_smart_callback_add(anim_view, "play,done", _play_done, label); - - evas_object_smart_callback_add(anim_view, "play,update", _play_updated, slider); - evas_object_smart_callback_add(anim_view, "play,stop", _slider_reset, slider); + efl_event_callback_array_add(anim_view, animation_stats_cb(), ad); update_anim_view_state(anim_view, label); + ad->label = label; + ad->slider = slider; + efl_gfx_entity_size_set(win, EINA_SIZE2D(600, 730)); }