ami pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=651d9e94a0a720e7641cde952f6086a9ec13d95c

commit 651d9e94a0a720e7641cde952f6086a9ec13d95c
Author: Amitesh Singh <amitesh...@samsung.com>
Date:   Thu Nov 16 21:35:39 2017 +0900

    Efl.Ui.Slider: add visible_mode() as an indicator part API
    
    Ref T6376
---
 src/bin/elementary/test_ui_slider_interval.c | 18 +++++++++--
 src/lib/elementary/efl_ui_slider.c           | 46 ++++++++++++++++++----------
 src/lib/elementary/efl_ui_slider_part.eo     | 11 +++++++
 3 files changed, 57 insertions(+), 18 deletions(-)

diff --git a/src/bin/elementary/test_ui_slider_interval.c 
b/src/bin/elementary/test_ui_slider_interval.c
index ebd3d3de5e..c942c58fed 100644
--- a/src/bin/elementary/test_ui_slider_interval.c
+++ b/src/bin/elementary/test_ui_slider_interval.c
@@ -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"),
diff --git a/src/lib/elementary/efl_ui_slider.c 
b/src/lib/elementary/efl_ui_slider.c
index 095fad8662..2eaee70940 100644
--- a/src/lib/elementary/efl_ui_slider.c
+++ b/src/lib/elementary/efl_ui_slider.c
@@ -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 */
diff --git a/src/lib/elementary/efl_ui_slider_part.eo 
b/src/lib/elementary/efl_ui_slider_part.eo
index 70d81de5a8..86b375f604 100644
--- a/src/lib/elementary/efl_ui_slider_part.eo
+++ b/src/lib/elementary/efl_ui_slider_part.eo
@@ -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; }

-- 


Reply via email to