diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index 20e6b85e55..94c953b71d 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/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"; @@ -14432,13 +14552,13 @@ collections { scale: 1; description { state: "default" 0.0; visible: 0; - fixed: 1 1; + fixed: 0 1; align: 0.5 0.0; rel1.to_y: "elm.swallow.icon"; - rel1.relative: 0.5 1.0; + rel1.relative: 0.0 1.0; rel1.offset: 0 -1; rel2.to_y: "elm.swallow.icon"; - rel2.relative: 0.5 1.0; + rel2.relative: 1.0 1.0; rel2.offset: -1 -1; color: 0 0 0 255; text { @@ -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); + } + } } } diff --git a/legacy/elementary/src/bin/test_slider.c b/legacy/elementary/src/bin/test_slider.c index e17b67b8f6..67d5a17857 100644 --- a/legacy/elementary/src/bin/test_slider.c +++ b/legacy/elementary/src/bin/test_slider.c @@ -14,7 +14,7 @@ _change_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__) void test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Evas_Object *win, *bg, *bx, *sl, *ic, *sl1; + Evas_Object *win, *bg, *bx, *sl, *ic, *sl1, *bx2; char buf[PATH_MAX]; win = elm_win_add(NULL, "slider", ELM_WIN_BASIC); @@ -48,6 +48,24 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info 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); @@ -62,7 +80,30 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info 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); @@ -79,12 +120,18 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info 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); evas_object_show(sl); + bx2 = elm_box_add(win); + evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_horizontal_set(bx2, EINA_TRUE); + elm_box_pack_end(bx, bx2); + evas_object_show(bx2); + ic = elm_icon_add(win); snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); elm_icon_file_set(ic, buf, NULL); @@ -93,7 +140,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info sl = elm_slider_add(win); elm_slider_icon_set(sl, ic); elm_slider_label_set(sl, "Vertical inverted"); - 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); @@ -102,7 +149,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info elm_slider_value_set(sl, 0.2); elm_object_scale_set(sl, 1.0); elm_slider_horizontal_set(sl, 0); - elm_box_pack_end(bx, sl); + elm_box_pack_end(bx2, sl); evas_object_show(ic); evas_object_show(sl); @@ -118,10 +165,33 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info elm_slider_value_set(sl, 0.2); elm_object_scale_set(sl, 1.0); elm_slider_horizontal_set(sl, EINA_FALSE); - elm_box_pack_end(bx, sl); + elm_box_pack_end(bx2, sl); evas_object_show(ic); evas_object_show(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, 100); + 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(bx2, sl); + evas_object_show(ic); + evas_object_show(sl); + evas_object_show(win); } #endif diff --git a/legacy/elementary/src/lib/elm_slider.c b/legacy/elementary/src/lib/elm_slider.c index bd5350aa53..36bf0f491c 100644 --- a/legacy/elementary/src/lib/elm_slider.c +++ b/legacy/elementary/src/lib/elm_slider.c @@ -64,6 +64,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); @@ -225,6 +226,17 @@ _theme_hook(Evas_Object *obj) _sizing_eval(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) { @@ -449,6 +461,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);