Make the TVHome update app list focus management if the app list is modified.
authorcskim <charles0.kim@samsung.com>
Tue, 18 Apr 2017 11:53:46 +0000 (20:53 +0900)
committerChulSeung Kim <charles0.kim@samsung.com>
Thu, 8 Jun 2017 09:34:53 +0000 (18:34 +0900)
Change-Id: I17a016eefa7e3cf4755b05fb8d5379f057dc250e
Signed-off-by: cskim <charles0.kim@samsung.com>
TVHome/TVHome/Views/MainPage.xaml.cs
TVHome/TVHome/Views/Panel.cs
TVHome/TVHome/Views/SubPanel.xaml.cs

index 84622da..0d0df05 100755 (executable)
@@ -22,6 +22,7 @@ using Xamarin.Forms.PlatformConfiguration.TizenSpecific;
 
 namespace TVHome.Views
 {
+    using System.Runtime.CompilerServices;
     using Tizen = Xamarin.Forms.PlatformConfiguration.Tizen;
     /// <summary>
     /// A custom view for displaying main page of TV Home
@@ -167,8 +168,14 @@ namespace TVHome.Views
         {
             base.OnAppearing();
 
+            AppsSubPanel.ItemSourceChanged += (s, e)=>
+            {
+                InitializeAppsSubPanelButtonFocusChain();
+            };
+
             InitializeMainPanelButtonFocusChain();
-            InitializeSubPanelButtonFocusChain();
+            InitializeAppsSubPanelButtonFocusChain();
+            InitializeSettingsSubPanelButtonFocusChain();
             PageMainPanel.InitialFocusing();
         }
 
@@ -195,19 +202,22 @@ namespace TVHome.Views
             }
         }
 
-        private void InitializeSubPanelButtonFocusChain()
+        private void InitializeAppsSubPanelButtonFocusChain()
         {
             List<View> appsSubPanelButtons = new List<View>(AppsSubPanel.GetSubPanelButtons());
-            List<View> settingSubPanelButtons = new List<View>(SettingsSubPanel.GetSubPanelButtons());
-
 
             Button appsMainPanelButton = PageMainPanel.GetButtonToFocusing(1);
-            Button settingMainPanelButton = PageMainPanel.GetButtonToFocusing(2);
 
             foreach (var item in appsSubPanelButtons)
             {
                 item.FindByName<Button>("ButtonFocusArea").On<Tizen>().SetNextFocusUpView(appsMainPanelButton);
             }
+        }
+
+        private void InitializeSettingsSubPanelButtonFocusChain()
+        {
+            List<View> settingSubPanelButtons = new List<View>(SettingsSubPanel.GetSubPanelButtons());
+            Button settingMainPanelButton = PageMainPanel.GetButtonToFocusing(2);
 
             foreach (var item in settingSubPanelButtons)
             {
index c97621b..d232db2 100755 (executable)
@@ -18,6 +18,7 @@ using System.Collections.Generic;
 using System.Windows.Input;
 using LibTVRefCommonPortable.DataModels;
 using Xamarin.Forms;
+using System;
 
 namespace TVHome.Views
 {
@@ -99,6 +100,21 @@ namespace TVHome.Views
         }
 
         /// <summary>
+        /// A Event Handler to notify if itemSource is changed.
+        /// </summary>
+        public event EventHandler ItemSourceChanged;
+
+        /// <summary>
+        /// A Event Handler invoker method.
+        /// </summary>
+        /// <param name="e">A event argument. But this is always EventArgs.Empty</param>
+        protected virtual void OnItemSourceChanged(EventArgs e)
+        {
+            EventHandler handler = ItemSourceChanged;
+            handler?.Invoke(this, e);
+        }
+
+        /// <summary>
         /// Identifies the ItemTemplate bindable property
         /// </summary>
         public static readonly BindableProperty ItemTemplateProperty = BindableProperty.Create("ItemTemplate", typeof(DataTemplate), typeof(SubPanel));
index 44b92cd..d4f36c6 100755 (executable)
@@ -22,6 +22,7 @@ using System.Threading.Tasks;
 using System.Windows.Input;
 using System.Collections.Generic;
 using LibTVRefCommonPortable.Utils;
+using System;
 
 namespace TVHome.Views
 {
@@ -178,6 +179,8 @@ namespace TVHome.Views
                 ButtonViewList.Add(button.View);
             }
 
+            OnItemSourceChanged(EventArgs.Empty);
+
             if (!isFocused)
             {
                 ShowPanel();