forked from enlightenment/efl
efl_ui_slider: refactor slider widget.
Test Plan: elementary_test -> Efl.Ui.Slider, Efl.Ui.Slider_Interval, slider Reviewers: woohyun, cedric, Jaehyun_Cho Reviewed By: Jaehyun_Cho Subscribers: zmike, cedric Tags: #efl Differential Revision: https://phab.enlightenment.org/D5908
This commit is contained in:
parent
9c7f5ca33b
commit
5db61e4d64
|
@ -1,5 +1,5 @@
|
|||
group "Elm_Config" struct {
|
||||
value "config_version" int: 131088;
|
||||
value "config_version" int: 131089;
|
||||
value "entry_select_allow" uchar: 1;
|
||||
value "engine" string: "";
|
||||
value "vsync" uchar: 0;
|
||||
|
@ -2275,6 +2275,59 @@ group "Elm_Config" struct {
|
|||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Elm_Slider";
|
||||
group "key_bindings" list {
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Efl.Ui.Slider";
|
||||
group "key_bindings" list {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
group "Elm_Config" struct {
|
||||
value "config_version" int: 131088;
|
||||
value "config_version" int: 131089;
|
||||
value "entry_select_allow" uchar: 1;
|
||||
value "engine" string: "";
|
||||
value "vsync" uchar: 0;
|
||||
|
@ -2279,6 +2279,59 @@ group "Elm_Config" struct {
|
|||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Elm_Slider";
|
||||
group "key_bindings" list {
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Efl.Ui.Slider";
|
||||
group "key_bindings" list {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
group "Elm_Config" struct {
|
||||
value "config_version" int: 131088;
|
||||
value "config_version" int: 131089;
|
||||
value "entry_select_allow" uchar: 1;
|
||||
value "engine" string: "";
|
||||
value "vsync" uchar: 0;
|
||||
|
@ -2276,6 +2276,59 @@ group "Elm_Config" struct {
|
|||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Elm_Slider";
|
||||
group "key_bindings" list {
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Left";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "left";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Right";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "right";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Up";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "up";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
group "Elm_Config_Binding_Key" struct {
|
||||
value "context" int: 0;
|
||||
value "key" string: "KP_Down";
|
||||
value "action" string: "drag";
|
||||
value "params" string: "down";
|
||||
}
|
||||
}
|
||||
}
|
||||
group "Elm_Config_Bindings_Widget" struct {
|
||||
value "name" string: "Efl.Ui.Slider";
|
||||
group "key_bindings" list {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -399,6 +399,7 @@ group { name: "elm/slider/horizontal/default";
|
|||
}
|
||||
}
|
||||
part { name: "elm.dragable.slider"; type: RECT;
|
||||
nomouse;
|
||||
scale: 1;
|
||||
dragable.x: 1 1 0;
|
||||
dragable.y: 0 0 0;
|
||||
|
@ -415,6 +416,7 @@ group { name: "elm/slider/horizontal/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -432,6 +434,7 @@ group { name: "elm/slider/horizontal/default";
|
|||
}
|
||||
part { name: "slideevent"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
@ -1120,6 +1123,7 @@ group { name: "elm/slider/vertical/default";
|
|||
}
|
||||
part { name: "elm.dragable.slider"; type: RECT;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
dragable.x: 0 0 0;
|
||||
dragable.y: 1 1 0;
|
||||
dragable.confine: "elm.swallow.bar";
|
||||
|
@ -1135,6 +1139,7 @@ group { name: "elm/slider/vertical/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -1152,6 +1157,7 @@ group { name: "elm/slider/vertical/default";
|
|||
}
|
||||
part { name: "slideevent"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
@ -1891,6 +1897,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
part { name: "elm.dragable.slider"; type: RECT;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
dragable.x: 1 1 0;
|
||||
dragable.y: 0 0 0;
|
||||
dragable.confine: "elm.swallow.bar";
|
||||
|
@ -1906,6 +1913,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -1923,6 +1931,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
part { name: "slideevent"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
@ -1958,6 +1967,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
part { name: "elm.dragable2.slider"; type: RECT;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
dragable.x: 1 1 0;
|
||||
dragable.y: 0 0 0;
|
||||
dragable.confine: "elm.swallow.bar";
|
||||
|
@ -1978,6 +1988,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob2";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -2000,6 +2011,7 @@ group { name: "elm/slider/range/horizontal/default";
|
|||
}
|
||||
part { name: "slideevent2"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable2.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
@ -2678,6 +2690,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
part { name: "elm.dragable.slider"; type: RECT;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
dragable.x: 0 0 0;
|
||||
dragable.y: 1 1 0;
|
||||
dragable.confine: "elm.swallow.bar";
|
||||
|
@ -2693,6 +2706,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -2710,6 +2724,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
part { name: "slideevent"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
@ -2745,6 +2760,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
part { name: "elm.dragable2.slider"; type: RECT;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
dragable.x: 0 0 0;
|
||||
dragable.y: 1 1 0;
|
||||
dragable.confine: "elm.swallow.bar";
|
||||
|
@ -2765,6 +2781,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
}
|
||||
part { name: "knob2";
|
||||
nomouse;
|
||||
description { state: "default" 0.0;
|
||||
image.normal: "knob";
|
||||
fixed: 1 1;
|
||||
|
@ -2787,6 +2804,7 @@ group { name: "elm/slider/range/vertical/default";
|
|||
}
|
||||
part { name: "slideevent2"; type: RECT; repeat_events: 1;
|
||||
scale: 1;
|
||||
nomouse;
|
||||
ignore_flags: ON_HOLD;
|
||||
dragable.events: "elm.dragable2.slider";
|
||||
description { state: "default" 0.0;
|
||||
|
|
|
@ -91,7 +91,8 @@ elm_public_eolian_files = \
|
|||
lib/elementary/efl_ui_list.eo \
|
||||
lib/elementary/efl_ui_panes_part.eo \
|
||||
lib/elementary/efl_ui_progressbar_part.eo \
|
||||
lib/elementary/efl_ui_slider_part_indicator.eo \
|
||||
lib/elementary/elm_slider.eo \
|
||||
lib/elementary/elm_slider_part_indicator.eo \
|
||||
lib/elementary/efl_ui_textpath_part.eo \
|
||||
lib/elementary/efl_ui_widget_part.eo \
|
||||
lib/elementary/efl_ui_widget_part_bg.eo \
|
||||
|
@ -173,7 +174,6 @@ elm_legacy_eolian_files = \
|
|||
lib/elementary/efl_ui_bg_widget_legacy.eo \
|
||||
lib/elementary/efl_ui_video_legacy.eo \
|
||||
lib/elementary/efl_ui_frame_legacy.eo \
|
||||
lib/elementary/efl_ui_slider_legacy.eo \
|
||||
lib/elementary/efl_ui_panes_legacy.eo \
|
||||
lib/elementary/efl_ui_image_zoomable_legacy.eo \
|
||||
lib/elementary/efl_ui_flip_legacy.eo \
|
||||
|
@ -393,7 +393,9 @@ includesunstable_HEADERS = \
|
|||
lib/elementary/elm_widget_scroller.h \
|
||||
lib/elementary/elm_widget_segment_control.h \
|
||||
lib/elementary/elm_widget_separator.h \
|
||||
lib/elementary/elm_widget_slider.h \
|
||||
lib/elementary/efl_ui_slider_private.h \
|
||||
lib/elementary/efl_ui_slider_interval_private.h \
|
||||
lib/elementary/elm_widget_slideshow.h \
|
||||
lib/elementary/elm_widget_spinner.h \
|
||||
lib/elementary/efl_ui_spin_private.h \
|
||||
|
@ -612,7 +614,6 @@ includesub_HEADERS = \
|
|||
lib/elementary/elm_separator_legacy.h \
|
||||
lib/elementary/elm_slider.h \
|
||||
lib/elementary/elm_slider_common.h \
|
||||
lib/elementary/efl_ui_slider_eo.h \
|
||||
lib/elementary/elm_slider_legacy.h \
|
||||
lib/elementary/elm_slideshow.h \
|
||||
lib/elementary/elm_slideshow_common.h \
|
||||
|
@ -762,6 +763,7 @@ lib_elementary_libelementary_la_SOURCES = \
|
|||
lib/elementary/elm_scroller.c \
|
||||
lib/elementary/elm_segment_control.c \
|
||||
lib/elementary/elm_separator.c \
|
||||
lib/elementary/elm_slider.c \
|
||||
lib/elementary/efl_ui_slider.c \
|
||||
lib/elementary/efl_ui_slider_interval.c \
|
||||
lib/elementary/efl_ui_spin.c \
|
||||
|
|
|
@ -1057,8 +1057,8 @@ add_tests:
|
|||
ADD_TEST(NULL, "Range Values", "Progressbar 2", test_progressbar2);
|
||||
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Progressbar", test_ui_progressbar);
|
||||
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Nstate", test_nstate);
|
||||
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Slider_Interval", test_slider_interval);
|
||||
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Slider", test_ui_slider);
|
||||
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Slider_Interval", test_slider_interval);
|
||||
|
||||
//------------------------------//
|
||||
ADD_TEST(NULL, "Booleans", "Check", test_check);
|
||||
|
|
|
@ -29,9 +29,8 @@ _slider_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
|||
void
|
||||
test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Eo *win, *bx, *hbx, *ic;
|
||||
Eo *win, *bx, *hbx;
|
||||
double step;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
|
||||
efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
|
||||
|
@ -41,47 +40,62 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
||||
efl_content_set(win, efl_added));
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
|
||||
ic = efl_add(EFL_UI_IMAGE_CLASS, win,
|
||||
efl_file_set(efl_added, buf, NULL));
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Horizontal"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_text_set(efl_added, "Horizontal"),
|
||||
efl_content_set(efl_added, ic),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(160, 0)),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.5f"),
|
||||
efl_gfx_size_hint_weight_set(efl_added, EVAS_HINT_EXPAND, 0.0),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Horizontal Inverted"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(160, 0)),
|
||||
efl_gfx_size_hint_weight_set(efl_added, EVAS_HINT_EXPAND, 0.0),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_LEFT),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Manual step"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
step = _step_size_calculate(0, 9);
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_text_set(efl_added, "Manual step"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.1f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.1f"),
|
||||
efl_gfx_size_hint_align_set(efl_added, 0.5, 0.5),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Disabled"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Vertical"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
hbx = efl_add(EFL_UI_BOX_CLASS, bx,
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Vertical"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_value_set(efl_added, 70),
|
||||
|
@ -89,10 +103,7 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_pack(hbx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Disabled"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
|
||||
|
@ -100,25 +111,20 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_pack(hbx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Always Show Indicator:"),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_range_value_set(efl_added, 35),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN),
|
||||
efl_pack(hbx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Limit"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_text_set(efl_added, "Limited (0-100)"),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(260, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 0, 150),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED, _slider_changed_cb, NULL),
|
||||
|
|
|
@ -40,45 +40,52 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
|
|||
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
||||
efl_content_set(win, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Horizontal"),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(160, 0)),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.5f"),
|
||||
efl_ui_slider_interval_value_set(efl_added, 0.4, 0.9),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Manual step"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
step = _step_size_calculate(0, 9);
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_text_set(efl_added, "Manual step"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.1f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.1f"),
|
||||
efl_ui_slider_interval_value_set(efl_added, 0.4, 0.9),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Disabled"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_slider_interval_value_set(efl_added, 50, 100),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Vertical"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
hbx = efl_add(EFL_UI_BOX_CLASS, bx,
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Vertical"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_slider_interval_value_set(efl_added, 50, 100),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
|
@ -86,35 +93,21 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
|
|||
efl_pack(hbx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Disabled"),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_slider_interval_value_set(efl_added, 50, 100),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
|
||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||
efl_pack(hbx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx,
|
||||
efl_text_set(efl_added, "Always Show Indicator:"),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
|
||||
efl_pack(hbx, efl_added));
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
efl_text_set(efl_added, "Limited (100-500)"),
|
||||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
|
||||
efl_text_set(efl_added, "Limited (100-500)"),
|
||||
efl_ui_slider_part_indicator_visible_mode_set(efl_part(efl_added, "indicator"),
|
||||
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS),
|
||||
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(260, 0)),
|
||||
efl_ui_format_string_set(efl_added, "%1.0f units"),
|
||||
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
||||
efl_ui_range_min_max_set(efl_added, 0, 600),
|
||||
efl_ui_slider_interval_value_set(efl_added, 100, 500),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
|
|
|
@ -206,7 +206,13 @@ typedef Eo Efl_Ui_Focus_Manager;
|
|||
# include <efl_ui_nstate.h>
|
||||
# include <efl_ui_calendar.h>
|
||||
# include <efl_ui_button_eo.h>
|
||||
# include <efl_ui_slider_eo.h>
|
||||
|
||||
/* FIXME: Multibuttonentry must not use elm_widget_item */
|
||||
# warning Efl.Ui.Multibutton is not available yet without Elementary.h
|
||||
# if 0
|
||||
# include <efl_ui_multibuttonentry.h>
|
||||
# endif
|
||||
|
||||
# include <efl_ui_flip_eo.h>
|
||||
# include <efl_ui_frame_eo.h>
|
||||
# include <efl_ui_check_eo.h>
|
||||
|
|
|
@ -323,6 +323,7 @@ typedef Eo Efl_Ui_Focus_Manager;
|
|||
# include <efl_ui_timepicker.eo.h>
|
||||
# include <efl_ui_tags.eo.h>
|
||||
# include <efl_ui_image_factory.eo.h>
|
||||
# include <efl_ui_slider.eo.h>
|
||||
# include <efl_ui_slider_interval.eo.h>
|
||||
# include <efl_ui_layout_factory.eo.h>
|
||||
# include <efl_ui_item.eo.h>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,19 +1,13 @@
|
|||
class Efl.Ui.Slider (Efl.Ui.Layout.Object, Efl.Ui.Range, Efl.Ui.Direction,
|
||||
Efl.Access.Value, Efl.Text, Efl.Text_Markup, Efl.Ui.Format,
|
||||
Efl.Ui.Translatable, Efl.Access.Widget.Action,
|
||||
Efl.Access.Value,
|
||||
Efl.Access.Widget.Action,
|
||||
Efl.Content)
|
||||
{
|
||||
[[Elementary slider class]]
|
||||
legacy_prefix: elm_slider;
|
||||
methods {
|
||||
}
|
||||
parts {
|
||||
indicator: Efl.Ui.Slider_Part_Indicator;
|
||||
[[A floating indicator above the slider.]]
|
||||
}
|
||||
legacy_prefix: null;
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Canvas.Group.group_calculate;
|
||||
Efl.Object.destructor;
|
||||
Efl.Ui.Widget.theme_apply;
|
||||
Efl.Ui.Widget.on_access_activate;
|
||||
Efl.Ui.Focus.Object.on_focus_update;
|
||||
|
@ -26,13 +20,6 @@ class Efl.Ui.Slider (Efl.Ui.Layout.Object, Efl.Ui.Range, Efl.Ui.Direction,
|
|||
Efl.Access.Value.range { get; }
|
||||
Efl.Access.Value.increment { get; }
|
||||
Efl.Access.Widget.Action.elm_actions { get; }
|
||||
Efl.Text.text { get; set; }
|
||||
Efl.Text_Markup.markup { get; set; }
|
||||
Efl.Ui.Format.format_cb { set; }
|
||||
Efl.Ui.Translatable.translatable_text { get; set; }
|
||||
Efl.Content.content { get; set; }
|
||||
Efl.Content.content_unset;
|
||||
Efl.Part.part;
|
||||
}
|
||||
events {
|
||||
changed; [[Called when slider changed]]
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include "efl_ui_slider.eo.h"
|
|
@ -4,44 +4,111 @@
|
|||
|
||||
#define EFL_ACCESS_OBJECT_PROTECTED
|
||||
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED
|
||||
#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
|
||||
|
||||
#include <Elementary.h>
|
||||
#include "elm_priv.h"
|
||||
#include "efl_ui_slider_private.h"
|
||||
#include "efl_ui_slider_interval_private.h"
|
||||
|
||||
#define MY_CLASS EFL_UI_SLIDER_INTERVAL_CLASS
|
||||
#define MY_CLASS_PFX efl_ui_slider_interval
|
||||
#define MY_CLASS_NAME "Efl.Ui.Slider_Interval"
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_slider_interval_interval_value_get(const Eo *obj, void *sd EINA_UNUSED, double *from, double *to)
|
||||
#define SLIDER_DELAY_CHANGED_INTERVAL 1.2
|
||||
|
||||
static Eina_Bool
|
||||
_delay_change(void *data)
|
||||
{
|
||||
Efl_Ui_Slider_Data *pd = efl_data_scope_get(obj, EFL_UI_SLIDER_CLASS);
|
||||
if (from) *from = fmin(pd->intvl_from, pd->intvl_to);
|
||||
if (to) *to = fmax(pd->intvl_from, pd->intvl_to);
|
||||
EFL_UI_SLIDER_INTERVAL_DATA_GET(data, pd);
|
||||
|
||||
pd->delay = NULL;
|
||||
efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_DELAY_CHANGED, NULL);
|
||||
|
||||
if (_elm_config->atspi_mode)
|
||||
efl_access_value_changed_signal_emit(data);
|
||||
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
_is_inverted(Efl_Ui_Dir dir)
|
||||
void
|
||||
_efl_ui_slider_interval_val_fetch(Evas_Object *obj, Efl_Ui_Slider_Interval_Data *pd, Eina_Bool user_event)
|
||||
{
|
||||
if ((dir == EFL_UI_DIR_LEFT) || (dir == EFL_UI_DIR_UP))
|
||||
return EINA_TRUE;
|
||||
double posx = 0.0, posy = 0.0, pos = 0.0, val;
|
||||
double posx2 = 0.0, posy2 = 0.0, pos2 = 0.0, val2;
|
||||
|
||||
return EINA_FALSE;
|
||||
EFL_UI_SLIDER_DATA_GET(obj, sd);
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
&posx, &posy);
|
||||
else
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
&posx, &posy);
|
||||
if (efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE)) pos = posx;
|
||||
else pos = posy;
|
||||
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
&posx2, &posy2);
|
||||
else
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
&posx2, &posy2);
|
||||
if (efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE)) pos2 = posx2;
|
||||
else pos2 = posy2;
|
||||
|
||||
val = (pos * (sd->val_max - sd->val_min)) + sd->val_min;
|
||||
val2 = (pos2 * (sd->val_max - sd->val_min)) + sd->val_min;
|
||||
|
||||
if (val > pd->intvl_to)
|
||||
{
|
||||
val = pd->intvl_to;
|
||||
efl_ui_slider_val_set(obj);
|
||||
}
|
||||
else if (val2 < pd->intvl_from)
|
||||
{
|
||||
val2 = pd->intvl_from;
|
||||
efl_ui_slider_val_set(obj);
|
||||
}
|
||||
|
||||
if (fabs(val - pd->intvl_from) > DBL_EPSILON)
|
||||
{
|
||||
sd->val = val;
|
||||
pd->intvl_from = val;
|
||||
if (user_event)
|
||||
{
|
||||
efl_event_callback_call(obj, EFL_UI_SLIDER_EVENT_CHANGED, NULL);
|
||||
efl_event_callback_legacy_call(obj, EFL_UI_SLIDER_EVENT_CHANGED, NULL);
|
||||
ecore_timer_del(pd->delay);
|
||||
pd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, _delay_change, obj);
|
||||
}
|
||||
}
|
||||
|
||||
if (fabs(val2 - pd->intvl_to) > DBL_EPSILON)
|
||||
{
|
||||
pd->intvl_to = val2;
|
||||
if (user_event)
|
||||
{
|
||||
efl_event_callback_call(obj, EFL_UI_SLIDER_EVENT_CHANGED, NULL);
|
||||
efl_event_callback_legacy_call(obj, EFL_UI_SLIDER_EVENT_CHANGED, NULL);
|
||||
ecore_timer_del(pd->delay);
|
||||
pd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, _delay_change, obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_val_set(Evas_Object *obj)
|
||||
void
|
||||
_efl_ui_slider_interval_val_set(Evas_Object *obj, Efl_Ui_Slider_Interval_Data *pd)
|
||||
{
|
||||
Eina_Bool rtl;
|
||||
double pos, pos2;
|
||||
|
||||
EFL_UI_SLIDER_DATA_GET(obj, sd);
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
|
||||
if (sd->val_max > sd->val_min)
|
||||
{
|
||||
pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min);
|
||||
pos2 = (sd->intvl_to - sd->val_min) / (sd->val_max - sd->val_min);
|
||||
pos = (pd->intvl_from - sd->val_min) / (sd->val_max - sd->val_min);
|
||||
pos2 = (pd->intvl_to - sd->val_min) / (sd->val_max - sd->val_min);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -52,71 +119,190 @@ _val_set(Evas_Object *obj)
|
|||
if (pos < 0.0) pos = 0.0;
|
||||
else if (pos > 1.0)
|
||||
pos = 1.0;
|
||||
|
||||
if (pos2 < 0.0) pos2 = 0.0;
|
||||
else if (pos2 > 1.0)
|
||||
pos2 = 1.0;
|
||||
|
||||
rtl = efl_ui_mirrored_get(obj);
|
||||
if ((!rtl && _is_inverted(sd->dir)) ||
|
||||
(rtl && ((sd->dir == EFL_UI_DIR_UP) ||
|
||||
(sd->dir == EFL_UI_DIR_RIGHT))))
|
||||
if (elm_widget_is_legacy(obj))
|
||||
{
|
||||
pos = 1.0 - pos;
|
||||
pos2 = 1.0 - pos2;
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
pos, pos);
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
pos2, pos2);
|
||||
}
|
||||
else
|
||||
{
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
pos, pos);
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
pos2, pos2);
|
||||
}
|
||||
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
edje_object_part_drag_value_set
|
||||
(wd->resize_obj, "elm.dragable.slider", pos, pos);
|
||||
|
||||
if (sd->intvl_enable)
|
||||
edje_object_part_drag_value_set
|
||||
(wd->resize_obj, "elm.dragable2.slider", pos2, pos2);
|
||||
|
||||
// emit accessibility event also if value was changed by API
|
||||
if (_elm_config->atspi_mode)
|
||||
efl_access_value_changed_signal_emit(obj);
|
||||
|
||||
evas_object_smart_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_visuals_refresh(Eo *obj)
|
||||
void
|
||||
_efl_ui_slider_interval_down_knob(Evas_Object *obj, Efl_Ui_Slider_Interval_Data *pd, double button_x, double button_y)
|
||||
{
|
||||
_val_set(obj);
|
||||
evas_object_smart_changed(obj);
|
||||
EFL_UI_SLIDER_DATA_GET(obj, sd);
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
|
||||
double posx = 0.0, posy = 0.0, posx2 = 0.0, posy2 = 0.0, diff1, diff2, diff3;
|
||||
|
||||
pd->intvl_flag = 0;
|
||||
|
||||
if (elm_widget_is_legacy(obj))
|
||||
{
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
&posx, &posy);
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
&posx2, &posy2);
|
||||
}
|
||||
else
|
||||
{
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
&posx, &posy);
|
||||
efl_ui_drag_value_get(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
&posx2, &posy2);
|
||||
}
|
||||
|
||||
if (efl_ui_dir_is_horizontal(sd->dir, EINA_TRUE))
|
||||
{
|
||||
diff1 = fabs(button_x - posx);
|
||||
diff2 = fabs(button_x - posx2);
|
||||
diff3 = button_x - posx;
|
||||
}
|
||||
else
|
||||
{
|
||||
diff1 = fabs(button_y - posy);
|
||||
diff2 = fabs(button_y - posy2);
|
||||
diff3 = button_y - posy;
|
||||
}
|
||||
|
||||
if (diff1 < diff2)
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
button_x, button_y);
|
||||
pd->intvl_flag = 1;
|
||||
}
|
||||
else if (diff1 > diff2)
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
pd->intvl_flag = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diff3 < 0)
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
button_x, button_y);
|
||||
pd->intvl_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
pd->intvl_flag = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_efl_ui_slider_interval_move_knob(Evas_Object *obj, Efl_Ui_Slider_Interval_Data *pd, double button_x, double button_y)
|
||||
{
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||
|
||||
if (pd->intvl_flag == 1)
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
button_x, button_y);
|
||||
}
|
||||
else if (pd->intvl_flag == 2)
|
||||
{
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
else
|
||||
efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable2.slider"),
|
||||
button_x, button_y);
|
||||
}
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_slider_interval_interval_value_set(Eo *obj, void *sd EINA_UNUSED, double from, double to)
|
||||
_efl_ui_slider_interval_interval_value_set(Eo *obj, Efl_Ui_Slider_Interval_Data *pd, double from, double to)
|
||||
{
|
||||
Efl_Ui_Slider_Data *pd = efl_data_scope_get(obj, EFL_UI_SLIDER_CLASS);
|
||||
|
||||
EFL_UI_SLIDER_DATA_GET(obj, sd);
|
||||
pd->intvl_from = from;
|
||||
pd->val = from;
|
||||
sd->val = from;
|
||||
pd->intvl_to = to;
|
||||
|
||||
if (pd->intvl_from < pd->val_min) pd->intvl_from = pd->val_min;
|
||||
if (pd->intvl_to > pd->val_max) pd->intvl_to = pd->val_max;
|
||||
if (pd->intvl_from < sd->val_min) {
|
||||
pd->intvl_from = sd->val_min;
|
||||
sd->val = sd->val_min;
|
||||
}
|
||||
if (pd->intvl_to > sd->val_max) pd->intvl_to = sd->val_max;
|
||||
|
||||
_visuals_refresh(obj);
|
||||
efl_ui_slider_val_set(obj);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_slider_interval_interval_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Slider_Interval_Data *pd, double *from, double *to)
|
||||
{
|
||||
if (from) *from = fmin(pd->intvl_from, pd->intvl_to);
|
||||
if (to) *to = fmax(pd->intvl_from, pd->intvl_to);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Object *
|
||||
_efl_ui_slider_interval_efl_object_finalize(Eo *obj, void *sd EINA_UNUSED)
|
||||
_efl_ui_slider_interval_efl_object_constructor(Eo *obj, Efl_Ui_Slider_Interval_Data *pd EINA_UNUSED)
|
||||
{
|
||||
Efl_Ui_Slider_Data *pd = efl_data_scope_get(obj, EFL_UI_SLIDER_CLASS);
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
||||
|
||||
pd->intvl_enable = EINA_TRUE;
|
||||
|
||||
elm_widget_theme_klass_set(obj, "slider_interval");
|
||||
efl_ui_widget_theme_apply(obj);
|
||||
|
||||
elm_layout_signal_emit(obj, "elm,slider,range,enable", "elm");
|
||||
if (pd->indicator_show)
|
||||
edje_object_signal_emit(pd->popup2, "elm,state,val,show", "elm");
|
||||
|
||||
obj = efl_finalize(efl_super(obj, MY_CLASS));
|
||||
if (!elm_widget_theme_klass_get(obj))
|
||||
elm_widget_theme_klass_set(obj, "slider_interval");
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_slider_interval_efl_object_destructor(Eo *obj,
|
||||
Efl_Ui_Slider_Interval_Data *pd)
|
||||
{
|
||||
ecore_timer_del(pd->delay);
|
||||
|
||||
efl_destructor(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
#define EFL_UI_SLIDER_INTERVAL_EXTRA_OPS \
|
||||
EFL_UI_SLIDER_VAL_FETCH_OPS(efl_ui_slider_interval), \
|
||||
EFL_UI_SLIDER_VAL_SET_OPS(efl_ui_slider_interval), \
|
||||
EFL_UI_SLIDER_DOWN_KNOB_OPS(efl_ui_slider_interval), \
|
||||
EFL_UI_SLIDER_MOVE_KNOB_OPS(efl_ui_slider_interval), \
|
||||
|
||||
#include "efl_ui_slider_interval.eo.c"
|
||||
|
|
|
@ -6,7 +6,6 @@ class Efl.Ui.Slider_Interval (Efl.Ui.Slider)
|
|||
|
||||
@since 1.21
|
||||
]]
|
||||
data: null;
|
||||
legacy_prefix: null;
|
||||
methods {
|
||||
@property interval_value {
|
||||
|
@ -27,6 +26,7 @@ class Efl.Ui.Slider_Interval (Efl.Ui.Slider)
|
|||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.finalize;
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef EFL_UI_SLIDER_INTERVAL_PRIVATE_H
|
||||
#define EFL_UI_SLIDER_INTERVAL_PRIVATE_H
|
||||
|
||||
#include "Elementary.h"
|
||||
typedef struct _Efl_Ui_Slider_Interval_Data Efl_Ui_Slider_Interval_Data;
|
||||
struct _Efl_Ui_Slider_Interval_Data
|
||||
{
|
||||
Ecore_Timer *delay;
|
||||
double intvl_from, intvl_to;
|
||||
int intvl_flag;
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#define EFL_UI_SLIDER_INTERVAL_DATA_GET(o, sd) \
|
||||
Efl_Ui_Slider_Interval_Data * sd = efl_data_scope_get(o, EFL_UI_SLIDER_INTERVAL_CLASS)
|
||||
|
||||
#define EFL_UI_SLIDER_INTERVAL_DATA_GET_OR_RETURN(o, sd, ...) \
|
||||
Efl_Ui_Slider_Interval_Data * sd = efl_data_scope_safe_get(o, EFL_UI_SLIDER_INTERVAL_CLASS); \
|
||||
if (EINA_UNLIKELY(!sd)) \
|
||||
{ \
|
||||
ERR("No widget data for object %p (%s)", \
|
||||
o, evas_object_type_get(o)); \
|
||||
return __VA_ARGS__; \
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,9 +0,0 @@
|
|||
class Efl.Ui.Slider_Legacy (Efl.Ui.Slider, Efl.Ui.Legacy)
|
||||
{
|
||||
[[Elementary slider class]]
|
||||
data: null;
|
||||
implements {
|
||||
class.constructor;
|
||||
Efl.Object.constructor;
|
||||
}
|
||||
}
|
|
@ -3,69 +3,37 @@
|
|||
|
||||
#include "Elementary.h"
|
||||
|
||||
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
|
||||
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
|
||||
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
|
||||
* IT AT RUNTIME.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup Widget
|
||||
* @{
|
||||
*
|
||||
* @section elm-slider-class The Elementary Slider Class
|
||||
*
|
||||
* Elementary, besides having the @ref Slider widget, exposes its
|
||||
* foundation -- the Elementary Slider Class -- in order to create other
|
||||
* widgets which are a slider with some more logic on top.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base layout smart data extended with slider instance data.
|
||||
*/
|
||||
typedef struct _Efl_Ui_Slider_Data Efl_Ui_Slider_Data;
|
||||
struct _Efl_Ui_Slider_Data
|
||||
{
|
||||
Evas_Object *spacer, *popup, *popup2, *track, *track2;
|
||||
Evas_Object *spacer;
|
||||
Ecore_Timer *delay;
|
||||
|
||||
double val, val_min, val_max, val2, step;
|
||||
double val, val_min, val_max, step;
|
||||
|
||||
Ecore_Timer *wheel_indicator_timer;
|
||||
double wheel_indicator_duration;
|
||||
Efl_Ui_Slider_Indicator_Visible_Mode indicator_visible_mode; /**< indicator_visible_mode of the slider.
|
||||
This indicates when to show an indicator */
|
||||
|
||||
Evas_Coord size;
|
||||
Evas_Coord downx, downy;
|
||||
Efl_Ui_Dir dir;
|
||||
|
||||
double intvl_from, intvl_to;
|
||||
|
||||
Efl_Ui_Format_Func_Cb format_cb;
|
||||
Eina_Free_Cb format_free_cb;
|
||||
void *format_cb_data;
|
||||
Eina_Strbuf *format_strbuf;
|
||||
|
||||
Efl_Ui_Format_Func_Cb indi_format_cb;
|
||||
Eina_Free_Cb indi_format_free_cb;
|
||||
void *indi_format_cb_data;
|
||||
Eina_Strbuf *indi_format_strbuf;
|
||||
const char *indi_template;
|
||||
|
||||
|
||||
Eina_Bool indicator_show : 1;
|
||||
Eina_Bool spacer_down : 1;
|
||||
Eina_Bool frozen : 1;
|
||||
Eina_Bool units_show : 1;
|
||||
Eina_Bool popup_visible : 1;
|
||||
Eina_Bool intvl_enable : 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
# define EFL_UI_SLIDER_VAL_FETCH_OPS(_pfx) \
|
||||
EFL_OBJECT_OP_FUNC(efl_ui_slider_val_fetch, _##_pfx##_val_fetch)
|
||||
|
||||
# define EFL_UI_SLIDER_VAL_SET_OPS(_pfx) \
|
||||
EFL_OBJECT_OP_FUNC(efl_ui_slider_val_set, _##_pfx##_val_set)
|
||||
|
||||
# define EFL_UI_SLIDER_DOWN_KNOB_OPS(_pfx) \
|
||||
EFL_OBJECT_OP_FUNC(efl_ui_slider_down_knob, _##_pfx##_down_knob)
|
||||
|
||||
# define EFL_UI_SLIDER_MOVE_KNOB_OPS(_pfx) \
|
||||
EFL_OBJECT_OP_FUNC(efl_ui_slider_move_knob, _##_pfx##_move_knob)
|
||||
|
||||
#define EFL_UI_SLIDER_DATA_GET(o, sd) \
|
||||
Efl_Ui_Slider_Data * sd = efl_data_scope_get(o, EFL_UI_SLIDER_CLASS)
|
||||
|
||||
|
@ -78,4 +46,6 @@ struct _Efl_Ui_Slider_Data
|
|||
return __VA_ARGS__; \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -158,7 +158,7 @@ struct _Elm_Theme
|
|||
* the users config doesn't need to be wiped - simply new values need
|
||||
* to be put in
|
||||
*/
|
||||
# define ELM_CONFIG_FILE_GENERATION 0x0010
|
||||
# define ELM_CONFIG_FILE_GENERATION 0x0011
|
||||
# define ELM_CONFIG_VERSION_EPOCH_OFFSET 16
|
||||
# define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << ELM_CONFIG_VERSION_EPOCH_OFFSET) | \
|
||||
ELM_CONFIG_FILE_GENERATION)
|
||||
|
@ -802,6 +802,10 @@ void efl_ui_win_inlined_parent_set(Eo *obj, Efl_Canvas_Object *parent);
|
|||
/* Internal EO APIs */
|
||||
const Elm_Layout_Part_Alias_Description *elm_layout_content_aliases_get(const Eo *obj);
|
||||
const Elm_Layout_Part_Alias_Description *elm_layout_text_aliases_get(const Eo *obj);
|
||||
void efl_ui_slider_val_fetch(Evas_Object *obj, Eina_Bool user_event);
|
||||
void efl_ui_slider_val_set(Evas_Object *obj);
|
||||
void efl_ui_slider_down_knob(Evas_Object *obj, double button_x, double button_y);
|
||||
void efl_ui_slider_move_knob(Evas_Object *obj, double button_x, double button_y);
|
||||
//void elm_layout_sizing_eval_eoapi(Eo *obj);
|
||||
|
||||
# define _ELM_LAYOUT_ALIASES_IMPLEMENT(_pfx, _typ) \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,26 @@
|
|||
class Elm.Slider (Efl.Ui.Slider_Interval, Efl.Ui.Legacy,
|
||||
Efl.Text, Efl.Text_Markup, Efl.Ui.Format,
|
||||
Efl.Ui.Translatable)
|
||||
{
|
||||
[[Elementary slider class]]
|
||||
eo_prefix: elm_obj_slider;
|
||||
legacy_prefix: elm_slider;
|
||||
parts {
|
||||
indicator: Elm.Slider.Part_Indicator;
|
||||
[[A floating indicator above the slider.]]
|
||||
}
|
||||
implements {
|
||||
class.constructor;
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
Efl.Canvas.Group.group_calculate;
|
||||
Efl.Ui.Widget.theme_apply;
|
||||
Efl.Ui.Widget.widget_event;
|
||||
Efl.Ui.Focus.Object.on_focus_update;
|
||||
Efl.Text.text { get; set; }
|
||||
Efl.Text_Markup.markup { get; set; }
|
||||
Efl.Ui.Format.format_cb { set; }
|
||||
Efl.Ui.Translatable.translatable_text { get; set; }
|
||||
Efl.Part.part;
|
||||
}
|
||||
}
|
|
@ -76,9 +76,8 @@
|
|||
|
||||
#include "elm_slider_common.h"
|
||||
#ifdef EFL_EO_API_SUPPORT
|
||||
#include "efl_ui_slider_eo.h"
|
||||
#include "efl_ui_slider_part_indicator.eo.h"
|
||||
#include <efl_ui_slider_interval.eo.h>
|
||||
#include "elm_slider.eo.h"
|
||||
#include "elm_slider_part_indicator.eo.h"
|
||||
#endif
|
||||
#ifndef EFL_NOLEGACY_API_SUPPORT
|
||||
#include "elm_slider_legacy.h"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import efl_ui;
|
||||
|
||||
class Efl.Ui.Slider_Part_Indicator (Efl.Ui.Layout.Part, Efl.Ui.Format)
|
||||
class Elm.Slider.Part_Indicator (Efl.Ui.Layout.Part, Efl.Ui.Format)
|
||||
{
|
||||
[[Elementary slider internal part class]]
|
||||
data: null;
|
|
@ -0,0 +1,73 @@
|
|||
#ifndef ELM_WIDGET_SLIDER_H
|
||||
#define ELM_WIDGET_SLIDER_H
|
||||
|
||||
#include "Elementary.h"
|
||||
|
||||
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
|
||||
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
|
||||
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
|
||||
* IT AT RUNTIME.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup Widget
|
||||
* @{
|
||||
*
|
||||
* @section elm-slider-class The Elementary Slider Class
|
||||
*
|
||||
* Elementary, besides having the @ref Slider widget, exposes its
|
||||
* foundation -- the Elementary Slider Class -- in order to create other
|
||||
* widgets which are a slider with some more logic on top.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base layout smart data extended with slider instance data.
|
||||
*/
|
||||
typedef struct _Elm_Slider_Data Elm_Slider_Data;
|
||||
struct _Elm_Slider_Data
|
||||
{
|
||||
Evas_Object *popup, *popup2, *track, *track2;
|
||||
|
||||
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 */
|
||||
|
||||
Evas_Coord size;
|
||||
|
||||
Efl_Ui_Format_Func_Cb format_cb;
|
||||
Eina_Free_Cb format_free_cb;
|
||||
void *format_cb_data;
|
||||
Eina_Strbuf *format_strbuf;
|
||||
|
||||
Efl_Ui_Format_Func_Cb indi_format_cb;
|
||||
Eina_Free_Cb indi_format_free_cb;
|
||||
void *indi_format_cb_data;
|
||||
Eina_Strbuf *indi_format_strbuf;
|
||||
const char *indi_template;
|
||||
|
||||
|
||||
Eina_Bool indicator_show : 1;
|
||||
Eina_Bool units_show : 1;
|
||||
Eina_Bool popup_visible : 1;
|
||||
Eina_Bool intvl_enable : 1;
|
||||
Eina_Bool spacer_down : 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#define ELM_SLIDER_DATA_GET(o, sd) \
|
||||
Elm_Slider_Data * sd = efl_data_scope_get(o, ELM_SLIDER_CLASS)
|
||||
|
||||
#define ELM_SLIDER_DATA_GET_OR_RETURN(o, sd, ...) \
|
||||
Elm_Slider_Data * sd = efl_data_scope_safe_get(o, ELM_SLIDER_CLASS); \
|
||||
if (EINA_UNLIKELY(!sd)) \
|
||||
{ \
|
||||
ERR("No widget data for object %p (%s)", \
|
||||
o, evas_object_type_get(o)); \
|
||||
return __VA_ARGS__; \
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue