[NUI] Fixed svace issues
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI.Wearable / src / public / CircularPagination.cs
index 6df90a8..c7217fa 100755 (executable)
@@ -39,7 +39,7 @@ namespace Tizen.NUI.Wearable
 
         private bool isSymmetrical = true;
         private int middleIndex = 9;
-        private int indicatorCount = 1;
+        private int indicatorCount = 0;
         private int leftIndicatorCount = 0;
         private int rightIndicatorCount = 0;
         private int selectedIndex = -1;
@@ -81,17 +81,6 @@ namespace Tizen.NUI.Wearable
         /// <since_tizen> 8 </since_tizen>
         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public CircularPagination(string style) : base(style)
-        {
-            Initialize();
-        }
-
-        /// <summary>
-        /// Creates a new instance of a CircularPagination using style.
-        /// </summary>
-        /// <since_tizen> 8 </since_tizen>
-        /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
         public CircularPagination(CircularPaginationStyle style) : base(style)
         {
             Initialize();
@@ -201,6 +190,7 @@ namespace Tizen.NUI.Wearable
                 }
                 if (value == false)
                 {
+                    isOddNumber = true;
                     CreateIndicator(middleIndex);
                 }
 
@@ -227,10 +217,16 @@ namespace Tizen.NUI.Wearable
             }
             set
             {
-                if (indicatorCount == value || indicatorCount < 0)
+                if (indicatorCount == value || indicatorCount < 0 || value <= 0)
                 {
                     return;
                 }
+                if (isSymmetrical == false)
+                {
+                    Log.Info("NUI", "This property is not for asymmetric pagination. Change to symmetrical pagination.\n");
+                    isSymmetrical = true;
+                }
+
                 if (value % 2 == 1) // Odd number
                 {
                     isOddNumber = true;
@@ -251,8 +247,9 @@ namespace Tizen.NUI.Wearable
                     {
                         arrayIndex = (18 - value) / 2;
                     }
+                    if (arrayIndex < 0) return;
 
-                    for (int i = indicatorCount; i <= value; i++)
+                    for (int i = (indicatorCount + 1); i <= value; i++)
                     {
                         CreateIndicator( arrayIndex );
                         arrayIndex++;
@@ -276,13 +273,14 @@ namespace Tizen.NUI.Wearable
 
                     if (selectedIndex >= value)
                     {
-                        selectedIndex = 0;
+                        selectedIndex = value - 1;
                         SelectIn(indicatorList[selectedIndex]);
                     }
                 }
                 indicatorCount = value;
 
                 UpdateContainer();
+                UpdateVisual();
             }
         }
 
@@ -308,7 +306,7 @@ namespace Tizen.NUI.Wearable
                     isSymmetrical = false;
                     //return;
                 }
-                if (leftIndicatorCount == value || leftIndicatorCount < 0 || leftIndicatorCount > 9)
+                if (leftIndicatorCount == value || leftIndicatorCount < 0 || value > 9 || value < 0)
                 {
                     return;
                 }
@@ -320,6 +318,7 @@ namespace Tizen.NUI.Wearable
                     for (int i = (middleIndex - value); i < (middleIndex - leftIndicatorCount); i++)
                     {
                         CreateIndicator( i );
+                        selectedIndex++;
                     }
                 }
                 else
@@ -331,14 +330,14 @@ namespace Tizen.NUI.Wearable
                     }
                     indicatorList.RemoveRange(0, (leftIndicatorCount - value)); // LeftIndicator starts from index 0.
 
-                    if (selectedIndex >= ( value + rightIndicatorCount ))
+                    if (selectedIndex == 0)
                     {
-                        selectedIndex--;
+                        selectedIndex++;
                         SelectIn(indicatorList[selectedIndex]);
                     }
-                    else if (selectedIndex == 0)
+                    else
                     {
-                        selectedIndex++;
+                        selectedIndex--;
                         SelectIn(indicatorList[selectedIndex]);
                     }
                 }
@@ -379,7 +378,7 @@ namespace Tizen.NUI.Wearable
                     isSymmetrical = false;
                     //return;
                 }
-                if (rightIndicatorCount == value || rightIndicatorCount < 0 || rightIndicatorCount > 9)
+                if (rightIndicatorCount == value || rightIndicatorCount < 0 || value > 9 || value < 0)
                 {
                     return;
                 }
@@ -432,7 +431,7 @@ namespace Tizen.NUI.Wearable
             }
             set
             {
-                if (selectedIndex == value)
+                if (selectedIndex == value || value < 0 || value >= indicatorCount)
                 {
                     return;
                 }
@@ -504,7 +503,7 @@ namespace Tizen.NUI.Wearable
             }
             else // Only symmetry circular pagination can be even number.
             {
-                evenArray[IndicatorCount/2 + index - 1] = position;
+                evenArray[(middleIndex - (indicatorCount / 2) + index)] = position;
                 indicatorList[index].Position.X = position.X;
                 indicatorList[index].Position.Y = position.Y;
             }
@@ -531,11 +530,11 @@ namespace Tizen.NUI.Wearable
             if (!(selectOutIndicator is ImageVisual visual)) return;
             if (isCurrentIndicatorCentered)
             {
-                visual.URL = circularPaginationStyle.CenterIndicatorImageURL.Normal;
+                visual.URL = circularPaginationStyle?.CenterIndicatorImageURL?.Normal;
             }
             else
             {
-                visual.URL = circularPaginationStyle.IndicatorImageURL.Normal;
+                visual.URL = circularPaginationStyle?.IndicatorImageURL?.Normal;
             }
             visual.Opacity = 0.5f;
         }
@@ -552,11 +551,11 @@ namespace Tizen.NUI.Wearable
             if (!(selectInIndicator is ImageVisual visual)) return;
             if (isCurrentIndicatorCentered)
             {
-                visual.URL = circularPaginationStyle.CenterIndicatorImageURL.Selected;
+                visual.URL = circularPaginationStyle?.CenterIndicatorImageURL?.Selected;
             }
             else
             {
-                visual.URL = circularPaginationStyle.IndicatorImageURL.Selected;
+                visual.URL = circularPaginationStyle?.IndicatorImageURL?.Selected;
             }
             visual.Opacity = 1.0f;
         }
@@ -567,7 +566,7 @@ namespace Tizen.NUI.Wearable
         /// <since_tizen> 8 </since_tizen>
         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override ViewStyle GetViewStyle()
+        protected override ViewStyle CreateViewStyle()
         {
             return new CircularPaginationStyle();
         }
@@ -630,14 +629,14 @@ namespace Tizen.NUI.Wearable
         // The parameter, index, is for the index of either oddArray or evenArray.
         private void CreateIndicator(int index)
         {
-            if (circularPaginationStyle == null)
+            if (circularPaginationStyle == null || circularPaginationStyle.IndicatorSize == null)
             {
                 return;
             }
 
             ImageVisual indicator = new ImageVisual
             {
-                URL = circularPaginationStyle.IndicatorImageURL.Normal,
+                URL = circularPaginationStyle.IndicatorImageURL?.Normal,
                 Size = new Size2D((int)circularPaginationStyle.IndicatorSize.Width, (int)circularPaginationStyle.IndicatorSize.Height),
                 Opacity = 0.5f,
             };
@@ -671,7 +670,7 @@ namespace Tizen.NUI.Wearable
 
         private void UpdateContainer()
         {
-            if (circularPaginationStyle == null)
+            if (circularPaginationStyle == null || circularPaginationStyle.IndicatorSize == null || container == null)
             {
                 return;
             }
@@ -690,7 +689,7 @@ namespace Tizen.NUI.Wearable
         {
             if (null == circularPaginationStyle.IndicatorSize) return;
             if (null == circularPaginationStyle.IndicatorImageURL) return;
-            if (indicatorCount < 0) return;
+            if (indicatorCount <= 0) return;
 
             for (int i = 0; i < indicatorList.Count; i++)
             {
@@ -740,7 +739,7 @@ namespace Tizen.NUI.Wearable
                 }
                 else
                 {
-                    indicator.Position = evenArray[IndicatorCount/2 + i - 1];
+                    indicator.Position = evenArray[middleIndex - (indicatorCount / 2) + i];
                 }
             }
         }