From badb5515890123ee871bb6895bc06d3afd5b4c41 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Tue, 15 Mar 2022 15:32:49 +0900 Subject: [PATCH] [NUI][AT-SPI] Add ScreenReaderEnabled, Disabled ScreenReaderEnabled should be distinguished from IsEnabled. This is because there are things to do only when the screen reader is enabled. --- .../src/internal/Interop/Interop.Accessibility.cs | 7 ++++ .../src/public/Accessibility/Accessibility.cs | 45 ++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.Accessibility.cs b/src/Tizen.NUI/src/internal/Interop/Interop.Accessibility.cs index e45066c..f296e1f 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.Accessibility.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.Accessibility.cs @@ -48,11 +48,18 @@ namespace Tizen.NUI [return: MarshalAs(UnmanagedType.U1)] public static extern bool IsEnabled(); + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "csharp_dali_accessibility_IsScreenReaderEnabled")] + [return: MarshalAs(UnmanagedType.U1)] + public static extern bool IsScreenReaderEnabled(); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void EnabledDisabledSignalHandler(); [DllImport(NDalicPINVOKE.Lib, EntryPoint = "csharp_dali_accessibility_RegisterEnabledDisabledSignalHandler")] public static extern void RegisterEnabledDisabledSignalHandler(EnabledDisabledSignalHandler enabledSignalHandler, EnabledDisabledSignalHandler disabledSignalHandler); + + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "csharp_dali_accessibility_RegisterScreenReaderEnabledDisabledSignalHandler")] + public static extern void RegisterScreenReaderEnabledDisabledSignalHandler(EnabledDisabledSignalHandler enabledSignalHandler, EnabledDisabledSignalHandler disabledSignalHandler); } } } diff --git a/src/Tizen.NUI/src/public/Accessibility/Accessibility.cs b/src/Tizen.NUI/src/public/Accessibility/Accessibility.cs index 90eb52d..7a816d0 100755 --- a/src/Tizen.NUI/src/public/Accessibility/Accessibility.cs +++ b/src/Tizen.NUI/src/public/Accessibility/Accessibility.cs @@ -46,7 +46,18 @@ namespace Tizen.NUI.Accessibility Disabled?.Invoke(typeof(Accessibility), EventArgs.Empty); }; + screenReaderEnabledSignalHandler = () => + { + ScreenReaderEnabled?.Invoke(typeof(Accessibility), EventArgs.Empty); + }; + + screenReaderDisabledSignalHandler = () => + { + ScreenReaderDisabled?.Invoke(typeof(Accessibility), EventArgs.Empty); + }; + Interop.Accessibility.RegisterEnabledDisabledSignalHandler(enabledSignalHandler, disabledSignalHandler); + Interop.Accessibility.RegisterScreenReaderEnabledDisabledSignalHandler(screenReaderEnabledSignalHandler, screenReaderDisabledSignalHandler); } #endregion Constructor @@ -67,6 +78,22 @@ namespace Tizen.NUI.Accessibility } } + /// + /// Flag to check whether the state of Screen Reader is enabled or not. + /// + /// + /// Getter returns true if Screen Reader is enabled, false otherwise. + /// + /// This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static bool IsScreenReaderEnabled + { + get + { + return (bool)Interop.Accessibility.IsScreenReaderEnabled(); + } + } + #endregion Property #region Method @@ -270,6 +297,20 @@ namespace Tizen.NUI.Accessibility [EditorBrowsable(EditorBrowsableState.Never)] public static event EventHandler Disabled; + /// + /// Triggered whenever the value of IsScreenReaderEnabled would change from false to true + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static event EventHandler ScreenReaderEnabled; + + /// + /// Triggered whenever the value of IsScreenReaderEnabled would change from true to false + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static event EventHandler ScreenReaderDisabled; + #endregion Event, Enum, Struct, ETC #region Private @@ -283,6 +324,10 @@ namespace Tizen.NUI.Accessibility private static Interop.Accessibility.EnabledDisabledSignalHandler disabledSignalHandler = null; + private static Interop.Accessibility.EnabledDisabledSignalHandler screenReaderEnabledSignalHandler = null; + + private static Interop.Accessibility.EnabledDisabledSignalHandler screenReaderDisabledSignalHandler = null; + private static void SayFinishedEventCallback(int result) { NUILog.Debug($"sayFinishedEventCallback(res={result}) called!"); -- 2.7.4