From 648cb56a124715b27ae8da33fdaacb668e332319 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 23 May 2022 21:10:44 +0900 Subject: [PATCH] [NUI][AT-SPI] make window border icons work This patch is making icons(min, max, close, corner) on the window border work. --- src/Tizen.NUI/src/public/Window/DefaultBorder.cs | 102 ++++++++++++++++++--- .../Tizen.NUI.Samples/Samples/BorderWindowTest.cs | 62 ++++++++++++- 2 files changed, 147 insertions(+), 17 deletions(-) diff --git a/src/Tizen.NUI/src/public/Window/DefaultBorder.cs b/src/Tizen.NUI/src/public/Window/DefaultBorder.cs index 7032d57..dbfee78 100755 --- a/src/Tizen.NUI/src/public/Window/DefaultBorder.cs +++ b/src/Tizen.NUI/src/public/Window/DefaultBorder.cs @@ -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 /// + /// Minimize border window. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + protected void MinimizeBorderWindow() + { + ClearWindowGesture(); + BorderWindow.Minimize(true); + OnMinimize(true); + } + + /// /// This is an event callback when the minimize icon is touched. /// [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; } /// + /// Maximize border window. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + protected void MaximizeBorderWindow() + { + ClearWindowGesture(); + if (BorderWindow.IsMaximized()) + { + BorderWindow.Maximize(false); + OnMaximize(false); + } + else + { + BorderWindow.Maximize(true); + OnMaximize(true); + } + } + + /// /// This is an event callback when the maximum icon is touched. /// [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; } /// + /// Close border window. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + protected void CloseBorderWindow() + { + BorderWindow.Destroy(); + BorderWindow = null; + } + + /// /// This is an event callback when the close icon is touched. /// [EditorBrowsable(EditorBrowsableState.Never)] diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs index 1d6ed3b..e26bb3b 100755 --- a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs +++ b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs @@ -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() -- 2.7.4