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