Modifies focus chaining in Apps add pin mode
authorHyerim Kim <rimi.kim@samsung.com>
Wed, 19 Apr 2017 04:27:41 +0000 (13:27 +0900)
committerChulSeung Kim <charles0.kim@samsung.com>
Thu, 8 Jun 2017 09:34:53 +0000 (18:34 +0900)
Change-Id: Ib4280084e11717d9ca2e9c968013748306ed9b23
Signed-off-by: Hyerim Kim <rimi.kim@samsung.com>
TVApps/TVApps/Views/MainPage.xaml.cs

index 42b30ef..c54bdb4 100755 (executable)
@@ -170,6 +170,7 @@ namespace TVApps.Views
         protected override async void OnAppearing()
         {
             base.OnAppearing();
+
             await AppList.TranslateTo(0, showTransitionHeight, 0);
 #pragma warning disable CS4014
             AppList.TranslateTo(0, 0, 667);
@@ -250,7 +251,7 @@ namespace TVApps.Views
                 }
             }
 
-            SetFocusChainingUpAndDownForDefaultMode();
+            SetFocusChainingWithCurrentStatus(CurrentStatus);
         }
 
         private void SetFocusChainingLeftAndRight(Button left, Button right)
@@ -281,6 +282,13 @@ namespace TVApps.Views
                 Button button = item.FindByName<Button>("ButtonFocusArea");
                 button?.On<Tizen>()?.SetNextFocusDownView(cancelButton);
             }
+
+            if (lowerList.Count > 0)
+            {
+                cancelButton?.On<Tizen>()?.SetNextFocusUpView(lowerList[lowerList.Count - 1].FindByName<Button>("ButtonFocusArea"));
+            }
+
+            cancelButton?.On<Tizen>()?.SetNextFocusLeftView(cancelButton);
         }
 
         private void SetFocusChainingUpAndDownForPinMode()
@@ -293,6 +301,32 @@ namespace TVApps.Views
                 Button button = item.FindByName<Button>("ButtonFocusArea");
                 button?.On<Tizen>()?.SetNextFocusDownView(doneButton);
             }
+
+            if (lowerList.Count > 0 )
+            {
+                doneButton?.On<Tizen>()?.SetNextFocusUpView(lowerList[lowerList.Count - 1].FindByName<Button>("ButtonFocusArea"));
+            }
+
+            doneButton?.On<Tizen>()?.SetNextFocusLeftView(doneButton);
+        }
+
+        private void SetFocusChainingWithCurrentStatus(AppsStatus status)
+        {
+            switch (status)
+            {
+                case AppsStatus.Default:
+                    SetFocusChainingUpAndDownForDefaultMode();
+                    break;
+                case AppsStatus.Pin:
+                    SetFocusChainingUpAndDownForPinMode();
+                    break;
+                case AppsStatus.Delete:
+                    SetFocusChainingUpAndDownForDeleteMode();
+                    break;
+                case AppsStatus.LongPress:
+                    SetFocusChainingUpAndDownForDefaultMode();
+                    break;
+            }
         }
 
         /// <summary>
@@ -310,20 +344,17 @@ namespace TVApps.Views
                     FooterDelete.IsVisible = false;
                     BackKeyInfo.Text = "Quit";
                     AppList.InitializeFocus();
-                    SetFocusChainingUpAndDownForDefaultMode();
                     break;
                 case AppsStatus.Pin:
                     FooterNormal.IsVisible = false;
                     FooterPin.IsVisible = true;
                     FooterDelete.IsVisible = false;
-                    SetFocusChainingUpAndDownForPinMode();
                     BackKeyInfo.Text = "Back";
                     break;
                 case AppsStatus.Delete:
                     FooterNormal.IsVisible = false;
                     FooterPin.IsVisible = false;
                     FooterDelete.IsVisible = true;
-                    SetFocusChainingUpAndDownForDeleteMode();
                     BackKeyInfo.Text = "Back";
                     break;
                 case AppsStatus.LongPress:
@@ -333,6 +364,8 @@ namespace TVApps.Views
                     BackKeyInfo.Text = "Back";
                     break;
             }
+
+            SetFocusChainingWithCurrentStatus(status);
         }
 
         /// <summary>