From: Jihoon Kim <jihoon48.kim@samsung.com>
Subject: [E-devel] [PATCH] elm_slider patch for disable state elm_slider does not support disable state, so I make this patch. Please review it and upload in svn if it is ok. (nb - also fixed vertical slider sizing in defaul theme and changed jihoons changes to slider test to make the vertical sliders in a horizontal box so they dont get silly long windows) SVN revision: 55340
This commit is contained in:
parent
34a3ad17b9
commit
44cf2f3382
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue