Add accessibility configuration with eet 76/186576/7 accepted/tizen/unified/20180921.042439 submit/tizen/20180823.082347 submit/tizen/20180828.075038 submit/tizen/20180830.062736 submit/tizen/20180906.104644 submit/tizen/20180907.051504 submit/tizen/20180919.084736 submit/tizen/20180920.084839 submit/tizen/20180920.105841
authorOskar Chodowicz <o.chodowicz@samsung.com>
Fri, 10 Aug 2018 10:13:05 +0000 (12:13 +0200)
committerLukasz Wlazly <l.wlazly@partner.samsung.com>
Tue, 21 Aug 2018 08:34:39 +0000 (10:34 +0200)
Change-Id: I8a4a2491f2bb3cb46b7756b90532c5e73fb2cb70

src/Makefile.am
src/e_mod_accessibility_conf.c [new file with mode: 0644]
src/e_mod_accessibility_conf.h [new file with mode: 0644]
src/e_mod_main.c
src/e_mod_main.h
src/e_screen_reader_gestures.c

index edcd686..9b789cc 100644 (file)
@@ -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 (file)
index 0000000..b13274e
--- /dev/null
@@ -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 (file)
index 0000000..272c4a4
--- /dev/null
@@ -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__
index 11de284..282340c 100644 (file)
@@ -8,6 +8,7 @@
 #include <e_dispatch_rotation_event.h>
 #include <e_dispatch_key_event.h>
 #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();
 
index 057a108..b72163d 100644 (file)
@@ -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
index 5124442..842828d 100644 (file)
@@ -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;