atspi: value interface implementation for elm_spinner
authorZbigniew Kosinski <z.kosinski@samsung.com>
Fri, 25 Jul 2014 08:13:02 +0000 (10:13 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 25 Jul 2014 08:13:15 +0000 (10:13 +0200)
Reviewers: stanluk

Differential Revision: https://phab.enlightenment.org/D1122

src/lib/elm_spinner.c
src/lib/elm_spinner.eo

index fa03342d74c80a5eda6541ee17b53db3dc556542..8f167c618e5a47e7a6d4b06aa67b8363ed21a0ac 100644 (file)
@@ -14,6 +14,9 @@
 #include "elm_interface_atspi_accessible.h"
 #include "elm_interface_atspi_accessible.eo.h"
 
+#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
+#include "elm_interface_atspi_value.eo.h"
+
 #define MY_CLASS ELM_SPINNER_CLASS
 
 #define MY_CLASS_NAME "Elm_Spinner"
@@ -115,6 +118,7 @@ _label_write(Evas_Object *obj)
 
 apply:
    elm_layout_text_set(obj, "elm.text", buf);
+   elm_interface_atspi_accessible_name_changed_signal_emit(obj);
    if (sd->entry_visible) _entry_show(sd);
 }
 
@@ -158,6 +162,7 @@ _value_set(Evas_Object *obj,
    sd->val = new_val;
 
    evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
+   elm_interface_atspi_accessible_value_changed_signal_emit(obj);
    ecore_timer_del(sd->delay_change_timer);
    sd->delay_change_timer = ecore_timer_add(ELM_SPINNER_DELAY_CHANGE_TIME,
                                             _delay_change_timer_cb, obj);
@@ -1062,4 +1067,46 @@ _elm_spinner_class_constructor(Eo_Class *klass)
       _elm_spinner_smart_focus_next_enable = EINA_TRUE;
 }
 
+// A11Y Accessibility
+
+EOLIAN static void
+_elm_spinner_elm_interface_atspi_value_value_and_text_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd, double *value, const char **text)
+{
+   if (value) *value = sd->val;
+   if (text) *text = NULL;
+}
+
+EOLIAN static Eina_Bool
+_elm_spinner_elm_interface_atspi_value_value_and_text_set(Eo *obj, Elm_Spinner_Data *sd, double value, const char *text EINA_UNUSED)
+{
+   if (sd->val_min > value) return EINA_FALSE;
+   if (sd->val_max < value) return EINA_FALSE;
+
+   sd->val = value;
+   _val_set(obj);
+
+   return EINA_TRUE;
+}
+
+EOLIAN static void
+_elm_spinner_elm_interface_atspi_value_range_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd, double *lower, double *upper, const char **descr)
+{
+   if (lower) *lower = sd->val_min;
+   if (upper) *upper = sd->val_max;
+   if (descr) *descr = NULL;
+}
+
+EOLIAN static double
+_elm_spinner_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd)
+{
+   return sd->step;
+}
+
+EOLIAN static const char*
+_elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *sd EINA_UNUSED)
+{
+   return elm_layout_text_get(obj, "elm.text");
+}
+// A11Y Accessibility - END
+
 #include "elm_spinner.eo.c"
index ec35135aa05deb66214741dfad5ec8ab82e45e8d..cf29276b9398c18f0468f7fe9f140bb1a1075ae2 100644 (file)
@@ -1,4 +1,4 @@
-class Elm_Spinner (Elm_Layout)
+class Elm_Spinner (Elm_Layout, Elm_Interface_Atspi_Value)
 {
    eo_prefix: elm_obj_spinner;
    properties {
@@ -374,6 +374,11 @@ class Elm_Spinner (Elm_Layout)
       Elm_Widget.on_focus;
       Elm_Widget.event;
       Elm_Layout.sizing_eval;
+      Elm_Interface_Atspi_Accessible.name.get;
+      Elm_Interface_Atspi_Value.value_and_text.get;
+      Elm_Interface_Atspi_Value.value_and_text.set;
+      Elm_Interface_Atspi_Value.range.get;
+      Elm_Interface_Atspi_Value.increment.get;
    }
    events {
       changed;