[NUI][AT-SPI] Add AccessibilityInterface.Selection (#3110)
authorArtur Świgoń <aswigon@yandex.com>
Wed, 9 Jun 2021 10:59:56 +0000 (12:59 +0200)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Mon, 14 Jun 2021 10:12:19 +0000 (19:12 +0900)
Co-authored-by: Artur Świgoń <a.swigon@samsung.com>
Co-authored-by: Seoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityEnum.cs

index e4b0a26..8296ed2 100755 (executable)
@@ -324,6 +324,46 @@ namespace Tizen.NUI
                 public delegate bool AccessibilityScrollToChild(IntPtr child);
                 [EditorBrowsable(EditorBrowsableState.Never)]
                 public AccessibilityScrollToChild ScrollToChild; // 27
+  
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate int AccessibilityGetSelectedChildrenCount();
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityGetSelectedChildrenCount GetSelectedChildrenCount; // 28
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate IntPtr AccessibilityGetSelectedChild(int selectedChildIndex);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityGetSelectedChild GetSelectedChild; // 29
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilitySelectChild(int childIndex);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilitySelectChild SelectChild; // 30
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilityDeselectSelectedChild(int selectedChildIndex);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityDeselectSelectedChild DeselectSelectedChild; // 31
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilityIsChildSelected(int childIndex);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityIsChildSelected IsChildSelected; // 32
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilitySelectAll();
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilitySelectAll SelectAll; // 33
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilityClearSelection();
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityClearSelection ClearSelection; // 34
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilityDeselectChild(int childIndex);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityDeselectChild DeselectChild; // 35
             }
 
             [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_SetAccessibilityConstructor_NUI")]
index 9965262..4d551b1 100755 (executable)
@@ -505,11 +505,19 @@ namespace Tizen.NUI.BaseComponents
                     SetTextContents = (newContents) => AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents)),
                     DeleteText = (startPosition, endPosition) => AccessibilityDeleteText(startPosition, endPosition),
                     ScrollToChild = (child) => {
-                        using (var view = new View(child,  true))
+                        using (var view = new View(child, true))
                         {
                             return AccessibilityScrollToChild(view);
                         }
                     },
+                    GetSelectedChildrenCount = () => AccessibilityGetSelectedChildrenCount(),
+                    GetSelectedChild = (selectedChildIndex) => View.getCPtr(AccessibilityGetSelectedChild(selectedChildIndex)).Handle,
+                    SelectChild = (childIndex) => AccessibilitySelectChild(childIndex),
+                    DeselectSelectedChild = (selectedChildIndex) => AccessibilityDeselectSelectedChild(selectedChildIndex),
+                    IsChildSelected = (childIndex) => AccessibilityIsChildSelected(childIndex),
+                    SelectAll = () => AccessibilitySelectAll(),
+                    ClearSelection = () => AccessibilityClearSelection(),
+                    DeselectChild = (childIndex) => AccessibilityDeselectChild(childIndex),
                 };
 
                 accessibilityDelegatePtr = Marshal.AllocHGlobal(size);
@@ -759,5 +767,53 @@ namespace Tizen.NUI.BaseComponents
         {
             return false;
         }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual int AccessibilityGetSelectedChildrenCount()
+        {
+            return 0;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual View AccessibilityGetSelectedChild(int selectedChildIndex)
+        {
+            return null;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilitySelectChild(int childIndex)
+        {
+            return false;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilityDeselectSelectedChild(int selectedChildIndex)
+        {
+            return false;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilityIsChildSelected(int childIndex)
+        {
+            return false;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilitySelectAll()
+        {
+            return false;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilityClearSelection()
+        {
+            return false;
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilityDeselectChild(int childIndex)
+        {
+            return false;
+        }
     }
 }
index cb282e1..d8be3e2 100755 (executable)
@@ -43,6 +43,11 @@ namespace Tizen.NUI.BaseComponents
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
         EditableText = 2,
+        /// <summary>
+        /// Accessibility interface which can store a set of selected items
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Selection = 3,
     }
 
     /// <summary>