elm_interface_atspi_accessible.c \
elm_interface_atspi_action.c \
elm_interface_atspi_component.c \
+elm_interface_atspi_value.c \
elm_interface_atspi_widget.c \
elm_interface_atspi_widget_action.c \
elm_interface_atspi_window.c \
elm_interface_atspi_action.eo.h \
elm_interface_atspi_component.eo.c \
elm_interface_atspi_component.eo.h \
+ elm_interface_atspi_value.eo.c \
+ elm_interface_atspi_value.eo.h \
elm_interface_atspi_widget.eo.c \
elm_interface_atspi_widget.eo.h \
elm_interface_atspi_widget_action.eo.c \
elm_interface_atspi_accessible.eo \
elm_interface_atspi_action.eo \
elm_interface_atspi_component.eo \
+ elm_interface_atspi_value.eo \
elm_interface_atspi_widget.eo \
elm_interface_atspi_widget_action.eo \
elm_interface_atspi_window.eo \
elm_interface_atspi_accessible.eo.h \
elm_interface_atspi_action.eo.h \
elm_interface_atspi_component.eo.h \
+ elm_interface_atspi_value.eo.h \
elm_interface_atspi_widget.eo.h \
elm_interface_atspi_widget_action.eo.h \
elm_interface_atspi_window.eo.h \
#define ELM_INTERFACE_ATSPI_COMPONENT_PROTECTED
#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
#define ELM_INTERFACE_ATSPI_ACTION_PROTECTED
+#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
#include "atspi/atspi-constants.h"
#include <stdint.h>
#include "elm_interface_atspi_component.eo.h"
#include "elm_interface_atspi_window.eo.h"
#include "elm_interface_atspi_action.eo.h"
+#include "elm_interface_atspi_value.eo.h"
/*
* Accessibility Bus info not defined in atspi-constants.h
return EINA_FALSE;
}
+static Eldbus_Message*
+_value_properties_set(const Eldbus_Service_Interface *interface, const char *property,
+ Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg)
+{
+ double value;
+ Eina_Bool ret;
+ const char *obj_path = eldbus_service_object_path_get(interface);
+ Eo *obj = _access_object_from_path(obj_path);
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
+
+ if (!eldbus_message_iter_arguments_get(iter, "d", &value))
+ {
+ return eldbus_message_error_new(request_msg, "org.freedesktop.DBus.Error.InvalidArgs", "Expected value of type: double.");
+ }
+
+ if (!strcmp(property, "CurrentValue"))
+ {
+ eo_do(obj, ret = elm_interface_atspi_value_value_and_text_set(value, NULL));
+ Eldbus_Message *answer = eldbus_message_method_return_new(request_msg);
+ eldbus_message_arguments_append(answer, "b", ret);
+ return answer;
+ }
+
+ return NULL;
+}
+
+static Eina_Bool
+_value_properties_get(const Eldbus_Service_Interface *interface, const char *property,
+ Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED,
+ Eldbus_Message **error EINA_UNUSED)
+{
+ double value;
+ const char *obj_path = eldbus_service_object_path_get(interface);
+ Eo *obj = _access_object_from_path(obj_path);
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
+
+ if (!strcmp(property, "CurrentValue"))
+ {
+ eo_do(obj, elm_interface_atspi_value_value_and_text_get(&value, NULL));
+ eldbus_message_iter_basic_append(iter, 'd', value);
+ return EINA_TRUE;
+ }
+ if (!strcmp(property, "MinimumValue"))
+ {
+ eo_do(obj, elm_interface_atspi_value_range_get(&value, NULL, NULL));
+ eldbus_message_iter_basic_append(iter, 'd', value);
+ return EINA_TRUE;
+ }
+ if (!strcmp(property, "MaximumValue"))
+ {
+ eo_do(obj, elm_interface_atspi_value_range_get(NULL, &value, NULL));
+ eldbus_message_iter_basic_append(iter, 'd', value);
+ return EINA_TRUE;
+ }
+ if (!strcmp(property, "MinimumIncrement"))
+ {
+ eo_do(obj, value = elm_interface_atspi_value_increment_get());
+ eldbus_message_iter_basic_append(iter, 'd', value);
+ return EINA_TRUE;
+ }
+ return EINA_FALSE;
+}
+
static const Eldbus_Property accessible_properties[] = {
{ "Name", "s", _accessible_property_get, NULL, 0 },
{ "Description", "s", _accessible_property_get, NULL, 0 },
{ NULL, NULL, NULL, NULL, 0 }
};
+static const Eldbus_Property value_properties[] = {
+ { "MinimumValue", "d", NULL, NULL, 0 },
+ { "MaximumValue", "d", NULL, NULL, 0 },
+ { "MinimumIncrement", "d", NULL, NULL, 0 },
+ { "CurrentValue", "d", NULL, NULL, 0 },
+ { NULL, NULL, NULL, NULL, 0 }
+};
+
static const Eldbus_Service_Interface_Desc accessible_iface_desc = {
ATSPI_DBUS_INTERFACE_ACCESSIBLE, accessible_methods, NULL, accessible_properties, _accessible_property_get, NULL
};
ATSPI_DBUS_INTERFACE_ACTION, action_methods, NULL, action_properties, NULL, NULL
};
+static const Eldbus_Service_Interface_Desc value_iface_desc = {
+ ATSPI_DBUS_INTERFACE_VALUE, NULL, NULL, value_properties, _value_properties_get, _value_properties_set
+};
+
static void
_object_append_reference(Eldbus_Message_Iter *iter, Eo *obj)
{
eldbus_message_iter_basic_append(iter_sub_array, 's', ATSPI_DBUS_INTERFACE_COMPONENT);
if (eo_isa(data, ELM_INTERFACE_ATSPI_ACTION_CLASS))
eldbus_message_iter_basic_append(iter_sub_array, 's', ATSPI_DBUS_INTERFACE_ACTION);
+ if (eo_isa(data, ELM_INTERFACE_ATSPI_VALUE_CLASS))
+ eldbus_message_iter_basic_append(iter_sub_array, 's', ATSPI_DBUS_INTERFACE_VALUE);
eldbus_message_iter_container_close(iter_struct, iter_sub_array);
}
if (eo_isa(obj, ELM_INTERFACE_ATSPI_ACTION_CLASS))
eldbus_service_interface_register(_a11y_bus, path, &action_iface_desc);
+ if (eo_isa(obj, ELM_INTERFACE_ATSPI_VALUE_CLASS))
+ eldbus_service_interface_register(_a11y_bus, path, &value_iface_desc);
}
}
#include "elm_widget_slider.h"
#include "elm_widget_layout.h"
+#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
+#include "elm_interface_atspi_value.eo.h"
+
#define MY_CLASS ELM_OBJ_SLIDER_CLASS
#define MY_CLASS_NAME "Elm_Slider"
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
+// A11Y Accessibility
+
+EOLIAN static void
+_elm_slider_elm_interface_atspi_value_value_and_text_get(Eo *obj EINA_UNUSED, Elm_Slider_Data *sd, double *value, const char **text)
+{
+ if (value) *value = sd->val;
+ if (text) *text = NULL;
+}
+
+EOLIAN static Eina_Bool
+_elm_slider_elm_interface_atspi_value_value_and_text_set(Eo *obj, Elm_Slider_Data *sd, double value, const char *text EINA_UNUSED)
+{
+ double oldval = sd->val;
+
+ if (sd->val_min > value) return EINA_FALSE;
+ if (sd->val_max < value) return EINA_FALSE;
+
+ evas_object_smart_callback_call(obj, SIG_DRAG_START, NULL);
+ sd->val = value;
+ _visuals_refresh(obj);
+ sd->val = oldval;
+ _slider_update(obj, EINA_TRUE);
+ evas_object_smart_callback_call(obj, SIG_DRAG_STOP, NULL);
+
+ return EINA_TRUE;
+}
+
+EOLIAN static void
+_elm_slider_elm_interface_atspi_value_range_get(Eo *obj EINA_UNUSED, Elm_Slider_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_slider_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Slider_Data *sd)
+{
+ return sd->step;
+}
+
+// A11Y Accessibility - END
+
#include "elm_slider.eo.c"