- 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>
<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.
<?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
<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.
*/
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>
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>
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>
/// </summary>
private int selectTransitionHeight = SizeUtils.GetHeightSize(146);
+ public IList<View> GetSubPanelButtons()
+ {
+ return PanelButtonStack.Children;
+ }
+
/// <summary>
/// Constructor
/// </summary>
}
}
+ public IList<View> GetSubPanelButtons()
+ {
+ return PanelButtonStack.Children;
+ }
+
/// <summary>
/// A method for hiding the panel
/// </summary>
-<?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