efl_ui_spin: move the step implementation to spin_button

having efl_ui_spin implementing efl.ui.range_interactive does not make
sense. Efl.Ui.Spin is a not interactive widget, so it should not
implement that interface.

ref T7897

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D9475
This commit is contained in:
Marcel Hollerbach 2019-08-01 13:55:06 +02:00
parent 42bbe0e58f
commit 7869778d02
8 changed files with 31 additions and 36 deletions

View File

@ -4,6 +4,8 @@
#include <Efl_Ui.h>
#include <Elementary.h>
#define STEP_SIZE 2
static void
_spin_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
{
@ -23,13 +25,13 @@ _spin_max_reached_cb(void *data EINA_UNUSED, const Efl_Event *ev)
static void
_inc_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
{
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) + efl_ui_range_step_get(data)));
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) + STEP_SIZE));
}
static void
_dec_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
{
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) - efl_ui_range_step_get(data)));
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) - STEP_SIZE));
}
void
@ -49,7 +51,6 @@ test_ui_spin(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_i
sp = efl_add(EFL_UI_SPIN_CLASS, bx,
efl_ui_range_limits_set(efl_added, 0, 10),
efl_ui_range_value_set(efl_added, 6),
efl_ui_range_step_set(efl_added, 2),
efl_ui_format_string_set(efl_added, "test %d", EFL_UI_FORMAT_STRING_TYPE_SIMPLE),
efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_CHANGED,_spin_changed_cb, NULL),
efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_MIN_REACHED,_spin_min_reached_cb, NULL),

View File

@ -39,7 +39,6 @@ _efl_ui_spin_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Data *sd)
obj = efl_constructor(efl_super(obj, MY_CLASS));
sd->val_max = 100.0;
sd->step = 1.0;
if (elm_widget_theme_object_set(obj, wd->resize_obj,
elm_widget_theme_klass_get(obj),
@ -97,24 +96,6 @@ _efl_ui_spin_efl_ui_range_display_range_limits_get(const Eo *obj EINA_UNUSED, Ef
if (max) *max = sd->val_max;
}
EOLIAN static void
_efl_ui_spin_efl_ui_range_interactive_range_step_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Data *sd, double step)
{
if (step <= 0)
{
ERR("Wrong param. The step(%lf) should be bigger than 0.0", step);
return;
}
sd->step = step;
}
EOLIAN static double
_efl_ui_spin_efl_ui_range_interactive_range_step_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Data *sd)
{
return sd->step;
}
EOLIAN static void
_efl_ui_spin_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Spin_Data *sd, double val)
{

View File

@ -1,5 +1,5 @@
class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Interactive, Efl.Ui.Format,
Efl.Access.Value, Efl.Access.Widget.Action
class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Display,
Efl.Ui.Format, Efl.Access.Value, Efl.Access.Widget.Action
{
[[A Spin.
@ -10,7 +10,6 @@ class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Inter
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Ui.Range_Display.range_limits { get; set; }
Efl.Ui.Range_Interactive.range_step { get; set; }
Efl.Ui.Range_Display.range_value { get; set; }
Efl.Ui.Format.apply_formatted_value;
}

View File

@ -404,7 +404,7 @@ _entry_toggle_cb(void *data EINA_UNUSED,
static void
_spin_value(Efl_Ui_Spin *obj, Eina_Bool inc)
{
Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS);
Efl_Ui_Spin_Button_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_BUTTON_CLASS);
int absolut_value = efl_ui_range_value_get(obj) + (inc ? pd->step : -pd->step);
@ -643,6 +643,7 @@ _efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
obj = efl_constructor(efl_super(obj, MY_CLASS));
_sync_widget_theme_klass(obj, sd);
sd->step = 1.0;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
@ -788,10 +789,8 @@ _efl_ui_spin_button_efl_access_value_range_get(const Eo *obj EINA_UNUSED, Efl_Ui
}
EOLIAN static double
_efl_ui_spin_button_efl_access_value_increment_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED)
_efl_ui_spin_button_efl_access_value_increment_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *pd)
{
Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS);
return pd->step;
}
@ -812,6 +811,24 @@ _efl_ui_spin_button_efl_ui_format_apply_formatted_value(Eo *obj, Efl_Ui_Spin_But
efl_canvas_group_change(obj);
}
EOLIAN static void
_efl_ui_spin_button_efl_ui_range_interactive_range_step_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd, double step)
{
if (step <= 0)
{
ERR("Wrong param. The step(%lf) should be bigger than 0.0", step);
return;
}
sd->step = step;
}
EOLIAN static double
_efl_ui_spin_button_efl_ui_range_interactive_range_step_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd)
{
return sd->step;
}
// A11Y Accessibility - END
#include "efl_ui_spin_button.eo.c"

View File

@ -1,5 +1,4 @@
class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Composition, Efl.Ui.Layout_Orientable,
Efl.Access.Widget.Action
class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Composition, Efl.Ui.Layout_Orientable, Efl.Ui.Range_Interactive, Efl.Access.Widget.Action
{
[[A Button Spin.
@ -73,5 +72,6 @@ class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Compo
Efl.Access.Value.increment { get; }
Efl.Access.Widget.Action.elm_actions { get; }
Efl.Ui.Format.apply_formatted_value;
Efl.Ui.Range_Interactive.range_step { get; set; }
}
}

View File

@ -8,7 +8,7 @@ struct _Efl_Ui_Spin_Button_Data
Eina_Future *delay_change_timer; /**< a timer for a delay,changed smart callback */
Efl_Ui_Layout_Orientation dir;
double step;
Eina_Bool entry_visible : 1;
Eina_Bool entry_reactivate : 1;
Eina_Bool editable : 1;

View File

@ -7,7 +7,6 @@ typedef struct _Efl_Ui_Spin_Data Efl_Ui_Spin_Data;
struct _Efl_Ui_Spin_Data
{
double val, val_min, val_max;
double step; /**< step for the value change. 1 by default. */
};
#endif

View File

@ -10,7 +10,7 @@
/* spec-meta-start
{"test-interface":"Efl.Ui.Range_Display_Interactive",
"test-widgets": ["Efl.Ui.Spin", "Efl.Ui.Slider", "Efl.Ui.Spin_Button"]}
"test-widgets": ["Efl.Ui.Slider", "Efl.Ui.Spin_Button"]}
spec-meta-end */
EFL_START_TEST(step_setting)
@ -52,8 +52,6 @@ EFL_START_TEST(steady_event)
Evas *e;
int count = 0;
if (efl_isa(widget, EFL_UI_SPIN_CLASS)) return;
efl_event_callback_add(widget, EFL_UI_RANGE_EVENT_STEADY, _steady_cb, &count),
efl_ui_range_limits_set(widget, 0, 100);
efl_ui_range_step_set(widget, 10);