Modifies Home MainPage
authorHyerim Kim <rimi.kim@samsung.com>
Mon, 17 Apr 2017 13:10:06 +0000 (22:10 +0900)
committerChulSeung Kim <charles0.kim@samsung.com>
Thu, 8 Jun 2017 09:34:53 +0000 (18:34 +0900)
 - Implements focus chaining among main panel and sub panel.
 - Fixed bug that when home is launched first time, Apps Subpanel can't be selected.

Change-Id: Ia5e20cb38b8b79f6f68101626a09febe1f7adb1c
Signed-off-by: Hyerim Kim <rimi.kim@samsung.com>
LibTVRefCommonPortable/LibTVRefCommonPortable.csproj
LibTVRefCommonPortable/packages.config [changed mode: 0644->0755]
TVHome/TVHome/TVHome.csproj
TVHome/TVHome/Views/MainPage.xaml.cs
TVHome/TVHome/Views/MainPanel.xaml.cs
TVHome/TVHome/Views/SubPanel.xaml.cs
TVHome/TVHome/Views/SubThumbnailPanel.xaml.cs
TVHome/TVHome/packages.config

index ce6975db66717208cb1067a3560dfd780137aec4..e919f168baa188d98fcc4277884f0add53704f1b 100755 (executable)
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll</HintPath>
+      <HintPath>..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll</HintPath>
+      <HintPath>..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll</HintPath>
+      <HintPath>..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll</HintPath>
       <Private>True</Private>
     </Reference>
   </ItemGroup>
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
-  <Import Project="..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
+  <Import Project="..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets'))" />
+    <Error Condition="!Exists('..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets'))" />
   </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
old mode 100644 (file)
new mode 100755 (executable)
index a5712a9..61a4055
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Xamarin.Forms" version="2.3.4.214-pre5" targetFramework="portable45-net45+win8+wp8+wpa81" />
+  <package id="Xamarin.Forms" version="2.3.4-r214-004" targetFramework="portable45-net45+win8+wp8+wpa81" />
 </packages>
\ No newline at end of file
index 24b7380b33b8efaf7e318cb7f16ef3c0abdf2497..8ca6a23ae968c27e78949c336bc7f3a3896559e3 100755 (executable)
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll</HintPath>
+      <HintPath>..\..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll</HintPath>
+      <HintPath>..\..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Xamarin.Forms.2.3.4.214-pre5\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll</HintPath>
+      <HintPath>..\..\packages\Xamarin.Forms.2.3.4-r214-004\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll</HintPath>
       <Private>True</Private>
     </Reference>
   </ItemGroup>
     </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
-  <Import Project="..\..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
+  <Import Project="..\..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.4.214-pre5\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.4-r214-004\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets'))" />
   </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
                Other similar extension points exist, see Microsoft.Common.targets.
index abe0b8ab220a58c5ff24c3137dcdb47520e11eb0..84622dafa39dee30eb3e70a483bd3f6614f152c5 100755 (executable)
  */
 
 using System.Collections.Generic;
-using LibTVRefCommonPortable.DataModels;
 using LibTVRefCommonPortable.Utils;
 using Xamarin.Forms;
 using TVHome.ViewModels;
+using Xamarin.Forms.PlatformConfiguration.TizenSpecific;
 
 namespace TVHome.Views
 {
+    using Tizen = Xamarin.Forms.PlatformConfiguration.Tizen;
     /// <summary>
     /// A custom view for displaying main page of TV Home
     /// </summary>
@@ -150,13 +151,70 @@ namespace TVHome.Views
 
             MessagingCenter.Subscribe<App, TVHomeStatus>(this, App.AppStatus, (sender, arg) =>
             {
-                if (arg == TVHomeStatus.OnSleep)
+                switch (arg)
                 {
-                    PageMainPanel.InitialFocusing();
+                    case TVHomeStatus.OnResume:
+                        InitializeRecentSubPanelButtonFocusChain();
+                        break;
+                    case TVHomeStatus.OnSleep:
+                        PageMainPanel.InitialFocusing();
+                        break;
                 }
             });
         }
 
+        protected override void OnAppearing()
+        {
+            base.OnAppearing();
+
+            InitializeMainPanelButtonFocusChain();
+            InitializeSubPanelButtonFocusChain();
+            PageMainPanel.InitialFocusing();
+        }
+
+        private void InitializeMainPanelButtonFocusChain()
+        {
+            Button recentMainPanelButton = PageMainPanel.GetButtonToFocusing(0);
+            Button appsMainPanelButton = PageMainPanel.GetButtonToFocusing(1);
+            Button settingMainPanelButton = PageMainPanel.GetButtonToFocusing(2);
+
+            recentMainPanelButton.On<Tizen>().SetNextFocusRightView(appsMainPanelButton);
+            appsMainPanelButton.On<Tizen>().SetNextFocusLeftView(recentMainPanelButton);
+            appsMainPanelButton.On<Tizen>().SetNextFocusRightView(settingMainPanelButton);
+            settingMainPanelButton.On<Tizen>().SetNextFocusLeftView(appsMainPanelButton);
+        }
+
+        private void InitializeRecentSubPanelButtonFocusChain()
+        {
+            List<View> recentSubPanelButtons = new List<View>(RecentSubPanel.GetSubPanelButtons());
+            Button recentMainPanelButton = PageMainPanel.GetButtonToFocusing(0);
+
+            foreach (var item in recentSubPanelButtons)
+            {
+                item.FindByName<Button>("ButtonFocusArea").On<Tizen>().SetNextFocusUpView(recentMainPanelButton);
+            }
+        }
+
+        private void InitializeSubPanelButtonFocusChain()
+        {
+            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);
+            }
+
+            foreach (var item in settingSubPanelButtons)
+            {
+                item.FindByName<Button>("ButtonFocusArea").On<Tizen>().SetNextFocusUpView(settingMainPanelButton);
+            }
+        }
+
         /// <summary>
         /// This method is called when the properties of MainPage is changed
         /// </summary>
index fc02f4d3fc778e713b56ed2f27ae8216d42d1c0c..25862343209913273237abe58aa6427f34165d40 100755 (executable)
@@ -91,6 +91,12 @@ namespace TVHome.Views
             button.FindByName<Button>("ButtonFocusArea").Focus();
         }
 
+        public Button GetButtonToFocusing(int index)
+        {
+            var button = PanelButtonGrid.Children[index];
+            return button.FindByName<Button>("ButtonFocusArea");
+        }
+
         /// <summary>
         /// A method for translating when panel is focused
         /// </summary>
index fa810a988299b2364ed877028cdb6ad3a3f90fbb..44b92cdf5333e33b16aaeeaedd8ba90285dd6e20 100755 (executable)
@@ -50,6 +50,11 @@ namespace TVHome.Views
         /// </summary>
         private int selectTransitionHeight = SizeUtils.GetHeightSize(146);
 
+        public IList<View> GetSubPanelButtons()
+        {
+            return PanelButtonStack.Children;
+        }
+
         /// <summary>
         /// Constructor
         /// </summary>
index 3e8beb1fab42c6e06e73e59d32b80d33e4be1d96..5154a4ce80fa6d1ac5c3d28251b91862c1f5062f 100755 (executable)
@@ -144,6 +144,11 @@ namespace TVHome.Views
             }
         }
 
+        public IList<View> GetSubPanelButtons()
+        {
+            return PanelButtonStack.Children;
+        }
+
         /// <summary>
         /// A method for hiding the panel
         /// </summary>
index ce50c6f11118a07ede2ba8e3b436b4dd10875ad5..46400b02e0c7ae3ad879aaf027180d3f7dc19ccb 100755 (executable)
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<packages>\r
-  <package id="Tizen.Xamarin.Forms.Extension" version="2.3.4-r214-001" targetFramework="portable45-net45+win8+wp8+wpa81" />\r
-  <package id="Xamarin.Forms" version="2.3.4.214-pre5" targetFramework="portable45-net45+win8+wp8+wpa81" />\r
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Tizen.Xamarin.Forms.Extension" version="2.3.4-r214-001" targetFramework="portable45-net45+win8+wp8+wpa81" />
+  <package id="Xamarin.Forms" version="2.3.4-r214-004" targetFramework="portable45-net45+win8+wp8+wpa81" />
 </packages>
\ No newline at end of file