[NUI] Add Maximize and Minimize related APIs and Add Focusable property to the icon
authorjoogab.yun <joogab.yun@samsung.com>
Tue, 24 May 2022 06:05:42 +0000 (15:05 +0900)
committerSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Fri, 27 May 2022 06:15:42 +0000 (15:15 +0900)
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
src/Tizen.NUI/src/public/Window/DefaultBorder.cs
src/Tizen.NUI/src/public/Window/IBorderInterface.cs

index 3b97140..a0ad263 100755 (executable)
@@ -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,
index d50c96b..7032d57 100755 (executable)
@@ -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();
         }
 
+        /// <summary>
+        /// Called when the window is maximized.
+        /// </summary>
+        /// <param name="isMaximized">If window is maximized or unmaximized.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void OnMaximize(bool isMaximized) 
+        {
+            UpdateIcons();
+        }
+
+        /// <summary>
+        /// Called when the window is minimized.
+        /// </summary>
+        /// <param name="isMinimized">If window is mnimized or unminimized.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void OnMinimize(bool isMinimized)
+        {
+            UpdateIcons();
+        }
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected virtual void Dispose(bool disposing)
         {
index 81bf50e..16e3d4f 100755 (executable)
@@ -115,5 +115,19 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         public void OnResized(int width, int height);
 
+        /// <summary>
+        /// Called when the window is maximized.
+        /// </summary>
+        /// <param name="isMaximized">If window is maximized or unmaximized.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void OnMaximize(bool isMaximized);
+
+        /// <summary>
+        /// Called when the window is minimized.
+        /// </summary>
+        /// <param name="isMinimized">If window is minimized or unminimized.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void OnMinimize(bool isMinimized);
+
     }
 }