From 8fefb6f099ef1f6430d1bf093ad189b72b2d9d86 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Mon, 30 Dec 2019 11:08:41 -0500 Subject: [PATCH] elm_progressbar: make pulse and pulse_mode independend from legacy Summary: the next commit will refactor this API for Efl.Ui namespace. ref T8501 Reviewers: cedric, woohyun, zmike, segfaultxavi Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T8501 Differential Revision: https://phab.enlightenment.org/D10941 --- src/lib/elementary/efl_ui_progressbar.c | 50 ++++++++++++++++--------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c index 61c6ece78b..cc7a9e2b29 100644 --- a/src/lib/elementary/efl_ui_progressbar.c +++ b/src/lib/elementary/efl_ui_progressbar.c @@ -618,6 +618,18 @@ _efl_ui_progressbar_efl_ui_range_display_range_value_get(const Eo *obj, Efl_Ui_P return efl_ui_range_value_get(efl_part(obj, "efl.cur.progressbar")); } +static void +_apply_pulse_state(Eo *obj, Efl_Ui_Progressbar_Data *sd) +{ + Eina_Bool legacy = elm_widget_is_legacy(obj); + const char *emitter = legacy ? "elm" : "efl"; + const char *signal = legacy ? "elm,state,pulse," : "efl,state,pulse,"; + char signal_buffer[strlen(signal) + strlen("start") + 1]; + + snprintf(signal_buffer, sizeof(signal_buffer), "%s%s", signal, sd->pulse_state ? "start" : "stop"); + elm_layout_signal_emit(obj, signal_buffer, emitter); +} + EOLIAN static void _efl_ui_progressbar_pulse_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Eina_Bool state) { @@ -626,20 +638,7 @@ _efl_ui_progressbar_pulse_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Eina_Bool st sd->pulse_state = state; - if (elm_widget_is_legacy(obj)) - { - if (sd->pulse_state) - elm_layout_signal_emit(obj, "elm,state,pulse,start", "elm"); - else - elm_layout_signal_emit(obj, "elm,state,pulse,stop", "elm"); - } - else - { - if (sd->pulse_state) - elm_layout_signal_emit(obj, "efl,state,pulse,start", "efl"); - else - elm_layout_signal_emit(obj, "efl,state,pulse,stop", "efl"); - } + _apply_pulse_state(obj, sd); } EOLIAN static Eina_Bool @@ -899,25 +898,40 @@ elm_progressbar_add(Evas_Object *parent) EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse) { - efl_ui_progressbar_pulse_mode_set(obj, pulse); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd); + pulse = !!pulse; + if (sd->pulse == pulse) return; + + sd->pulse = pulse; + + efl_ui_widget_theme_apply(obj); } EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj) { - return efl_ui_progressbar_pulse_mode_get(obj); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd, EINA_FALSE); + return sd->pulse; } EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state) { - efl_ui_progressbar_pulse_set(obj, state); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd); + + state = !!state; + if ((!sd->pulse) || (sd->pulse_state == state)) return; + + sd->pulse_state = state; + + _apply_pulse_state(obj, sd); } EAPI Eina_Bool elm_progressbar_is_pulsing_get(const Evas_Object *obj) { - return efl_ui_progressbar_pulse_get(obj); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd, EINA_FALSE); + return (sd->pulse_state && sd->pulse); } EAPI void