{
base.OnInitialize();
AccessibilityRole = Role.Dialog;
- AppendAccessibilityAttribute("sub-role", "Alert");
+ AccessibilityAttributes["sub-role"] = "Alert";
Show(); // calls RegisterDefaultLabel(); Hide() will call UnregisterDefaultLabel()
}
{
base.OnInitialize();
AccessibilityRole = Role.Dialog;
- AppendAccessibilityAttribute("sub-role", "Alert");
+ AccessibilityAttributes["sub-role"] = "Alert";
Show(); // calls RegisterDefaultLabel(); Hide() will call UnregisterDefaultLabel()
}
{
base.OnInitialize();
AccessibilityRole = Role.PopupMenu;
- AppendAccessibilityAttribute("sub-role", "Alert");
+ AccessibilityAttributes["sub-role"] = "Alert";
}
/// <summary>
base.OnInitialize();
AccessibilityRole = Role.ScrollBar;
AccessibilityHighlightable = true;
- AppendAccessibilityAttribute("style", "pagecontrolbyvalue");
+ AccessibilityAttributes["style"] = "pagecontrolbyvalue";
container = new View()
{
{
base.OnInitialize();
AccessibilityRole = Role.Dialog;
- AppendAccessibilityAttribute("sub-role", "Alert");
+ AccessibilityAttributes["sub-role"] = "Alert";
container.Add(this);
container.SetTouchConsumed(true);
public static extern void DaliToolkitDevelControlClearAccessibilityRelations(HandleRef arg1);
[EditorBrowsable(EditorBrowsableState.Never)]
- [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_AppendAccessibilityAttribute")]
- public static extern void DaliToolkitDevelControlAppendAccessibilityAttribute(HandleRef arg1, string arg2, string arg3);
-
- [EditorBrowsable(EditorBrowsableState.Never)]
- [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_RemoveAccessibilityAttribute")]
- public static extern void DaliToolkitDevelControlRemoveAccessibilityAttribute(HandleRef arg1, string arg2);
-
- [EditorBrowsable(EditorBrowsableState.Never)]
- [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_ClearAccessibilityAttributes")]
- public static extern void DaliToolkitDevelControlClearAccessibilityAttributes(HandleRef arg1);
-
- [EditorBrowsable(EditorBrowsableState.Never)]
[DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_SetAccessibilityReadingInfoType2")]
public static extern void DaliToolkitDevelControlSetAccessibilityReadingInfoTypes(HandleRef arg1, int arg2);
public delegate IntPtr AccessibilityGetRangeExtents(IntPtr self, int startOffset, int endOffset, int coordType);
[EditorBrowsable(EditorBrowsableState.Never)]
public AccessibilityGetRangeExtents GetRangeExtents; // 36
+
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ public delegate void AccessibilityGetAttributesCallback(string key, string value, IntPtr userData);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ public delegate void AccessibilityGetAttributes(IntPtr self, AccessibilityGetAttributesCallback callback, IntPtr userData);
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public AccessibilityGetAttributes GetAttributes; // 37
}
[DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_DuplicateString")]
public virtual void OnInitialize()
{
AccessibilityRole = Role.Unknown;
- AppendAccessibilityAttribute("class", this.GetType().Name);
}
/// <summary>
///////////////////////////////////////////////////////////////////
/// <summary>
- /// Adds or modifies the value matched with given key.
+ /// Dictionary of accessibility attributes (key-value pairs of strings).
/// </summary>
- /// <remarks>
- /// Modification takes place if key was previously set.
- /// </remarks>
- /// <param name="key">The key to insert</param>
- /// <param name="value">The value to insert</param>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public void AppendAccessibilityAttribute(string key, string value)
- {
- Interop.ControlDevel.DaliToolkitDevelControlAppendAccessibilityAttribute(SwigCPtr, key, value);
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- }
-
- /// <summary>
- /// Erases a key with its value from accessibility attributes.
- /// </summary>
- /// <param name="key">The key to remove</param>
[EditorBrowsable(EditorBrowsableState.Never)]
- public void RemoveAccessibilityAttribute(string key)
- {
- Interop.ControlDevel.DaliToolkitDevelControlRemoveAccessibilityAttribute(SwigCPtr, key);
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- }
-
- /// <summary>
- /// Clears accessibility attributes.
- /// </summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public void ClearAccessibilityAttributes()
- {
- Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityAttributes(SwigCPtr);
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- }
+ protected Dictionary<string, string> AccessibilityAttributes { get; } = new Dictionary<string, string>();
///////////////////////////////////////////////////////////////////
// ************************** Highlight ************************ //
set
{
base.AutomationId = value;
- AppendAccessibilityAttribute("automationId", value);
+ AccessibilityAttributes["automationId"] = value;
}
}
}
var ad = Interop.ControlDevel.AccessibilityDelegate.Instance;
ad.CalculateStates = AccessibilityCalculateStatesWrapper;
+ ad.GetAttributes = AccessibilityGetAttributes; // Not a wrapper, entirely private implementation
ad.GetDescription = AccessibilityGetDescriptionWrapper;
ad.GetInterfaces = AccessibilityGetInterfaces; // Not a wrapper, entirely private implementation
ad.GetName = AccessibilityGetNameWrapper;
View view = GetViewFromRefObject(self);
if (view == null)
return 0UL;
-
+
ulong bitMask = 0UL;
lock (AccessibilityInitialStates)
return bitMask;
}
+ private static void AccessibilityGetAttributes(IntPtr self, Interop.ControlDevel.AccessibilityDelegate.AccessibilityGetAttributesCallback callback, IntPtr userData)
+ {
+ var view = GetViewFromRefObject(self);
+ var attributes = view.AccessibilityAttributes;
+ var classKey = "class";
+
+ if (!attributes.ContainsKey(classKey))
+ {
+ attributes[classKey] = view.GetType().Name;
+ }
+
+ foreach (var attribute in attributes)
+ {
+ callback(attribute.Key, attribute.Value, userData);
+ }
+ }
+
private static IntPtr AccessibilityGetDescriptionWrapper(IntPtr self)
{
string description = GetViewFromRefObject(self).AccessibilityGetDescription();