From: Oskar Chodowicz Date: Fri, 10 Aug 2018 10:13:05 +0000 (+0200) Subject: Add accessibility configuration with eet X-Git-Tag: accepted/tizen/unified/20180921.042439^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=713c56e02eebfa146a2b092673682fa86320b230;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-screen-reader.git Add accessibility configuration with eet Change-Id: I8a4a2491f2bb3cb46b7756b90532c5e73fb2cb70 --- diff --git a/src/Makefile.am b/src/Makefile.am index edcd686..9b789cc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,6 +13,7 @@ module_la_SOURCES = \ e_dispatch_rotation_event.c \ e_universal_switch.c \ e_mod_utils.c \ + e_mod_accessibility_conf.c \ e_dispatch_key_event.c module_la_LIBADD = diff --git a/src/e_mod_accessibility_conf.c b/src/e_mod_accessibility_conf.c new file mode 100644 index 0000000..b13274e --- /dev/null +++ b/src/e_mod_accessibility_conf.c @@ -0,0 +1,66 @@ +#include "e_mod_accessibility_conf.h" +#include "e.h" + +#define DEFAULT_QUICKPANEL_AREA_SIZE 40 +#define DEFAULT_LONGPRESS_TIMEOUT 0.4 +#define ACCESSIBILITY_CONFIG "Accessibility_Config" +#define MODULE_ACCESSIBILITY "module.accessibility" + +typedef struct _E_Accessibility_Config_Data +{ + E_Module *module; + E_Config_DD *conf_edd; + E_Accessibility_Conf_Edd *conf; +} E_Accessibility_Config_Data; + +E_Accessibility_Config_Data *aconfig = NULL; + +void +_e_accessibility_conf_value_check( void ) +{ + E_Accessibility_Conf_Edd *conf = aconfig->conf; + + if (conf->gesture.quickpanel_area_size <= 0) conf->gesture.quickpanel_area_size = DEFAULT_QUICKPANEL_AREA_SIZE; + if (conf->gesture.longpress_timeout <= 0.0) conf->gesture.longpress_timeout = DEFAULT_LONGPRESS_TIMEOUT; +} + +Eina_Bool +e_accessibility_conf_init(E_Module *m) +{ + aconfig = E_NEW(E_Accessibility_Config_Data, 1); + if (!aconfig) + return EINA_FALSE; + aconfig->module = m; + aconfig->conf_edd = E_CONFIG_DD_NEW(ACCESSIBILITY_CONFIG, E_Accessibility_Conf_Edd); + if (!aconfig->conf_edd) + return EINA_FALSE; + + E_CONFIG_VAL(aconfig->conf_edd, E_Accessibility_Conf_Edd, gesture.quickpanel_area_size, UINT); + E_CONFIG_VAL(aconfig->conf_edd, E_Accessibility_Conf_Edd, gesture.longpress_timeout, DOUBLE); + + aconfig->conf = e_config_domain_load(MODULE_ACCESSIBILITY, aconfig->conf_edd); + + if (!aconfig->conf) + { + ERR("Failed to find %s config file.", MODULE_ACCESSIBILITY); + return EINA_FALSE; + } + _e_accessibility_conf_value_check(); + return EINA_TRUE; +} + +void +e_accessibility_conf_deinit( void ) +{ + if (!aconfig) + return; + if (aconfig->conf) + E_FREE(aconfig->conf); + E_CONFIG_DD_FREE(aconfig->conf_edd); + E_FREE(aconfig); +} + +E_Accessibility_Conf_Edd* e_accessibility_get_configuration( void ) +{ + return aconfig ? aconfig->conf : NULL; +} \ No newline at end of file diff --git a/src/e_mod_accessibility_conf.h b/src/e_mod_accessibility_conf.h new file mode 100644 index 0000000..272c4a4 --- /dev/null +++ b/src/e_mod_accessibility_conf.h @@ -0,0 +1,17 @@ +#ifndef E_MOD_ACCESSIBILITY_CONF_H__ +#define E_MOD_ACCESSIBILITY_CONF_H__ + +#include "e.h" + +typedef struct _E_Accessibility_Conf_Edd { + struct { + unsigned int quickpanel_area_size; + double longpress_timeout; + } gesture; +} E_Accessibility_Conf_Edd; + +Eina_Bool e_accessibility_conf_init(); +void e_accessibility_conf_shutdown(); +E_Accessibility_Conf_Edd* e_accessibility_get_configuration(); + +#endif//E_MOD_ACCESSIBILITY_CONF_H__ diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 11de284..282340c 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -8,6 +8,7 @@ #include #include #include "e_universal_switch.h" +#include "e_mod_accessibility_conf.h" #define E_A11Y_SERVICE_BUS_NAME "org.enlightenment.wm-screen-reader" #define E_A11Y_SERVICE_NAVI_IFC_NAME "org.tizen.GestureNavigation" @@ -27,7 +28,6 @@ Eina_Bool is_screen_reader_support; int highlighted_object_x, highlighted_object_y; Eina_Bool is_selection_mode; int object_needs_scroll_from_x, object_needs_scroll_from_y; - EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, @@ -629,24 +629,31 @@ e_modapi_init(E_Module *m) { _e_mod_log_init(); if (_e_mod_atspi_dbus_init()) - goto fail; + { + ERROR("Dbus initialization failed."); + return NULL; + } if (!_e_mod_atspi_vconf_init()) - { - _e_mod_atspi_dbus_shutdown(); - goto fail; - } + { + _e_mod_atspi_dbus_shutdown(); + ERROR("AT-SPI vconf initialization failed."); + return NULL; + } + if (!e_accessibility_conf_init(m)) + { + ERROR("Accessibility config initialization failed."); + e_modapi_shutdown(m); + return NULL; + } return m; -fail: - ERROR("Dbus initialization failed."); - - return NULL; } EAPI int e_modapi_shutdown(E_Module *m EINA_UNUSED) { + e_accessibility_conf_shutdown(); _e_mod_log_shutdown(); _e_mod_atspi_dbus_shutdown(); diff --git a/src/e_mod_main.h b/src/e_mod_main.h index 057a108..b72163d 100644 --- a/src/e_mod_main.h +++ b/src/e_mod_main.h @@ -22,4 +22,4 @@ typedef enum signal_type_ { MENU_MOUSE_UP_SIGNAL } signal_type; -#endif//__E_MOD_MAIN_H__ +#endif//__E_MOD_MAIN_H__ \ No newline at end of file diff --git a/src/e_screen_reader_gestures.c b/src/e_screen_reader_gestures.c index 5124442..842828d 100644 --- a/src/e_screen_reader_gestures.c +++ b/src/e_screen_reader_gestures.c @@ -1,10 +1,10 @@ #include "e.h" #include "e_comp.h" #include "e_screen_reader_private.h" +#include "e_mod_accessibility_conf.h" -#define QUICKPANEL_AREA_SIZE 40 /* area size to open/close quickpanel */ #define HISTORY_MAX 8 -#define LONGPRESS_TIMEOUT 0.4 + double MAGIC_NUMBER = 987654321.0; typedef enum { @@ -804,12 +804,12 @@ _hover_gesture_mouse_down(Ecore_Event_Mouse_Button *ev, Cover *cov) cov->hover_gesture.y[1] = ev->root.y; cov->hover_gesture.finger[1] = ev->multi.device; cov->hover_gesture.n_fingers = 2; - + E_Accessibility_Conf_Edd* conf = e_accessibility_get_configuration(); /* Make Quickpanel Open Easy */ - if (((cov->hover_gesture.y[0] < cov->zone.y + QUICKPANEL_AREA_SIZE) - && (cov->hover_gesture.y[1] < cov->zone.y + QUICKPANEL_AREA_SIZE)) || - ((cov->hover_gesture.y[0] > cov->zone.y + cov->zone.h - QUICKPANEL_AREA_SIZE) - && (cov->hover_gesture.y[1] > cov->zone.y + cov->zone.h - QUICKPANEL_AREA_SIZE))) + if (((cov->hover_gesture.y[0] < cov->zone.y + conf->gesture.quickpanel_area_size) + && (cov->hover_gesture.y[1] < cov->zone.y + conf->gesture.quickpanel_area_size)) || + ((cov->hover_gesture.y[0] > cov->zone.y + cov->zone.h - conf->gesture.quickpanel_area_size) + && (cov->hover_gesture.y[1] > cov->zone.y + cov->zone.h - conf->gesture.quickpanel_area_size))) { /* Do what _on_hover_timeout does */ cov->hover_gesture.longpressed = EINA_TRUE;