elm_slider: remove dependency with efl_ui_slider

Summary:
This commit includes follwoing works.

1. change parent class from EFL_UI_SLIDER_INTERVAL
  to EFL_UI_LAYOUT_BASE
2. get all necessary codes from efl_ui_slider and
   efl_ui_slider_interval to elm_slider
3. add callbacks to slider test code

ref T7893

Test Plan:
1. elementary_test
2. slider
3. operate sliders on the window

Reviewers: bu5hm4n, segfaultxavi, eagleeye, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7893

Differential Revision: https://phab.enlightenment.org/D9623
This commit is contained in:
WooHyun Jung 2019-08-20 09:09:14 -04:00 committed by Mike Blumenkrantz
parent 81a7b79235
commit ebae12f06a
5 changed files with 598 additions and 320 deletions

View File

@ -24,6 +24,18 @@ _change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
elm_slider_value_set(data, val);
}
void
_drag_start_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
{
printf("drag,started! slider value : %d\n", (int)round(elm_slider_value_get(obj)));
}
void
_drag_stop_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
{
printf("drag,stopped! slider value : %d\n", (int)round(elm_slider_value_get(obj)));
}
static void
_ok_btn_clicked(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@ -244,6 +256,10 @@ test_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
evas_object_show(ic);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "slider,drag,start", _drag_start_cb, NULL);
evas_object_smart_callback_add(sl, "slider,drag,stop", _drag_stop_cb, NULL);
// horizontally inverted slider
ic = elm_icon_add(bx);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());

File diff suppressed because it is too large Load Diff

View File

@ -86,4 +86,4 @@ static const Efl_Class_Description _elm_slider_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_slider_class_get, &_elm_slider_class_desc, EFL_UI_SLIDER_INTERVAL_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, EFL_TEXT_INTERFACE, EFL_TEXT_MARKUP_INTERFACE, EFL_UI_FORMAT_MIXIN, NULL);
EFL_DEFINE_CLASS(elm_slider_class_get, &_elm_slider_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_LAYOUT_MIXIN, EFL_UI_LEGACY_INTERFACE, EFL_TEXT_INTERFACE, EFL_TEXT_MARKUP_INTERFACE, EFL_UI_FORMAT_MIXIN, NULL);

View File

@ -26,10 +26,18 @@
typedef struct _Elm_Slider_Data Elm_Slider_Data;
struct _Elm_Slider_Data
{
Evas_Object *popup, *popup2, *track, *track2;
Evas_Object *popup, *popup2, *track, *track2, *spacer;
double val, val_min, val_max, step;
double intvl_from, intvl_to;
double wheel_indicator_duration;
int intvl_flag;
Evas_Coord downx, downy;
Efl_Ui_Layout_Orientation dir;
Ecore_Timer *wheel_indicator_timer, *delay;
double wheel_indicator_duration;
Elm_Slider_Indicator_Visible_Mode indicator_visible_mode; /**< indicator_visible_mode of the slider.
This indicates when to show an indicator */
@ -52,6 +60,7 @@ struct _Elm_Slider_Data
Eina_Bool popup_visible : 1;
Eina_Bool intvl_enable : 1;
Eina_Bool spacer_down : 1;
Eina_Bool frozen : 1;
};
/**

View File

@ -98,6 +98,10 @@ slider_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_U
if (event_counter == 1)
evas_object_smart_callback_del(obj, "changed", slider_changed);
else if (event_counter == 2)
evas_object_smart_callback_del(obj, "slider,drag,start", slider_changed);
else if (event_counter == 3)
evas_object_smart_callback_del(obj, "slider,drag,stop", slider_changed);
else if (event_counter == 4)
ecore_main_loop_quit();
}
@ -112,6 +116,8 @@ EFL_START_TEST(elm_slider_events)
slider = elm_slider_add(win);
evas_object_smart_callback_add(slider, "changed", slider_changed, NULL);
evas_object_smart_callback_add(slider, "delay,changed", slider_changed, NULL);
evas_object_smart_callback_add(slider, "slider,drag,start", slider_changed, NULL);
evas_object_smart_callback_add(slider, "slider,drag,stop", slider_changed, NULL);
evas_object_show(slider);
evas_object_show(win);
evas_object_resize(slider, 400, 100);
@ -131,7 +137,7 @@ EFL_START_TEST(elm_slider_events)
evas_event_feed_mouse_move(e, sx + (sw / 2), sy + (sh / 2), 0, NULL);
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
ecore_main_loop_begin();
ck_assert_int_eq(event_counter, 2);
ck_assert_int_eq(event_counter, 4);
}
EFL_END_TEST