* Enlightenment SVN <no-re...@enlightenment.org> [2010-09-28 08:09:20 -0700]:

Forgot to mention this comes from a set of contributions to Elementary
from Samsung Electronics. Patch revised and modified by Profusion
Embedded Systems.


> Log:
>   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.
>   
>   
> Author:       glima
> Date:         2010-09-28 08:09:19 -0700 (Tue, 28 Sep 2010)
> New Revision: 52852
> 
> Modified:
>   trunk/TMP/st/elementary/data/themes/default.edc 
> trunk/TMP/st/elementary/src/bin/test_slider.c 
> trunk/TMP/st/elementary/src/lib/Elementary.h.in 
> trunk/TMP/st/elementary/src/lib/elm_slider.c 
> 
> Modified: trunk/TMP/st/elementary/data/themes/default.edc
> ===================================================================
> --- trunk/TMP/st/elementary/data/themes/default.edc   2010-09-28 14:15:23 UTC 
> (rev 52851)
> +++ trunk/TMP/st/elementary/data/themes/default.edc   2010-09-28 15:09:19 UTC 
> (rev 52852)
> @@ -11311,6 +11311,40 @@
>        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 @@
>                 }
>           }
>        }
> -      part { name: "elm.swallow.content";
> +      part { name: "elm.swallow.icon";
>           type: SWALLOW;
>           description { state: "default" 0.0;
>              visible: 0;
> @@ -11440,10 +11474,10 @@
>              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 @@
>                 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 @@
>                    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 @@
>              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,14 +11831,26 @@
>           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";
>           source: "elm";
> @@ -11802,27 +11879,34 @@
>           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 @@
>  
>           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 @@
>                 }
>           }
>        }
> -      part { name: "elm.swallow.content";
> +      part { name: "elm.swallow.icon";
>           type: SWALLOW;
>           description { state: "default" 0.0;
>              visible: 0;
> @@ -11972,10 +12090,10 @@
>              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 @@
>                 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 @@
>              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,14 +12446,26 @@
>           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";
>           source: "elm";
> @@ -12337,27 +12494,33 @@
>           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();
> +         }
>        }
>        }
>     }
> 
> Modified: trunk/TMP/st/elementary/src/bin/test_slider.c
> ===================================================================
> --- trunk/TMP/st/elementary/src/bin/test_slider.c     2010-09-28 14:15:23 UTC 
> (rev 52851)
> +++ trunk/TMP/st/elementary/src/bin/test_slider.c     2010-09-28 15:09:19 UTC 
> (rev 52852)
> @@ -46,8 +46,14 @@
>     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 @@
>     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);
> 
> Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in
> ===================================================================
> --- trunk/TMP/st/elementary/src/lib/Elementary.h.in   2010-09-28 14:15:23 UTC 
> (rev 52851)
> +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in   2010-09-28 15:09:19 UTC 
> (rev 52852)
> @@ -1192,26 +1192,32 @@
>      * "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
>       {
> 
> Modified: trunk/TMP/st/elementary/src/lib/elm_slider.c
> ===================================================================
> --- trunk/TMP/st/elementary/src/lib/elm_slider.c      2010-09-28 14:15:23 UTC 
> (rev 52851)
> +++ trunk/TMP/st/elementary/src/lib/elm_slider.c      2010-09-28 15:09:19 UTC 
> (rev 52852)
> @@ -45,6 +45,7 @@
>  {
>     Evas_Object *slider;
>     Evas_Object *icon;
> +   Evas_Object *end;
>     Evas_Object *spacer;
>     const char *label;
>     const char *units;
> @@ -52,6 +53,7 @@
>     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 @@
>          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 @@
>  {
>     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 @@
>       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_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 @@
>  }
>  
>  /**
> - * 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_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 @@
>  }
>  
>  /**
> - * 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 @@
>       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 @@
>     _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;
> +}
> +
> 
> 
> ------------------------------------------------------------------------------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> enlightenment-svn mailing list
> enlightenment-...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn

-- 
Gustavo Lima Chaves
Computer Engineer @ ProFUSION Embedded Systems

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to