Efl.Ui.Slider: add visible_mode() as an indicator part API

Ref T6376
This commit is contained in:
Amitesh Singh 2017-11-16 21:35:39 +09:00
parent 67996afbf6
commit 651d9e94a0
3 changed files with 57 additions and 18 deletions

View File

@ -42,7 +42,8 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
efl_text_set(efl_added, "Horizontal"),
efl_ui_slider_indicator_visible_mode_set(efl_added, EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE),
efl_ui_slider_part_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_ui_slider_interval_value_set(efl_added, 0.4, 0.9),
@ -95,9 +96,22 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
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_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_slider_step_set(efl_added, step),
efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
efl_pack(hbx, efl_added));
efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
efl_text_set(efl_added, "Limited (100-500)"),
efl_ui_slider_indicator_visible_mode_set(efl_added, EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS),
efl_ui_slider_part_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"),

View File

@ -1459,6 +1459,29 @@ _efl_ui_slider_part_efl_ui_format_format_string_get(Eo *obj, void *_pd EINA_UNUS
return sd->indi_template;
}
EOLIAN static void
_efl_ui_slider_part_visible_mode_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Ui_Slider_Indicator_Visible_Mode indicator_visible_mode)
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS);
if (!eina_streq(pd->part, "indicator")) return;
if (sd->indicator_visible_mode == indicator_visible_mode) return;
sd->indicator_visible_mode = indicator_visible_mode;
}
EOLIAN static Efl_Ui_Slider_Indicator_Visible_Mode
_efl_ui_slider_part_visible_mode_get(Eo *obj, void *_pd EINA_UNUSED)
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS);
if (!eina_streq(pd->part, "indicator")) return EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE;
return sd->indicator_visible_mode;
}
#include "efl_ui_slider_part.eo.c"
/* Efl.Part end */
@ -1684,20 +1707,16 @@ elm_slider_indicator_format_function_set(Evas_Object *obj, slider_func_type func
EAPI void
elm_slider_indicator_show_on_focus_set(Evas_Object *obj, Eina_Bool flag)
{
EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd);
if (flag)
sd->indicator_visible_mode = ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS;
else
sd->indicator_visible_mode = ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT;
efl_ui_slider_part_visible_mode_set(efl_part(obj, "indicator"),
flag ? ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
: ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT);
}
EAPI Eina_Bool
elm_slider_indicator_show_on_focus_get(const Evas_Object *obj)
{
EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd, EINA_FALSE);
return (sd->indicator_visible_mode == ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS);
return (efl_ui_slider_part_visible_mode_get(efl_part(obj, "indicator"))
== EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS);
}
EAPI void
@ -1737,18 +1756,13 @@ elm_slider_indicator_show_get(const Evas_Object *obj)
EAPI void
elm_slider_indicator_visible_mode_set(Evas_Object *obj, Elm_Slider_Indicator_Visible_Mode indicator_visible_mode)
{
EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd);
if (sd->indicator_visible_mode == indicator_visible_mode) return;
sd->indicator_visible_mode = indicator_visible_mode;
efl_ui_slider_part_visible_mode_set(efl_part(obj, "indicator"), indicator_visible_mode);
}
EAPI Elm_Slider_Indicator_Visible_Mode
elm_slider_indicator_visible_mode_get(const Evas_Object *obj)
{
EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd, ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE);
return sd->indicator_visible_mode;
return efl_ui_slider_part_visible_mode_get(efl_part(obj, "indicator"));
}
/* Internal EO APIs and hidden overrides */

View File

@ -1,7 +1,18 @@
import efl_ui;
class Efl.Ui.Slider.Part (Efl.Ui.Layout.Part, Efl.Ui.Format)
{
[[Elementary slider internal part class]]
data: null;
methods {
@property visible_mode {
[[Set/Get the visible mode of indicator.
]]
values {
indicator_visible_mode: Efl.Ui.Slider.Indicator_Visible_Mode; [[The indicator visible mode.]]
}
}
}
implements {
Efl.Ui.Format.format_cb { set; }
Efl.Ui.Format.format_string { set; get; }