[NUI][AT-SPI] make window border icons work
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 23 May 2022 12:10:44 +0000 (21:10 +0900)
committerSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Fri, 27 May 2022 06:15:42 +0000 (15:15 +0900)
This patch is making icons(min, max, close, corner) on the window border work.

src/Tizen.NUI/src/public/Window/DefaultBorder.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs

index 7032d57..dbfee78 100755 (executable)
@@ -177,30 +177,35 @@ namespace Tizen.NUI
             {
                 Focusable = true,
                 ResourceUrl = MinimalizeIcon,
+                AccessibilityHighlightable = true,
             };
 
             maximalizeIcon = new ImageView()
             {
                 Focusable = true,
                 ResourceUrl = MaximalizeIcon,
+                AccessibilityHighlightable = true,
             };
 
             closeIcon = new ImageView()
             {
                 Focusable = true,
                 ResourceUrl = CloseIcon,
+                AccessibilityHighlightable = true,
             };
 
             leftCornerIcon = new ImageView()
             {
                 Focusable = true,
                 ResourceUrl = LeftCornerIcon,
+                AccessibilityHighlightable = true,
             };
 
             rightCornerIcon = new ImageView()
             {
                 Focusable = true,
                 ResourceUrl = RightCornerIcon,
+                AccessibilityHighlightable = true,
             };
 
             RelativeLayout.SetRightTarget(minimalizeIcon, maximalizeIcon);
@@ -226,6 +231,47 @@ namespace Tizen.NUI
             closeIcon.TouchEvent += OnCloseIconTouched;
             leftCornerIcon.TouchEvent += OnLeftBottomCornerIconTouched;
             rightCornerIcon.TouchEvent += OnRightBottomCornerIconTouched;
+
+            minimalizeIcon.AccessibilityActivated += (s, e) =>
+            {
+                MinimizeBorderWindow();
+            };
+            maximalizeIcon.AccessibilityActivated += (s, e) =>
+            {
+                MaximizeBorderWindow();
+            };
+            closeIcon.AccessibilityActivated += (s, e) =>
+            {
+                CloseBorderWindow();
+            };
+
+            minimalizeIcon.AccessibilityNameRequested += (s, e) =>
+            {
+                e.Name = "Minimize";
+            };
+            maximalizeIcon.AccessibilityNameRequested += (s, e) =>
+            {
+                e.Name = "Maximize";
+            };
+            closeIcon.AccessibilityNameRequested += (s, e) =>
+            {
+                e.Name = "Close";
+            };
+            leftCornerIcon.AccessibilityNameRequested += (s, e) =>
+            {
+                e.Name = "Resize";
+            };
+            rightCornerIcon.AccessibilityNameRequested += (s, e) =>
+            {
+                e.Name = "Resize";
+            };
+
+            minimalizeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+            maximalizeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+            closeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+            leftCornerIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+            rightCornerIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+
             return true;
         }
 
@@ -399,6 +445,17 @@ namespace Tizen.NUI
 
 
         /// <summary>
+        /// Minimize border window.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected void MinimizeBorderWindow()
+        {
+            ClearWindowGesture();
+            BorderWindow.Minimize(true);
+            OnMinimize(true);
+        }
+
+        /// <summary>
         /// This is an event callback when the minimize icon is touched.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -410,14 +467,31 @@ namespace Tizen.NUI
             }
             if (e.Touch.GetState(0) == PointStateType.Up)
             {
-                ClearWindowGesture();
-                BorderWindow.Minimize(true);
-                OnMinimize(true);
+                MinimizeBorderWindow();
             }
             return true;
         }
 
         /// <summary>
+        /// Maximize border window.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected void MaximizeBorderWindow()
+        {
+            ClearWindowGesture();
+            if (BorderWindow.IsMaximized())
+            {
+              BorderWindow.Maximize(false);
+              OnMaximize(false);
+            }
+            else
+            {
+              BorderWindow.Maximize(true);
+              OnMaximize(true);
+            }
+        }
+
+        /// <summary>
         /// This is an event callback when the maximum icon is touched.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -429,22 +503,22 @@ namespace Tizen.NUI
             }
             if (e.Touch.GetState(0) == PointStateType.Up)
             {
-                ClearWindowGesture();
-                if (BorderWindow.IsMaximized())
-                {
-                  BorderWindow.Maximize(false);
-                  OnMaximize(false);
-                }
-                else
-                {
-                  BorderWindow.Maximize(true);
-                  OnMaximize(true);
-                }
+                MaximizeBorderWindow();
             }
             return true;
         }
 
         /// <summary>
+        /// Close border window.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected void CloseBorderWindow()
+        {
+            BorderWindow.Destroy();
+            BorderWindow = null;
+        }
+
+        /// <summary>
         /// This is an event callback when the close icon is touched.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
index 1d6ed3b..e26bb3b 100755 (executable)
@@ -87,26 +87,31 @@ namespace Tizen.NUI.Samples
         minimalizeIcon = new ImageView()
         {
             ResourceUrl = MinimalizeIcon,
+            AccessibilityHighlightable = true,
         };
 
         maximalizeIcon = new ImageView()
         {
             ResourceUrl = MaximalizeIcon,
+            AccessibilityHighlightable = true,
         };
 
         closeIcon = new ImageView()
         {
             ResourceUrl = CloseIcon,
+            AccessibilityHighlightable = true,
         };
 
         leftCornerIcon = new ImageView()
         {
             ResourceUrl = LeftCornerIcon,
+            AccessibilityHighlightable = true,
         };
 
         rightCornerIcon = new ImageView()
         {
-          ResourceUrl = RightCornerIcon,
+            ResourceUrl = RightCornerIcon,
+            AccessibilityHighlightable = true,
         };
 
         RelativeLayout.SetRightTarget(minimalizeIcon, maximalizeIcon);
@@ -132,6 +137,47 @@ namespace Tizen.NUI.Samples
         closeIcon.TouchEvent += OnCloseIconTouched;
         leftCornerIcon.TouchEvent += OnLeftBottomCornerIconTouched;
         rightCornerIcon.TouchEvent += OnRightBottomCornerIconTouched;
+
+        minimalizeIcon.AccessibilityActivated += (s, e) =>
+        {
+            MinimizeBorderWindow();
+        };
+        maximalizeIcon.AccessibilityActivated += (s, e) =>
+        {
+            MaximizeBorderWindow();
+        };
+        closeIcon.AccessibilityActivated += (s, e) =>
+        {
+            CloseBorderWindow();
+        };
+
+        minimalizeIcon.AccessibilityNameRequested += (s, e) =>
+        {
+            e.Name = "Minimize";
+        };
+        maximalizeIcon.AccessibilityNameRequested += (s, e) =>
+        {
+            e.Name = "Maximize";
+        };
+        closeIcon.AccessibilityNameRequested += (s, e) =>
+        {
+            e.Name = "Close";
+        };
+        leftCornerIcon.AccessibilityNameRequested += (s, e) =>
+        {
+            e.Name = "Resize";
+        };
+        rightCornerIcon.AccessibilityNameRequested += (s, e) =>
+        {
+            e.Name = "Resize";
+        };
+
+        minimalizeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+        maximalizeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+        closeIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+        leftCornerIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+        rightCornerIcon.SetAccessibilityReadingInfoTypes(Tizen.NUI.BaseComponents.AccessibilityReadingInfoTypes.Name);
+
         return true;
       }
 
@@ -337,7 +383,8 @@ namespace Tizen.NUI.Samples
           {
               LinearAlignment = LinearLayout.Alignment.Center,
               LinearOrientation = LinearLayout.Orientation.Vertical,
-          }
+          },
+          AccessibilityHighlightable = true,
         };
 
         var imageViewA = new ImageView()
@@ -364,6 +411,10 @@ namespace Tizen.NUI.Samples
           }
           return true;
         };
+        defaultBorder.AccessibilityActivated += (s, e) =>
+        {
+            CreateSubWindowOne();
+        };
 
         var customBorder = new View()
         {
@@ -372,7 +423,8 @@ namespace Tizen.NUI.Samples
           {
               LinearAlignment = LinearLayout.Alignment.Center,
               LinearOrientation = LinearLayout.Orientation.Vertical,
-          }
+          },
+          AccessibilityHighlightable = true,
         };
 
         var imageViewB = new ImageView()
@@ -398,6 +450,10 @@ namespace Tizen.NUI.Samples
           }
           return true;
         };
+        customBorder.AccessibilityActivated += (s, e) =>
+        {
+            CreateSubWindowTwo();
+        };
     }
 
     public void Activate()