diff options
Diffstat (limited to 'src/lib/elementary/efl_ui_spin_button.c')
-rw-r--r-- | src/lib/elementary/efl_ui_spin_button.c | 88 |
1 files changed, 52 insertions, 36 deletions
diff --git a/src/lib/elementary/efl_ui_spin_button.c b/src/lib/elementary/efl_ui_spin_button.c index 73d71cb861..6b2bfbeae8 100644 --- a/src/lib/elementary/efl_ui_spin_button.c +++ b/src/lib/elementary/efl_ui_spin_button.c @@ -2,7 +2,7 @@ # include "elementary_config.h" #endif -#define EFL_ACCESS_PROTECTED +#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_VALUE_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_UI_FOCUS_COMPOSITION_PROTECTED @@ -20,6 +20,7 @@ #define EFL_UI_SPIN_BUTTON_DELAY_CHANGE_TIME 0.2 +static const char PART_NAME_ENTRY[] = "entry"; 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"; @@ -49,9 +50,22 @@ EFL_CALLBACKS_ARRAY_DEFINE(_inc_dec_button_cb, static void _entry_show(Evas_Object *obj) { + Efl_Ui_Spin_Special_Value *sv; + Eina_Array_Iterator iterator; + unsigned int i; + char buf[32], fmt[32] = "%0.f"; + Efl_Ui_Spin_Button_Data *sd = efl_data_scope_get(obj, MY_CLASS); Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS); - char buf[32], fmt[32] = "%0.f"; + + EINA_ARRAY_ITER_NEXT(pd->special_values, i, sv, iterator) + { + if (sv->value == pd->val) + { + snprintf(buf, sizeof(buf), "%s", sv->label); + elm_object_text_set(sd->ent, buf); + } + } /* try to construct just the format from given label * completely ignoring pre/post words @@ -156,8 +170,8 @@ _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"); - elm_layout_signal_emit(obj, "elm,state,entry,inactive", "elm"); + elm_layout_signal_emit(obj, "efl,state,button,active", "efl"); + elm_layout_signal_emit(obj, "efl,state,entry,inactive", "efl"); if (sd->entry_visible && !evas_focus_state_get(evas_object_evas_get(obj))) sd->entry_reactivate = EINA_TRUE; @@ -168,6 +182,9 @@ _entry_hide(Evas_Object *obj) static void _entry_value_apply(Evas_Object *obj) { + Efl_Ui_Spin_Special_Value *sv; + Eina_Array_Iterator iterator; + unsigned int i; const char *str; double val; char *end; @@ -183,6 +200,10 @@ _entry_value_apply(Evas_Object *obj) str = elm_object_text_get(sd->ent); if (!str) return; + EINA_ARRAY_ITER_NEXT(pd->special_values, i, sv, iterator) + if (sv->value == pd->val) + if (!strcmp(sv->label, str)) return; + val = strtod(str, &end); if (((*end != '\0') && (!isspace(*end))) || (fabs(val - pd->val) < DBL_EPSILON)) return; efl_ui_range_value_set(obj, val); @@ -339,7 +360,7 @@ _entry_show_cb(void *data, elm_object_focus_set(obj, EINA_TRUE); elm_entry_select_all(obj); sd->entry_visible = EINA_TRUE; - elm_layout_signal_emit(data, "elm,state,button,inactive", "elm"); + elm_layout_signal_emit(data, "efl,state,button,inactive", "efl"); } static void @@ -365,7 +386,7 @@ _toggle_entry(Evas_Object *obj) evas_object_event_callback_add (sd->ent, EVAS_CALLBACK_SHOW, _entry_show_cb, obj); elm_entry_single_line_set(sd->ent, EINA_TRUE); - elm_layout_content_set(obj, "elm.swallow.entry", sd->ent); + elm_layout_content_set(obj, "efl.entry", sd->ent); _entry_accept_filter_add(obj); elm_entry_markup_filter_append(sd->ent, _invalid_input_validity_filter, NULL); if (_elm_config->spinner_min_max_filter_enable) @@ -377,7 +398,7 @@ _toggle_entry(Evas_Object *obj) efl_event_callback_add(sd->ent, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _entry_focus_changed_cb, obj); sd->entry_visible = EINA_TRUE; - elm_layout_signal_emit(obj, "elm,state,entry,active", "elm"); + elm_layout_signal_emit(obj, "efl,state,entry,active", "efl"); { Eina_List *items = NULL; @@ -536,7 +557,7 @@ _key_action_toggle(Evas_Object *obj, const char *params EINA_UNUSED) } EOLIAN static Eina_Bool -_efl_ui_spin_button_elm_widget_widget_event(Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, const Efl_Event *eo_event, Evas_Object *src EINA_UNUSED) +_efl_ui_spin_button_efl_ui_widget_widget_event(Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, const Efl_Event *eo_event, Evas_Object *src EINA_UNUSED) { Eo *ev = eo_event->info; @@ -568,17 +589,18 @@ _efl_ui_spin_button_elm_widget_widget_event(Eo *obj, Efl_Ui_Spin_Button_Data *sd } EOLIAN static Eina_Bool -_efl_ui_spin_button_elm_widget_on_focus_update(Eo *obj, Efl_Ui_Spin_Button_Data *sd, Elm_Object_Item *item EINA_UNUSED) +_efl_ui_spin_button_efl_ui_focus_object_on_focus_update(Eo *obj, Efl_Ui_Spin_Button_Data *sd) { Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_ui_widget_on_focus_update(efl_super(obj, MY_CLASS), NULL); + int_ret = efl_ui_focus_object_on_focus_update(efl_super(obj, MY_CLASS)); if (!int_ret) return EINA_FALSE; if (!efl_ui_focus_object_focus_get(obj)) { ELM_SAFE_FREE(sd->delay_change_timer, ecore_timer_del); ELM_SAFE_FREE(sd->spin_timer, ecore_timer_del); + ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); } else { @@ -656,13 +678,13 @@ _access_increment_decrement_info_say(Evas_Object *obj, if (is_incremented) { elm_object_signal_emit - (sd->inc_button, "elm,action,anim,activate", "elm"); + (sd->inc_button, "efl,action,anim,activate", "efl"); eina_strbuf_append(buf, E_("incremented")); } else { elm_object_signal_emit - (sd->dec_button, "elm,action,anim,activate", "elm"); + (sd->dec_button, "efl,action,anim,activate", "efl"); eina_strbuf_append(buf, E_("decremented")); } @@ -686,10 +708,10 @@ _access_spinner_register(Evas_Object *obj, Eina_Bool is_access) /* unregister access */ _elm_access_edje_object_part_object_unregister (obj, elm_layout_edje_get(obj), "access"); - elm_layout_signal_emit(obj, "elm,state,access,inactive", "elm"); + elm_layout_signal_emit(obj, "efl,state,access,inactive", "efl"); return; } - elm_layout_signal_emit(obj, "elm,state,access,active", "elm"); + elm_layout_signal_emit(obj, "efl,state,access,active", "efl"); ao = _elm_access_edje_object_part_object_register (obj, elm_layout_edje_get(obj), "access"); @@ -714,7 +736,7 @@ _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) +_efl_ui_spin_button_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) { Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED; @@ -722,13 +744,7 @@ _efl_ui_spin_button_elm_widget_theme_apply(Eo *obj, Efl_Ui_Spin_Button_Data *sd 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)); - eina_strbuf_free(buf); - } + elm_widget_element_update(obj, sd->ent, PART_NAME_ENTRY); if (sd->inc_button) elm_widget_element_update(obj, sd->inc_button, PART_NAME_INC_BUTTON); @@ -761,7 +777,7 @@ _efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd) sd->inc_button = efl_add(EFL_UI_BUTTON_CLASS, obj, 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)); + efl_content_set(efl_part(obj, "efl.inc_button"), efl_added)); sd->text_button = efl_add(EFL_UI_BUTTON_CLASS, obj, elm_widget_element_update(obj, efl_added, PART_NAME_TEXT_BUTTON), @@ -769,12 +785,12 @@ _efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd) _text_button_clicked_cb, obj), efl_event_callback_add(efl_added, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _text_button_focus_changed_cb, obj), - efl_content_set(efl_part(obj, "elm.swallow.text_button"), efl_added)); + efl_content_set(efl_part(obj, "efl.text_button"), efl_added)); sd->dec_button = efl_add(EFL_UI_BUTTON_CLASS, obj, 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)); + efl_content_set(efl_part(obj, "efl.dec_button"), efl_added)); { Eina_List *items = NULL; @@ -787,11 +803,11 @@ _efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd) } elm_layout_signal_callback_add - (obj, "elm,action,entry,toggle", "*", _entry_toggle_cb, NULL); + (obj, "efl,action,entry,toggle", "*", _entry_toggle_cb, NULL); elm_widget_can_focus_set(obj, EINA_TRUE); - efl_access_role_set(obj, EFL_ACCESS_ROLE_SPIN_BUTTON); + efl_access_object_role_set(obj, EFL_ACCESS_ROLE_SPIN_BUTTON); return obj; } @@ -811,7 +827,7 @@ _efl_ui_spin_button_editable_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *s } EOLIAN static Eina_Bool -_efl_ui_spin_button_editable_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd) +_efl_ui_spin_button_editable_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd) { return sd->editable; } @@ -823,13 +839,13 @@ _efl_ui_spin_button_circulate_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data * } EOLIAN static Eina_Bool -_efl_ui_spin_button_circulate_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd) +_efl_ui_spin_button_circulate_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd) { return sd->circulate; } EOLIAN static const Efl_Access_Action_Data * -_efl_ui_spin_button_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) +_efl_ui_spin_button_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) { static Efl_Access_Action_Data atspi_actions[] = { { "toggle", "toggle", NULL, _key_action_toggle}, @@ -841,7 +857,7 @@ _efl_ui_spin_button_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED // A11Y Accessibility EOLIAN static void -_efl_ui_spin_button_efl_access_value_value_and_text_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, double *value, const char **text) +_efl_ui_spin_button_efl_access_value_value_and_text_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, double *value, const char **text) { Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS); @@ -864,7 +880,7 @@ _efl_ui_spin_button_efl_access_value_value_and_text_set(Eo *obj, Efl_Ui_Spin_But } EOLIAN static void -_efl_ui_spin_button_efl_access_value_range_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, double *lower, double *upper, const char **descr) +_efl_ui_spin_button_efl_access_value_range_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED, double *lower, double *upper, const char **descr) { Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS); @@ -874,7 +890,7 @@ _efl_ui_spin_button_efl_access_value_range_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_ } EOLIAN static double -_efl_ui_spin_button_efl_access_value_increment_get(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) +_efl_ui_spin_button_efl_access_value_increment_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) { Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS); @@ -882,12 +898,12 @@ _efl_ui_spin_button_efl_access_value_increment_get(Eo *obj EINA_UNUSED, Efl_Ui_S } EOLIAN static const char* -_efl_ui_spin_button_efl_access_name_get(Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) +_efl_ui_spin_button_efl_access_object_i18n_name_get(const Eo *obj, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED) { const char *name; - name = efl_access_name_get(efl_super(obj, EFL_UI_SPIN_BUTTON_CLASS)); + name = efl_access_object_i18n_name_get(efl_super(obj, EFL_UI_SPIN_BUTTON_CLASS)); if (name) return name; - const char *ret = elm_layout_text_get(obj, "elm.text"); + const char *ret = elm_layout_text_get(obj, "efl.text"); return ret; } |