From e930af1ad93fff7306774a8df81a0ad2cc210dbd Mon Sep 17 00:00:00 2001 From: Gustavo Lima Chaves Date: Tue, 28 Sep 2010 15:09:19 +0000 Subject: [PATCH] New API functions for elm slider. EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end); will set a *right* aligned sub-object relative to the slider. EAPI const Evas_Object *elm_slider_end_get(const Evas_Object *obj); Getter for that object. EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj); Unparent a previously set end object. EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj); The same for the icon sub-object. EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show); EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj); Set/get whether the slider should display the augmented knob (indicator) at mouse drag at all. SVN revision: 52852 --- legacy/elementary/data/themes/default.edc | 249 ++++++++++++++++++---- legacy/elementary/src/bin/test_slider.c | 9 +- legacy/elementary/src/lib/Elementary.h.in | 46 ++-- legacy/elementary/src/lib/elm_slider.c | 194 ++++++++++++++++- 4 files changed, 429 insertions(+), 69 deletions(-) diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index 680c51f33e..179d97d8fa 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/data/themes/default.edc @@ -11311,6 +11311,40 @@ collections { image: "sl_bt2_2.png" COMP; image: "sl_units.png" COMP; } + script { + public value_hide = 0; + public set_value_show() { + set_int(value_hide, 0); + } + public set_value_hide() { + set_int(value_hide, 1); + } + public thumb_down() { + if (get_int(value_hide) == 1) { + set_state(PART:"elm.indicator", "default", 0.0); + set_state(PART:"button3", "default", 0.0); + set_state(PART:"button4", "default", 0.0); + set_state(PART:"button5", "default", 0.0); + set_state(PART:"button6", "default", 0.0); + set_state(PART:"button7", "default", 0.0); + } else { + set_state(PART:"elm.indicator", "visible", 0.0); + set_state(PART:"button3", "visible", 0.0); + set_state(PART:"button4", "visible", 0.0); + set_state(PART:"button5", "visible", 0.0); + set_state(PART:"button6", "visible", 0.0); + set_state(PART:"button7", "visible", 0.0); + } + } + public thumb_up() { + set_state(PART:"elm.indicator", "default", 0.0); + set_state(PART:"button3", "default", 0.0); + set_state(PART:"button4", "default", 0.0); + set_state(PART:"button5", "default", 0.0); + set_state(PART:"button6", "default", 0.0); + set_state(PART:"button7", "default", 0.0); + } + } parts { part { name: "base"; mouse_events: 0; @@ -11409,7 +11443,7 @@ collections { } } } - part { name: "elm.swallow.content"; + part { name: "elm.swallow.icon"; type: SWALLOW; description { state: "default" 0.0; visible: 0; @@ -11440,10 +11474,10 @@ collections { visible: 0; fixed: 1 1; align: 0.0 0.5; - rel1.to_x: "elm.swallow.content"; + rel1.to_x: "elm.swallow.icon"; rel1.relative: 1.0 0.0; rel1.offset: -1 4; - rel2.to_x: "elm.swallow.content"; + rel2.to_x: "elm.swallow.icon"; rel2.relative: 1.0 1.0; rel2.offset: -1 -5; color: 0 0 0 255; @@ -11462,6 +11496,31 @@ collections { rel2.offset: 0 -5; } } + part { + name: "elm.swallow.end"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + align: 1.0 0.5; + rel1 { + offset: -4 0; + relative: 1.0 0.0; + to_y: "elm.swallow.bar"; + } + rel2 { + offset: -3 -1; + to_y: "elm.swallow.bar"; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel2.offset: -4 -1; + } + } part { name: "units"; mouse_events: 0; description { state: "default" 0.0; @@ -11470,6 +11529,10 @@ collections { to_x: "elm.units"; offset: 0 5; } + rel2 { + to_x: "elm.units"; + offset: 5 -3; + } image { normal: "sl_units.png"; border: 0 5 3 8; @@ -11489,9 +11552,11 @@ collections { visible: 0; fixed: 1 1; align: 1.0 0.5; - rel1.relative: 1.0 0.0; - rel1.offset: 0 8; - rel2.relative: 1.0 1.0; + rel1.to_x: "elm.swallow.end"; + rel1.relative: 0.0 0.0; + rel1.offset: 0 8; + rel2.to_x: "elm.swallow.end"; + rel2.relative: 0.0 1.0; rel2.offset: 0 -9; color: 0 0 0 255; text { @@ -11766,13 +11831,25 @@ collections { signal: "elm,state,icon,visible"; source: "elm"; action: STATE_SET "visible" 0.0; - target: "elm.swallow.content"; + target: "elm.swallow.icon"; } program { name: "icon_hide"; signal: "elm,state,icon,hidden"; source: "elm"; action: STATE_SET "default" 0.0; - target: "elm.swallow.content"; + target: "elm.swallow.icon"; + } + program { name: "end_show"; + signal: "elm,state,end,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.end"; + } + program { name: "end_hide"; + signal: "elm,state,end,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.end"; } program { name: "units_show"; signal: "elm,state,units,visible"; @@ -11802,27 +11879,34 @@ collections { target: "level"; target: "level2"; } + program { name: "set_val_show"; + signal: "elm,state,val,show"; + source: "elm"; + script { + set_value_show(); + } + } + program { name: "set_val_hide"; + signal: "elm,state,val,hide"; + source: "elm"; + script { + set_value_hide(); + } + } program { name: "val_show"; signal: "mouse,down,*"; source: "elm.dragable.slider"; - action: STATE_SET "visible" 0.0; - target: "elm.indicator"; - target: "button3"; - target: "button4"; - target: "button5"; - target: "button6"; - target: "button7"; + script { + thumb_down(); + } + } program { name: "val_hide"; signal: "mouse,up,*"; source: "elm.dragable.slider"; - action: STATE_SET "default" 0.0; - target: "elm.indicator"; - target: "button3"; - target: "button4"; - target: "button5"; - target: "button6"; - target: "button7"; + script { + thumb_up(); + } } } } @@ -11843,6 +11927,40 @@ collections { image: "slv_units.png" COMP; } + script { + public value_hide = 0; + public set_value_show() { + set_int(value_hide, 0); + } + public set_value_hide() { + set_int(value_hide, 1); + } + public thumb_down() { + if (get_int(value_hide) == 1) { + set_state(PART:"elm.indicator", "default", 0.0); + set_state(PART:"button3", "default", 0.0); + set_state(PART:"button4", "default", 0.0); + set_state(PART:"button5", "default", 0.0); + set_state(PART:"button6", "default", 0.0); + set_state(PART:"button7", "default", 0.0); + } else { + set_state(PART:"elm.indicator", "visible", 0.0); + set_state(PART:"button3", "visible", 0.0); + set_state(PART:"button4", "visible", 0.0); + set_state(PART:"button5", "visible", 0.0); + set_state(PART:"button6", "visible", 0.0); + set_state(PART:"button7", "visible", 0.0); + } + } + public thumb_up() { + set_state(PART:"elm.indicator", "default", 0.0); + set_state(PART:"button3", "default", 0.0); + set_state(PART:"button4", "default", 0.0); + set_state(PART:"button5", "default", 0.0); + set_state(PART:"button6", "default", 0.0); + set_state(PART:"button7", "default", 0.0); + } + } parts { part { name: "base"; mouse_events: 0; @@ -11941,7 +12059,7 @@ collections { } } } - part { name: "elm.swallow.content"; + part { name: "elm.swallow.icon"; type: SWALLOW; description { state: "default" 0.0; visible: 0; @@ -11972,10 +12090,10 @@ collections { visible: 0; fixed: 1 1; align: 0.5 0.0; - rel1.to_y: "elm.swallow.content"; + rel1.to_y: "elm.swallow.icon"; rel1.relative: 0.5 1.0; rel1.offset: 0 -1; - rel2.to_y: "elm.swallow.content"; + rel2.to_y: "elm.swallow.icon"; rel2.relative: 0.5 1.0; rel2.offset: -1 -1; color: 0 0 0 255; @@ -11994,6 +12112,31 @@ collections { rel2.offset: -5 0; } } + part { + name: "elm.swallow.end"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + align: 0.5 1.0; + rel1 { + offset: 0 -4; + relative: 0.0 1.0; + to_x: "elm.swallow.bar"; + } + rel2 { + offset: -1 -3; + to_x: "elm.swallow.bar"; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + rel2.offset: -1 -4; + } + } part { name: "units"; mouse_events: 0; description { state: "default" 0.0; @@ -12025,9 +12168,11 @@ collections { visible: 0; fixed: 1 1; align: 0.5 1.0; - rel1.relative: 0.0 1.0; + rel1.relative: 0.0 0.0; + rel1.to_y: "elm.swallow.end"; rel1.offset: 8 0; - rel2.relative: 1.0 1.0; + rel2.relative: 1.0 0.0; + rel2.to_y: "elm.swallow.end"; rel2.offset: -9 0; color: 0 0 0 255; text { @@ -12301,13 +12446,25 @@ collections { signal: "elm,state,icon,visible"; source: "elm"; action: STATE_SET "visible" 0.0; - target: "elm.swallow.content"; + target: "elm.swallow.icon"; } program { name: "icon_hide"; signal: "elm,state,icon,hidden"; source: "elm"; action: STATE_SET "default" 0.0; - target: "elm.swallow.content"; + target: "elm.swallow.icon"; + } + program { name: "end_show"; + signal: "elm,state,end,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.end"; + } + program { name: "end_hide"; + signal: "elm,state,end,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.end"; } program { name: "units_show"; signal: "elm,state,units,visible"; @@ -12337,27 +12494,33 @@ collections { target: "level"; target: "level2"; } + program { name: "set_val_show"; + signal: "elm,state,val,show"; + source: "elm"; + script { + set_value_show(); + } + } + program { name: "set_val_hide"; + signal: "elm,state,val,hide"; + source: "elm"; + script { + set_value_hide(); + } + } program { name: "val_show"; signal: "mouse,down,*"; source: "elm.dragable.slider"; - action: STATE_SET "visible" 0.0; - target: "elm.indicator"; - target: "button3"; - target: "button4"; - target: "button5"; - target: "button6"; - target: "button7"; + script { + thumb_down(); + } } program { name: "val_hide"; signal: "mouse,up,*"; source: "elm.dragable.slider"; - action: STATE_SET "default" 0.0; - target: "elm.indicator"; - target: "button3"; - target: "button4"; - target: "button5"; - target: "button6"; - target: "button7"; + script { + thumb_up(); + } } } } diff --git a/legacy/elementary/src/bin/test_slider.c b/legacy/elementary/src/bin/test_slider.c index 6439202ae8..a4f615217c 100644 --- a/legacy/elementary/src/bin/test_slider.c +++ b/legacy/elementary/src/bin/test_slider.c @@ -46,8 +46,14 @@ test_slider(void *data, Evas_Object *obj, void *event_info) evas_object_show(ic); evas_object_show(sl); + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + sl = elm_slider_add(win); elm_slider_label_set(sl, "Label 2"); + elm_slider_end_set(sl, ic); elm_slider_span_size_set(sl, 80); evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -62,8 +68,9 @@ test_slider(void *data, Evas_Object *obj, void *event_info) evas_object_show(sl); sl = elm_slider_add(win); + elm_slider_indicator_show_set(sl, EINA_FALSE); elm_slider_label_set(sl, "Label 3"); - elm_slider_unit_format_set(sl, "units"); + elm_slider_unit_format_set(sl, "%3.0f units"); elm_slider_span_size_set(sl, 40); evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index ba538afb50..3dfead63d0 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -1192,26 +1192,32 @@ extern "C" { * "clicked" - when the user clicks on a carousel item and becomes selected */ - EAPI Evas_Object *elm_slider_add(Evas_Object *parent); - EAPI void elm_slider_label_set(Evas_Object *obj, const char *label); - EAPI const char *elm_slider_label_get(const Evas_Object *obj); - EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon); - EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj); - EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size); - EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj); - EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format); - EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj); - EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator); - EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj); - EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val)); - EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj); - EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); - EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max); - EAPI void elm_slider_value_set(Evas_Object *obj, double val); - EAPI double elm_slider_value_get(const Evas_Object *obj); - EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted); - EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj); + EAPI Evas_Object *elm_slider_add(Evas_Object *parent); + EAPI void elm_slider_label_set(Evas_Object *obj, const char *label); + EAPI const char *elm_slider_label_get(const Evas_Object *obj); + EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon); + EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj); + EAPI const Evas_Object *elm_slider_icon_get(const Evas_Object *obj); + EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end); + EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj); + EAPI const Evas_Object *elm_slider_end_get(const Evas_Object *obj); + EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size); + EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj); + EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format); + EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj); + EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator); + EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj); + EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val)); + EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj); + EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); + EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max); + EAPI void elm_slider_value_set(Evas_Object *obj, double val); + EAPI double elm_slider_value_get(const Evas_Object *obj); + EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted); + EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj); + EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show); + EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj); typedef enum _Elm_Genlist_Item_Flags { diff --git a/legacy/elementary/src/lib/elm_slider.c b/legacy/elementary/src/lib/elm_slider.c index fe40b0a338..97256e70be 100644 --- a/legacy/elementary/src/lib/elm_slider.c +++ b/legacy/elementary/src/lib/elm_slider.c @@ -45,6 +45,7 @@ struct _Widget_Data { Evas_Object *slider; Evas_Object *icon; + Evas_Object *end; Evas_Object *spacer; const char *label; const char *units; @@ -52,6 +53,7 @@ struct _Widget_Data const char *(*indicator_format_func)(double val); Eina_Bool horizontal : 1; Eina_Bool inverted : 1; + Eina_Bool indicator_show : 1; double val, val_min, val_max; Ecore_Timer *delay; Evas_Coord size; @@ -170,6 +172,10 @@ _theme_hook(Evas_Object *obj) edje_object_part_swallow(wd->slider, "elm.swallow.content", wd->icon); edje_object_signal_emit(wd->slider, "elm,state,icon,visible", "elm"); } + if (wd->end) + edje_object_signal_emit(wd->slider, "elm,state,end,visible", "elm"); + else + edje_object_signal_emit(wd->slider, "elm,state,end,hidden", "elm"); if (wd->label) { edje_object_part_text_set(wd->slider, "elm.text", wd->label); @@ -214,7 +220,7 @@ _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *even { Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; - if (obj != wd->icon) return; + if ((obj != wd->icon) && (obj != wd->end)) return; _sizing_eval(data); } @@ -233,6 +239,16 @@ _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info) edje_object_message_signal_process(wd->slider); _sizing_eval(obj); } + if (sub == wd->end) + { + edje_object_signal_emit(wd->slider, "elm,state,end,hidden", "elm"); + evas_object_event_callback_del_full(sub, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); + wd->end = NULL; + edje_object_message_signal_process(wd->slider); + _sizing_eval(obj); + } } static Eina_Bool @@ -388,6 +404,7 @@ elm_slider_add(Evas_Object *parent) elm_widget_event_hook_set(obj, _event_hook); wd->horizontal = EINA_TRUE; + wd->indicator_show = EINA_TRUE; wd->val = 0.0; wd->val_min = 0.0; wd->val_max = 1.0; @@ -468,13 +485,16 @@ elm_slider_label_get(const Evas_Object *obj) } /** - * Set the icon object of the slider object + * Set the icon object (leftmost widget) of the slider object. * * Once the icon object is set, a previously set one will be deleted. * * @param obj The slider object * @param icon The icon object * + * @note If the object being set does not have minimum size hints set, + * it won't get properly displayed. + * * @ingroup Slider */ EAPI void @@ -491,7 +511,7 @@ elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) elm_widget_sub_object_add(obj, icon); evas_object_event_callback_add(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); - edje_object_part_swallow(wd->slider, "elm.swallow.content", icon); + edje_object_part_swallow(wd->slider, "elm.swallow.icon", icon); edje_object_signal_emit(wd->slider, "elm,state,icon,visible", "elm"); edje_object_message_signal_process(wd->slider); } @@ -499,14 +519,46 @@ elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) } /** - * Get the icon object of the slider object + * Unset the leftmost widget of the slider, unparenting and + * returning it. + * + * @param obj The slider object + * @return the previously set icon sub-object of this slider, on + * success. + * + * @see elm_slider_icon_set() + * + * @ingroup Slider + */ +EAPI Evas_Object * +elm_slider_icon_unset(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Object *ret = NULL; + if (!wd) return NULL; + if (wd->icon) + { + elm_widget_sub_object_del(obj, wd->icon); + ret = wd->icon; + edje_object_part_unswallow(wd->slider, wd->icon); + edje_object_signal_emit(wd->slider, "elm,state,icon,hidden", "elm"); + wd->icon = NULL; + _sizing_eval(obj); + } + return ret; +} + +/** + * Get the icon object of the slider object. This object is owned by + * the scrolled entry and should not be modified. * * @param obj The slider object * @return The icon object * * @ingroup Slider */ -EAPI Evas_Object * +EAPI const Evas_Object * elm_slider_icon_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -540,6 +592,10 @@ elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size) evas_object_size_hint_min_set(wd->spacer, (double)wd->size * elm_widget_scale_get(obj) * _elm_config->scale, 1); else evas_object_size_hint_min_set(wd->spacer, 1, (double)wd->size * elm_widget_scale_get(obj) * _elm_config->scale); + if (wd->indicator_show) + edje_object_signal_emit(wd->slider, "elm,state,val,show", "elm"); + else + edje_object_signal_emit(wd->slider, "elm,state,val,hide", "elm"); edje_object_part_swallow(wd->slider, "elm.swallow.bar", wd->spacer); _sizing_eval(obj); } @@ -862,3 +918,131 @@ elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(d _indicator_set(obj); } +/** + * Set the end object (rightmost widget) of the slider object. + * + * Once the end object is set, a previously set one will be deleted. + * + * @param obj The slider object + * @param end The end object + * + * @note If the object being set does not have minimum size hints set, + * it won't get properly displayed. + * + * @ingroup Slider + */ +EAPI void +elm_slider_end_set(Evas_Object *obj, Evas_Object *end) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->end == end) return; + if (wd->end) evas_object_del(wd->end); + wd->end = end; + if (end) + { + elm_widget_sub_object_add(obj, end); + evas_object_event_callback_add(end, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); + edje_object_part_swallow(wd->slider, "elm.swallow.end", end); + edje_object_signal_emit(wd->slider, "elm,state,end,visible", "elm"); + edje_object_message_signal_process(wd->slider); + } + _sizing_eval(obj); +} + +/** + * Unset the rightmost widget of the slider, unparenting and + * returning it. + * + * @param obj The slider object + * @return the previously set end sub-object of this slider, on + * success. + * + * @see elm_slider_end_set() + * + * @ingroup Slider + */ +EAPI Evas_Object * +elm_slider_end_unset(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Object *ret = NULL; + if (!wd) return NULL; + if (wd->end) + { + elm_widget_sub_object_del(obj, wd->end); + ret = wd->end; + edje_object_part_unswallow(wd->slider, wd->end); + edje_object_signal_emit(wd->slider, "elm,state,end,hidden", "elm"); + wd->end = NULL; + _sizing_eval(obj); + } + return ret; +} + +/** + * Get the end icon object of the slider object. This object is owned + * by the scrolled entry and should not be modified. + * + * @param obj The slider object + * @return The end icon object + * + * @ingroup Slider + */ +EAPI const Evas_Object * +elm_slider_end_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->end; +} + +/** + * Set whether to the slider indicator (augmented knob) at all. + * + * @param obj The slider object + * @param show @c EINA_TRUE will make it show it, @c EINA_FALSE will + * let the knob alwayes at default size. + * + * @note It will conflict with elm_slider_indicator_format_set(), if + * you wanted those effects. + * + * @ingroup Slider + */ +EAPI void +elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (show) { + wd->indicator_show = EINA_TRUE; + edje_object_signal_emit(wd->slider, "elm,state,val,show", "elm"); + } + else { + wd->indicator_show = EINA_FALSE; + edje_object_signal_emit(wd->slider, "elm,state,val,hide", "elm"); + } +} + +/** + * Get the state of indicator in the slider (if it's being shown or + * not). + * + * @param obj The slider object + * @return @c EINA_TRUE if the indicator is being shown, @c EINA_FALSE + * otherwise. + * + * @ingroup Slider + */ +EAPI Eina_Bool +elm_slider_indicator_show_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->indicator_show; +} +