summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-12-30 11:08:41 -0500
committerMike Blumenkrantz <zmike@samsung.com>2019-12-30 11:08:41 -0500
commit8fefb6f099ef1f6430d1bf093ad189b72b2d9d86 (patch)
tree925cd1b2d69c082a26730b9f789bd4cd4a126e05
parentd958f6907d0b13b6221d01e53a675a7809837747 (diff)
downloadefl-8fefb6f099ef1f6430d1bf093ad189b72b2d9d86.tar.gz
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
-rw-r--r--src/lib/elementary/efl_ui_progressbar.c50
1 files 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