efl_ui_spin: apply new theme set policy

Summary: Applied new theme group name. Moved logic in finalize to constructor.

Test Plan: Run elementary_test->Efl.Ui.Spin, Efl.Ui.Spin.Button, Part_Background

Reviewers: jpeg, woohyun, CHAN

Reviewed By: CHAN

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5592
This commit is contained in:
Sungtaek Hong 2017-12-08 14:52:08 +09:00
parent e29b9e5371
commit 1503fb5359
9 changed files with 143 additions and 166 deletions

View File

@ -145,8 +145,6 @@ elementary/themes/edc/elm/separator.edc \
elementary/themes/edc/elm/slider.edc \
elementary/themes/edc/elm/slideshow.edc \
elementary/themes/edc/elm/spinner.edc \
elementary/themes/edc/elm/spin.edc \
elementary/themes/edc/elm/spin_button.edc \
elementary/themes/edc/elm/textpath.edc \
elementary/themes/edc/elm/thumb.edc \
elementary/themes/edc/elm/toolbar.edc \
@ -1033,6 +1031,8 @@ elementary/themes/edc/efl/progress.edc \
elementary/themes/edc/efl/radio.edc \
elementary/themes/edc/efl/scroller.edc \
elementary/themes/edc/efl/slider.edc \
elementary/themes/edc/efl/spin.edc \
elementary/themes/edc/efl/spin_button.edc \
elementary/themes/edc/efl/text.edc \
elementary/themes/edc/efl/textpath.edc \
elementary/themes/edc/efl/tooltip.edc \

View File

@ -66,8 +66,6 @@ collections {
#include "edc/elm/border.edc"
// XXX: min size calc problems - too wide! ... err ok on my 32bit box... eh?
#include "edc/elm/spinner.edc"
#include "edc/elm/spin.edc"
#include "edc/elm/spin_button.edc"
#include "edc/elm/menu.edc"
#include "edc/elm/clock.edc"
#include "edc/elm/gengrid.edc"
@ -187,6 +185,8 @@ collections {
#include "edc/efl/photocam.edc"
#include "edc/efl/progress.edc"
#include "edc/efl/border.edc"
#include "edc/efl/spin.edc"
#include "edc/efl/spin_button.edc"
// XXX: min size calc problems - too wide! ... err ok on my 32bit box... eh?
#include "edc/efl/cursor.edc"
#include "edc/efl/textpath.edc"

View File

@ -1,17 +1,15 @@
group { name: "elm/spin/base/default";
group { "efl/spin";
parts {
part { name: "bg";
type: RECT;
scale: 1;
description { state: "default" 0.0;
rect { "bg";
scale;
desc { "default";
color: 0 0 0 0;
}
}
part { name: "elm.text";
type: TEXT;
mouse_events: 0;
scale: 1;
description { state: "default" 0.0;
text { "elm.text";
nomouse;
scale;
desc { "default";
color: FN_COL_DEFAULT;
text {
font: FNBD;

View File

@ -1,21 +1,19 @@
group { name: "elm/spin_button/base/default";
group { "efl/spin_button";
images.image: "vert_bar_inset.png" COMP;
parts {
part { name: "clip"; type: RECT;
description { state: "default" 0.0;
rel1.to: "elm.swallow.text_button";
rel2.to: "elm.swallow.text_button";
rect { "clip";
desc { "default";
rel.to: "elm.swallow.text_button";
}
}
part { name: "bg";
type: RECT;
scale: 1;
description { state: "default" 0.0;
rect { "bg";
scale;
desc { "default";
color_class: "spinner_bg";
}
}
part { name: "inset"; mouse_events: 0;
description { state: "default" 0.0;
image { "inset"; nomouse;
desc { "default";
rel1.offset: 0 1;
rel2.offset: -1 -2;
image.normal: "vert_bar_inset.png";
@ -24,39 +22,36 @@ group { name: "elm/spin_button/base/default";
fill.smooth: 0;
}
}
part { name: "access";
type: RECT;
repeat_events: 1;
description { state: "default" 0.0;
rect { "access";
repeat;
desc { "default";
fixed: 1 1;
color: 0 0 0 0;
rel1.to: "inset";
rel2.to: "inset";
visible: 0;
hid;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
visible: 1;
desc { "active";
inherit: "default";
vis;
}
}
part { name: "elm.swallow.entry";
type: SWALLOW;
clip_to: "clip";
description { state: "default" 0.0;
swallow { "elm.swallow.entry";
clip: "clip";
desc { "default";
fixed: 1 1;
rel1.to: "elm.swallow.text_button";
rel2.to: "elm.swallow.text_button";
visible: 0;
hid;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
visible: 1;
desc { "active";
inherit: "default";
vis;
}
}
part { name: "elm.swallow.dec_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
swallow { "elm.swallow.dec_button";
scale;
desc { "default";
fixed: 1 0;
rel1.to: "inset";
rel1.offset: 1 1;
@ -68,10 +63,9 @@ group { name: "elm/spin_button/base/default";
aspect: 1.0 1.0; aspect_preference: VERTICAL;
}
}
part { name: "elm.swallow.inc_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
swallow { "elm.swallow.inc_button";
scale;
desc { "default";
fixed: 1 0;
rel1.to: "inset";
rel1.offset: 1 1;
@ -83,11 +77,10 @@ group { name: "elm/spin_button/base/default";
aspect: 1.0 1.0; aspect_preference: VERTICAL;
}
}
part { name: "elm.swallow.text_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
visible: 1;
swallow { "elm.swallow.text_button";
scale;
desc { "default";
vis;
rel1.to_y: "inset";
rel1.to_x: "elm.swallow.dec_button";
rel1.relative: 1.0 0.0;
@ -97,84 +90,82 @@ group { name: "elm/spin_button/base/default";
rel2.relative: 0.0 1.0;
rel2.offset: -2 -2;
}
description { state: "inactive" 0.0;
inherit: "default" 0.0;
visible: 0;
desc { "inactive";
inherit: "default";
hid;
}
}
part { name: "disabler";
type: RECT;
repeat_events: 0;
mouse_events: 0;
description { state: "default" 0.0;
rect { "disabler";
norepeat;
nomouse;
desc { "default";
color: 0 0 0 0;
visible: 0;
hid;
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 1;
desc { "disabled";
inherit: "default";
vis;
}
}
}
programs {
program { name: "entry_active";
program { "entry_active";
signal: "elm,state,entry,active";
source: "elm";
action: STATE_SET "active" 0.0;
action: STATE_SET "active";
target: "elm.swallow.entry";
}
program { name: "entry_inactive";
program { "entry_inactive";
signal: "elm,state,entry,inactive";
source: "elm";
action: STATE_SET "default" 0.0;
action: STATE_SET "default";
target: "elm.swallow.entry";
}
program { name: "text_button_active";
program { "text_button_active";
signal: "elm,state,button,active";
source: "elm";
action: STATE_SET "default" 0.0;
action: STATE_SET "default";
target: "elm.swallow.text_button";
}
program { name: "text_button_inactive";
program { "text_button_inactive";
signal: "elm,state,button,inactive";
source: "elm";
action: STATE_SET "inactive" 0.0;
action: STATE_SET "inactive";
target: "elm.swallow.text_button";
}
program { name: "access_activate";
program { "access_activate";
signal: "elm,state,access,active";
source: "elm";
action: STATE_SET "active" 0.0;
action: STATE_SET "active";
target: "access";
}
program { name: "access_inactivate";
program { "access_inactivate";
signal: "elm,state,access,inactive";
source: "elm";
action: STATE_SET "default" 0.0;
action: STATE_SET "default";
target: "access";
}
program { name: "disable";
program { "disable";
signal: "elm,state,disabled";
source: "elm";
action: STATE_SET "disabled" 0.0;
action: STATE_SET "disabled";
target: "disabler";
}
program { name: "enable";
program { "enable";
signal: "elm,state,enabled";
source: "elm";
action: STATE_SET "default" 0.0;
action: STATE_SET "default";
target: "disabler";
}
}
}
group { name: "elm/spin_button/base/vertical";
inherit: "elm/spin_button/base/default";
group { "efl/spin_button:vertical";
inherit: "efl/spin_button";
parts {
part { name: "elm.swallow.inc_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
swallow { "elm.swallow.inc_button";
scale;
desc { "default";
rel1.to: "inset";
rel1.offset: 1 1;
rel1.relative: 1.0 0.0;
@ -183,11 +174,10 @@ group { name: "elm/spin_button/base/vertical";
align: 1.0 0.5;
}
}
part { name: "elm.swallow.text_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
visible: 1;
swallow { "elm.swallow.text_button";
scale;
desc { "default";
vis;
rel1.to_y: "inset";
rel1.to_x: "elm.swallow.dec_button";
rel1.relative: 1.0 0.0;
@ -197,15 +187,14 @@ group { name: "elm/spin_button/base/vertical";
rel2.relative: 0.0 1.0;
rel2.offset: -2 -2;
}
description { state: "active" 0.0;
inherit: "default" 0.0;
visible: 0;
desc { "active";
inherit: "default";
hid;
}
}
part { name: "elm.swallow.dec_button";
type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
swallow { "elm.swallow.dec_button";
scale;
desc { "default";
rel1.to: "inset";
rel1.offset: 1 1;
rel2.to: "inset";
@ -216,3 +205,24 @@ group { name: "elm/spin_button/base/vertical";
}
}
}
group { "efl/spin_button/inc_button";
inherit: "elm/button/base/spinner/increase/default";
}
group { "efl/spin_button/dec_button";
inherit: "elm/button/base/spinner/decrease/default";
}
group { "efl/spin_button/text_button";
inherit: "elm/button/base/spinner/default";
alias: "efl/spin_button/text_button:vertical";
}
group { "efl/spin_button/inc_button:vertical";
inherit: "elm/button/base/spinner/increase/vertical";
}
group { "efl/spin_button/dec_button:vertical";
inherit: "elm/button/base/spinner/decrease/vertical";
}

View File

@ -3,7 +3,7 @@
#endif
#include <Elementary.h>
#define MAX_NUM_OF_CONTENT 18
#define MAX_NUM_OF_CONTENT 19
const Efl_Class *content_class[MAX_NUM_OF_CONTENT];
@ -141,6 +141,7 @@ test_part_background(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
content_class[15] = EFL_UI_IMAGE_ZOOMABLE_CLASS;
content_class[16] = EFL_UI_NSTATE_CLASS;
content_class[17] = EFL_UI_SPIN_CLASS;
content_class[18] = EFL_UI_SPIN_BUTTON_CLASS;
win = efl_add(EFL_UI_WIN_CLASS, NULL,
efl_text_set(efl_added, "Widget Part Background"),

View File

@ -150,19 +150,6 @@ _efl_ui_spin_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Spin_Data *_pd EINA_UNUSED)
evas_object_size_hint_max_set(obj, -1, -1);
}
EOLIAN static Efl_Ui_Theme_Apply
_efl_ui_spin_elm_widget_theme_apply(Eo *obj, Efl_Ui_Spin_Data *sd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED);
if (!elm_layout_theme_set(obj, "spin", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
elm_layout_sizing_eval(obj);
return EFL_UI_THEME_APPLY_SUCCESS;
}
EOLIAN static Eina_Bool
_efl_ui_spin_elm_widget_widget_event(Eo *obj, Efl_Ui_Spin_Data *sd, const Efl_Event *eo_event, Evas_Object *src EINA_UNUSED)
{
@ -187,6 +174,10 @@ _efl_ui_spin_elm_widget_widget_event(Eo *obj, Efl_Ui_Spin_Data *sd, const Efl_Ev
EOLIAN static Eo *
_efl_ui_spin_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Data *sd)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
if (!elm_widget_theme_klass_get(obj))
elm_widget_theme_klass_set(obj, "spin");
obj = efl_constructor(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
@ -194,8 +185,10 @@ _efl_ui_spin_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Data *sd)
sd->val_max = 100.0;
sd->step = 1.0;
if (!elm_layout_theme_set(obj, "spin", "base",
elm_widget_style_get(obj)))
if (!elm_widget_theme_object_set(obj, wd->resize_obj,
elm_widget_theme_klass_get(obj),
elm_widget_theme_element_get(obj),
elm_widget_theme_style_get(obj)))
CRI("Failed to set layout!");
_label_write(obj);
@ -206,14 +199,6 @@ _efl_ui_spin_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Data *sd)
return obj;
}
EOLIAN static Eo *
_efl_ui_spin_efl_object_finalize(Eo *obj, Efl_Ui_Spin_Data *sd EINA_UNUSED)
{
obj = efl_finalize(efl_super(obj, MY_CLASS));
return obj;
}
EOLIAN static void
_efl_ui_spin_efl_object_destructor(Eo *obj, Efl_Ui_Spin_Data *sd EINA_UNUSED)
{

View File

@ -10,9 +10,7 @@ class Efl.Ui.Spin (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Format,
]]
implements {
Efl.Object.constructor;
Efl.Object.finalize;
Efl.Object.destructor;
Elm.Widget.theme_apply;
Elm.Widget.widget_event;
Efl.Ui.Range.range_min_max { get; set; }
Efl.Ui.Range.range_step { get; set; }

View File

@ -20,6 +20,10 @@
#define EFL_UI_SPIN_BUTTON_DELAY_CHANGE_TIME 0.2
static const char PART_NAME_DEC_BUTTON[] = "dec_button";
static const char PART_NAME_TEXT_BUTTON[] = "text_button";
static const char PART_NAME_INC_BUTTON[] = "inc_button";
static void
_inc_dec_button_clicked_cb(void *data, const Efl_Event *event);
static void
@ -101,13 +105,15 @@ _label_write(Evas_Object *obj)
Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS);
if (pd->templates)
elm_layout_text_set(sd->text_button, "elm.text", pd->templates);
{
efl_text_set(sd->text_button, pd->templates);
}
else
{
char buf[1024];
snprintf(buf, sizeof(buf), "%.0f", pd->val);
elm_layout_text_set(sd->text_button, "elm.text", buf);
efl_text_set(sd->text_button, buf);
}
}
@ -151,9 +157,7 @@ _entry_hide(Evas_Object *obj)
Efl_Ui_Spin_Button_Data *sd = efl_data_scope_get(obj, MY_CLASS);
elm_layout_signal_emit(obj, "elm,state,button,active", "elm");
evas_object_show(sd->text_button);
elm_layout_signal_emit(obj, "elm,state,entry,inactive", "elm");
evas_object_hide(sd->ent);
if (sd->entry_visible && !evas_focus_state_get(evas_object_evas_get(obj)))
sd->entry_reactivate = EINA_TRUE;
@ -337,7 +341,6 @@ _entry_show_cb(void *data,
elm_entry_select_all(obj);
sd->entry_visible = EINA_TRUE;
elm_layout_signal_emit(data, "elm,state,button,inactive", "elm");
evas_object_hide(sd->text_button);
}
static void
@ -376,7 +379,6 @@ _toggle_entry(Evas_Object *obj)
_entry_focus_changed_cb, obj);
sd->entry_visible = EINA_TRUE;
elm_layout_signal_emit(obj, "elm,state,entry,active", "elm");
evas_object_show(sd->ent);
{
Eina_List *items = NULL;
@ -617,7 +619,7 @@ _access_info_cb(void *data, Evas_Object *obj EINA_UNUSED)
if (sd->entry_visible)
txt = elm_object_text_get(sd->ent);
else
txt = elm_object_text_get(sd->text_button);
txt = efl_text_get(sd->text_button);
if (txt) return strdup(txt);
@ -717,13 +719,14 @@ _access_spinner_register(Evas_Object *obj, Eina_Bool is_access)
EOLIAN static Efl_Ui_Theme_Apply
_efl_ui_spin_button_elm_widget_theme_apply(Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED);
Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED;
if (!elm_layout_theme_set(obj, "spin_button", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
if (!int_ret) return EFL_UI_THEME_APPLY_FAILED;
if (sd->ent)
{
//elm_widget_element_update(obj, sd->ent, PART_NAME_TEXT);
Eina_Strbuf *buf = eina_strbuf_new();
eina_strbuf_append_printf(buf, "spin_button/%s", elm_widget_style_get(obj));
elm_widget_style_set(sd->ent, eina_strbuf_string_get(buf));
@ -731,56 +734,40 @@ _efl_ui_spin_button_elm_widget_theme_apply(Eo *obj, Efl_Ui_Spin_Button_Data *sd
}
if (sd->inc_button)
{
Eina_Strbuf *buf = eina_strbuf_new();
eina_strbuf_append_printf(buf, "spin_button/increase/%s", elm_widget_style_get(obj));
elm_widget_style_set(sd->inc_button, eina_strbuf_string_get(buf));
eina_strbuf_free(buf);
}
elm_widget_element_update(obj, sd->inc_button, PART_NAME_INC_BUTTON);
if (sd->text_button)
{
Eina_Strbuf *buf = eina_strbuf_new();
eina_strbuf_append_printf(buf, "spin_button/%s", elm_widget_style_get(obj));
elm_widget_style_set(sd->text_button, eina_strbuf_string_get(buf));
eina_strbuf_free(buf);
}
elm_widget_element_update(obj, sd->text_button, PART_NAME_TEXT_BUTTON);
if (sd->dec_button)
{
Eina_Strbuf *buf = eina_strbuf_new();
eina_strbuf_append_printf(buf, "spin_button/decrease/%s", elm_widget_style_get(obj));
elm_widget_style_set(sd->dec_button, eina_strbuf_string_get(buf));
eina_strbuf_free(buf);
}
elm_widget_element_update(obj, sd->dec_button, PART_NAME_DEC_BUTTON);
if (_elm_config->access_mode)
_access_spinner_register(obj, EINA_TRUE);
_label_write(obj);
elm_layout_sizing_eval(obj);
return EFL_UI_THEME_APPLY_SUCCESS;
}
EOLIAN static Eo *
_efl_ui_spin_button_efl_object_finalize(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
_efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
{
obj = efl_finalize(efl_super(obj, MY_CLASS));
if (!elm_widget_theme_klass_get(obj))
elm_widget_theme_klass_set(obj, "spin_button");
obj = efl_constructor(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
sd->first_interval = 0.85;
if (!elm_layout_theme_set(obj, "spin_button", "base",
elm_widget_style_get(obj)))
CRI("Failed to set layout!");
sd->inc_button = efl_add(EFL_UI_BUTTON_CLASS, obj,
efl_ui_widget_style_set(efl_added, "spinner/increase/default"),
elm_widget_element_update(obj, efl_added, PART_NAME_INC_BUTTON),
efl_event_callback_array_add(efl_added, _inc_dec_button_cb(), obj),
efl_content_set(efl_part(obj, "elm.swallow.inc_button"), efl_added));
sd->text_button = efl_add(EFL_UI_BUTTON_CLASS, obj,
efl_ui_widget_style_set(efl_added, "spinner/default"),
elm_widget_element_update(obj, efl_added, PART_NAME_TEXT_BUTTON),
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
_text_button_clicked_cb, obj),
efl_event_callback_add(efl_added, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED,
@ -788,7 +775,7 @@ _efl_ui_spin_button_efl_object_finalize(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
efl_content_set(efl_part(obj, "elm.swallow.text_button"), efl_added));
sd->dec_button = efl_add(EFL_UI_BUTTON_CLASS, obj,
efl_ui_widget_style_set(efl_added, "spinner/decrease/default"),
elm_widget_element_update(obj, efl_added, PART_NAME_DEC_BUTTON),
efl_event_callback_array_add(efl_added, _inc_dec_button_cb(), obj),
efl_content_set(efl_part(obj, "elm.swallow.dec_button"), efl_added));
@ -805,10 +792,8 @@ _efl_ui_spin_button_efl_object_finalize(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
elm_layout_signal_callback_add
(obj, "elm,action,entry,toggle", "*", _entry_toggle_cb, NULL);
_label_write(obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_layout_sizing_eval(obj);
efl_access_role_set(obj, EFL_ACCESS_ROLE_SPIN_BUTTON);
return obj;

View File

@ -63,7 +63,7 @@ class Efl.Ui.Spin_Button (Efl.Ui.Spin, Efl.Ui.Focus.Composition,
}
}
implements {
Efl.Object.finalize;
Efl.Object.constructor;
Elm.Widget.theme_apply;
Elm.Widget.widget_event;
Elm.Widget.on_focus_update;