Hello, all.

 

elm_slider does not support disable state, so I make this patch.

Please review it and upload in svn if it is ok.

Thanks.

Index: src/lib/elm_slider.c
===================================================================
--- src/lib/elm_slider.c        (¸®ºñÀü 55279)
+++ src/lib/elm_slider.c        (ÀÛ¾÷ »çº»)
@@ -62,6 +62,7 @@ struct _Widget_Data
 static const char *widtype = NULL;
 static void _del_hook(Evas_Object *obj);
 static void _theme_hook(Evas_Object *obj);
+static void _disable_hook(Evas_Object *obj);
 static void _sizing_eval(Evas_Object *obj);
 static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _sub_del(void *data, Evas_Object *obj, void *event_info);
@@ -203,6 +204,17 @@ _theme_hook(Evas_Object *obj)
 }
 
 static void
+_disable_hook(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (elm_widget_disabled_get(obj))
+      edje_object_signal_emit(wd->slider, "elm,state,disabled", "elm");
+   else
+      edje_object_signal_emit(wd->slider, "elm,state,enabled", "elm");
+}
+
+static void
 _sizing_eval(Evas_Object *obj)
 {   
    Widget_Data *wd = elm_widget_data_get(obj);
@@ -402,6 +414,7 @@ elm_slider_add(Evas_Object *parent)
    elm_widget_data_set(obj, wd);
    elm_widget_del_hook_set(obj, _del_hook);
    elm_widget_theme_hook_set(obj, _theme_hook);
+   elm_widget_disable_hook_set(obj, _disable_hook);
    elm_widget_can_focus_set(obj, EINA_TRUE);
    elm_widget_event_hook_set(obj, _event_hook);
 
Index: src/bin/test_slider.c
===================================================================
--- src/bin/test_slider.c       (¸®ºñÀü 55279)
+++ src/bin/test_slider.c       (ÀÛ¾÷ »çº»)
@@ -48,12 +48,30 @@ test_slider(void *data __UNUSED__, Evas_Object *ob
    evas_object_show(ic);
    evas_object_show(sl);
 
+   /* horizontal disable state */
    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, "Disabled");
+   elm_slider_icon_set(sl, ic);
+   elm_slider_unit_format_set(sl, "%1.1f units");
+   elm_slider_span_size_set(sl, 120);
+   elm_object_disabled_set(sl, EINA_TRUE);
+   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);
+   elm_box_pack_end(bx, sl);
+   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);
@@ -62,14 +80,37 @@ test_slider(void *data __UNUSED__, Evas_Object *ob
    elm_slider_indicator_format_set(sl, "%3.0f");
    elm_slider_min_max_set(sl, 50, 150);
    elm_slider_value_set(sl, 80);
-   elm_slider_inverted_set(sl, 1);
+   elm_slider_inverted_set(sl, EINA_TRUE);
    evas_object_size_hint_align_set(sl, 0.5, 0.5);
    evas_object_size_hint_weight_set(sl, 0.0, 0.0);
    elm_box_pack_end(bx, sl);
    evas_object_show(ic);
    evas_object_show(sl);
 
+   /* label2 disable */
+   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, "Disabled inverted");
+   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);
+   elm_slider_indicator_format_set(sl, "%3.0f");
+   elm_slider_min_max_set(sl, 50, 150);
+   elm_slider_value_set(sl, 80);
+   elm_slider_inverted_set(sl, EINA_TRUE);
+   elm_object_disabled_set(sl, EINA_TRUE);
+   evas_object_size_hint_align_set(sl, 0.5, 0.5);
+   evas_object_size_hint_weight_set(sl, 0.0, 0.0);
+   elm_box_pack_end(bx, sl);
+   evas_object_show(ic);
+   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, "%3.0f units");
@@ -79,7 +120,7 @@ test_slider(void *data __UNUSED__, Evas_Object *ob
    elm_slider_indicator_format_set(sl, "%3.0f");
    elm_slider_min_max_set(sl, 50, 150);
    elm_slider_value_set(sl, 80);
-   elm_slider_inverted_set(sl, 1);
+   elm_slider_inverted_set(sl, EINA_TRUE);
    elm_object_scale_set(sl, 2.0);
    elm_box_pack_end(bx, sl);
    evas_object_show(ic);
@@ -93,7 +134,7 @@ test_slider(void *data __UNUSED__, Evas_Object *ob
    sl = elm_slider_add(win);
    elm_slider_icon_set(sl, ic);
    elm_slider_label_set(sl, "Label 4");
-   elm_slider_inverted_set(sl, 1);
+   elm_slider_inverted_set(sl, EINA_TRUE);
    elm_slider_unit_format_set(sl, "units");
    elm_slider_span_size_set(sl, 60);
    evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
@@ -106,9 +147,31 @@ test_slider(void *data __UNUSED__, Evas_Object *ob
    evas_object_show(ic);
    evas_object_show(sl);
 
-
    evas_object_smart_callback_add(sl1, "changed", _change_cb, sl);
 
+   /* vertical disable state */
+   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_HORIZONTAL, 1, 1);
+
+   sl = elm_slider_add(win);
+   elm_slider_icon_set(sl, ic);
+   elm_slider_label_set(sl, "Disabled vertical");
+   elm_slider_inverted_set(sl, EINA_TRUE);
+   elm_slider_unit_format_set(sl, "units");
+   elm_slider_span_size_set(sl, 60);
+   evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
+   evas_object_size_hint_weight_set(sl, 0.0, EVAS_HINT_EXPAND);
+   elm_slider_indicator_format_set(sl, "%1.1f");
+   elm_slider_value_set(sl, 0.2);
+   elm_object_scale_set(sl, 1.0);
+   elm_slider_horizontal_set(sl, 0);
+   elm_object_disabled_set(sl, EINA_TRUE);
+   elm_box_pack_end(bx, sl);
+   evas_object_show(ic);
+   evas_object_show(sl);
+
    evas_object_show(win);
 }
 #endif
Index: data/themes/default.edc
===================================================================
--- data/themes/default.edc     (¸®ºñÀü 55279)
+++ data/themes/default.edc     (ÀÛ¾÷ »çº»)
@@ -13741,6 +13741,15 @@ collections {
                inherit: "default" 0.0;
                visible: 1;
             }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 0 0 100;
+            }
+            description { state: "disabled_inverted" 0.0;
+               inherit: "default" 0.0;
+               color: 255 0 0 100;
+               visible: 1;
+            }
          }
          part {
             name: "base_over";
@@ -13839,6 +13848,18 @@ collections {
                rel1.offset: 0 4;
                rel2.offset: 0 -5;
            }
+           description { state: "disabled" 0.0;
+              inherit: "default" 0.0;
+              color: 255 128 128 128;
+              visible: 0;
+           }
+           description { state: "disabled_visible" 0.0;
+              inherit: "default" 0.0;
+              color: 0 0 0 128;
+              color3: 0 0 0 0;
+              visible: 1;
+              text.min: 1 1;
+           }
         }
         part {
             name: "elm.swallow.end";
@@ -13918,6 +13939,18 @@ collections {
               rel1.offset: -5 0;
               rel2.offset: -5 -1;
            }
+           description { state: "disabled" 0.0;
+              inherit: "default" 0.0;
+              color: 255 128 128 128;
+              visible: 0;
+           }
+           description { state: "disabled_visible" 0.0;
+              inherit: "default" 0.0;
+              color: 0 0 0 128;
+              color3: 0 0 0 0;
+              visible: 1;
+              text.min: 1 1;
+           }
         }
          part { name: "elm.dragable.slider";
             type: RECT;
@@ -13973,6 +14006,10 @@ collections {
                }
                fill.smooth: 0;
             }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+                       }
          }
          part { name: "button1";
             mouse_events: 0;
@@ -14157,6 +14194,17 @@ collections {
               visible: 1;
             }
          }
+        part { name: "disabler";
+           type: RECT;
+           description { state: "default" 0.0;
+              color: 0 0 0 0;
+              visible: 0;
+           }
+           description { state: "disabled" 0.0;
+              inherit: "default" 0.0;
+              visible: 1;
+           }
+        }
       }
       programs {
         program { name: "text_show";
@@ -14252,6 +14300,69 @@ collections {
                thumb_up();
            }
         }
+         program {
+            name:    "go_disabled";
+            signal:  "elm,state,disabled";
+            source:  "elm";
+            action:  STATE_SET "disabled" 0.0;
+            target:  "button0";
+            target:  "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                  set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                  set_state(PART:"elm.text", "disabled", 0.0);
+
+               get_state(PART:"elm.units", st, 30, vl);
+               if (!strcmp(st, "visible")) 
+                  set_state(PART:"elm.units", "disabled_visible", 0.0);
+               else 
+                  set_state(PART:"elm.units", "disabled", 0.0);
+
+               get_state(PART:"level2", st, 30, vl);
+               if (!strcmp(st, "inverted")) 
+                  set_state(PART:"level2", "disabled_inverted", 0.0);
+               else 
+                  set_state(PART:"level2", "disabled", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button0";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                  set_state(PART:"elm.text", "visible", 0.0);
+               else
+                  set_state(PART:"elm.text", "default", 0.0);
+
+               get_state(PART:"elm.units", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                  set_state(PART:"elm.units", "visible", 0.0);
+               else
+                  set_state(PART:"elm.units", "default", 0.0);
+     
+               get_state(PART:"level2", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                  set_state(PART:"level2", "visible", 0.0);
+               else
+                  set_state(PART:"level2", "default", 0.0);
+            }
+         }
       }
    }
 
@@ -14357,6 +14468,15 @@ collections {
                inherit: "default" 0.0;
                visible: 1;
             }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 0 0 100;
+            }
+            description { state: "disabled_inverted" 0.0;
+               inherit: "default" 0.0;
+               color: 255 0 0 100;
+               visible: 1;
+            }
          }
          part {
             name: "base_over";
@@ -14455,6 +14575,18 @@ collections {
                rel1.offset: 4 0;
                rel2.offset: -5 0;
            }
+           description { state: "disabled" 0.0;
+              inherit: "default" 0.0;
+              color: 255 128 128 128;
+              visible: 0;
+           }
+           description { state: "disabled_visible" 0.0;
+              inherit: "default" 0.0;
+              color: 0 0 0 128;
+              color3: 0 0 0 0;
+              visible: 1;
+              text.min: 1 1;
+           }
         }
         part {
             name: "elm.swallow.end";
@@ -14534,6 +14666,22 @@ collections {
               rel1.offset: 8 -9;
               rel2.offset: -9 -9;
            }
+           description { state: "disabled" 0.0;
+              inherit: "default" 0.0;
+              color:  0 0 0 128;
+              color3: 0 0 0 0;
+              visible: 0;
+           }
+           description { state: "disabled_visible" 0.0;
+              inherit: "default" 0.0;
+              fixed: 1 1;
+              visible: 1;
+              text.min: 1 1;
+              rel1.offset: 8 -9;
+              rel2.offset: -9 -9;
+              color: 0 0 0 128;
+              color3: 0 0 0 0;
+           }
         }
          part { name: "elm.dragable.slider";
             type: RECT;
@@ -14589,6 +14737,10 @@ collections {
                }
                fill.smooth: 0;
             }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+               }
          }
          part { name: "button1";
             mouse_events: 0;
@@ -14772,7 +14924,19 @@ collections {
               visible: 1;
             }
          }
-      }
+            part { name: "disabler";
+               type: RECT;
+               description { state: "default" 0.0;
+                  color: 0 0 0 0;
+                  visible: 0;
+               }
+               description { state: "disabled" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+               }
+            }
+         }
+
       programs {
         program { name: "text_show";
            signal: "elm,state,text,visible";
@@ -14866,6 +15030,70 @@ collections {
                thumb_up();
            }
         }
+        program {
+           name:   "go_disabled";
+           signal: "elm,state,disabled";
+           source: "elm";
+           action: STATE_SET "disabled" 0.0;
+           target: "button0";
+           target: "disabler";
+           after: "disable_text";
+        }
+        program { name: "disable_text";
+           script {
+           new st[31];
+           new Float:vl;
+              get_state(PART:"elm.text", st, 30, vl);
+              if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+              else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+
+              get_state(PART:"elm.units", st, 30, vl);
+              if (!strcmp(st, "visible")) 
+                 set_state(PART:"elm.units", "disabled_visible", 0.0);
+              else 
+                 set_state(PART:"elm.units", "disabled", 0.0);
+
+              get_state(PART:"level2", st, 30, vl);
+              if (!strcmp(st, "inverted")) 
+                 set_state(PART:"level2", "disabled_inverted", 0.0);
+              else 
+                 set_state(PART:"level2", "disabled", 0.0);
+           }
+        }
+
+        program { name: "enable";
+           signal: "elm,state,enabled";
+           source: "elm";
+           action: STATE_SET "default" 0.0;
+           target: "button0";
+           target: "disabler";
+           after: "enable_text";
+        }
+        program { name: "enable_text";
+           script {
+              new st[31];
+              new Float:vl;
+              get_state(PART:"elm.text", st, 30, vl);
+              if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+              else
+                 set_state(PART:"elm.text", "default", 0.0);
+
+              get_state(PART:"elm.units", st, 30, vl);
+              if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.units", "visible", 0.0);
+              else
+                 set_state(PART:"elm.units", "default", 0.0);
+     
+              get_state(PART:"level2", st, 30, vl);
+              if (!strcmp(st, "visible"))
+                 set_state(PART:"level2", "visible", 0.0);
+              else
+                 set_state(PART:"level2", "default", 0.0);
+           }
+        }
       }
    }
 
------------------------------------------------------------------------------
What happens now with your Lotus Notes apps - do you make another costly 
upgrade, or settle for being marooned without product support? Time to move
off Lotus Notes and onto the cloud with Force.com, apps are easier to build,
use, and manage than apps on traditional platforms. Sign up for the Lotus 
Notes Migration Kit to learn more. http://p.sf.net/sfu/salesforce-d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to