{
internal static partial class Accessibility
{
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ public delegate void SayCallback(string status);
+
[DllImport(NDalicPINVOKE.Lib, EntryPoint = "csharp_dali_accessibility_say")]
- [return: MarshalAs(UnmanagedType.U1)]
- public static extern bool Say(string jarg1, bool jarg2, IntPtr jarg3);
+ public static extern void Say(string arg1_text, bool arg2_discardable, SayCallback arg3_callback);
[DllImport(NDalicPINVOKE.Lib, EntryPoint = "csharp_dali_accessibility_pause_resume")]
public static extern void PauseResume(bool jarg1);
*/
using System;
+using System.Collections.Generic;
using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using Tizen.NUI.BaseComponents;
-using System.Diagnostics.CodeAnalysis;
namespace Tizen.NUI.Accessibility
{
/// <returns></returns>
// This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
[EditorBrowsable(EditorBrowsableState.Never)]
- public static bool Say(string sentence, bool discardable)
+ public static void Say(string sentence, bool discardable)
{
- bool ret = Interop.Accessibility.Say(sentence, discardable, Marshal.GetFunctionPointerForDelegate<Delegate>(callback));
-
+ Interop.Accessibility.Say(sentence, discardable, SayFinishedEventCallback);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- return ret;
}
/// <summary>
#endregion Event, Enum, Struct, ETC
#region Private
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SayFinishedEventCallbackType(int result);
-
- private static SayFinishedEventCallbackType callback = SayFinishedEventCallback;
-
private static Interop.Accessibility.EnabledDisabledSignalHandler enabledSignalHandler = null;
private static Interop.Accessibility.EnabledDisabledSignalHandler disabledSignalHandler = null;
private static Interop.Accessibility.EnabledDisabledSignalHandler screenReaderDisabledSignalHandler = null;
- private static void SayFinishedEventCallback(int result)
+ private static readonly IReadOnlyDictionary<string, SayFinishedState> sayFinishedStateDictionary = new Dictionary<string, SayFinishedState>
{
+ ["ReadingCancelled"] = SayFinishedState.Cancelled,
+ ["ReadingStopped"] = SayFinishedState.Stopped,
+ ["ReadingSkipped"] = SayFinishedState.Skipped,
+ ["ReadingPaused"] = SayFinishedState.Paused,
+ ["ReadingResumed"] = SayFinishedState.Resumed,
+ };
+
+ private static void SayFinishedEventCallback(string status)
+ {
+ var result = sayFinishedStateDictionary.GetValueOrDefault(status, SayFinishedState.Invalid);
NUILog.Debug($"sayFinishedEventCallback(res={result}) called!");
+
SayFinished?.Invoke(typeof(Accessibility), new SayFinishedEventArgs(result));
}
get;
}
- internal SayFinishedEventArgs(int result)
+ internal SayFinishedEventArgs(Accessibility.SayFinishedState state)
{
- State = (Accessibility.SayFinishedState)(result);
+ State = state;
NUILog.Debug($"SayFinishedEventArgs Constructor! State={State}");
}
}