From 7a7b1e0bcedc639b334fc024f974ea863dc7361c Mon Sep 17 00:00:00 2001 From: "joogab.yun" Date: Tue, 24 May 2022 15:05:42 +0900 Subject: [PATCH] [NUI] Add Maximize and Minimize related APIs and Add Focusable property to the icon 1. Added OnMaximize() and OnMinimize() APIs so that you can know when Maximize/Minimize is called. 2. Adds a Focusable to the icon. --- src/Tizen.NUI/src/public/Window/BorderWindow.cs | 18 +++++++---- src/Tizen.NUI/src/public/Window/DefaultBorder.cs | 37 +++++++++++++++++++++- .../src/public/Window/IBorderInterface.cs | 14 ++++++++ 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/Tizen.NUI/src/public/Window/BorderWindow.cs b/src/Tizen.NUI/src/public/Window/BorderWindow.cs index 3b97140..a0ad263 100755 --- a/src/Tizen.NUI/src/public/Window/BorderWindow.cs +++ b/src/Tizen.NUI/src/public/Window/BorderWindow.cs @@ -135,22 +135,31 @@ namespace Tizen.NUI GetDefaultLayer().Name = "OriginalRootLayer"; + SetTransparency(true); + BackgroundColor = Color.Transparent; + borderInterface.BorderWindow = this; + if (CreateBorder() == true) { + using var realWindowSize = new Size2D(WindowSize.Width, WindowSize.Height); + isBorderWindow = true; Resized += OnBorderWindowResized; + borderInterface.OnCreated(borderView); + // Increase the window size as much as the border area. if (isTop) borderHeight += borderInterface.BorderHeight; if (isBottom) borderHeight += borderInterface.BorderHeight; // When running the app for the first time, if it runs in full size, do Maximize(true). if (screenWidth != 0 && screenHeight != 0 && - Size.Width >= screenWidth && Size.Height >= screenHeight && + realWindowSize.Width >= screenWidth && realWindowSize.Height >= screenHeight && IsMaximized() == false) { Maximize(true); + borderInterface.OnMaximize(true); ResizedEventArgs e = new ResizedEventArgs(); e.WindowSize = WindowSize; OnBorderWindowResized(this, e); @@ -168,12 +177,6 @@ namespace Tizen.NUI // Add a view to the border layer. GetBorderWindowBottomLayer().Add(rootView); - SetTransparency(true); - BackgroundColor = Color.Transparent; - borderInterface.BorderWindow = this; - - borderInterface.OnCreated(borderView); - InterceptTouchEvent += (s, e) => { if (e.Touch.GetState(0) == PointStateType.Down && IsMaximized() == false) @@ -205,6 +208,7 @@ namespace Tizen.NUI ushort padding = (ushort) borderInterface.BorderLineThickness; borderView = new View() { + GrabTouchAfterLeave = true, WidthResizePolicy = ResizePolicyType.FillToParent, HeightResizePolicy = ResizePolicyType.FillToParent, BackgroundColor = Color.Transparent, diff --git a/src/Tizen.NUI/src/public/Window/DefaultBorder.cs b/src/Tizen.NUI/src/public/Window/DefaultBorder.cs index d50c96b..7032d57 100755 --- a/src/Tizen.NUI/src/public/Window/DefaultBorder.cs +++ b/src/Tizen.NUI/src/public/Window/DefaultBorder.cs @@ -175,27 +175,32 @@ namespace Tizen.NUI minimalizeIcon = new ImageView() { + Focusable = true, ResourceUrl = MinimalizeIcon, }; maximalizeIcon = new ImageView() { + Focusable = true, ResourceUrl = MaximalizeIcon, }; closeIcon = new ImageView() { + Focusable = true, ResourceUrl = CloseIcon, }; leftCornerIcon = new ImageView() { + Focusable = true, ResourceUrl = LeftCornerIcon, }; rightCornerIcon = new ImageView() { - ResourceUrl = RightCornerIcon, + Focusable = true, + ResourceUrl = RightCornerIcon, }; RelativeLayout.SetRightTarget(minimalizeIcon, maximalizeIcon); @@ -261,15 +266,18 @@ namespace Tizen.NUI if (BorderWindow.IsMaximized()) { BorderWindow.Maximize(false); + OnMaximize(false); } else { BorderWindow.Minimize(true); + OnMinimize(true); } } else { BorderWindow.Maximize(true); + OnMaximize(true); } } } @@ -292,6 +300,7 @@ namespace Tizen.NUI if (BorderWindow.IsMaximized() == true) { BorderWindow.Maximize(false); + OnMaximize(false); } else { @@ -403,6 +412,7 @@ namespace Tizen.NUI { ClearWindowGesture(); BorderWindow.Minimize(true); + OnMinimize(true); } return true; } @@ -423,10 +433,12 @@ namespace Tizen.NUI if (BorderWindow.IsMaximized()) { BorderWindow.Maximize(false); + OnMaximize(false); } else { BorderWindow.Maximize(true); + OnMaximize(true); } } return true; @@ -632,10 +644,12 @@ namespace Tizen.NUI if (BorderWindow.IsMaximized() == false) { BorderWindow.Maximize(true); + OnMaximize(true); } else { BorderWindow.Maximize(false); + OnMaximize(false); } } else @@ -658,6 +672,7 @@ namespace Tizen.NUI if (BorderWindow.IsMaximized() == true) { BorderWindow.Maximize(false); + OnMaximize(false); } else { @@ -702,6 +717,26 @@ namespace Tizen.NUI UpdateIcons(); } + /// + /// Called when the window is maximized. + /// + /// If window is maximized or unmaximized. + [EditorBrowsable(EditorBrowsableState.Never)] + public virtual void OnMaximize(bool isMaximized) + { + UpdateIcons(); + } + + /// + /// Called when the window is minimized. + /// + /// If window is mnimized or unminimized. + [EditorBrowsable(EditorBrowsableState.Never)] + public virtual void OnMinimize(bool isMinimized) + { + UpdateIcons(); + } + [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void Dispose(bool disposing) { diff --git a/src/Tizen.NUI/src/public/Window/IBorderInterface.cs b/src/Tizen.NUI/src/public/Window/IBorderInterface.cs index 81bf50e..16e3d4f 100755 --- a/src/Tizen.NUI/src/public/Window/IBorderInterface.cs +++ b/src/Tizen.NUI/src/public/Window/IBorderInterface.cs @@ -115,5 +115,19 @@ namespace Tizen.NUI [EditorBrowsable(EditorBrowsableState.Never)] public void OnResized(int width, int height); + /// + /// Called when the window is maximized. + /// + /// If window is maximized or unmaximized. + [EditorBrowsable(EditorBrowsableState.Never)] + public void OnMaximize(bool isMaximized); + + /// + /// Called when the window is minimized. + /// + /// If window is minimized or unminimized. + [EditorBrowsable(EditorBrowsableState.Never)] + public void OnMinimize(bool isMinimized); + } } -- 2.7.4