[NUI] add laundry pageview sample
authorEverLEEst(SangHyeon Lee) <sh10233.lee@samsung.com>
Mon, 5 Sep 2022 08:45:46 +0000 (17:45 +0900)
committerJaehyun Cho <jaehyun0cho@gmail.com>
Tue, 6 Sep 2022 09:10:32 +0000 (18:10 +0900)
23 files changed:
test/PerformanceTest/.pic/NugetConfig.png [new file with mode: 0755]
test/PerformanceTest/.pic/csproj-file.png [new file with mode: 0644]
test/PerformanceTest/.pic/launch.png [new file with mode: 0644]
test/PerformanceTest/.pic/run.png [new file with mode: 0755]
test/PerformanceTest/.vscode/launch.json [new file with mode: 0644]
test/PerformanceTest/.vscode/tasks.json [new file with mode: 0644]
test/PerformanceTest/PerformanceTest.code-workspace [new file with mode: 0644]
test/PerformanceTest/PerformanceTest.cs [new file with mode: 0644]
test/PerformanceTest/PerformanceTest.csproj [new file with mode: 0755]
test/PerformanceTest/README.md [new file with mode: 0755]
test/PerformanceTest/res/cleaning.png [new file with mode: 0644]
test/PerformanceTest/res/dry.png [new file with mode: 0644]
test/PerformanceTest/res/hand_wash.png [new file with mode: 0644]
test/PerformanceTest/res/laundry.png [new file with mode: 0644]
test/PerformanceTest/res/nosquize.png [new file with mode: 0644]
test/PerformanceTest/res/pause.png [new file with mode: 0644]
test/PerformanceTest/res/play.png [new file with mode: 0644]
test/PerformanceTest/res/temp.png [new file with mode: 0644]
test/PerformanceTest/res/temp_30.png [new file with mode: 0644]
test/PerformanceTest/res/temp_40.png [new file with mode: 0644]
test/PerformanceTest/res/temp_60.png [new file with mode: 0644]
test/PerformanceTest/shared/res/PerformanceTest.png [new file with mode: 0644]
test/PerformanceTest/tizen-manifest.xml [new file with mode: 0644]

diff --git a/test/PerformanceTest/.pic/NugetConfig.png b/test/PerformanceTest/.pic/NugetConfig.png
new file mode 100755 (executable)
index 0000000..c1bdea5
Binary files /dev/null and b/test/PerformanceTest/.pic/NugetConfig.png differ
diff --git a/test/PerformanceTest/.pic/csproj-file.png b/test/PerformanceTest/.pic/csproj-file.png
new file mode 100644 (file)
index 0000000..45ff6dd
Binary files /dev/null and b/test/PerformanceTest/.pic/csproj-file.png differ
diff --git a/test/PerformanceTest/.pic/launch.png b/test/PerformanceTest/.pic/launch.png
new file mode 100644 (file)
index 0000000..6606757
Binary files /dev/null and b/test/PerformanceTest/.pic/launch.png differ
diff --git a/test/PerformanceTest/.pic/run.png b/test/PerformanceTest/.pic/run.png
new file mode 100755 (executable)
index 0000000..e1f7efa
Binary files /dev/null and b/test/PerformanceTest/.pic/run.png differ
diff --git a/test/PerformanceTest/.vscode/launch.json b/test/PerformanceTest/.vscode/launch.json
new file mode 100644 (file)
index 0000000..9878e66
--- /dev/null
@@ -0,0 +1,34 @@
+{
+    // Use IntelliSense to learn about possible attributes.
+    // Hover to view descriptions of existing attributes.
+    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": ".NET Core Launch (console)",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build",
+            "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/PerformanceTest.dll",
+            "args": [],
+            "env": {
+                "DESKTOP_PREFIX":"${env:HOME}/dali-env/opt",
+                "PATH":"${env:HOME}/dali-env/opt/bin:$PATH",
+                "LD_LIBRARY_PATH":"${env:HOME}/dali-env/opt/lib:$LD_LIBRARY_PATH",
+                "INCLUDEDIR":"${env:HOME}/dali-env/opt/include",
+                "PKG_CONFIG_PATH":"${env:HOME}/dali-env/opt/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig",
+                "DOTNET_CLI_TELEMETRY_OPTOUT":"1",
+                "DALI_WINDOW_WIDTH":"1080",
+                "DALI_WINDOW_HEIGHT":"720",
+            },
+            "cwd": "${workspaceFolder}",
+            "console": "internalConsole",
+            "stopAtEntry": false
+        },
+        {
+            "name": ".NET Core Attach",
+            "type": "coreclr",
+            "request": "attach"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/PerformanceTest/.vscode/tasks.json b/test/PerformanceTest/.vscode/tasks.json
new file mode 100644 (file)
index 0000000..31c32bd
--- /dev/null
@@ -0,0 +1,24 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "build",
+            "command": "dotnet",
+            "type": "shell",
+            "args": [
+                "build",
+                // Ask dotnet build to generate full paths for file names.
+                "/property:GenerateFullPaths=true",
+                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
+                "/consoleloggerparameters:NoSummary"
+            ],
+            "group": "build",
+            "presentation": {
+                "reveal": "silent"
+            },
+            "problemMatcher": "$msCompile"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/PerformanceTest/PerformanceTest.code-workspace b/test/PerformanceTest/PerformanceTest.code-workspace
new file mode 100644 (file)
index 0000000..2ff051f
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "folders": [
+               {
+                       "path": "."
+               },
+               {
+                       "path": "../../src/Tizen.NUI"
+               },
+               {
+                       "path": "../../src/Tizen.NUI.Components"
+               }
+       ],
+       "settings": {}
+}
\ No newline at end of file
diff --git a/test/PerformanceTest/PerformanceTest.cs b/test/PerformanceTest/PerformanceTest.cs
new file mode 100644 (file)
index 0000000..8af8f2c
--- /dev/null
@@ -0,0 +1,431 @@
+using System.Net.Mime;
+using System.Drawing;
+using System.ComponentModel;
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+using System.Reflection;
+
+namespace PerformanceTest
+{
+    class Program : NUIApplication
+    {
+        private Window window;
+        private Navigator navigator;
+        private ContentPage page;
+        private string path;
+
+        public void OnKeyEvent(object sender, Window.KeyEventArgs e)
+        {
+            // FIXME:: Navigator should provide Back/Escape event processing.
+            if (e.Key.State == Key.StateType.Up)
+            {
+                if (e.Key.KeyPressedName == "Escape" || e.Key.KeyPressedName == "XF86Back" || e.Key.KeyPressedName == "BackSpace")
+                {
+                        navigator?.Pop();
+                        Exit();
+                }
+            }
+        }
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+            SetMainPage();
+
+            //enable FocusManger default algorithm
+            //FocusManager.Instance.EnableDefaultAlgorithm(true);
+        }
+        private void Initialize()
+        {
+            window = GetDefaultWindow();
+            window.Title = "세탁코스";
+            window.KeyEvent += OnKeyEvent;
+            path = Tizen.Applications.Application.Current.DirectoryInfo.Resource;
+        }
+
+        private View GetAILaundryCard()
+        {
+
+            var aiLaundry = new View()
+            {
+                BackgroundColor = new Tizen.NUI.Color(0.4f, 0.4f, 0.4f, 0.5f),
+                CornerRadius = 10,
+                WidthSpecification = 500,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(50, 50, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                    CellPadding = new Size2D(0, 30),
+                }
+            };
+
+            var laundryTitle = new TextLabel()
+            {
+                Text = "AI 맞춤세탁",
+                PointSize = 30,
+            };
+            aiLaundry.Add(laundryTitle);
+
+            var laundryDuration = new TextLabel()
+            {
+                Text = "1시간 20분",
+                PointSize = 20,
+            };
+            aiLaundry.Add(laundryDuration);
+
+            var aiLaundryIconView = new View()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(10, 0),
+                }
+            };
+
+
+            var tempIcon = new ImageView()
+            {
+                ResourceUrl = path + "temp.png",
+                WidthSpecification = 50,
+                HeightSpecification = 50,
+            };
+            aiLaundryIconView.Add(tempIcon);
+
+            var cleaningIcon = new ImageView()
+            {
+                ResourceUrl = path + "cleaning.png",
+                WidthSpecification = 50,
+                HeightSpecification = 50,
+            };
+            aiLaundryIconView.Add(cleaningIcon);
+
+            var dryIcon = new ImageView()
+            {
+                ResourceUrl = path + "dry.png",
+                WidthSpecification = 50,
+                HeightSpecification = 50,
+            };
+            aiLaundryIconView.Add(dryIcon);
+            aiLaundry.Add(aiLaundryIconView);
+
+            return aiLaundry;
+        }
+
+        private View GetStdLaundryCard()
+        {
+
+            var stdLaundry = new View()
+            {
+                BackgroundColor = new Tizen.NUI.Color(0.4f, 0.4f, 0.4f, 0.5f),
+                CornerRadius = 10,
+                WidthSpecification = 250,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(50, 50, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                    CellPadding = new Size2D(0, 30),
+                }
+            };
+
+            var laundryTitle = new TextLabel()
+            {
+                Text = "표준세탁",
+                PointSize = 30,
+            };
+            stdLaundry.Add(laundryTitle);
+
+            var laundryDuration = new TextLabel()
+            {
+                Text = "59분",
+                PointSize = 20,
+            };
+            stdLaundry.Add(laundryDuration);
+
+            return stdLaundry;
+        }
+
+        private View GetPetCareLaundryCard()
+        {
+
+            var petCareLaundry = new View()
+            {
+                BackgroundColor = new Tizen.NUI.Color(0.4f, 0.4f, 0.4f, 0.5f),
+                CornerRadius = 10,
+                WidthSpecification = 250,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(50, 50, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                    CellPadding = new Size2D(0, 30),
+                }
+            };
+
+            var laundryTitle = new TextLabel()
+            {
+                Text = "펫케어세탁",
+                PointSize = 30,
+            };
+            petCareLaundry.Add(laundryTitle);
+
+            var laundryDuration = new TextLabel()
+            {
+                Text = "2시간 30분",
+                PointSize = 20,
+            };
+            petCareLaundry.Add(laundryDuration);
+
+            return petCareLaundry;
+        }
+
+        private View GetLaundryView()
+        {
+            var aiCard = GetAILaundryCard();
+            var stdCard = GetStdLaundryCard();
+            var petCareCard = GetPetCareLaundryCard();
+
+
+            var laundryContent = new View()
+            {
+                WidthSpecification = 1070,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(10, 10, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(20, 0),
+                }
+            };
+            laundryContent.Add(aiCard);
+            laundryContent.Add(stdCard);
+            laundryContent.Add(petCareCard);
+
+            return laundryContent;
+        }
+
+        private View GetDryerCard(string title, string duration, bool start, float progress = 0f)
+        {
+            var dryCard  = new View()
+            {
+                BackgroundColor = new Tizen.NUI.Color(0.4f, 0.4f, 0.4f, 0.5f),
+                CornerRadius = 10,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(10, 10, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(0, 10),
+                }
+            };
+
+            var laundryTitle = new TextLabel()
+            {
+                Text = title,
+                PointSize = 30,
+            };
+            dryCard.Add(laundryTitle);
+
+            var dryDurationPlay  = new View()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.WrapContent,
+                Padding = new Extents(0, 0, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(0, 10),
+                }
+            };
+
+            var laundryDuration = new TextLabel()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                Text = duration,
+                PointSize = 20,
+            };
+            dryDurationPlay.Add(laundryDuration);
+
+            var laundryPauseIcon = new ImageView()
+            {
+                ResourceUrl = path + (start? "pause.png" :"play.png"),
+                WidthSpecification = 50,
+                HeightSpecification = 50,
+            };
+            dryDurationPlay.Add(laundryPauseIcon);
+            dryCard.Add(dryDurationPlay);
+
+            var dryProgress = new Progress()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                MinValue = 0f,
+                MaxValue = 1f,
+                CurrentValue = progress,
+            };
+            dryCard.Add(dryProgress);
+
+            return dryCard;
+        }
+
+        private View GetDryerView()
+        {
+            var stdDryerdard = GetDryerCard("표준 건조", "1시간 20분", true, 0.35f);
+            var aiDryerdard = GetDryerCard("AI 건조", "2시간 00분", false);
+
+            var dryerContent = new View()
+            {
+                WidthSpecification = 1070,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(10, 10, 10, 10),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(0, 20),
+                }
+            };
+            dryerContent.Add(stdDryerdard);
+            dryerContent.Add(aiDryerdard);
+
+            return dryerContent;
+        }
+
+        private void SetMainPage()
+        {
+            var rootView = new View()
+            {
+                BackgroundColor = Tizen.NUI.Color.Black,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(5, 5, 5, 5),
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                    CellPadding = new Size2D(0, 0),
+                }
+            };
+
+            var luandryContent = GetLaundryView();
+            var dryerContent = GetDryerView();
+
+            var contentView = new ScrollableBase()
+            {
+                BackgroundColor = new Tizen.NUI.Color(0.2f,0.2f,0.2f,0.5f),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                Padding = new Extents(5, 5, 5, 5),
+                ScrollingDirection = ScrollableBase.Direction.Horizontal,
+                SnapToPage = true,
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(10, 0),
+                }
+            };
+            contentView.Add(luandryContent);
+            contentView.Add(dryerContent);
+
+            var laundryBtn = new Button()
+            {
+                CornerRadius = 0,
+                Text = "세탁기"
+            };
+
+            laundryBtn.Clicked += (object sender, ClickedEventArgs e) =>
+            {
+                contentView.ScrollToIndex(0);
+            };
+
+            var dryerBtn = new Button()
+            {
+                CornerRadius = 0,
+                Text = "건조기"
+            };
+
+            dryerBtn.Clicked += (object sender, ClickedEventArgs e) =>
+            {
+                contentView.ScrollToIndex(1);
+            };
+
+            var buttonView = new View()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = 80,
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(10, 0),
+                }
+            };
+
+            buttonView.Add(laundryBtn);
+            buttonView.Add(dryerBtn);
+
+            rootView.Add(buttonView);
+            rootView.Add(contentView);
+
+            window.Add(rootView);
+        }
+
+/*
+        private void FullGC()
+        {
+            global::System.GC.Collect();
+            global::System.GC.WaitForPendingFinalizers();
+            global::System.GC.Collect();
+        }
+*/
+        static void Main(string[] args)
+        {
+            var app = new Program();
+            app.Run(args);
+        }
+    }
+}
diff --git a/test/PerformanceTest/PerformanceTest.csproj b/test/PerformanceTest/PerformanceTest.csproj
new file mode 100755 (executable)
index 0000000..c9187b0
--- /dev/null
@@ -0,0 +1,79 @@
+<!-- This is for Ubuntu-Backend build. -->
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <OutputType>Exe</OutputType>
+        <TargetFramework>netcoreapp3.1</TargetFramework>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+        <DebugType>portable</DebugType>
+    </PropertyGroup>
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+        <DebugType>None</DebugType>
+    </PropertyGroup>
+
+  <ItemGroup>
+    <Folder Include="lib\" />
+  </ItemGroup>
+
+    <ItemGroup>
+        <ProjectReference Include="../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
+        <ProjectReference Include="../../src/Tizen.NUI/Tizen.NUI.csproj" />
+        <PackageReference Include="Tizen.NET.Sdk" Version="1.0.9" />
+    </ItemGroup>
+
+</Project>
+
+<!-- This is for TV target build.
+Tested in TIZEN-ONEMAIN-NikeM-RELEASE_20220215.6 image -->
+<!--Project Sdk="Tizen.NET.Sdk/1.1.6">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>portable</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>None</DebugType>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Folder Include="lib\" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Tizen.NET" Version="9.0.0.16837" />
+    <PackageReference Include="Tizen.NET.Sdk" Version="1.0.9" />
+  </ItemGroup>
+
+</Project-->
+
+<!-- This is for tizen emulator build.
+Tested in tizen-unified_20220215.2_mobile-emulator32-wayland image -->
+<!--Project Sdk="Tizen.NET.Sdk/1.1.6">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>portable</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>None</DebugType>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Folder Include="lib\" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Tizen.NET" Version="10.0.0.16980" />
+  </ItemGroup>
+
+</Project!-->
diff --git a/test/PerformanceTest/README.md b/test/PerformanceTest/README.md
new file mode 100755 (executable)
index 0000000..a62c725
--- /dev/null
@@ -0,0 +1,24 @@
+# PerformanceTest project for Ubuntu build and debug
+- **Dali** Ubuntu build and **tizenfx-stub** Ubuntu build should be done(be set up) before running this project.
+- Please check this references first : [NUI Ubuntu guide](https://code.sec.samsung.net/confluence/display/GFX/NUI+running+on+Ubuntu+backend), [DALi Ubuntu guide](https://code.sec.samsung.net/confluence/display/GFX/DALi+Getting+Started+Guide)
+
+### nuget.config
+- Please check the ~/.nuget/NuGet/NuGet.Config file to set nuget package sources.
+- At least, these 2 sources should be included : https://tizen.myget.org/F/dotnet/api/v3/index.json, https://api.nuget.org/v3/index.json
+![](./.pic/NugetConfig.png)
+
+### VS Code related setting
+- Please change the paths shown blow as for your environment.
+- .vscode/launch.json
+![](./.pic/launch.png)
+
+### csproj file
+- Set the target framework installed in your environment.
+- PerformanceTest.csproj
+- Please check .NET version like below. Should be 3.1 version.
+![](./.pic/csproj-file.png)
+
+### Start debugging
+- Open VS Code by the command, **"$ code PerformanceTest.code-workspace"** in /TizenFX/test/PerformanceTest/ folder.
+- Do run and debug by clicking "play button" as shown below
+![](./.pic/run.png)
diff --git a/test/PerformanceTest/res/cleaning.png b/test/PerformanceTest/res/cleaning.png
new file mode 100644 (file)
index 0000000..d5d083b
Binary files /dev/null and b/test/PerformanceTest/res/cleaning.png differ
diff --git a/test/PerformanceTest/res/dry.png b/test/PerformanceTest/res/dry.png
new file mode 100644 (file)
index 0000000..19acdfa
Binary files /dev/null and b/test/PerformanceTest/res/dry.png differ
diff --git a/test/PerformanceTest/res/hand_wash.png b/test/PerformanceTest/res/hand_wash.png
new file mode 100644 (file)
index 0000000..6bc7c5f
Binary files /dev/null and b/test/PerformanceTest/res/hand_wash.png differ
diff --git a/test/PerformanceTest/res/laundry.png b/test/PerformanceTest/res/laundry.png
new file mode 100644 (file)
index 0000000..f52ab26
Binary files /dev/null and b/test/PerformanceTest/res/laundry.png differ
diff --git a/test/PerformanceTest/res/nosquize.png b/test/PerformanceTest/res/nosquize.png
new file mode 100644 (file)
index 0000000..56e737c
Binary files /dev/null and b/test/PerformanceTest/res/nosquize.png differ
diff --git a/test/PerformanceTest/res/pause.png b/test/PerformanceTest/res/pause.png
new file mode 100644 (file)
index 0000000..4a53077
Binary files /dev/null and b/test/PerformanceTest/res/pause.png differ
diff --git a/test/PerformanceTest/res/play.png b/test/PerformanceTest/res/play.png
new file mode 100644 (file)
index 0000000..0ee4c57
Binary files /dev/null and b/test/PerformanceTest/res/play.png differ
diff --git a/test/PerformanceTest/res/temp.png b/test/PerformanceTest/res/temp.png
new file mode 100644 (file)
index 0000000..2029304
Binary files /dev/null and b/test/PerformanceTest/res/temp.png differ
diff --git a/test/PerformanceTest/res/temp_30.png b/test/PerformanceTest/res/temp_30.png
new file mode 100644 (file)
index 0000000..c8a0019
Binary files /dev/null and b/test/PerformanceTest/res/temp_30.png differ
diff --git a/test/PerformanceTest/res/temp_40.png b/test/PerformanceTest/res/temp_40.png
new file mode 100644 (file)
index 0000000..9a3b602
Binary files /dev/null and b/test/PerformanceTest/res/temp_40.png differ
diff --git a/test/PerformanceTest/res/temp_60.png b/test/PerformanceTest/res/temp_60.png
new file mode 100644 (file)
index 0000000..9ebf641
Binary files /dev/null and b/test/PerformanceTest/res/temp_60.png differ
diff --git a/test/PerformanceTest/shared/res/PerformanceTest.png b/test/PerformanceTest/shared/res/PerformanceTest.png
new file mode 100644 (file)
index 0000000..9f3cb98
Binary files /dev/null and b/test/PerformanceTest/shared/res/PerformanceTest.png differ
diff --git a/test/PerformanceTest/tizen-manifest.xml b/test/PerformanceTest/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..f9efe26
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="6.5" package="org.tizen.example.PerformanceTest" version="1.0.0">
+  <profile name="common" />
+  <ui-application appid="org.tizen.example.PerformanceTest"
+                                       exec="PerformanceTest.dll"
+                                       type="dotnet-nui"
+                                       multiple="false"
+                                       taskmanage="true"
+                                       nodisplay="false"
+                                       launch_mode="single"
+          >
+    <label>PerformanceTest</label>
+    <icon>PerformanceTest.png</icon>
+    <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
+  </ui-application>
+  <privileges>
+    <privilege>http://tizen.org/privilege/internet</privilege>
+  </privileges>
+</manifest>