*.lock.json
Tizen.NUI/.vs/
Tizen.NUI.Code/
+NUISamples/.vs/
+NUISamples/bin/
+NUISamples/obj/
--- /dev/null
+<Project>\r
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />\r
+\r
+ <PropertyGroup Label="Globals">\r
+ <TizenProjectExtensionsPath>$(MSBuildExtensionsPath)\Tizen\VisualStudio\</TizenProjectExtensionsPath>\r
+ <Configurations>Debug;Release</Configurations>\r
+ </PropertyGroup>\r
+\r
+ <Import Project="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props" Condition="Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props')" />\r
+\r
+ <PropertyGroup>\r
+ <OutputType>Exe</OutputType>\r
+ <TargetFramework>netcoreapp2.0</TargetFramework>\r
+ </PropertyGroup>\r
+\r
+ <!-- Property Group for Tizen Project -->\r
+ <PropertyGroup>\r
+ <TizenCreateTpkOnBuild>true</TizenCreateTpkOnBuild>\r
+ </PropertyGroup>\r
+\r
+\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+ <DebugType>portable</DebugType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+ <DebugType>None</DebugType>\r
+ </PropertyGroup>\r
+\r
+ <ItemGroup>\r
+ <Folder Include="lib\" />\r
+ <Folder Include="res\" />\r
+ </ItemGroup>\r
+\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\Tizen.NUI\Tizen.NUI.csproj" />\r
+ </ItemGroup>\r
+ \r
+ <!-- Include Nuget Package for Tizen Project building -->\r
+ <ItemGroup>\r
+ <PackageReference Include="Tizen.NET.Sdk" Version="0.9.18-pre1" />\r
+ </ItemGroup>\r
+\r
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />\r
+ <Import Project="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets" Condition="Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets')" />\r
+\r
+ <!-- Install Check 'Visual Studio for Tizen' for developing on Visual Studio -->\r
+ <Target Name="TizenVsixInstallCheck" BeforeTargets="CompileDesignTime">\r
+ <Warning Condition="!Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props')" Text="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props is not exist.
 you need to check if 'Visual Studio for Tizen' is installed" />\r
+ <Warning Condition="!Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets')" Text="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets is not exist.\
 you need to check if 'Visual Studio for Tizen' is installed" />\r
+ </Target>\r
+</Project>\r
+\r
# Visual Studio 15\r
VisualStudioVersion = 15.0.26430.14\r
MinimumVisualStudioVersion = 10.0.40219.1\r
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUISamples.Tizen", "NUISamples\NUISamples.Tizen\NUISamples.Tizen.csproj", "{715DF7A0-DDCB-4D9D-9B91-34E00DFF5FEB}"\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUISamples", "NUISamples.csproj", "{715DF7A0-DDCB-4D9D-9B91-34E00DFF5FEB}"\r
EndProject\r
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI", "..\Tizen.NUI\Tizen.NUI.csproj", "{DDF08AB9-FA06-4FF5-87AB-356B0058B40C}"\r
EndProject\r
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
- <ProductVersion>8.0.30703</ProductVersion>\r
- <SchemaVersion>2.0</SchemaVersion>\r
- <ProjectTypeGuids>{2F98DAC9-6F16-457B-AED7-D43CAC379341};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\r
- <ProjectGuid>{715DF7A0-DDCB-4D9D-9B91-34E00DFF5FEB}</ProjectGuid>\r
- <OutputType>Exe</OutputType>\r
- <AppDesignerFolder>Properties</AppDesignerFolder>\r
- <RootNamespace>NUISamples.Tizen</RootNamespace>\r
- <AssemblyName>NUISamples.Tizen</AssemblyName>\r
- <FileAlignment>512</FileAlignment>\r
- <DefaultLanguage>en-US</DefaultLanguage>\r
- </PropertyGroup>\r
- <PropertyGroup>\r
- <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>\r
- <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>\r
- <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
- <NuGetTargetMoniker>.NETCoreApp,Version=v2.0</NuGetTargetMoniker>\r
- <BaseNuGetRuntimeIdentifier>tizen.4.0.0-armel</BaseNuGetRuntimeIdentifier>\r
- <NoStdLib>true</NoStdLib>\r
- <NoWarn>$(NoWarn);1701</NoWarn>\r
- <UseVSHostingProcess>false</UseVSHostingProcess>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>portable</DebugType>\r
- <Optimize>false</Optimize>\r
- <OutputPath>bin\Debug\</OutputPath>\r
- <DefineConstants>DEBUG;TRACE</DefineConstants>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <DebugType>portable</DebugType>\r
- <Optimize>true</Optimize>\r
- <OutputPath>bin\Release\</OutputPath>\r
- <DefineConstants>TRACE</DefineConstants>\r
- <ErrorReport>prompt</ErrorReport>\r
- <WarningLevel>4</WarningLevel>\r
- </PropertyGroup>\r
- <ItemGroup>\r
- <None Include="NUISamples.Tizen.project.json" />\r
- <None Include="res\json\control-dashboard.json" />\r
- <None Include="res\json\date-picker-template.json" />\r
- <None Include="res\json\date-picker-theme.json" />\r
- <None Include="res\json\date-picker.json" />\r
- <None Include="res\json\spin.json" />\r
- <None Include="res\json\style-example-theme-one.json" />\r
- <None Include="res\models\Dino.mtl" />\r
- <None Include="res\models\Dino.obj" />\r
- <None Include="tizen-manifest.xml" />\r
- <None Include="shared\res\NUISamples.Tizen.png" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Compile Include="examples\as-is-test-sample.cs" />\r
- <Compile Include="examples\control-dashboard.cs" />\r
- <Compile Include="examples\custom-control.cs" />\r
- <Compile Include="examples\dali-test.cs" />\r
- <Compile Include="examples\date-picker-using-json\date-picker-using-json.cs" />\r
- <Compile Include="examples\date-picker-using-json\ViewRegistryHelper.cs" />\r
- <Compile Include="examples\date-picker.cs" />\r
- <Compile Include="examples\feedkey-test.cs" />\r
- <Compile Include="examples\flex-container.cs" />\r
- <Compile Include="examples\gc-test.cs" />\r
- <Compile Include="examples\hello-test.cs" />\r
- <Compile Include="examples\hello-world.cs" />\r
- <Compile Include="examples\image-view.cs" />\r
- <Compile Include="examples\Main.cs" />\r
- <Compile Include="examples\positionUsesPivotPoint-test.cs" />\r
- <Compile Include="examples\relative-vector.cs" />\r
- <Compile Include="examples\scroll-view.cs" />\r
- <Compile Include="examples\sibling-order-test.cs" />\r
- <Compile Include="examples\test1.cs" />\r
- <Compile Include="examples\text-test.cs" />\r
- <Compile Include="examples\text-test2.cs" />\r
- <Compile Include="examples\ttsplayer-test.cs" />\r
- <Compile Include="examples\user-alphafunction.cs" />\r
- <Compile Include="examples\view-navi-property.cs" />\r
- <Compile Include="examples\visual-animation-test.cs" />\r
- <Compile Include="examples\visual-animation-test2.cs" />\r
- <Compile Include="examples\visual-animation-test3.cs" />\r
- <Compile Include="examples\visual-view-test.cs" />\r
- <Compile Include="examples\visual-view-test2.cs" />\r
- <Compile Include="examples\visual-view-test3.cs" />\r
- <Compile Include="examples\visuals-example.cs" />\r
- <Compile Include="examples\visuals-using-custom-view\ContactData.cs" />\r
- <Compile Include="examples\visuals-using-custom-view\ContactView.cs" />\r
- <Compile Include="examples\visuals-using-custom-view\visuals-using-custom-view.cs" />\r
- <Compile Include="examples\widget-view-test.cs" />\r
- <Compile Include="Properties\AssemblyInfo.cs" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Folder Include="lib\" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Content Include="res\images\anim-gif\0.gif" />\r
- <Content Include="res\images\anim-gif\1.gif" />\r
- <Content Include="res\images\anim-gif\10.gif" />\r
- <Content Include="res\images\anim-gif\11.gif" />\r
- <Content Include="res\images\anim-gif\12.gif" />\r
- <Content Include="res\images\anim-gif\13.gif" />\r
- <Content Include="res\images\anim-gif\14.gif" />\r
- <Content Include="res\images\anim-gif\2.gif" />\r
- <Content Include="res\images\anim-gif\3.gif" />\r
- <Content Include="res\images\anim-gif\4.gif" />\r
- <Content Include="res\images\anim-gif\5.gif" />\r
- <Content Include="res\images\anim-gif\6.gif" />\r
- <Content Include="res\images\anim-gif\7.gif" />\r
- <Content Include="res\images\anim-gif\8.gif" />\r
- <Content Include="res\images\anim-gif\9.gif" />\r
- <Content Include="res\images\application-icon-0.png" />\r
- <Content Include="res\images\arrow.png" />\r
- <Content Include="res\images\background-blocks.jpg" />\r
- <Content Include="res\images\dali-logo-anim.gif" />\r
- <Content Include="res\images\Dino-Painted_lambert2SG_color.png" />\r
- <Content Include="res\images\Dino-Painted_lambert2SG_gloss.png" />\r
- <Content Include="res\images\Dino-Painted_lambert2SG_nmap.png" />\r
- <Content Include="res\images\Dino2_lambert2SG_color.png" />\r
- <Content Include="res\images\Dino2_lambert2SG_nmap.png" />\r
- <Content Include="res\images\dog-anim.gif" />\r
- <Content Include="res\images\echo.gif" />\r
- <Content Include="res\images\focuseffect\0-normal.png" />\r
- <Content Include="res\images\focuseffect\1-normal.png" />\r
- <Content Include="res\images\focuseffect\2-normal.png" />\r
- <Content Include="res\images\focuseffect\background.png" />\r
- <Content Include="res\images\focuseffect\focus_grid.9.png" />\r
- <Content Include="res\images\focuseffect\focus_launcher_shadow.9.png" />\r
- <Content Include="res\images\focuseffect\focus_launcher_shadow_n.png" />\r
- <Content Include="res\images\focuseffect\halo.png" />\r
- <Content Include="res\images\focuseffect\highlight_spot.png" />\r
- <Content Include="res\images\focuseffect\highlight_stroke.9.png" />\r
- <Content Include="res\images\focuseffect\horizontalFrame.png" />\r
- <Content Include="res\images\focuseffect\thumbnail_shadow.9.png" />\r
- <Content Include="res\images\focuseffect\verticalFrame.png" />\r
- <Content Include="res\images\focuseffect\white-pixel.png" />\r
- <Content Include="res\images\gallery-0.jpg" />\r
- <Content Include="res\images\gallery-1.jpg" />\r
- <Content Include="res\images\gallery-2.jpg" />\r
- <Content Include="res\images\gallery-3.jpg" />\r
- <Content Include="res\images\gallery-4.jpg" />\r
- <Content Include="res\images\gallery-5.jpg" />\r
- <Content Include="res\images\gallery-small-43.jpg" />\r
- <Content Include="res\images\image-1.jpg" />\r
- <Content Include="res\images\image-2.jpg" />\r
- <Content Include="res\images\image-3.jpg" />\r
- <Content Include="res\images\Kid1.svg" />\r
- <Content Include="res\images\Mail.svg" />\r
- <Content Include="res\images\mask.png" />\r
- <Content Include="res\images\menu\0.png" />\r
- <Content Include="res\images\menu\1.png" />\r
- <Content Include="res\images\menu\2.png" />\r
- <Content Include="res\images\menu\3.png" />\r
- <Content Include="res\images\menu\4.png" />\r
- <Content Include="res\images\menu\5.png" />\r
- <Content Include="res\images\menu\6.png" />\r
- <Content Include="res\images\not_yet_sign.png" />\r
- <Content Include="res\images\poster0\0.jpg" />\r
- <Content Include="res\images\poster0\1.jpg" />\r
- <Content Include="res\images\poster0\10.jpg" />\r
- <Content Include="res\images\poster0\11.jpg" />\r
- <Content Include="res\images\poster0\12.jpg" />\r
- <Content Include="res\images\poster0\13.jpg" />\r
- <Content Include="res\images\poster0\2.jpg" />\r
- <Content Include="res\images\poster0\3.jpg" />\r
- <Content Include="res\images\poster0\4.jpg" />\r
- <Content Include="res\images\poster0\5.jpg" />\r
- <Content Include="res\images\poster0\6.jpg" />\r
- <Content Include="res\images\poster0\7.jpg" />\r
- <Content Include="res\images\poster0\8.jpg" />\r
- <Content Include="res\images\poster0\9.jpg" />\r
- <Content Include="res\images\poster1\0.jpg" />\r
- <Content Include="res\images\poster1\1.jpg" />\r
- <Content Include="res\images\poster1\2.jpg" />\r
- <Content Include="res\images\poster1\3.jpg" />\r
- <Content Include="res\images\poster1\4.jpg" />\r
- <Content Include="res\images\poster1\5.jpg" />\r
- <Content Include="res\images\star-dim.png" />\r
- <Content Include="res\images\star-highlight.png" />\r
- <Content Include="res\images\star-mod.png" />\r
- <Content Include="res\images\World.svg" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <ProjectReference Include="..\..\..\Tizen.NUI\Tizen.NUI.csproj">\r
- <Project>{ddf08ab9-fa06-4ff5-87ab-356b0058b40c}</Project>\r
- <Name>Tizen.NUI</Name>\r
- </ProjectReference>\r
- </ItemGroup>\r
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\r
- Other similar extension points exist, see Microsoft.Common.targets.\r
- <Target Name="BeforeBuild">\r
- </Target>\r
- <Target Name="AfterBuild">\r
- </Target>\r
- -->\r
- <PropertyGroup>\r
- <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and\r
- https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild\r
- -->\r
- <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two\r
- properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and\r
- to prevent it from outputting a warning (MSB3644).\r
- -->\r
- <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>\r
- <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>\r
- <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>\r
- </PropertyGroup>\r
- <ProjectExtensions>\r
- <VisualStudio>\r
- <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Debug|Any CPU">\r
- <ProjectCommonFlavorCfg />\r
- </FlavorProperties>\r
- <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Release|Any CPU">\r
- <ProjectCommonFlavorCfg />\r
- </FlavorProperties>\r
- </VisualStudio>\r
- </ProjectExtensions>\r
-</Project>
\ No newline at end of file
+++ /dev/null
-{\r
- "buildOptions": {\r
- "emitEntryPoint": true,\r
- "debugType": "portable",\r
- "platform": "AnyCPU",\r
- "preserveCompilationContext": true\r
- },\r
- "dependencies": {\r
- "Microsoft.NETCore.App": {\r
- "version": "2.0.0-preview1-002111-00"\r
- },\r
- "Tizen.Applications.Common": "1.5.9"\r
- },\r
- "runtimes": {\r
- "tizen.4.0.0-armel": {}\r
- },\r
- "frameworks": {\r
- "netcoreapp2.0": {\r
- "imports": [\r
- "portable-net45+wp80+win81+wpa81",\r
- "netstandard1.6"\r
- ]\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-using System.Reflection;\r
-using System.Runtime.CompilerServices;\r
-using System.Runtime.InteropServices;\r
-\r
-// General Information about an assembly is controlled through the following\r
-// set of attributes. Change these attribute values to modify the information\r
-// associated with an assembly.\r
-[assembly: AssemblyTitle("NUISamples.Tizen")]\r
-[assembly: AssemblyDescription("")]\r
-[assembly: AssemblyConfiguration("")]\r
-[assembly: AssemblyCompany("")]\r
-[assembly: AssemblyProduct("NUISamples.Tizen")]\r
-[assembly: AssemblyCopyright("Copyright © 2017")]\r
-[assembly: AssemblyTrademark("")]\r
-[assembly: AssemblyCulture("")]\r
-\r
-// Setting ComVisible to false makes the types in this assembly not visible\r
-// to COM components. If you need to access a type in this assembly from\r
-// COM, set the ComVisible attribute to true on that type.\r
-[assembly: ComVisible(false)]\r
-\r
-// The following GUID is for the ID of the typelib if this project is exposed to COM\r
-[assembly: Guid("715df7a0-ddcb-4d9d-9b91-34e00dff5feb")]\r
-\r
-// Version information for an assembly consists of the following four values:\r
-//\r
-// Major Version\r
-// Minor Version\r
-// Build Number\r
-// Revision\r
-//\r
-// You can specify all the values or you can default the Build and Revision Numbers\r
-// by using the '*' as shown below:\r
-// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.0.0.0")]\r
-[assembly: AssemblyFileVersion("1.0.0.0")]\r
+++ /dev/null
-using Tizen.NUI;
-using Tizen.NUI.UIComponents;
-using Tizen.NUI.BaseComponents;
-using System;
-using System.Runtime.InteropServices;
-using System.Collections.Generic;
-using Tizen.NUI.Constants;
-
-namespace FirstScreen
-{
- public class FirstScreenApp : NUIApplication
- {
- //private Application _application; // Reference to Dali Application.
- private Stage _stage; // Reference to Dali stage.
- private Size2D _stageSize; // Reference to Dali stage size.
-
- private View _topContainer; // Top Container added to the Stage will contain Poster ScrollContainers.
- private View _bottomContainer; // Bottom Container added to the Stage will contain Menu ScrollContainer.
- private int _currentPostersContainerID; // Current Poster Container ID visible on the Top Container / Stage.
- private int _totalPostersContainers; // Number of Poster ScrollContainers to be added on Top Container.
- private List<ScrollContainer> _postersContainer; // List collection of Poster ScrollContainers used on the Top Container in this demo application.
- private ScrollContainer _menuContainer; // Menu ScrollContainer used on the Bottom Container in this demo application.
- private Layer _bottomClipLayer; // Clip layer (Dali Clip Layer instance) used for Bottom Container.
- private Layer _topClipLayer; // Clip layer (Dali Clip Layer instance) used for Top Container.
-
- private FocusEffect _focusEffect; // FocusEffect is used to apply Focus animation effect on any supplied item/image.
- private string _imagePath; // Contains the physical location of all images used in the demo application.
-
- private ImageView _keyboardFocusIndicator; // Reference to the ImageView (Keyboard Focus indicator) applied to the focused item on ScrollContainer.
- private ImageView _launcherSeparator; // Reference to the ImageView used for launcher separation (Launcher consists of three image icons on left of Menu ScrollContainer).
- private ImageView[] launcherIcon; // ImageViews used for launcher Icons.
- private Animation _showBottomContainerAnimation; // Animation used to show/unhide Bottom Container (Menu ScrollContainer) when it is focused.
- private Animation _hideBottomContainerAnimation; // Animation used to hide Bottom Container (Menu ScrollContainer) when it is focused.
- private Animation _showAnimation; // Animation used to move Poster scrollContainer from bottom to top and make it non-transparent.
- private Animation _hideAnimation; // Animation used to make the unused specified Poster scrollContainer transparent.
- private ScrollContainer _hideScrollContainer; // The unused Poster scrollContainer which needs to be transparent.
- FocusManager _keyboardFocusManager; // Reference to Dali KeyboardFocusManager.
-
- protected override void OnCreate()
- {
- base.OnCreate();
- OnInitialize();
- }
-
-
- // Create Items for Poster ScrollContainer
- private void CreatePosters()
- {
- for (int j = 0; j < _totalPostersContainers; j++)
- {
- View posterContainer = _postersContainer[j].Container;
- for (int i = 0; i < Constants.PostersItemsCount; i++)
- {
- if (j % _totalPostersContainers == 0)
- {
- View item = new ImageView(_imagePath + "/poster" + j + "/" + (i % 14) + ".jpg");
- item.Name = ("poster-item-" + _postersContainer[j].ItemCount);
- _postersContainer[j].Add(item);
- }
- else
- {
- View item = new ImageView(_imagePath + "/poster" + j + "/" + (i % 6) + ".jpg");
- item.Name = ("poster-item-" + _postersContainer[j].ItemCount);
- _postersContainer[j].Add(item);
- }
- }
-
- if (j == 0)
- {
- Show(_postersContainer[j]);
- }
- else
- {
- Hide(_postersContainer[j]);
- }
-
- _postersContainer[j].SetFocused(false);
- }
-
- _currentPostersContainerID = 0;
- }
-
- // Create Items for Menu ScrollContainer
- private void CreateMenu()
- {
- View menuContainer = _menuContainer.Container;
- menuContainer.Position = new Position(Constants.LauncherWidth, 0.0f, 0.0f);
-
- for (int i = 0; i < Constants.MenuItemsCount; i++)
- {
- View menuItem = new ImageView(_imagePath + "/menu/" + i % 7 + ".png");
- menuItem.Name = ("menu-item-" + _menuContainer.ItemCount);
- _menuContainer.Add(menuItem);
- }
- }
-
- private View OnKeyboardPreFocusChangeSignal(object source, FocusManager.PreFocusChangeEventArgs e)
- {
- if (!e.CurrentView && !e.ProposedView)
- {
- return _menuContainer;
- }
-
- Actor actor = _menuContainer.Container;
-
- if (e.Direction == View.FocusDirection.Up)
- {
- // Move the Focus to Poster ScrollContainer and hide Bottom Container (Menu ScrollContainer)
- if (_menuContainer.IsFocused)
- {
- actor = _postersContainer[_currentPostersContainerID].GetCurrentFocusedActor();
- _menuContainer.SetFocused(false);
- _postersContainer[_currentPostersContainerID].SetFocused(true);
- HideBottomContainer();
-
- // Also apply Focus animation on Focused item on Poster ScrollContainer
- FocusAnimation(_postersContainer[_currentPostersContainerID], FocusEffectDirection.BottomToTop);
- }
- }
- else if (e.Direction == View.FocusDirection.Down)
- {
- // Show Bottom Container (Menu ScrollContainer) and move the Focus to it
- if (!_menuContainer.IsFocused)
- {
- ShowBottomContainer();
- actor = _menuContainer.GetCurrentFocusedActor();
- _postersContainer[_currentPostersContainerID].SetFocused(false);
- _menuContainer.SetFocused(true);
-
- // Also apply Focus animation on Focused item on Menu ScrollContainer
- FocusAnimation(_menuContainer, FocusEffectDirection.TopToBottom);
- }
- }
- else
- {
- actor = e.ProposedView;
- }
-
- if (e.Direction == View.FocusDirection.Left)
- {
- if (_menuContainer.IsFocused)
- {
- int id = _menuContainer.FocusedItemID % _totalPostersContainers;
- if (id != _currentPostersContainerID)
- {
- Hide(_postersContainer[_currentPostersContainerID]);
- _currentPostersContainerID = id;
-
- Show(_postersContainer[_currentPostersContainerID]);
- }
- }
- }
- else if (e.Direction == View.FocusDirection.Right)
- {
- if (_menuContainer.IsFocused)
- {
- int id = _menuContainer.FocusedItemID % _totalPostersContainers;
- if (id != _currentPostersContainerID)
- {
- Hide(_postersContainer[_currentPostersContainerID]);
- _currentPostersContainerID = id;
- Show(_postersContainer[_currentPostersContainerID]);
- }
- }
- }
-
- return (View)actor;
- }
-
- // Perform Focus animation Effect on the current Focused Item on ScrollContainer.
- private void FocusAnimation(ScrollContainer scrollContainer, FocusEffectDirection direction)
- {
- _focusEffect.FocusAnimation(scrollContainer.GetCurrentFocusedActor(), scrollContainer.ItemSize, 1000, direction);
- }
-
- // Perform Show animation on ScrollContainer (used only for Poster Container)
- private void Show(ScrollContainer scrollContainer)
- {
- scrollContainer.Add(scrollContainer.Container);
-
- _hideScrollContainer = null;
-
- // This animation will move Poster scrollContainer from bottom to top and make it non-transparent.
- _showAnimation = new Animation(350);
- _showAnimation.AnimateTo(scrollContainer.Container, "ColorAlpha", 1.0f);
-
- scrollContainer.Container.PositionY = scrollContainer.Container.Position.Y + 200.0f;
- float targetPositionY = scrollContainer.Container.Position.Y - 200.0f;
-
- _showAnimation.AnimateTo(scrollContainer.Container, "PositionY", targetPositionY, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
- _showAnimation.Play();
- }
-
- // Perform Hide animation on ScrollContainer (used only for Poster Container)
- private void Hide(ScrollContainer scrollContainer)
- {
- if (_hideAnimation)
- {
- _hideAnimation.Clear();
- _hideAnimation.Reset();
- }
-
- int duration = 350;
- _hideAnimation = new Animation(duration);
- _hideAnimation.Duration = duration;
- _hideAnimation.AnimateTo(scrollContainer.Container, "ColorAlpha", 0.0f, 0, (int)((float)duration * 0.75f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
- _hideAnimation.Finished += OnHideAnimationFinished;
- _hideScrollContainer = scrollContainer;
- _hideAnimation.Play();
- }
-
- // This removes all the items from the specified unused Poster ScrollContainer (hence Stage) to improve performance.
- private void OnHideAnimationFinished(object source, EventArgs e)
- {
- if (_hideScrollContainer)
- {
- _hideScrollContainer.Remove(_hideScrollContainer.Container);
- }
- }
-
- // Hide Bottom Container (Menu ScrollContainer) when it is not focused
- private void HideBottomContainer()
- {
- _topClipLayer.ClippingBox = new Rectangle(0,
- Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
- Convert.ToInt32((_stageSize.Width)),
- Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerExpandHeightFactor))); // X, Y, Width, Height
-
-
- _hideBottomContainerAnimation.AnimateTo(_bottomContainer, "Position", new Position(0.0f, _stageSize.Height * Constants.BottomContainerHidePositionFactor, 0.0f),
- new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
- _hideBottomContainerAnimation.Play();
- }
-
- // Show (unhide) Bottom Container (Menu ScrollContainer) when it is focused
- private void ShowBottomContainer()
- {
- _topClipLayer.ClippingBox = new Rectangle(0,
- Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
- Convert.ToInt32((_stageSize.Width)),
- Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerHeightFactor))); // X, Y, Width, Height
-
- _showBottomContainerAnimation.AnimateTo(_bottomContainer, "Position", new Position(0.0f, _stageSize.Height * Constants.BottomContainerShowPositionFactor, 0.0f),
- new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
- _showBottomContainerAnimation.Play();
- }
-
- // First screen demo Application initialisation
- private void OnInitialize()
- {
- Tizen.Log.Debug("NUI", "OnInitialize() is called!");
- _hideScrollContainer = null;
- _stage = Stage.Instance;
- _stageSize = _stage.Size;
- _totalPostersContainers = Constants.TotalPostersContainers;
- _imagePath = Constants.ImageResourcePath;
-
- _postersContainer = new List<ScrollContainer>();
- _menuContainer = new ScrollContainer();
-
- _hideBottomContainerAnimation = new Animation(250);
- _showBottomContainerAnimation = new Animation(250);
-
- // Create a Top Container for poster items
- _topContainer = new View();
- _topContainer.Size = new Size(_stageSize.Width, _stageSize.Height * Constants.TopContainerHeightFactor, 0);
- _topContainer.Position = new Position(0.0f, _stageSize.Height * Constants.TopContainerPositionFactor, 0.0f);
- _topContainer.ParentOrigin = ParentOrigin.TopLeft;
-
- // Add a background to Top container
- PropertyMap visual = new PropertyMap();
- visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
- visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png"));
- _topContainer.Background = visual;
- _topContainer.Name = "TopControl";
-
- // Create a Bottom Container
- _bottomContainer = new View();
- _bottomContainer.Size = new Size(_stageSize.Width, _stageSize.Height * Constants.BottomContainerHeightFactor, 0);
- _bottomContainer.Position = new Position(0.0f, _stageSize.Height * Constants.BottomContainerHidePositionFactor, 0.0f);
- _bottomContainer.ParentOrigin = ParentOrigin.TopLeft;
-
- // Add a background to Bottom Container
- visual = new PropertyMap();
- visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
- visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png"));
- _bottomContainer.Background = visual;
- _bottomContainer.Name = "BottomControl";
-
- // Add both Top and Bottom Containers to Stage
- _stage.GetDefaultLayer().Add(_topContainer);
- _stage.GetDefaultLayer().Add(_bottomContainer);
-
- // Add a clip layer to Top Container
- _topClipLayer = new Layer();
- _topClipLayer.ParentOrigin = ParentOrigin.BottomCenter;
- _topClipLayer.ClippingEnable = true;
- _topClipLayer.ClippingBox = new Rectangle(0,
- Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
- Convert.ToInt32((_stageSize.Width)),
- Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerHeightFactor))); // X, Y, Width, Height
- _topContainer.Add(_topClipLayer);
-
- // Create a SpotLight for items / images of both Poster and Menu ScrollContainers
- ImageView spotLight = new ImageView(_imagePath + "/focuseffect/highlight_spot.png");
- spotLight.WidthResizePolicy = ResizePolicyType.UseNaturalSize;
- spotLight.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
- spotLight.ParentOrigin = ParentOrigin.Center;
- spotLight.PivotPoint = PivotPoint.Center;
- spotLight.PositionUsesPivotPoint = true;
- spotLight.Name = "spotLight";
-
- // Create a shadowBorder for items / images of Poster ScrollContainers
- ImageView shadowBorder = new ImageView(_imagePath + "/focuseffect/thumbnail_shadow.9.png");
- shadowBorder.ParentOrigin = ParentOrigin.Center;
- shadowBorder.PivotPoint = PivotPoint.Center;
- shadowBorder.PositionUsesPivotPoint = true;
- shadowBorder.WidthResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
- shadowBorder.HeightResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
- shadowBorder.SizeModeFactor = (new Vector3(32.0f, 41.0f, 0.0f));
- shadowBorder.Name = "poster shadowBorder";
-
- // Create Poster Containers and add them to Top Clip layer
- for (int i = 0; i < _totalPostersContainers; i++)
- {
- _postersContainer.Add(new ScrollContainer());
- _postersContainer[i].Container.Name = "poster" + i;
- if (i == 0)
- {
- _postersContainer[i].ItemSize = new Size((_stageSize.Width * Constants.Poster0ItemWidthFactor) - Constants.PostersContainerPadding,
- _stageSize.Height * Constants.PostersItemHeightFactor, 0.0f);
- }
- else
- {
- _postersContainer[i].ItemSize = new Size((_stageSize.Width * Constants.Poster1ItemWidthFactor) - Constants.PostersContainerPadding,
- _stageSize.Height * Constants.PostersItemHeightFactor, 0.0f);
- }
-
- _postersContainer[i].Gap = Constants.PostersContainerPadding;
- _postersContainer[i].MarginX = Constants.PostersContainerMargin;
- _postersContainer[i].OffsetYFator = Constants.PostersContainerOffsetYFactor;
- _postersContainer[i].Width = _stageSize.Width;
- _postersContainer[i].Height = _stageSize.Height * Constants.PostersContainerHeightFactor;
- _postersContainer[i].ShadowBorder = shadowBorder;
- _postersContainer[i].ShadowBorder.Position = new Position(0.0f, 4.0f, 0.0f);
- _postersContainer[i].SpotLight = spotLight;
- _topClipLayer.Add(_postersContainer[i]);
- }
-
- // Add a clip layer to Bottom Container
- _bottomClipLayer = new Layer();
- _bottomClipLayer.PivotPoint = PivotPoint.BottomCenter;
- _bottomClipLayer.PositionUsesPivotPoint = true;
- _bottomClipLayer.ParentOrigin = ParentOrigin.BottomCenter;
- _bottomClipLayer.ClippingEnable = true;
- _bottomClipLayer.ClippingBox = new Rectangle(Convert.ToInt32(Constants.LauncherWidth),
- Convert.ToInt32(_stageSize.Height * Constants.BottomContainerShowPositionFactor),
- Convert.ToInt32((_stageSize.Width)),
- Convert.ToInt32((_stageSize.Height - (_stageSize.Height * Constants.BottomClipLayerHeightFactor)))); // X, Y, Width, Height
- _bottomContainer.Add(_bottomClipLayer);
-
- // Add Launcher items to Bottom Container. Launcher is used to display three images on left of Menu ScrollContainer
- launcherIcon = new ImageView[Convert.ToInt32(Constants.LauncherItemsCount)];
- for (int launcherIndex = 0; launcherIndex < Constants.LauncherItemsCount; launcherIndex++)
- {
- launcherIcon[launcherIndex] = new ImageView(_imagePath + "/focuseffect/" + launcherIndex + "-normal.png");
- launcherIcon[launcherIndex].Name = "launcherIcon" + launcherIndex;
- launcherIcon[launcherIndex].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
- launcherIcon[launcherIndex].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
- launcherIcon[launcherIndex].ParentOrigin = ParentOrigin.CenterLeft;
- launcherIcon[launcherIndex].PivotPoint = PivotPoint.CenterLeft;
- launcherIcon[launcherIndex].PositionUsesPivotPoint = true;
- launcherIcon[launcherIndex].Position = new Position(Constants.LauncherIconWidth * launcherIndex + Constants.LauncherLeftMargin, 0.0f, 0.0f);
- _bottomContainer.Add(launcherIcon[launcherIndex]);
- }
-
- // Add a shadow seperator image between last Launcher icon and Menu ScrollContainer
- _launcherSeparator = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow_n.png");
- _launcherSeparator.Name = "launcherSeparator";
- _launcherSeparator.WidthResizePolicy = ResizePolicyType.UseNaturalSize;
- _launcherSeparator.HeightResizePolicy = ResizePolicyType.FillToParent;
- _launcherSeparator.ParentOrigin = ParentOrigin.CenterLeft;
- _launcherSeparator.PivotPoint = PivotPoint.CenterLeft;
- _launcherSeparator.PositionUsesPivotPoint = true;
- _launcherSeparator.Position = new Position(Constants.LauncherIconWidth * Constants.LauncherItemsCount + Constants.LauncherLeftMargin, 0.0f, 0.0f);
- _bottomContainer.Add(_launcherSeparator);
-
- // Create Menu Container and add it to Bottom Clip Layer
- Size menuItemSize = new Size((_stageSize.Width * Constants.MenuItemWidthFactor) - Constants.MenuContainerPadding,
- _stageSize.Height * Constants.MenuItemHeightFactor, 0.0f);
- _menuContainer.Container.Name = "menu";
- _menuContainer.ItemSize = menuItemSize;
- _menuContainer.Gap = Constants.MenuContainerPadding;
- _menuContainer.MarginX = Constants.MenuContainerMargin;
- _menuContainer.OffsetYFator = Constants.MenuContainerOffsetYFactor;
- _menuContainer.OffsetX = Constants.LauncherWidth;
- _menuContainer.Width = _stageSize.Width - Constants.LauncherWidth;
- _menuContainer.Height = _stageSize.Height * Constants.MenuContainerHeightFactor;
- _menuContainer.ShadowBorder = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow.9.png");
- _menuContainer.ShadowBorder.Name = "_menuContainer.ShadowBorder";
- _menuContainer.ShadowBorder.Size = new Size(_menuContainer.ItemSize.Width + 40.0f, _menuContainer.ItemSize.Height + 50.0f, 0.0f);
- _menuContainer.ShadowBorder.Position = new Position(0.0f, 5.0f, 0.0f);
- _menuContainer.ShadowBorder.ParentOrigin = ParentOrigin.Center;
- _menuContainer.ShadowBorder.PivotPoint = PivotPoint.Center;
- _menuContainer.ShadowBorder.PositionUsesPivotPoint = true;
- _menuContainer.SpotLight = spotLight;
- _bottomClipLayer.Add(_menuContainer);
-
- CreatePosters(); // Create Items for Poster ScrollContainer
- CreateMenu(); // Create Items for Menu ScrollContainer
-
- // Initialize PreFocusChange event of KeyboardFocusManager
- _keyboardFocusManager = FocusManager.Instance;
- _keyboardFocusManager.PreFocusChange += OnKeyboardPreFocusChangeSignal;
-
- _keyboardFocusIndicator = new ImageView(_imagePath + "/focuseffect/highlight_stroke.9.png");
- _keyboardFocusIndicator.ParentOrigin = ParentOrigin.Center;
- _keyboardFocusIndicator.PivotPoint = PivotPoint.Center;
- _keyboardFocusIndicator.PositionUsesPivotPoint = true;
- _keyboardFocusIndicator.WidthResizePolicy = ResizePolicyType.FillToParent;
- _keyboardFocusIndicator.HeightResizePolicy = ResizePolicyType.FillToParent;
-
- _keyboardFocusManager.FocusIndicator = (_keyboardFocusIndicator);
-
- _keyboardFocusManager.SetAsFocusGroup(_menuContainer, true);
- _keyboardFocusManager.SetAsFocusGroup(_postersContainer[0], true);
- _keyboardFocusManager.SetAsFocusGroup(_postersContainer[1], true);
- _keyboardFocusManager.FocusGroupLoop = (true);
-
- _focusEffect = new FocusEffect();
-
- // Move Fcous to Bottom Container (Menu ScrollContainer)
- ShowBottomContainer();
- _menuContainer.SetFocused(true);
-
-#if true
- //test.
- TextLabel _dateOfTest = new TextLabel();
- _dateOfTest.WidthResizePolicy = ResizePolicyType.FillToParent;
- _dateOfTest.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
- _dateOfTest.PivotPoint = PivotPoint.TopCenter;
- _dateOfTest.PositionUsesPivotPoint = true;
- _dateOfTest.ParentOrigin = ParentOrigin.TopCenter;
- _dateOfTest.SizeModeFactor = new Vector3(0.0f, 0.1f, 0.0f);
- _dateOfTest.BackgroundColor = new Color(43.0f / 255.0f, 145.0f / 255.0f, 175.0f / 255.0f, 1.0f);
- _dateOfTest.TextColor = Color.White;
- _dateOfTest.Text = " Common Interface Define Verification Test of 2017-02-10 #1";
- _dateOfTest.HorizontalAlignment = HorizontalAlignment.Begin;
- _dateOfTest.VerticalAlignment = VerticalAlignment.Center;
- _dateOfTest.PointSize = 12.0f;
- _dateOfTest.UnderlineEnabled = true;
- _stage.GetDefaultLayer().Add(_dateOfTest);
- Tizen.Log.Debug("NUI", "### 1) ColorMode = " + _dateOfTest.ColorMode);
- _dateOfTest.ColorMode = ColorMode.UseParentColor;
- Tizen.Log.Debug("NUI", "### 2) ColorMode = " + _dateOfTest.ColorMode);
- _dateOfTest.ColorMode = ColorMode.UseOwnMultiplyParentColor;
- Tizen.Log.Debug("NUI", "### 3) ColorMode = " + _dateOfTest.ColorMode);
- Tizen.Log.Debug("NUI", "### 1) DrawModeType = " + _dateOfTest.DrawMode);
- _dateOfTest.DrawMode = DrawModeType.Overlay2D;
- Tizen.Log.Debug("NUI", "### 2) DrawModeType = " + _dateOfTest.DrawMode);
-
-#endif
-
- }
-
- [STAThread]
- static void _Main(string[] args)
- {
- Tizen.Log.Debug("NUI", "Main() is called! ");
-
- FirstScreenApp app = new FirstScreenApp();
- app.Run(args);
- }
-
- }
-}
+++ /dev/null
-using System;
-
-namespace FirstScreen
-{
- public class Constants
- {
- public const int TotalPostersContainers = 2; // Number of Poster ScrollContainers to be added on Top Container
-
- public const float TopContainerHeightFactor = 0.38f; // Height Factor of stage height used for Top Container total height
- public const float TopContainerPositionFactor = 0.50f; // Position Factor of stage height used for Top Container position
- public const float TopClipLayerHeightFactor = 0.34f; // Height Factor of stage height used for Top Clip layer height
- public const float TopClipLayerExpandHeightFactor = 0.36f; // Expanded Height Factor of stage height used for Top Clip layer height (used when Bottom container is hidden)
- public const float PostersContainerHeightFactor = 0.32f; // Height Factor of stage height used for Poster ScrollContainers
- public const float PostersContainerPadding = 2.0f; // Padding size used between items / images in Poster ScrollContainer
- public const float PostersContainerMargin = 60.0f; // Extra margin Padding size used between items / images in Poster ScrollContainer when item / image is focused
- public const float PostersContainerOffsetYFactor = 0.17f; // Position Factor of Poster item height used for Poster items / images position
-
- public const float BottomContainerHeightFactor = 0.16f; // Height Factor of stage height used for Bottom Container total height
- public const float BottomContainerHidePositionFactor = 0.88f; // Position Factor of stage height used for Bottom Container position when bottom container is hidden (not focused)
- public const float BottomContainerShowPositionFactor = 0.84f; // Position Factor of stage height used for Bottom Container position when bottom container is not hidden (focused)
- public const float MenuContainerHeightFactor = 0.16f; // Height Factor of stage height used for Bottom ScrollContainers
- public const float BottomClipLayerHeightFactor = 0.84f; // Height Factor of stage height used for Bottom Clip layer height
- public const float MenuContainerPadding = 10.0f; // Padding size used between items / images in Menu ScrollContainer
- public const float MenuContainerMargin = 25.0f; // Extra margin Padding size used between items / images in Menu ScrollContainer when item / image is focused
- public const float MenuContainerOffsetYFactor = 0.35f; // Position Factor of Menu item height used for Menu items / images position
-
- public const float MenuItemWidthFactor = 0.125f; // Width Factor (1/8) of stage Width used for Menu items / images Width
- public const float MenuItemHeightFactor = 0.10f; // Height Factor of stage height used for Menu items / images Height
- public const float MenuItemsCount = 14; // Number of Menu items / images used in a Menu ScrollContainer
-
- public const float Poster0ItemWidthFactor = 0.25f; // Width Factor (1/4) of stage Width used for Poster items / images Width in a Poster ScrollContainer 0
- public const float Poster1ItemWidthFactor = 0.20f; // Width Factor of stage Width used for Poster items / images Width in a Poster ScrollContainer 1
- public const float PostersItemHeightFactor = 0.24f; // Height Factor of stage height used for Poster items / images Height
- public const float PostersItemsCount = 24; // Number of Menu items / images used in a Poster ScrollContainer
-
- public const float LauncherWidth = 280.0f; // Width of Launcher. Launcher is used to display three images on left of Menu ScrollContainer
- public const float LauncherLeftMargin = 40.0f; // Extra Spaces to the left of first Launcher item / image
- public const float LauncherSeparatorWidth = 20.0f; // Extra area / space to the left of Menu ScrollContainer used for a speration shadow image
- public const float LauncherItemsCount = 3.0f; // Total number of Launcher items / images
- public const float LauncherIconWidth = (LauncherWidth - LauncherLeftMargin - LauncherSeparatorWidth) / LauncherItemsCount; // Width of each Launcher item / image
-
- public const int SpotLightDuration = 5000; // Duration of Spot Light Animation.
- public const int FocusTransitionDuration = 350; // MilliSecond Duration of Focus Transition Animation.
- public const int FocusDuration = 350; // Duration of Focus Animation.
- public const int ScrollDuration = 350; // Duration of Scroll Animation.
-
- // public const string ImageResourcePath = "./firstscreen/images/"; // for Ubuntu
- public const string ImageResourcePath = "/home/owner/apps_rw/NUISamples.TizenTV/res/images/"; // for target
-
- }
-}
+++ /dev/null
-using Tizen.NUI;
-using Tizen.NUI.UIComponents;
-using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Constants;
-using System;
-
-namespace FirstScreen
-{
- public class FocusData
- {
- private string _name; // Name used for FocusData object (mainly to differentiate key frame animation )
- private string _imageName; // Image File Name (to be loaded from disk) used for ImageView used in key frame animation
- private Position _parentOrigin; // ParentOrigin applied to ImageView
- private Size _initSize; // InitSize used for key frame animation
- private Size _targetSize; // TargetSize used for key frame animation
- private float _keyFrameStart; // KeyFrameStart used for key frame animation
- private float _keyFrameEnd; // KeyFrameEnd used for key frame animation
- private Direction _direction; // Direction used for key frame animation
- private ImageView _imageFocus; // ImageView used in key frame animation
-
- // Initialize FocusData used for key frame animation
- public FocusData(string name, string imageName, Direction direction, Position parentOrigin, Size initSize,
- Size targetSize, float keyFrameStart, float keyFrameEnd)
- {
- _name = name;
- _imageName = imageName;
- _parentOrigin = parentOrigin;
- _initSize = initSize;
- _targetSize = targetSize;
- _keyFrameStart = keyFrameStart;
- _keyFrameEnd = keyFrameEnd;
- _direction = direction;
-
- _imageFocus = new ImageView(Constants.ImageResourcePath + "/focuseffect/" + _imageName); // Target
-
- _imageFocus.ParentOrigin = _parentOrigin;
- _imageFocus.PivotPoint = PivotPoint.Center;
- _imageFocus.PositionUsesPivotPoint = true;
- _imageFocus.Name = _name;
- }
-
- public enum Direction
- {
- Horizontal,
- Vertical
- };
-
- public Direction FocusDirection
- {
- get { return _direction; }
- set { _direction = value; }
- }
-
- public string Name
- {
- get { return _name; }
- set { _name = value; }
- }
-
- public string ImageName
- {
- get { return _imageName; }
- set { _imageName = value; }
- }
-
- public Position ParentOrigin
- {
- get
- {
- return _parentOrigin;
- }
-
- set
- {
- _parentOrigin = value;
- _imageFocus.ParentOrigin = _parentOrigin;
- }
- }
-
- public Size InitSize
- {
- get { return _initSize; }
- set { _initSize = value; }
- }
-
- public Size TargetSize
- {
- get { return _targetSize; }
- set { _targetSize = value; }
- }
-
- public float KeyFrameStart
- {
- get { return _keyFrameStart; }
- set { _keyFrameStart = value; }
- }
-
- public float KeyFrameEnd
- {
- get { return _keyFrameEnd; }
- set { _keyFrameEnd = value; }
- }
-
- public ImageView ImageItem
- {
- get { return _imageFocus; }
- }
-
- }
-}
+++ /dev/null
-using Tizen.NUI;
-using Tizen.NUI.Constants;
-using Tizen.NUI.BaseComponents;
-using System;
-using System.Collections.Generic;
-
-namespace FirstScreen
-{
- public class FocusEffect : IFocusEffect
- {
- private float _frameThickness;
- private FocusData[] _focusData; // Each FocusData is used for one key frame animation (total 6 key frame animations needed for EddenEffect)
- private Animation _animation; // Animation used to apply all six key frame animations
-
- public FocusEffect()
- {
- _frameThickness = 10.0f;
- float _bottomFrameTime = 0.6f; // complete the halo/bottom animation 60% of the way through
- float _sideFrameTime = 0.8f; // Start the side frame animation after the bottom animation and complete at 80% of the way through
- float _topFrameTime = 1.0f; // start the top frame animation after the side frame animation and complete at 100% way through
-
- // Six key frame animations (FocusData objects) needed for EddenEffect
- // Two key frame animations for top horizontal effect
- // Two key frame animations for bottom horizontal effect
- // Two key frame animations for vertical horizontal effect
- _focusData = new FocusData[6];
-
- FocusData focusData = new FocusData("halo", "halo.png", FocusData.Direction.Horizontal, ParentOrigin.TopCenter,
- new Size(50.0f, 20.0f, 0.0f), new Size(0.0f, 100.0f, 0.0f), 0.0f, _bottomFrameTime);
- _focusData[0] = focusData;
-
- focusData = new FocusData("bottom", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.TopCenter,
- new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), 0.0f, _bottomFrameTime);
- _focusData[1] = focusData;
-
- focusData = new FocusData("left", "verticalFrame.png", FocusData.Direction.Vertical, ParentOrigin.BottomLeft,
- new Size(0.0f, 0.0f, 0.0f), new Size(_frameThickness, 0.0f, 0.0f), _bottomFrameTime, _sideFrameTime);
- _focusData[2] = focusData;
-
- focusData = new FocusData("right", "verticalFrame.png", FocusData.Direction.Vertical, ParentOrigin.BottomRight,
- new Size(0.0f, 0.0f, 0.0f), new Size(_frameThickness, 0.0f, 0.0f), _bottomFrameTime, _sideFrameTime);
- _focusData[3] = focusData;
-
- focusData = new FocusData("top-left", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.BottomLeft,
- new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), _sideFrameTime, _topFrameTime);
- _focusData[4] = focusData;
-
- focusData = new FocusData("top-right", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.BottomRight,
- new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), _sideFrameTime, _topFrameTime);
- _focusData[5] = focusData;
- }
-
- public void FocusAnimation(View parentItem, Size itemSize, int duration, FocusEffectDirection direction)
- {
- var itemWidth = itemSize.Width + _frameThickness / 2;
- var itemHeight = itemSize.Height + _frameThickness / 3;
-
- if (_animation)
- {
- _animation.Clear();
- _animation.Reset();
- }
-
- _animation = new Animation(duration);
- _animation.Duration = duration;
-
- if (direction == FocusEffectDirection.BottomToTop)
- {
- _focusData[0].ParentOrigin = ParentOrigin.BottomCenter;
- _focusData[1].ParentOrigin = ParentOrigin.BottomCenter;
- _focusData[2].ParentOrigin = ParentOrigin.BottomLeft;
- _focusData[3].ParentOrigin = ParentOrigin.BottomRight;
- _focusData[4].ParentOrigin = ParentOrigin.TopLeft;
- _focusData[5].ParentOrigin = ParentOrigin.TopRight;
- }
- else
- {
- _focusData[0].ParentOrigin = ParentOrigin.TopCenter;
- _focusData[1].ParentOrigin = ParentOrigin.TopCenter;
- _focusData[2].ParentOrigin = ParentOrigin.BottomLeft;
- _focusData[3].ParentOrigin = ParentOrigin.BottomRight;
- _focusData[4].ParentOrigin = ParentOrigin.BottomLeft;
- _focusData[5].ParentOrigin = ParentOrigin.BottomRight;
- }
-
- foreach (FocusData focusData in _focusData)
- {
- var currentParent = focusData.ImageItem.Parent;
-
- // first parent the controls
- if (parentItem != currentParent)
- {
- parentItem.Add(focusData.ImageItem);
- }
-
- focusData.ImageItem.Size = new Size(100.0f, 100.0f, 0.0f);
- parentItem.Add(focusData.ImageItem);
-
- Size targetSize = focusData.TargetSize;
- Size initSize = focusData.InitSize;
-
- if (focusData.FocusDirection == FocusData.Direction.Horizontal)
- {
- // adjust the width to match the parent
- targetSize.Width = itemWidth;
- }
- else // vertical frame
- {
- // adjust the height to match the parent
- targetSize.Height = itemHeight;
- }
-
- // half the size for the top frame as we come out from both left / right sides
- if (focusData.Name == "top-right" || focusData.Name == "top-left")
- {
- targetSize.Width = itemWidth - _frameThickness;
- }
-
- KeyFrames keyFrames = new KeyFrames();
-
- keyFrames.Add(0.0f, initSize);
- keyFrames.Add(focusData.KeyFrameStart, initSize);
- keyFrames.Add(focusData.KeyFrameEnd, targetSize);
-
- // for halo add an extra keyframe to shrink it ( in 20% of time after it has finished)
- if (focusData.Name == "halo")
- {
- keyFrames.Add(focusData.KeyFrameEnd + 0.2f, initSize);
- }
-
- _animation.AnimateBetween(focusData.ImageItem, "Size", keyFrames, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
- // Simulate the vertical frame growing from the top.
- // Vertical items are anchored to the bottom of the parent... so when they grow
- // we need to move them to the middle of the parent ( otherwise they stick out the bottom)
- if (focusData.FocusDirection == FocusData.Direction.Vertical)
- {
- //animate position as well so it looks like animation is coming from bottom
- KeyFrames keyFramesV = new KeyFrames();
-
- if (direction == FocusEffectDirection.BottomToTop)
- {
- keyFramesV.Add(0.0f, 0.0f);
- keyFramesV.Add(focusData.KeyFrameStart, 0.0f);
- }
- else
- {
- keyFramesV.Add(0.0f, -itemHeight);
- keyFramesV.Add(focusData.KeyFrameStart, -itemHeight);
- }
-
- keyFramesV.Add(focusData.KeyFrameEnd, (-itemHeight / 2)); // animate to halfway up the control
-
-
- _animation.AnimateBetween(focusData.ImageItem, "PositionY", keyFramesV, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
-
- }
-
- // Simulate the top frame growing from the sides.
- if (focusData.Name == "top-left")
- {
- KeyFrames keyFramesTL = new KeyFrames();
-
- keyFramesTL.Add(0.0f, 0.0f);
- keyFramesTL.Add(focusData.KeyFrameStart, 0.0f);
- keyFramesTL.Add(focusData.KeyFrameEnd, (itemWidth / 2)); // animate to halfway up the control
-
- // grow these from the left or right
- _animation.AnimateBetween(focusData.ImageItem, "PositionX", keyFramesTL, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
-
- }
-
- if (focusData.Name == "top-right")
- {
- KeyFrames keyFramesTR = new KeyFrames();
-
- keyFramesTR.Add(0.0f, 0.0f);
- keyFramesTR.Add(focusData.KeyFrameStart, 0.0f);
- keyFramesTR.Add(focusData.KeyFrameEnd, (-itemWidth / 2)); // animate to halfway up the control
-
- // grow these from the left or right
- _animation.AnimateBetween(focusData.ImageItem, "PositionX", keyFramesTR, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
- }
-
- _animation.Finished += OnAnimationFinished;
-
- _animation.Play();
- }
- }
-
- private void OnAnimationFinished(object source, EventArgs e)
- {
- foreach (FocusData focusData in _focusData)
- {
- var currentParent = focusData.ImageItem.Parent;
-
- if (currentParent)
- {
- currentParent.Remove(focusData.ImageItem);
- }
- }
- }
- }
-}
+++ /dev/null
-using Tizen.NUI;
-using System;
-using Tizen.NUI.BaseComponents;
-
-namespace FirstScreen
-{
- public enum FocusEffectDirection
- {
- TopToBottom,
- BottomToTop
- };
-
- public interface IFocusEffect
- {
- void FocusAnimation(View parentItem, Size itemSize, int duration, FocusEffectDirection direction);
- }
-}
+++ /dev/null
-using Tizen.NUI;
-using Tizen.NUI.Constants;
-using Tizen.NUI.UIComponents;
-using Tizen.NUI.BaseComponents;
-using System;
-using System.Runtime.InteropServices;
-using System.Collections.Generic;
-
-namespace FirstScreen
-{
- public class ScrollContainer : CustomView
- {
- private View _container; // View Container will be the first item added to ScrollContainer and parent to all the items added to the ScrollContainer.
- private Size _itemSize; // Size of the item / images added to the ScrollContainer.
- private List<View> _itemList; // List collection of View items/images added to the ScrollContainer.
- private int _itemCount; // Number of items / images added to the ScrollContainer.
- private int _focusedItem; // Index of currently focused View item / image on the ScrollContainer.
- private float _scrollDisplacement; // Used for horizontal pan displacement.
- private float _currentScrollPosition; // Used for horizontal scroll position.
- private float _gap; // Used for gap / padding between items / images on the ScrollContainer.
- private float _width; // Width of the ScrollContainer.
- private float _height; // Height of the ScrollContainer.
- private bool _isFocused; // Flag to check if ScrollContainer is enabled or not.
- private float _marginX; // Extra horizontal margin is used to add an extra gap between items / images after a focused and scaled item / image.
- private float _marginY; // Extra vertical margin (not used at the moment).
- private float _offsetYFactor; // Vertical Position offset Factor of item height.
- private float _offsetX; // Horizontal Position offset of ScrollContainer.
- private Stage _stage; // Reference to Dali stage.
- private Size2D _stageSize; // Reference to Dali stage size.
- private ImageView _shadowBorder; // Reference to Shadow border ImageView applied to the focused item on ScrollContainer.
- private ImageView _spotLight; // Reference to SpotLight ImageView applied to the focused item on ScrollContainer.
- private Animation _spotLightAnimation; // SpotLight Animation applied to the focused item on ScrollContainer.
- private Animation _focusAnimation; // Focused position animation on ScrollContainer.
- private Animation _scrollAnimation; // Scroll animation on items of ScrollContainer.
- private Animation _focusTransitionAnimation; // Focus Transition (scaling /unscaling) animation on items of ScrollContainer.
- private Path _circularPath; // Circular path used for SpotLight Animation applied to the focused item on ScrollContainer.
-
- static CustomView CreateInstance()
- {
- return new ScrollContainer();
- }
-
- // static constructor registers the control type (for user can add kinds of visuals to it)
- static ScrollContainer()
- {
- // ViewRegistry registers control type with DALi type registery
- // also uses introspection to find any properties that need to be registered with type registry
- ViewRegistry.Instance.Register(CreateInstance, typeof(ScrollContainer));
- }
-
- public ScrollContainer() : base(typeof(ScrollContainer).Name, CustomViewBehaviour.DisableStyleChangeSignals |
- CustomViewBehaviour.RequiresKeyboardNavigationSupport)
- {
- }
-
- public bool IsFocused
- {
- get
- {
- return _isFocused;
- }
- }
-
- public Tizen.NUI.BaseComponents.View Container
- {
- get
- {
- return _container;
- }
- }
-
- public int ItemCount
- {
- get
- {
- return _itemCount;
- }
- }
-
- public Size ItemSize
- {
- get
- {
- return _itemSize;
- }
-
- set
- {
- _itemSize = value;
-
- Position topLeft = new Position(-0.25f * _itemSize.Width, -0.25f * _itemSize.Height, 0.0f);
- Position topRight = new Position(0.25f * _itemSize.Width, -0.25f * _itemSize.Height, 0.0f);
- Position bottomRight = new Position(0.25f * _itemSize.Width, 0.25f * _itemSize.Height, 0.0f);
- Position bottomLeft = new Position(-0.25f * _itemSize.Width, 0.25f * _itemSize.Height, 0.0f);
-
- _circularPath = new Path();
- _circularPath.AddPoint(topLeft);
- _circularPath.AddPoint(topRight);
- _circularPath.AddPoint(bottomRight);
- _circularPath.AddPoint(bottomLeft);
- _circularPath.AddPoint(topLeft);
- _circularPath.GenerateControlPoints(0.5f);
- }
- }
-
- public float Gap
- {
- get
- {
- return _gap;
- }
-
- set
- {
- _gap = value;
- }
- }
-
- public float MarginX
- {
- get
- {
- return _marginX;
- }
-
- set
- {
- _marginX = value;
- }
- }
-
- public float OffsetYFator
- {
- get
- {
- return _offsetYFactor;
- }
-
- set
- {
- _offsetYFactor = value;
- }
- }
-
- public float OffsetX
- {
- get
- {
- return _offsetX;
- }
-
- set
- {
- _offsetX = value;
- }
- }
-
- public float MarginY
- {
- get
- {
- return _marginY;
- }
-
- set
- {
- _marginY = value;
- }
- }
-
- public float Width
- {
- get
- {
- return _width;
- }
-
- set
- {
- _width = value;
- }
- }
-
- public float Height
- {
- get
- {
- return _height;
- }
-
- set
- {
- _height = value;
- }
- }
-
- public ImageView ShadowBorder
- {
- get
- {
- return _shadowBorder;
- }
-
- set
- {
- _shadowBorder = value;
- }
- }
-
- public ImageView SpotLight
- {
- get
- {
- return _spotLight;
- }
-
- set
- {
- _spotLight = value;
- }
- }
-
- public int FocusedItemID
- {
- get
- {
- if (_focusedItem < 0)
- {
- _focusedItem = 0;
- }
-
- return _focusedItem;
- }
- }
-
- // This override method is called automatically after the Control has been initialized.
- // Any second phase initialization is done here.
- public override void OnInitialize()
- {
- _itemSize = new Size(0.0f, 0.0f, 0.0f);
- _gap = 0.0f;
- _width = 0.0f;
- _height = 0.0f;
- _currentScrollPosition = 0.0f;
- _itemCount = 0;
- _focusedItem = -1;
- _isFocused = false;
- _marginX = 50.0f;
- _marginY = 0.0f;
- _offsetYFactor = 0.0f;
- _offsetX = 0.0f;
-
- _container = new View();
- this.Add(_container);
-
- _itemList = new List<View>();
-
- this.ParentOrigin = Tizen.NUI.ParentOrigin.TopLeft;
- this.WidthResizePolicy = ResizePolicyType.FillToParent;
- this.HeightResizePolicy = ResizePolicyType.FillToParent;
- this.Focusable = (true);
-
- _container.ParentOrigin = Tizen.NUI.ParentOrigin.TopLeft;
- _container.WidthResizePolicy = ResizePolicyType.FillToParent;
- _container.HeightResizePolicy = ResizePolicyType.FillToParent;
-
- _stage = Stage.Instance;
- _stageSize = _stage.Size;
-
- _spotLightAnimation = new Animation(Constants.SpotLightDuration);
- _focusTransitionAnimation = new Animation(Constants.FocusTransitionDuration);
- _focusAnimation = new Animation(Constants.FocusDuration);
- _focusAnimation.EndAction = Animation.EndActions.StopFinal;
- _scrollAnimation = new Animation(Constants.ScrollDuration);
- _scrollAnimation.EndAction = Animation.EndActions.StopFinal;
-
- //changed to internal
- //EnableGestureDetection(Gesture.Type.Pan);
- }
-
- // This will be invoked automatically if an item/image is added to the ScrollContainer
- public override void OnChildAdd(Actor actor)
- {
- View item = View.DownCast(actor);
- //View item = actor as View;
-
- if (item is View && item != _container)
- {
- item.PivotPoint = Tizen.NUI.PivotPoint.BottomCenter;
- item.PositionUsesPivotPoint = true;
- item.ParentOrigin = Tizen.NUI.ParentOrigin.BottomCenter;
-
- item.Size = _itemSize;
- item.Focusable = (true);
- item.Position = GetItemPosition(_itemCount, _currentScrollPosition);
- item.Name = _itemCount.ToString();
-
- _container.Add(item);
- _itemList.Add(item);
-
- _itemCount++;
- }
- }
-
- // This will be invoked automatically if an item/image is removed from the ScrollContainer
- public override void OnChildRemove(Actor actor)
- {
- View item = View.DownCast(actor);
- //View item = actor as View;
-
- if (item is View && item != _container)
- {
- _container.Remove(item);
-
- _itemCount--;
- _itemList.Remove(item);
- }
- }
-
- // This override function supports two dimensional keyboard navigation.
- // This function returns the next keyboard focusable actor in ScrollContainer control towards the given direction.
- public override View GetNextFocusableView(View currentFocusedView, View.FocusDirection direction, bool loopEnabled)
- {
- if (direction == View.FocusDirection.Left)
- {
- return View.DownCast(FocusPrevious(loopEnabled));
- }
- else if (direction == View.FocusDirection.Right)
- {
- return View.DownCast(FocusNext(loopEnabled));
- }
- else
- {
- return View.DownCast(currentFocusedView);
- }
- }
-
- public override void OnFocusChangeCommitted(View commitedFocusableView)
- {
- Focus(_focusedItem);
- }
-
-
- // This override function is invoked before chosen focusable actor will be focused.
- // This allows the application to preform any actions (i.e. Scroll and SpotLight animations) before the focus is actually moved to the chosen actor.
-
- // This override function is invoked whenever a pan gesture is detected on this control.
- // Perform Scroll Animation based upon pan gesture velocity / speed.
- /*public override void OnPan(PanGesture pan)
- {
- return; //currently not used
- }*/
-
- // This function returns current focused actor
- public View GetCurrentFocusedActor()
- {
- if (_focusedItem < 0)
- {
- _focusedItem = 0;
- }
-
- return _itemList[_focusedItem];
- }
-
- public void SetFocused(bool focused)
- {
- _isFocused = focused;
-
- // Perform Focus animation if the ScrollContainer is not focused already
- if (!_isFocused)
- {
- Actor parent = _shadowBorder.Parent;
- if (parent)
- {
- parent.Remove(_shadowBorder);
- }
-
- parent = _spotLight.Parent;
- if (parent)
- {
- parent.Remove(_spotLight);
- }
-
- _focusTransitionAnimation.Clear();
-
- for (int i = 0; i < _itemList.Count; ++i)
- {
- Position targetPosition = GetItemPosition(i, _currentScrollPosition);
-
- _focusTransitionAnimation.AnimateTo(_itemList[i], "Position", targetPosition, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
-
- _focusTransitionAnimation.AnimateTo(_itemList[i], "Scale", new Size(1.0f, 1.0f, 1.0f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
- }
-
- _focusTransitionAnimation.Play();
- }
- else
- {
- Focus(_focusedItem);
- }
- }
-
- // Obtain ID of first visible item/image on the screen of the ScrollContainer
- private int GetFirstVisibleItemId()
- {
- int firstItemId = -1;
-
- if (_isFocused)
- {
- firstItemId = (int)Math.Floor((-1.0 * _currentScrollPosition + _marginX * 2.0f) / (_itemSize.Width + _gap));
- }
- else
- {
- firstItemId = (int)Math.Floor(-1.0 * _currentScrollPosition / (_itemSize.Width + _gap));
- }
-
- if (firstItemId < 0)
- {
- firstItemId = 0;
- }
-
- return firstItemId;
- }
-
- // Obtain ID of last visible item/image on the screen of the ScrollContainer
- private int GetLastVisibleItemId()
- {
- int lastItemId = -1;
-
- if (_isFocused)
- {
- lastItemId = (int)Math.Ceiling(((_width - _currentScrollPosition - _marginX * 2.0f) / _itemSize.Width) - 1);
- }
- else
- {
- lastItemId = (int)Math.Ceiling(((_width - _currentScrollPosition) / _itemSize.Width) - 1);
- }
-
- if (lastItemId >= _itemList.Count)
- {
-
- lastItemId = _itemList.Count - 1;
- }
-
- return lastItemId;
- }
-
- // Obtain Next item/image (Right of the currently focused item) of the ScrollContainer
- private Actor FocusNext(bool loopEnabled)
- {
- int nextItem = -1;
-
- if (_focusedItem < GetFirstVisibleItemId() || _focusedItem > GetLastVisibleItemId())
- {
- nextItem = GetFirstVisibleItemId();
- }
- else
- {
- nextItem = _focusedItem + 1;
- }
-
- if (nextItem >= _itemList.Count)
- {
- if (loopEnabled)
- {
- nextItem = 0;
- }
- else
- {
- nextItem = _itemList.Count - 1;
- }
- }
-
- _focusedItem = nextItem;
- return _itemList[_focusedItem];
- }
-
- // Obtain Previous item/image (left of the currently focused item) of the ScrollContainer
- private Actor FocusPrevious(bool loopEnabled)
- {
- int previousItem = -1;
-
- if (_focusedItem < GetFirstVisibleItemId() || _focusedItem > GetLastVisibleItemId())
- {
- previousItem = GetFirstVisibleItemId();
- }
- else
- {
- previousItem = _focusedItem - 1;
- }
-
- if (previousItem < 0)
- {
- if (loopEnabled)
- {
- previousItem = _itemList.Count - 1;
- }
- else
- {
- previousItem = 0;
- }
- }
-
- _focusedItem = previousItem;
- return _itemList[_focusedItem];
- }
-
- // Perform ScrollAnimation on each item
- private void Scroll(float amount, int baseItem)
- {
- float tagetScrollPosition = _currentScrollPosition + amount;
- float totalItemSize = _itemList.Count * (_itemSize.Width + _gap) + _gap + (_marginX * 2.0f);
-
- float maxScrollPosition = _width - totalItemSize;
-
- if (tagetScrollPosition < maxScrollPosition)
- {
- tagetScrollPosition = maxScrollPosition;
- }
-
- if (tagetScrollPosition > 0.0f)
- {
- tagetScrollPosition = 0.0f;
- }
-
- _scrollAnimation.Clear();
-
- for (int i = 0; i < _itemList.Count; ++i)
- {
- Position targetPosition = GetItemPosition(i, tagetScrollPosition);
-
- _scrollAnimation.AnimateTo(_itemList[i], "Position", targetPosition, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
- }
-
- _currentScrollPosition = tagetScrollPosition;
- _scrollAnimation.Play();
- }
-
- // This function uses ItemId as next FocusedItem and preforms Scroll and SpotLight animations on that item.
- private void Focus(int itemId)
- {
-
- if (itemId < 0)
- {
- itemId = 0;
- }
- else if (itemId >= _itemList.Count)
- {
- itemId = _itemList.Count - 1;
- }
-
- _itemList[itemId].Add(_shadowBorder);
- _itemList[itemId].Add(_spotLight);
-
- // Perform Spot Light animation
- if (_focusedItem != itemId && _spotLight != null)
- {
- _spotLightAnimation.Clear();
- _spotLightAnimation.AnimatePath(_spotLight, _circularPath, new Vector3(0.0f, 0.0f, 0.0f));
- _spotLightAnimation.Looping = true;
- _spotLightAnimation.Play();
- }
-
- _focusedItem = itemId;
-
- Position itemPosition = GetItemPosition(_focusedItem, _currentScrollPosition);
-
- _focusAnimation.Clear();
-
- float relativeItemPositionX = itemPosition.X - _itemSize.Width * 0.5f + (_stageSize.Width * 0.5f) + _offsetX;
- if (relativeItemPositionX < _marginX + _offsetX + _gap)
- {
- float amount = _marginX + _offsetX + _gap - relativeItemPositionX;
- Scroll(amount, itemId + 1); // Perform Scroll animation
- }
- else if (relativeItemPositionX + _itemSize.Width + _gap + _marginX > _stageSize.Width)
- {
- float amount = relativeItemPositionX + _marginX + _gap + _itemSize.Width - _stageSize.Width;
- Scroll(-amount, itemId - 1); // Perform Scroll animation
- }
- else
- {
- // Perform animation when item is focused
- for (int i = 0; i < _itemList.Count; ++i)
- {
- Position targetPosition = GetItemPosition(i, _currentScrollPosition);
-
- _focusAnimation.AnimateTo(_itemList[i], "Position",targetPosition, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine) );
- }
- }
-
- for (int i = 0; i < _itemList.Count; ++i)
- {
- // Perform scale animation on Focused item
- if (i == _focusedItem)
- {
- _focusAnimation.AnimateTo(_itemList[i], "Scale", new Size(1.2f, 1.2f, 1.2f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
- }
- else
- {
-
- _focusAnimation.AnimateTo(_itemList[i], "Scale", new Size(1.0f, 1.0f, 1.0f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine) );
- }
- }
-
- _focusAnimation.Play();
-
- }
-
- // Calculate Position of any item/image of ScrollContainer
- private Position GetItemPosition(int itemId, float scrollPosition)
- {
- if (_isFocused)
- {
- // used (_itemSize.Width * 0.5f) because of AnchorPointCenter
- // used (_stageSize.Width * 0.5f) because of ParentOriginCenter
- if (_focusedItem > itemId)
- {
- float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
- return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
- }
- else if (_focusedItem == itemId)
- {
- float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + _marginX + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
- return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
- }
- else
- {
- float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + _marginX * 2.0f + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
- return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
- }
- }
- else
- {
- float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
- return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
- }
- }
-
-
- }
-
-}
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="NUISamples.Tizen" version="1.0.0">\r
- <profile name="common" />\r
- <ui-application appid="org.tizen.example.NUISamples.Tizen"\r
- exec="NUISamples.Tizen.exe"\r
- type="dotnet"\r
- multiple="false"\r
- taskmanage="true"\r
- nodisplay="false"\r
- launch_mode="single">\r
- <label>NUISamples.Tizen</label>\r
- <icon>NUISamples.Tizen.png</icon>\r
- </ui-application>\r
-</manifest>\r
window.KeyEvent += OnWindowKeyEvent;
window.Resized += (obj, e) =>
{
- NUILog.Debug("Height: " + e.WindowSize.Height);
- NUILog.Debug("Width: " + e.WindowSize.Width);
+ Tizen.Log.Debug("NUI", "Height: " + e.WindowSize.Height);
+ Tizen.Log.Debug("NUI", "Width: " + e.WindowSize.Width);
};
pixelLabel = new TextLabel("Test Pixel Size 32.0f");
}
catch (Exception e)
{
- NUILog.Debug($"exception caught! e={e}");
+ Tizen.Log.Debug("NUI", $"exception caught! e={e}");
}
}).Wait();
_view = new View();
_view.Size2D = new Size2D(100, 100);
_view.SizeWidth = 50;
- NUILog.Debug("[1]_view SizeWidth=" + _view.SizeWidth);
+ Tizen.Log.Debug("NUI", "[1]_view SizeWidth=" + _view.SizeWidth);
_animation = new Animation
{
_animation.Finished += AnimationFinished;
_view.SizeWidth = 50;
- NUILog.Debug("[2]_view SizeWidth=" + _view.SizeWidth);
+ Tizen.Log.Debug("NUI", "[2]_view SizeWidth=" + _view.SizeWidth);
TextLabelLineWrapModeTest();
ViewLayoutDirectionTest();
public void AnimationFinished(object sender, EventArgs e)
{
- NUILog.Debug("AnimationFinished()! cnt=" + (cnt));
+ Tizen.Log.Debug("NUI", "AnimationFinished()! cnt=" + (cnt));
if (_animation)
{
- NUILog.Debug("Duration= " + _animation.Duration + "EndAction= " + _animation.EndAction);
+ Tizen.Log.Debug("NUI", "Duration= " + _animation.Duration + "EndAction= " + _animation.EndAction);
}
_view.SizeWidth = 50;
- NUILog.Debug("[3]_view SizeWidth=" + _view.SizeWidth);
+ Tizen.Log.Debug("NUI", "[3]_view SizeWidth=" + _view.SizeWidth);
}
int win_test;
public void OnWindowKeyEvent(object sender, Window.KeyEventArgs e)
{
- NUILog.Debug("e.Key.KeyPressedName=" + e.Key.KeyPressedName);
+ Tizen.Log.Debug("NUI", "e.Key.KeyPressedName=" + e.Key.KeyPressedName);
if (e.Key.State == Key.StateType.Down)
{
{
_animation.Finished += AnimationFinished;
cnt++;
- NUILog.Debug("AnimationFinished added!");
- view1.LayoutDirection = ViewLayoutDirectionType.LTR;
- NUILog.Error("change view1's layout direction as LTR!");
+ Tizen.Log.Debug("NUI", "AnimationFinished added!");
}
pointLabel.TextColorAnimatable = Color.Blue;
pixelLabel.TextColorAnimatable = Color.Blue;
- NUILog.Debug($"LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
+ Tizen.Log.Debug("NUI", $"LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
}
else if (e.Key.KeyPressedName == "Down")
{
{
_animation.Finished -= AnimationFinished;
cnt--;
- NUILog.Debug("AnimationFinished removed!");
- view1.LayoutDirection = ViewLayoutDirectionType.RTL;
- NUILog.Error("change view1's layout direction as RTL!");
+ Tizen.Log.Debug("NUI", "AnimationFinished removed!");
}
pointLabel.TextColorAnimatable = Color.Red;
pixelLabel.TextColorAnimatable = Color.Red;
Window.Instance.SetClass($"Window.SetClass() Test #{win_test++}", "");
- NUILog.Debug($"Check with enlightenment_info -topwins ! Window.SetClass() Test #{win_test}");
+ Tizen.Log.Debug("NUI", $"Check with enlightenment_info -topwins ! Window.SetClass() Test #{win_test}");
}
else if (e.Key.KeyPressedName == "Return")
{
_animation.Play();
- NUILog.Debug("_animation play here!");
- NUILog.Error(view1.Name + " = " + view1.LayoutDirection + "(changed by up/down key)");
- NUILog.Error(view11.Name + " = " + view11.LayoutDirection + "(should same as view 1)");
- NUILog.Error(view12.Name + " = " + view12.LayoutDirection + "(should be LTR)");
- NUILog.Error(view111.Name + " = " + view111.LayoutDirection + "(should same as view 11)");
- NUILog.Error(view121.Name + " = " + view121.LayoutDirection + "(should same as view 12)");
+ Tizen.Log.Debug("NUI", "_animation play here!");
}
}
}
private TextEditor myTextEditor2;
public void TextLabelLineWrapModeTest()
{
- NUILog.Debug("WrapModeTest START!");
+ Tizen.Log.Debug("NUI", "WrapModeTest START!");
myTextLabel = new TextLabel();
myTextLabel.Position2D = new Position2D(10, 600);
myTextLabel.Size2D = new Size2D(400, 90);
myTextLabel2.Text = $"[TextLabel LineWrapMode.Word] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
Window.Instance.GetDefaultLayer().Add(myTextLabel2);
- NUILog.Debug($"TextLabel LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
+ Tizen.Log.Debug("NUI", $"TextLabel LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
myTextEditor = new TextEditor();
myTextEditor.Position2D = new Position2D(10, 700);
myTextEditor2.Text = $"[TextEditor LineWrapMode.Word] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
Window.Instance.GetDefaultLayer().Add(myTextEditor2);
- NUILog.Debug($"TextEditor LineWrapMode 1st={ myTextEditor?.LineWrapMode} 2nd={ myTextEditor2?.LineWrapMode}");
+ Tizen.Log.Debug("NUI", $"TextEditor LineWrapMode 1st={ myTextEditor?.LineWrapMode} 2nd={ myTextEditor2?.LineWrapMode}");
}
[STAThread]
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<manifest package="NUISamples" version="1.0.0" api-version="4" xmlns="http://tizen.org/ns/packages">\r
+ <profile name="common" />\r
+ <ui-application appid="org.tizen.example.NUISamples" exec="NUISamples.dll" multiple="false" nodisplay="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">\r
+ <label>NUISamples</label>\r
+ <icon>NUISamples.png</icon>\r
+ </ui-application>\r
+ <shortcut-list />\r
+ <privileges>\r
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>\r
+ <privilege>http://tizen.org/privilege/widget.viewer</privilege>\r
+ </privileges>\r
+</manifest>\r