[NUI] Fix CircularPagination bugs (#1744)
authorSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Wed, 24 Jun 2020 02:15:40 +0000 (11:15 +0900)
committerGitHub <noreply@github.com>
Wed, 24 Jun 2020 02:15:40 +0000 (11:15 +0900)
- Fixed to overlap the indicator when IndicatorCount increased.
- Fixed minor bugs for LeftIndicatorCount and RightIndicatorCount.
- Added the protection conditionals.

Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
packaging/PlatformFileList.txt
src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_focus_dot.png [new file with mode: 0755]
src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_normal_dot.png [new file with mode: 0755]
src/Tizen.NUI.Wearable/src/public/CircularPagination.cs
src/Tizen.NUI.Wearable/src/public/WearableStyle/CircularPaginationStyle.cs

index 24851b5..8386613 100755 (executable)
@@ -26,6 +26,8 @@ res/nui_component_default_pagination_normal_dot.png #common #mobile #mobile-emul
 res/nui_wearable_checkbox_icon.json                #wearable
 res/nui_wearable_radiobutton_icon.json             #wearable
 res/nui_wearable_switch_icon.json                  #wearable
+res/nui_wearable_circular_pagination_center_normal_dot.png #wearable
+res/nui_wearable_circular_pagination_center_focus_dot.png  #wearable
 Tizen.Account.AccountManager.dll                   #mobile #mobile-emul #tv #wearable
 Tizen.Account.FidoClient.dll                       #mobile #mobile-emul #wearable
 Tizen.Account.OAuth2.dll                           #mobile #mobile-emul #wearable
diff --git a/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_focus_dot.png b/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_focus_dot.png
new file mode 100755 (executable)
index 0000000..55e832a
Binary files /dev/null and b/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_focus_dot.png differ
diff --git a/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_normal_dot.png b/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_normal_dot.png
new file mode 100755 (executable)
index 0000000..74e4466
Binary files /dev/null and b/src/Tizen.NUI.Wearable/res/nui_wearable_circular_pagination_center_normal_dot.png differ
index 607518a..8d844c6 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;
@@ -190,6 +190,7 @@ namespace Tizen.NUI.Wearable
                 }
                 if (value == false)
                 {
+                    isOddNumber = true;
                     CreateIndicator(middleIndex);
                 }
 
@@ -216,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;
@@ -240,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++;
@@ -265,13 +273,14 @@ namespace Tizen.NUI.Wearable
 
                     if (selectedIndex >= value)
                     {
-                        selectedIndex = 0;
+                        selectedIndex = value - 1;
                         SelectIn(indicatorList[selectedIndex]);
                     }
                 }
                 indicatorCount = value;
 
                 UpdateContainer();
+                UpdateVisual();
             }
         }
 
@@ -297,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;
                 }
@@ -309,6 +318,7 @@ namespace Tizen.NUI.Wearable
                     for (int i = (middleIndex - value); i < (middleIndex - leftIndicatorCount); i++)
                     {
                         CreateIndicator( i );
+                        selectedIndex++;
                     }
                 }
                 else
@@ -320,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]);
                     }
                 }
@@ -368,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;
                 }
@@ -421,7 +431,7 @@ namespace Tizen.NUI.Wearable
             }
             set
             {
-                if (selectedIndex == value)
+                if (selectedIndex == value || value < 0 || value >= indicatorCount)
                 {
                     return;
                 }
@@ -493,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;
             }
@@ -679,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++)
             {
@@ -729,7 +739,7 @@ namespace Tizen.NUI.Wearable
                 }
                 else
                 {
-                    indicator.Position = evenArray[IndicatorCount/2 + i - 1];
+                    indicator.Position = evenArray[middleIndex - (indicatorCount / 2) + i];
                 }
             }
         }
index 44cdab0..5528c92 100755 (executable)
@@ -109,12 +109,17 @@ namespace Tizen.NUI.Wearable
 
         private void Initialize()
         {
+            IndicatorSize = new Size(10, 10);
             IndicatorImageURL = new Selector<string>()
             {
                 Normal = "/usr/share/dotnet.tizen/framework/res/" + "nui_component_default_pagination_normal_dot.png",
                 Selected = "/usr/share/dotnet.tizen/framework/res/" + "nui_component_default_pagination_focus_dot.png",
             };
-            IndicatorSize = new Size(10, 10);
+            CenterIndicatorImageURL = new Selector<string>()
+            {
+                Normal = "/usr/share/dotnet.tizen/framework/res/" + "nui_wearable_circular_pagination_center_normal_dot.png",
+                Selected = "/usr/share/dotnet.tizen/framework/res/" + "nui_wearable_circular_pagination_center_focus_dot.png",
+            };
         }
     }
 }