summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpius.lee <pius.lee@samsung.com>2017-07-27 16:21:48 +0900
committerHyunjin <hj.na.park@samsung.com>2017-07-28 11:03:01 +0900
commitaa9cabe3cb5378bb21e8d4561355fa12e931c15f (patch)
tree52669262790f00c5be48765e1e7f9783dc537555
parent69ef9b1c784c433b70ed71ca36d10126f9c60478 (diff)
downloadelm-sharp-wearable.tar.gz
elm-sharp-wearable.tar.bz2
elm-sharp-wearable.zip
Add Wearable project and widgets for Wearablewearable
Add CircleDatetimeSelector Add CircleGenList Add CircleScroller Add CircleSlider Add CircleProgressBar Add CircleSpinner Add MoreOption Add RotarySelector And Interops for wearable widget native functions. Change-Id: I2eeba407c5ef3ad23f9ab0501ad5cab3074b36ed
-rw-r--r--ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.csproj151
-rw-r--r--ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.project.json13
-rw-r--r--ElmSharp.Wearable.Test/Properties/AssemblyInfo.cs36
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest1.cs65
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest2.cs64
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest3.cs65
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest4.cs67
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleGenListTest1.cs61
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleGenListTest2.cs70
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleGenListTest3.cs65
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleGenListTest4.cs58
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleProgressBarTest1.cs71
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleProgressBarTest2.cs75
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleProgressBarTest3.cs89
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleProgressBarTest4.cs84
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleScrollerTest1.cs75
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleScrollerTest2.cs81
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleScrollerTest3.cs85
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleScrollerTest4.cs79
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleSliderTest1.cs62
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleSliderTest2.cs84
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleSpinnerTest1.cs71
-rw-r--r--ElmSharp.Wearable.Test/TC/CircleSpinnerTest2.cs68
-rw-r--r--ElmSharp.Wearable.Test/TC/Log.cs60
-rw-r--r--ElmSharp.Wearable.Test/TC/MoreOptionTest.cs91
-rw-r--r--ElmSharp.Wearable.Test/TC/RotarySelectorTest.cs98
-rw-r--r--ElmSharp.Wearable.Test/TestCaseBase.cs28
-rw-r--r--ElmSharp.Wearable.Test/TestRunner.cs217
-rw-r--r--ElmSharp.Wearable.Test/res/icons/bg_black.pngbin0 -> 257 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/bg_red.pngbin0 -> 256 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/bg_white.pngbin0 -> 255 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_aquamarine_260_me.pngbin0 -> 13487 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_auamarine_260_me.pngbin0 -> 12983 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_azure_215_me.pngbin0 -> 13682 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_beige_330_me.pngbin0 -> 13286 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_blue_45_me.pngbin0 -> 12432 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_brown_90_me.pngbin0 -> 12983 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_cyan_230_me.pngbin0 -> 12987 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_firebrick_95_me.pngbin0 -> 13306 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_gold_75_me.pngbin0 -> 13345 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_green_60_me.pngbin0 -> 13009 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_honeydew_285_me.pngbin0 -> 13761 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_ivory_315_me.pngbin0 -> 12533 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_khaki_360_me.pngbin0 -> 13107 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_lime_300_me.pngbin0 -> 13475 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_maroon_120_me.pngbin0 -> 13606 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_me.pngbin0 -> 13531 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_orchid_160_me.pngbin0 -> 13346 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_pink_145_me.pngbin0 -> 13176 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_purple_200_me.pngbin0 -> 13697 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_red_30_me.pngbin0 -> 13531 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_snow_75_me.pngbin0 -> 13414 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_snow_80_me.pngbin0 -> 13415 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_teal_245_me.pngbin0 -> 13267 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_violet_180_me.pngbin0 -> 13203 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/icon_yellow_345_me.pngbin0 -> 12995 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/make_icon.sh39
-rw-r--r--ElmSharp.Wearable.Test/res/icons/me.pngbin0 -> 261920 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/me_circle.pngbin0 -> 13000 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/me_small.pngbin0 -> 12578 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/pressed.pngbin0 -> 484 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_bg_green.pngbin0 -> 3699 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_bg_white.pngbin0 -> 3609 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_bg_yellow.pngbin0 -> 3689 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_content_black.pngbin0 -> 3269 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_content_blue.pngbin0 -> 3271 bytes
-rw-r--r--ElmSharp.Wearable.Test/res/icons/round_content_red.pngbin0 -> 3272 bytes
-rw-r--r--ElmSharp.Wearable.Test/shared/res/ElmSharp.Wearable.Test.pngbin0 -> 57662 bytes
-rw-r--r--ElmSharp.Wearable.Test/tizen-manifest.xml13
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable.csproj8
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleDatetimeSelector.cs134
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleGenList.cs204
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleProgressBar.cs338
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleScroller.cs328
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleSlider.cs375
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/CircleSpinner.cs153
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/MoreOption.cs89
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItem.cs95
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItemEventArgs.cs10
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionList.cs121
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/PointerEventArgs.cs11
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/RotarySelector.cs95
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItem.cs163
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItemEventArgs.cs11
-rw-r--r--ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorList.cs96
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleDatetime.cs27
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleGenList.cs40
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleObject.cs141
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleProgressBar.cs28
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleScroller.cs39
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleSlider.cs33
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleSpinner.cs31
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.CircleSurface.cs37
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.MoreOption.cs65
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.Rotary.cs28
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Eext.RotarySelector.cs51
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Evas.cs28
-rw-r--r--ElmSharp.Wearable/Interop/Interop.Libraries.cs25
98 files changed, 4989 insertions, 0 deletions
diff --git a/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.csproj b/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.csproj
new file mode 100644
index 0000000..419f133
--- /dev/null
+++ b/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.csproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectTypeGuids>{2F98DAC9-6F16-457B-AED7-D43CAC379341};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <ProjectGuid>{C6E111B7-21E2-4CD6-93BF-2CD5ED255749}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>ElmSharp.Wearable.Test</RootNamespace>
+ <AssemblyName>ElmSharp.Wearable.Test</AssemblyName>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup>
+ <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
+ <NuGetTargetMoniker>.NETCoreApp,Version=v1.0</NuGetTargetMoniker>
+ <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+ <NoStdLib>true</NoStdLib>
+ <NoWarn>$(NoWarn);1701;1702</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TC\CircleDateTimeSelectorTest1.cs" />
+ <Compile Include="TC\CircleDateTimeSelectorTest2.cs" />
+ <Compile Include="TC\CircleDateTimeSelectorTest3.cs" />
+ <Compile Include="TC\CircleDateTimeSelectorTest4.cs" />
+ <Compile Include="TC\CircleGenListTest1.cs" />
+ <Compile Include="TC\CircleGenListTest2.cs" />
+ <Compile Include="TC\CircleGenListTest3.cs" />
+ <Compile Include="TC\CircleGenListTest4.cs" />
+ <Compile Include="TC\CircleScrollerTest1.cs" />
+ <Compile Include="TC\CircleScrollerTest2.cs" />
+ <Compile Include="TC\CircleScrollerTest3.cs" />
+ <Compile Include="TC\CircleScrollerTest4.cs" />
+ <Compile Include="TC\CircleSliderTest1.cs" />
+ <Compile Include="TC\CircleSliderTest2.cs" />
+ <Compile Include="TC\CircleProgressBarTest1.cs" />
+ <Compile Include="TC\CircleProgressBarTest2.cs" />
+ <Compile Include="TC\CircleProgressBarTest3.cs" />
+ <Compile Include="TC\CircleProgressBarTest4.cs" />
+ <Compile Include="TC\CircleSpinnerTest1.cs" />
+ <Compile Include="TC\CircleSpinnerTest2.cs" />
+ <Compile Include="TC\Log.cs" />
+ <Compile Include="TC\MoreOptionTest.cs" />
+ <Compile Include="TC\RotarySelectorTest.cs" />
+ <Compile Include="TestCaseBase.cs" />
+ <Compile Include="TestRunner.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ElmSharp.Wearable.Test.project.json" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="res\icons\bg_black.png" />
+ <Content Include="res\icons\bg_red.png" />
+ <Content Include="res\icons\bg_white.png" />
+ <Content Include="res\icons\icon_aquamarine_260_me.png" />
+ <Content Include="res\icons\icon_auamarine_260_me.png" />
+ <Content Include="res\icons\icon_azure_215_me.png" />
+ <Content Include="res\icons\icon_beige_330_me.png" />
+ <Content Include="res\icons\icon_blue_45_me.png" />
+ <Content Include="res\icons\icon_brown_90_me.png" />
+ <Content Include="res\icons\icon_cyan_230_me.png" />
+ <Content Include="res\icons\icon_firebrick_95_me.png" />
+ <Content Include="res\icons\icon_gold_75_me.png" />
+ <Content Include="res\icons\icon_green_60_me.png" />
+ <Content Include="res\icons\icon_honeydew_285_me.png" />
+ <Content Include="res\icons\icon_ivory_315_me.png" />
+ <Content Include="res\icons\icon_khaki_360_me.png" />
+ <Content Include="res\icons\icon_lime_300_me.png" />
+ <Content Include="res\icons\icon_maroon_120_me.png" />
+ <Content Include="res\icons\icon_me.png" />
+ <Content Include="res\icons\icon_orchid_160_me.png" />
+ <Content Include="res\icons\icon_pink_145_me.png" />
+ <Content Include="res\icons\icon_purple_200_me.png" />
+ <Content Include="res\icons\icon_red_30_me.png" />
+ <Content Include="res\icons\icon_snow_75_me.png" />
+ <Content Include="res\icons\icon_snow_80_me.png" />
+ <Content Include="res\icons\icon_teal_245_me.png" />
+ <Content Include="res\icons\icon_violet_180_me.png" />
+ <Content Include="res\icons\icon_yellow_345_me.png" />
+ <Content Include="res\icons\pressed.png" />
+ <Content Include="res\icons\round_bg_green.png" />
+ <Content Include="res\icons\round_bg_white.png" />
+ <Content Include="res\icons\round_bg_yellow.png" />
+ <Content Include="res\icons\round_content_black.png" />
+ <Content Include="res\icons\round_content_blue.png" />
+ <Content Include="res\icons\round_content_red.png" />
+ <Content Include="shared\res\ElmSharp.Test.png" />
+ <Content Include="tizen-manifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\ElmSharp.Wearable\ElmSharp.Wearable.csproj">
+ <Project>{9a1c45ac-93e3-4b09-b896-769df60cf1b2}</Project>
+ <Name>ElmSharp.Wearable</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\ElmSharp\ElmSharp.csproj">
+ <Project>{d00c29dd-4b2e-41c0-a323-bad1a74c69bf}</Project>
+ <Name>ElmSharp</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+ <PropertyGroup>
+ <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and
+ https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild
+ -->
+ <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
+ properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
+ to prevent it from outputting a warning (MSB3644).
+ -->
+ <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>
+ <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>
+ <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Debug|Any CPU">
+ <ProjectCommonFlavorCfg />
+ </FlavorProperties>
+ <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Release|Any CPU">
+ <ProjectCommonFlavorCfg />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project> \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.project.json b/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.project.json
new file mode 100644
index 0000000..4bd5e6c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/ElmSharp.Wearable.Test.project.json
@@ -0,0 +1,13 @@
+{
+ "dependencies": {
+ "Microsoft.NETCore.App": "1.0.0",
+ "Tizen.Applications.Common": "1.5.8",
+ "Tizen.Applications.UI": "1.5.8"
+ },
+ "frameworks": {
+ "netcoreapp1.0": {}
+ },
+ "runtimes": {
+ "win": {}
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/Properties/AssemblyInfo.cs b/ElmSharp.Wearable.Test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c419e2d
--- /dev/null
+++ b/ElmSharp.Wearable.Test/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ElmSharp.Wearable.Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("ElmSharp.Wearable.Test")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2e1a161a-baa9-40ef-a8b4-082ce7c813b8")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest1.cs b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest1.cs
new file mode 100644
index 0000000..4318a75
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest1.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleDateTimeSelectorTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleDateTimeSelectorTest1";
+ public override string TestDescription => "To display a date time selector with circle UI";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+
+ layout.SetTheme("layout", "circle", "datetime");
+
+ conformant.SetContent(layout);
+
+ DateTimeSelector datetime = new CircleDateTimeSelector(conformant)
+ {
+ MinimumDateTime = new DateTime(2015, 1, 1),
+ MaximumDateTime = DateTime.Now,
+ DateTime = DateTime.Now
+ };
+
+ layout.SetContent(datetime);
+
+ Button btn = new Button(layout)
+ {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+
+ layout.SetPartText("elm.text", "Set date");
+
+ datetime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
+ {
+ Log.Debug(TestName, "Old DateTime={0}", e.OldDate.ToString());
+ Log.Debug(TestName, "New DateTime={0}", e.NewDate.ToString());
+ Log.Debug(TestName, "Current DateTime={0}", datetime.DateTime.ToString());
+ };
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest2.cs b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest2.cs
new file mode 100644
index 0000000..6e3bdf0
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest2.cs
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleDateTimeSelectorTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleDateTimeSelectorTest2";
+ public override string TestDescription => "To display a date time selector with circle UI";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+
+ layout.SetTheme("layout", "circle", "datetime");
+
+ conformant.SetContent(layout);
+
+ DateTimeSelector datetime = new CircleDateTimeSelector(conformant)
+ {
+ DateTime = DateTime.Now,
+ Style = "timepicker/circle"
+ };
+
+ layout.SetContent(datetime);
+
+ Button btn = new Button(layout)
+ {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+
+ layout.SetPartText("elm.text", "Set time");
+
+ datetime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
+ {
+ Log.Debug(TestName, "Old DateTime={0}", e.OldDate.ToString());
+ Log.Debug(TestName, "New DateTime={0}", e.NewDate.ToString());
+ Log.Debug(TestName, "Current DateTime={0}", datetime.DateTime.ToString());
+ };
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest3.cs b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest3.cs
new file mode 100644
index 0000000..8ac1907
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest3.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleDateTimeSelectorTest3 : TestCaseBase
+ {
+ public override string TestName => "CircleDateTimeSelectorTest3";
+ public override string TestDescription => "To display a date time selector with circle UI";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+
+ layout.SetTheme("layout", "circle", "datetime");
+
+ conformant.SetContent(layout);
+
+ DateTimeSelector datetime = new CircleDateTimeSelector(conformant)
+ {
+ DateTime = DateTime.Now,
+ Style = "timepicker/circle",
+ Disabled = true
+ };
+
+ layout.SetContent(datetime);
+
+ Button btn = new Button(layout)
+ {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+
+ layout.SetPartText("elm.text", "Set time");
+
+ datetime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
+ {
+ Log.Debug(TestName, "Old DateTime={0}", e.OldDate.ToString());
+ Log.Debug(TestName, "New DateTime={0}", e.NewDate.ToString());
+ Log.Debug(TestName, "Current DateTime={0}", datetime.DateTime.ToString());
+ };
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest4.cs b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest4.cs
new file mode 100644
index 0000000..3a93ab5
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleDateTimeSelectorTest4.cs
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleDateTimeSelectorTest4 : TestCaseBase
+ {
+ public override string TestName => "CircleDateTimeSelectorTest4";
+ public override string TestDescription => "To display a date time selector with circle UI";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+
+ layout.SetTheme("layout", "circle", "datetime");
+
+ conformant.SetContent(layout);
+
+ DateTimeSelector datetime = new CircleDateTimeSelector(conformant)
+ {
+ DateTime = DateTime.Now,
+ Style = "timepicker/circle",
+ MarkerLineWidth = 40,
+ MarkerColor = Color.Pink,
+ MarkerRadius = 100,
+ };
+
+ layout.SetContent(datetime);
+
+ Button btn = new Button(layout)
+ {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+
+ layout.SetPartText("elm.text", "Set time");
+
+ datetime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
+ {
+ Log.Debug(TestName, "Old DateTime={0}", e.OldDate.ToString());
+ Log.Debug(TestName, "New DateTime={0}", e.NewDate.ToString());
+ Log.Debug(TestName,"Current DateTime={0}", datetime.DateTime.ToString());
+ };
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable.Test/TC/CircleGenListTest1.cs b/ElmSharp.Wearable.Test/TC/CircleGenListTest1.cs
new file mode 100644
index 0000000..03de32b
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleGenListTest1.cs
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleGenListTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleGenListTest1";
+ public override string TestDescription => "To display a genlist applied a circle UI on a conformant";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ var list = new CircleGenList(conformant)
+ {
+ Homogeneous = true,
+ VerticalScrollBarColor = Color.Red,
+ VerticalScrollBackgroundColor = Color.Pink,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Visible,
+ };
+
+ conformant.SetContent(list);
+
+ GenItemClass defaultClass = new GenItemClass("default")
+ {
+ GetTextHandler = (obj, part) =>
+ {
+ return string.Format("{0} - {1}",(string)obj, part);
+ }
+ };
+
+ for (int i = 0; i < 100; i++)
+ {
+ list.Append(defaultClass, string.Format("{0} Item", i));
+ }
+ list.ItemSelected += List_ItemSelected; ;
+ }
+
+ private void List_ItemSelected(object sender, GenListItemEventArgs e)
+ {
+ Log.Debug(TestName, "{0} Item was selected", (string)(e.Item.Data));
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleGenListTest2.cs b/ElmSharp.Wearable.Test/TC/CircleGenListTest2.cs
new file mode 100644
index 0000000..ff1e9fd
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleGenListTest2.cs
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleGenListTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleGenListTest2";
+ public override string TestDescription => "To display a genlist applied a circle UI on a layout";
+
+ public override void Run(Window window)
+ {
+ var layout = new Layout(window);
+ layout.Show();
+
+ layout.Move(0, 0);
+ layout.Resize(360, 360);
+
+ var list = new CircleGenList(layout)
+ {
+ Homogeneous = true,
+ VerticalScrollBackgroundRadius = 165,
+ VerticalScrollBarRadius = 165,
+ VerticalScrollBackgroundLineWidth = 30,
+ VerticalScrollBarLineWidth = 30,
+ };
+ list.Show();
+
+ list.Move(0, 0);
+ list.Resize(360, 360);
+ list.Lower();
+
+
+ GenItemClass defaultClass = new GenItemClass("default")
+ {
+ GetTextHandler = (obj, part) =>
+ {
+ return string.Format("{0} - {1}",(string)obj, part);
+ }
+ };
+
+ for (int i = 0; i < 100; i++)
+ {
+ list.Append(defaultClass, string.Format("{0} Item", i));
+ }
+ list.ItemSelected += List_ItemSelected; ;
+ }
+
+ private void List_ItemSelected(object sender, GenListItemEventArgs e)
+ {
+ Log.Debug(TestName, "{0} Item was selected", (string)(e.Item.Data));
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleGenListTest3.cs b/ElmSharp.Wearable.Test/TC/CircleGenListTest3.cs
new file mode 100644
index 0000000..6dc5f53
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleGenListTest3.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleGenListTest3 : TestCaseBase
+ {
+ public override string TestName => "CircleGenListTest3";
+ public override string TestDescription => "To display a genlist applied a circle UI on a naviframe";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ var naviframe = new Naviframe(conformant);
+
+ conformant.SetContent(naviframe);
+
+ var list = new CircleGenList(naviframe)
+ {
+ Homogeneous = true,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Auto,
+ Disabled = true,
+ };
+
+ var item = naviframe.Push(list);
+ item.Style = "empty";
+
+ GenItemClass defaultClass = new GenItemClass("default")
+ {
+ GetTextHandler = (obj, part) =>
+ {
+ return string.Format("{0} - {1}",(string)obj, part);
+ }
+ };
+
+ for (int i = 0; i < 100; i++)
+ {
+ list.Append(defaultClass, string.Format("{0} Item", i));
+ }
+ list.ItemSelected += List_ItemSelected; ;
+ }
+
+ private void List_ItemSelected(object sender, GenListItemEventArgs e)
+ {
+ Log.Debug(TestName, "{0} Item was selected", (string)(e.Item.Data));
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleGenListTest4.cs b/ElmSharp.Wearable.Test/TC/CircleGenListTest4.cs
new file mode 100644
index 0000000..d5190ab
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleGenListTest4.cs
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleGenListTest4 : TestCaseBase
+ {
+ public override string TestName => "CircleGenListTest4";
+ public override string TestDescription => "To display a genlist applied a circle UI on an window";
+
+ public override void Run(Window window)
+ {
+ var list = new CircleGenList(window)
+ {
+ Homogeneous = true,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
+ };
+ list.Show();
+
+ list.Move(0, 0);
+ list.Resize(360, 360);
+
+ GenItemClass defaultClass = new GenItemClass("default")
+ {
+ GetTextHandler = (obj, part) =>
+ {
+ return string.Format("{0} - {1}",(string)obj, part);
+ }
+ };
+
+ for (int i = 0; i < 100; i++)
+ {
+ list.Append(defaultClass, string.Format("{0} Item", i));
+ }
+ list.ItemSelected += List_ItemSelected; ;
+ }
+
+ private void List_ItemSelected(object sender, GenListItemEventArgs e)
+ {
+ Log.Debug(TestName, "{0} Item was selected", (string)(e.Item.Data));
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleProgressBarTest1.cs b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest1.cs
new file mode 100644
index 0000000..a0bc3cb
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest1.cs
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleProgressBarTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleProgressBarTest1";
+ public override string TestDescription => "To test basic operation of CircleProgressBar";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleProgressBar run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ CircleProgressBar pb1 = new CircleProgressBar(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+
+ // default
+ Value = 20,
+ Maximum = 100,
+ Minimum = 0,
+ BarRadius = 80,
+ BarLineWidth = 6,
+
+ // background
+ BackgroundRadius = 80,
+ BackgroundLineWidth = 6,
+ };
+ pb1.Show();
+ conformant.SetContent(pb1);
+ Label lb1 = new Label(window)
+ {
+ Text = string.Format("{0} %", pb1.Value),
+ };
+
+ lb1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ lb1.Move(170, window.ScreenSize.Height / 2 - 20);
+ lb1.Show();
+
+ EcoreMainloop.AddTimer(0.05, () =>
+ {
+ pb1.Value += 1;
+ lb1.Text = string.Format("{0} %", pb1.Value);
+
+ return true;
+ });
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleProgressBarTest2.cs b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest2.cs
new file mode 100644
index 0000000..d41034d
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest2.cs
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleProgressBarTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleProgressBarTest2";
+ public override string TestDescription => "To test property related with background of CircleProgressBar";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleProgressBar run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ CircleProgressBar pb1 = new CircleProgressBar(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+
+ // bar
+ Value = 20,
+ Maximum = 100,
+ Minimum = 0,
+ BarRadius = 100,
+ BarLineWidth = 10,
+ BarColor = Color.Green,
+
+ // Test purpose : to test property related with background
+
+ // background
+ BackgroundRadius = 110,
+ BackgroundLineWidth = 10,
+ BackgroundColor = Color.Aqua
+ };
+ pb1.Show();
+ conformant.SetContent(pb1);
+ Label lb1 = new Label(window)
+ {
+ Text = string.Format("S {0} %", pb1.Value),
+ };
+
+ lb1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ lb1.Move(160, window.ScreenSize.Height / 2 - 20);
+ lb1.Show();
+
+ EcoreMainloop.AddTimer(0.05, () =>
+ {
+ pb1.Value += 1;
+ lb1.Text = string.Format("S {0} %", pb1.Value);
+
+ return true;
+ });
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleProgressBarTest3.cs b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest3.cs
new file mode 100644
index 0000000..66a2ba6
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest3.cs
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleProgressBarTest3 : TestCaseBase
+ {
+ public override string TestName => "CircleProgressBarTest3";
+ public override string TestDescription => "To test property related with angle of CircleProgressBar";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleProgressBar run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ CircleProgressBar pb1 = new CircleProgressBar(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+
+ // Test purpose : to test property related with angle
+
+ // bar
+ Maximum = 100,
+ BarRadius = 100,
+ BarLineWidth = 20,
+ BarColor = Color.Green,
+ BarAngleOffset = 90,
+ BarAngle = 90,
+ BarAngleMaximum = 180,
+
+ // background
+ BackgroundRadius = 100,
+ BackgroundLineWidth = 20,
+ BackgroundColor = Color.Aqua,
+ BackgroundAngleOffset = 90,
+ BackgroundAngle = 180,
+ };
+ pb1.Show();
+ conformant.SetContent(pb1);
+ Label lb1 = new Label(window)
+ {
+ Text = string.Format("V {0} %", pb1.Value),
+ };
+
+ lb1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ lb1.Move(160, window.ScreenSize.Height / 2 - 40);
+ lb1.Show();
+
+ Label lb2 = new Label(window)
+ {
+ Text = string.Format("A {0} ", pb1.BarAngle),
+ };
+
+ lb2.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ lb2.Move(160, window.ScreenSize.Height / 2);
+ lb2.Show();
+
+ EcoreMainloop.AddTimer(0.5, () =>
+ {
+ pb1.Value += 1;
+
+ lb1.Text = string.Format("V {0} %", pb1.Value);
+ lb2.Text = string.Format("A {0} ", pb1.BarAngle);
+
+ return true;
+ });
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleProgressBarTest4.cs b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest4.cs
new file mode 100644
index 0000000..9ff9d48
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleProgressBarTest4.cs
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleProgressBarTest4 : TestCaseBase
+ {
+ public override string TestName => "CircleProgressBarTest4";
+ public override string TestDescription => "To test Disabled property of CircleProgressBar";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleProgressBar run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ CircleProgressBar pb1 = new CircleProgressBar(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+
+ // bar
+ Value = 0,
+ Maximum = 100,
+ Minimum = 0,
+ BarRadius = 100,
+ BarLineWidth = 15,
+ BarColor = Color.Green,
+
+ // background
+ BackgroundRadius = 100,
+ BackgroundLineWidth = 15,
+ BackgroundColor = Color.Aqua,
+ };
+ pb1.Show();
+ conformant.SetContent(pb1);
+ Label lb1 = new Label(window)
+ {
+ Text = string.Format("S {0} %", pb1.Value),
+ };
+
+ lb1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ lb1.Move(160, window.ScreenSize.Height / 2 - 40);
+ lb1.Show();
+
+ EcoreMainloop.AddTimer(0.05, () =>
+ {
+ if (pb1.Value == pb1.Maximum/2)
+ {
+ // Test purpose : set disable
+ pb1.Disabled = true;
+ }
+
+ if (pb1.Value == pb1.Maximum)
+ {
+ EcoreMainloop.RemoveTimer(pb1);
+ }
+
+ pb1.Value += 1;
+ lb1.Text = string.Format("S {0} %", pb1.Value);
+
+ return true;
+ });
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleScrollerTest1.cs b/ElmSharp.Wearable.Test/TC/CircleScrollerTest1.cs
new file mode 100644
index 0000000..21d7a33
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleScrollerTest1.cs
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleScrollerTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleScrollerTest1";
+ public override string TestDescription => "To test basic operation of CircleScroller";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ CircleScroller circleScroller = new CircleScroller(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Auto,
+ HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
+ };
+ circleScroller.Show();
+ conformant.SetContent(circleScroller);
+ Box box = new Box(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1
+ };
+ box.Show();
+ circleScroller.SetContent(box);
+
+ var rnd = new Random();
+ for (int i = 0; i < 10; i++)
+ {
+ int r = rnd.Next(255);
+ int g = rnd.Next(255);
+ int b = rnd.Next(255);
+ Color color = Color.FromRgb(r, g, b);
+ Rectangle colorBox = new Rectangle(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Color = color,
+ MinimumHeight = window.ScreenSize.Height,
+ };
+ colorBox.Show();
+ box.PackEnd(colorBox);
+ }
+ circleScroller.Scrolled += (s, e) => Log.Debug(TestName, "Circle Scrolled Scrolled");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleScrollerTest2.cs b/ElmSharp.Wearable.Test/TC/CircleScrollerTest2.cs
new file mode 100644
index 0000000..b968e53
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleScrollerTest2.cs
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleScrollerTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleScrollerTest2";
+ public override string TestDescription => "To test basic operation of CircleScroller";
+
+ public override void Run(Window window)
+ {
+ Layout layout = new Layout(window);
+ layout.Show();
+ layout.Move(0, 0);
+ layout.Resize(360, 360);
+
+ CircleScroller circleScroller = new CircleScroller(layout)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
+ HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Auto,
+ };
+ circleScroller.Show();
+ circleScroller.Move(0, 0);
+ circleScroller.Resize(360, 360);
+ circleScroller.Lower();
+
+ Box box = new Box(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ IsHorizontal = true,
+ };
+ box.Show();
+ circleScroller.SetContent(box);
+
+ var rnd = new Random();
+ for (int i = 0; i < 10; i++)
+ {
+ int r = rnd.Next(255);
+ int g = rnd.Next(255);
+ int b = rnd.Next(255);
+ Color color = Color.FromRgb(r, g, b);
+ Rectangle colorBox = new Rectangle(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Color = color,
+ MinimumWidth = window.ScreenSize.Width,
+ };
+ colorBox.Show();
+ box.PackEnd(colorBox);
+ }
+ circleScroller.Scrolled += (s, e) => Log.Debug(TestName, "Horizental Circle Scroll Scrolled");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleScrollerTest3.cs b/ElmSharp.Wearable.Test/TC/CircleScrollerTest3.cs
new file mode 100644
index 0000000..412e1e0
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleScrollerTest3.cs
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleScrollerTest3 : TestCaseBase
+ {
+ public override string TestName => "CircleScrollerTest3";
+ public override string TestDescription => "To test basic operation of CircleScroller";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Naviframe naviframe = new Naviframe(conformant);
+
+ CircleScroller circleScroller = new CircleScroller(naviframe)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
+ HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Auto,
+ HorizontalScrollBarColor = new Color(255, 0, 0, 50),
+ HorizontalScrollBackgroundColor = Color.Orange,
+ HorizontalScrollBarLineWidth = 15,
+ HorizontalScrollBackgroundLineWidth = 15,
+ };
+ circleScroller.Show();
+ naviframe.Push(circleScroller);
+ naviframe.Show();
+ conformant.SetContent(naviframe);
+
+ Box box = new Box(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ IsHorizontal = true,
+ };
+ box.Show();
+ circleScroller.SetContent(box);
+
+ var rnd = new Random();
+ for (int i = 0; i < 10; i++)
+ {
+ int r = rnd.Next(255);
+ int g = rnd.Next(255);
+ int b = rnd.Next(255);
+ Color color = Color.FromRgb(r, g, b);
+ Rectangle colorBox = new Rectangle(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Color = color,
+ MinimumWidth = window.ScreenSize.Width,
+ };
+ colorBox.Show();
+ box.PackEnd(colorBox);
+ }
+ circleScroller.Scrolled += (s, e) => Log.Debug(TestName, "Horizental Circle Scroll Scrolled");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleScrollerTest4.cs b/ElmSharp.Wearable.Test/TC/CircleScrollerTest4.cs
new file mode 100644
index 0000000..13a3db8
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleScrollerTest4.cs
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleScrollerTest4 : TestCaseBase
+ {
+ public override string TestName => "CircleScrollerTest4";
+ public override string TestDescription => "To test basic operation of CircleScroller";
+
+ public override void Run(Window window)
+ {
+
+ CircleScroller circleScroller = new CircleScroller(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ VerticalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Auto,
+ HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
+ VerticalScrollBarColor = Color.Yellow,
+ VerticalScrollBackgroundColor = Color.Red,
+ VerticalScrollBarRadius = 170,
+ VerticalScrollBackgroundRadius = 170,
+ };
+ circleScroller.Show();
+ circleScroller.Move(0, 0);
+ circleScroller.Resize(360, 360);
+
+ Box box = new Box(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ };
+ box.Show();
+ circleScroller.SetContent(box);
+
+ var rnd = new Random();
+ for (int i = 0; i < 10; i++)
+ {
+ int r = rnd.Next(255);
+ int g = rnd.Next(255);
+ int b = rnd.Next(255);
+ Color color = Color.FromRgb(r, g, b);
+ Rectangle colorBox = new Rectangle(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Color = color,
+ MinimumHeight = window.ScreenSize.Height,
+ };
+ colorBox.Show();
+ box.PackEnd(colorBox);
+ }
+ circleScroller.Scrolled += (s, e) => Log.Debug(TestName, "Horizental Circle Scroll Scrolled");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleSliderTest1.cs b/ElmSharp.Wearable.Test/TC/CircleSliderTest1.cs
new file mode 100644
index 0000000..91a4cc2
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleSliderTest1.cs
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleSliderTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleSliderTest1";
+ public override string TestDescription => "To test basic operation of CircleSlider";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+
+ CircleSlider circleSlider = new CircleSlider(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Minimum = 0,
+ Maximum = 100,
+ Value = 25,
+ Step = 5,
+ };
+ circleSlider.Show();
+ conformant.SetContent(circleSlider);
+
+ Label label1 = new Label(window)
+ {
+ Text = string.Format("{0}", circleSlider.Value),
+ Color = Color.White,
+ };
+
+ label1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ label1.Move(170, window.ScreenSize.Height / 2 - 20);
+ label1.Show();
+
+ circleSlider.Changed += (s, e) =>
+ {
+ label1.Text = string.Format("{0}", circleSlider.Value);
+ };
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleSliderTest2.cs b/ElmSharp.Wearable.Test/TC/CircleSliderTest2.cs
new file mode 100644
index 0000000..9f0c262
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleSliderTest2.cs
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ public class CircleSliderTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleSliderTest2";
+ public override string TestDescription => "To test basic operation of CircleSlider";
+
+ public override void Run(Window window)
+ {
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+
+ CircleSlider circleSlider = new CircleSlider(conformant)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Minimum = 0,
+ Maximum = 15,
+ BarColor = Color.Purple,
+ BackgroundColor = Color.Red,
+ BarRadius = 160,
+ BackgroundRadius = 160,
+ BarLineWidth = 15,
+ BackgroundLineWidth = 15,
+ BackgroundAngleOffset = 90,
+ BackgroundAngle = 270,
+ BarAngleOffset = 90.0,
+ BarAngleMinimum = 0.0,
+ BarAngleMaximum = 270.0,
+ Value = 3,
+ Step = 0.5,
+ };
+ circleSlider.Show();
+ conformant.SetContent(circleSlider);
+ Label label1 = new Label(window)
+ {
+ Text = string.Format("{0:F1}", circleSlider.Value),
+ Color = Color.White,
+ };
+
+ label1.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ label1.Move(170, window.ScreenSize.Height / 2 - 30);
+ label1.Show();
+
+ Label label2 = new Label(window)
+ {
+ Text = string.Format("min:{0},max{1}", circleSlider.Minimum, circleSlider.Maximum),
+ Color = Color.White,
+ };
+
+ label2.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+ label2.Move(110, window.ScreenSize.Height / 2 + 10);
+ label2.Show();
+
+ Log.Debug(TestName, "CircleSliderTest2 step:" + circleSlider.Step);
+
+ circleSlider.Changed += (s, e) =>
+ {
+ label1.Text = string.Format("{0:F1}", circleSlider.Value);
+ };
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleSpinnerTest1.cs b/ElmSharp.Wearable.Test/TC/CircleSpinnerTest1.cs
new file mode 100644
index 0000000..d67564e
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleSpinnerTest1.cs
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleSpinnerTest1 : TestCaseBase
+ {
+ public override string TestName => "CircleSpinnerTest1";
+ public override string TestDescription => "To test basic operation of Circle Spinner";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleSpinnerTest run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+ layout.SetTheme("layout", "circle", "spinner");
+ conformant.SetContent(layout);
+
+ CircleSpinner spn1 = new CircleSpinner(conformant)
+ {
+ Text = "Spinner Test",
+ LabelFormat = "%d Value",
+ Style = "circle",
+ AngleRatio = 3.0,
+ Minimum = 0,
+ Maximum = 360,
+ Value = 0,
+ Step = 10,
+ Interval = 0.5,
+ AlignmentX = -1,
+ AlignmentY = 1,
+ WeightX = 1,
+ WeightY = 1
+ };
+ spn1.AddSpecialValue(50, "50 match !!!!");
+ layout.SetContent(spn1);
+
+ Button btn = new Button(layout) {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ btn.Clicked += (s, e) =>
+ {
+ spn1.Disabled = true;
+ spn1.Text = "100 match";
+ spn1.Value = 0;
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+ layout.SetPartText("elm.text", "Set value");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/CircleSpinnerTest2.cs b/ElmSharp.Wearable.Test/TC/CircleSpinnerTest2.cs
new file mode 100644
index 0000000..59adefd
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/CircleSpinnerTest2.cs
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class CircleSpinnerTest2 : TestCaseBase
+ {
+ public override string TestName => "CircleSpinnerTest2";
+ public override string TestDescription => "To test basic operation of Circle Spinner";
+
+ public override void Run(Window window)
+ {
+ Log.Debug(TestName, "CircleSpinnerTest run");
+ Conformant conformant = new Conformant(window);
+ conformant.Show();
+
+ Layout layout = new Layout(window);
+ layout.SetTheme("layout", "circle", "spinner");
+ conformant.SetContent(layout);
+
+ CircleSpinner spn1 = new CircleSpinner(conformant)
+ {
+ Text = "Slider Test",
+ LabelFormat = "%d Value",
+ Style = "circle",
+ AngleRatio = 3.0,
+ Minimum = 0,
+ Maximum = 360,
+ Value = 0,
+ Step = 10,
+ Interval = 0.5,
+ AlignmentX = -1,
+ AlignmentY = 1,
+ WeightX = 1,
+ WeightY = 1,
+ // change marker
+ MarkerLineWidth = 40,
+ MarkerColor = Color.Pink,
+ MarkerRadius = 100,
+ };
+ spn1.AddSpecialValue(50, "50 match !!!!");
+ layout.SetContent(spn1);
+
+ Button btn = new Button(layout) {
+ Text = "OK",
+ Style = "bottom",
+ };
+
+ layout.SetPartContent("elm.swallow.btn", btn);
+ layout.SetPartText("elm.text", "Set value");
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/Log.cs b/ElmSharp.Wearable.Test/TC/Log.cs
new file mode 100644
index 0000000..37313aa
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/Log.cs
@@ -0,0 +1,60 @@
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
+
+namespace ElmSharp.Test
+{
+ internal static class Log
+ {
+ const string Library = "libdlog.so.0";
+ const string TAG = "ElmSharp.Test";
+
+ public static void Debug(string message,
+ [CallerFilePath] string file = "",
+ [CallerMemberName] string func = "",
+ [CallerLineNumber] int line = 0)
+ {
+ Print(LogPriority.DLOG_DEBUG, TAG, message, file, func, line);
+ }
+
+ public static void Info(string message,
+ [CallerFilePath] string file = "",
+ [CallerMemberName] string func = "",
+ [CallerLineNumber] int line = 0)
+ {
+ Print(LogPriority.DLOG_DEBUG, TAG, message, file, func, line);
+ }
+
+ public static void Error(string message,
+ [CallerFilePath] string file = "",
+ [CallerMemberName] string func = "",
+ [CallerLineNumber] int line = 0)
+ {
+ Print(LogPriority.DLOG_DEBUG, TAG, message, file, func, line);
+ }
+
+ internal enum LogPriority
+ {
+ DLOG_UNKNOWN = 0,
+ DLOG_DEFAULT,
+ DLOG_VERBOSE,
+ DLOG_DEBUG,
+ DLOG_INFO,
+ DLOG_WARN,
+ DLOG_ERROR,
+ DLOG_FATAL,
+ DLOG_SILENT,
+ DLOG_PRIO_MAX,
+ }
+
+ private static void Print(LogPriority priority, string tag, string message, string file, string func, int line)
+ {
+ FileInfo finfo = new FileInfo(file);
+ Print(priority, tag, "%s: %s(%d) > %s", finfo.Name, func, line, message);
+ }
+
+ [DllImportAttribute(Library, EntryPoint = "dlog_print")]
+ internal static extern int Print(LogPriority prio, string tag, string fmt, string file, string func, int line, string msg);
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/MoreOptionTest.cs b/ElmSharp.Wearable.Test/TC/MoreOptionTest.cs
new file mode 100644
index 0000000..4c0e2b8
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/MoreOptionTest.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+using ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class MoreOptionTest : TestCaseBase
+ {
+ public override string TestName => "MoreOptionTest";
+
+ public override string TestDescription => "Wearable More Option Widget Test";
+
+ class ColorMoreOptionItem : MoreOptionItem
+ {
+ public Color Color;
+ public ColorMoreOptionItem(Window window, string iconName, Color color)
+ {
+ MainText = (iconName.First().ToString().ToUpper() + iconName.Substring(1)).Replace('_', ' ');
+ SubText = color.ToString();
+ Icon = new Image(window);
+ Icon.Show();
+ Icon.Load(Path.Combine(TestRunner.ResourceDir, "icons", iconName+".png"));
+ Color = color;
+ }
+ }
+
+ static Color Deep(Color color)
+ {
+ return new Color(color.R / 2, color.G / 2, color.B / 2);
+ }
+
+ public override void Run(Window window)
+ {
+ Conformant conf = new Conformant(window);
+ conf.Show();
+
+ MoreOption option = new MoreOption(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ Direction = MoreOptionDirection.Right
+ };
+ option.Show();
+ //option.Move(window.ScreenSize.Width/2, window.ScreenSize.Height/2);
+ conf.SetContent(option);
+
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_aquamarine_260_me", Color.FromHex("#800000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_auamarine_260_me", Color.FromHex("#800012")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_azure_215_me", Color.FromHex("#800034")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_beige_330_me", Color.FromHex("#800056")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_blue_45_me", Color.FromHex("#800067")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_brown_90_me", Color.FromHex("#800087")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_cyan_230_me", Color.FromHex("#800023")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_firebrick_95_me", Color.FromHex("#804300")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_gold_75_me", Color.FromHex("#854000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_green_60_me", Color.FromHex("#800340")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_honeydew_285_me", Color.FromHex("#823000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_ivory_315_me", Color.FromHex("#806700")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_khaki_360_me", Color.FromHex("#80ab00")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_lime_300_me", Color.FromHex("#800c30")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_maroon_120_me", Color.FromHex("#8fd000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_me", Color.FromHex("#800000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_orchid_160_me", Color.FromHex("#8d3000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_pink_145_me", Color.FromHex("#8002d0")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_purple_200_me", Color.FromHex("#8ff000")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_red_30_me", Color.FromHex("#800fa0")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_snow_75_me", Color.FromHex("#80f200")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_snow_80_me", Color.FromHex("#80d200")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_teal_245_me", Color.FromHex("#80f300")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_violet_180_me", Color.FromHex("#80fb00")));
+ option.Items.Add(new ColorMoreOptionItem(window, "icon_yellow_345_me", Color.FromHex("#800b30")));
+
+ option.Opened += (s, e) => Log.Debug(TestName, "Opened!");
+ option.Closed += (s, e) => Log.Debug(TestName, "Closed!");
+ option.Selected += (s, e) => Log.Debug(TestName, "Selected! : " + e?.Item?.MainText);
+ option.Clicked += (s, e) => Log.Debug(TestName, "Clicked! : " + e?.Item?.MainText);
+
+ option.Opened += (s, e) => option.BackgroundColor = Color.Aqua;
+ option.Closed += (s, e) => option.BackgroundColor = Color.Black;
+
+ option.Selected += (s, e) => option.BackgroundColor = (e?.Item as ColorMoreOptionItem).Color;
+ option.Clicked += (s, e) => option.BackgroundColor = Deep((e?.Item as ColorMoreOptionItem).Color);
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TC/RotarySelectorTest.cs b/ElmSharp.Wearable.Test/TC/RotarySelectorTest.cs
new file mode 100644
index 0000000..549c580
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TC/RotarySelectorTest.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.IO;
+
+using ElmSharp.Wearable;
+
+namespace ElmSharp.Test.TC
+{
+ class RotarySelectorTest : TestCaseBase
+ {
+ public override string TestName => "RotarySelectorTest";
+
+ public override string TestDescription => "Rotary Selector Widget Test";
+
+ Window _window;
+
+ class MyRotarySelectorItem : RotarySelectorItem
+ {
+ public Color Color { get; set; }
+ public string Message { get; set; }
+ }
+
+ MyRotarySelectorItem NewItem(string iconName, Color color)
+ {
+ Image img = new Image(_window);
+ img.Load(Path.Combine(TestRunner.ResourceDir, "icons", iconName + ".png"));
+
+ string title = (iconName.First().ToString().ToUpper() + iconName.Substring(1)).Replace('_', ' ');
+
+ return new MyRotarySelectorItem
+ {
+ Color = color,
+ Message = title,
+ MainText = title,
+ SubText = color.ToString(),
+ NormalIconImage = img,
+
+ //PressedIconColor = Color.Green,
+ //IconColor = Color.Red,
+
+ //BackgroundImage = img,
+ //BackgroundColor = Color.Blue,
+ //PressedBackgroundColor = Color.Red
+
+ };
+ }
+
+ public override void Run(Window window)
+ {
+ this._window = window;
+ Conformant conf = new Conformant(window);
+ conf.Show();
+
+ RotarySelector selector = new RotarySelector(window)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1
+ };
+ selector.Show();
+
+ selector.Items.Add(NewItem("icon_aquamarine_260_me", Color.FromHex("#800000")));
+ selector.Items.Add(NewItem("icon_auamarine_260_me", Color.FromHex("#800012")));
+ selector.Items.Add(NewItem("icon_azure_215_me", Color.FromHex("#800034")));
+ selector.Items.Add(NewItem("icon_beige_330_me", Color.FromHex("#800056")));
+ selector.Items.Add(NewItem("icon_blue_45_me", Color.FromHex("#800067")));
+ selector.Items.Add(NewItem("icon_brown_90_me", Color.FromHex("#800087")));
+ selector.Items.Add(NewItem("icon_cyan_230_me", Color.FromHex("#800023")));
+ selector.Items.Add(NewItem("icon_firebrick_95_me", Color.FromHex("#804300")));
+ selector.Items.Add(NewItem("icon_gold_75_me", Color.FromHex("#854000")));
+ selector.Items.Add(NewItem("icon_green_60_me", Color.FromHex("#800340")));
+ selector.Items.Add(NewItem("icon_honeydew_285_me", Color.FromHex("#823000")));
+ selector.Items.Add(NewItem("icon_ivory_315_me", Color.FromHex("#806700")));
+ selector.Items.Add(NewItem("icon_khaki_360_me", Color.FromHex("#80ab00")));
+ selector.Items.Add(NewItem("icon_lime_300_me", Color.FromHex("#800c30")));
+ selector.Items.Add(NewItem("icon_maroon_120_me", Color.FromHex("#8fd000")));
+ selector.Items.Add(NewItem("icon_me", Color.FromHex("#800000")));
+ selector.Items.Add(NewItem("icon_orchid_160_me", Color.FromHex("#8d3000")));
+ selector.Items.Add(NewItem("icon_pink_145_me", Color.FromHex("#8002d0")));
+ selector.Items.Add(NewItem("icon_purple_200_me", Color.FromHex("#8ff000")));
+ selector.Items.Add(NewItem("icon_red_30_me", Color.FromHex("#800fa0")));
+ selector.Items.Add(NewItem("icon_snow_75_me", Color.FromHex("#80f200")));
+ selector.Items.Add(NewItem("icon_snow_80_me", Color.FromHex("#80d200")));
+ selector.Items.Add(NewItem("icon_teal_245_me", Color.FromHex("#80f300")));
+ selector.Items.Add(NewItem("icon_violet_180_me", Color.FromHex("#80fb00")));
+ selector.Items.Add(NewItem("icon_yellow_345_me", Color.FromHex("#800b30")));
+ //selector.BackgroundImage = new Image(window);
+ //selector.BackgroundImage.Load(Path.Combine(TestRunner.ResourceDir, "icons", "round_bg_green.png"));
+ //selector.BackgroundColor = Color.Pink;
+ //selector.PressedBackgroundColor = Color.Gray;
+ conf.SetContent(selector);
+
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TestCaseBase.cs b/ElmSharp.Wearable.Test/TestCaseBase.cs
new file mode 100644
index 0000000..5803eaa
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TestCaseBase.cs
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp;
+
+namespace ElmSharp.Test
+{
+ public abstract class TestCaseBase
+ {
+ public abstract string TestName { get; }
+ public abstract string TestDescription { get; }
+ public abstract void Run(Window window);
+ }
+}
diff --git a/ElmSharp.Wearable.Test/TestRunner.cs b/ElmSharp.Wearable.Test/TestRunner.cs
new file mode 100644
index 0000000..927f2b6
--- /dev/null
+++ b/ElmSharp.Wearable.Test/TestRunner.cs
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.IO;
+using System.Linq;
+using System.Reflection;
+using System.Collections.Generic;
+
+using Tizen.Applications;
+
+namespace ElmSharp.Test
+{
+ public class TestRunner : CoreUIApplication
+ {
+ internal Window _firstPageWindow;
+ private static bool s_terminated;
+
+ public static string ResourceDir { get; private set; }
+
+ public TestRunner()
+ {
+ s_terminated = false;
+ }
+
+ protected override void OnCreate()
+ {
+ ResourceDir = DirectoryInfo.Resource;
+
+ var testCases = GetTestCases();
+ CreateFirstPage(testCases);
+ base.OnCreate();
+ }
+
+ protected override void OnTerminate()
+ {
+ s_terminated = true;
+ base.OnTerminate();
+ }
+
+ public void RunStandalone(string[] args)
+ {
+ ResourceDir = Path.Combine(Path.GetDirectoryName(typeof(TestRunner).GetTypeInfo().Assembly.Location), "res");
+
+ EcoreSynchronizationContext.Initialize();
+
+ var testCases = GetTestCases();
+ TestCaseBase theTest = null;
+
+ if (args.Count() > 0)
+ {
+ theTest = testCases.Where((testCase) => testCase.TestName == args[0] || testCase.GetType().ToString() == args[0]).FirstOrDefault();
+ }
+
+ if (theTest != null)
+ {
+ StartTC(theTest);
+ EcoreMainloop.Begin();
+ }
+ else
+ {
+ CreateFirstPage(testCases);
+ EcoreMainloop.Begin();
+ }
+
+ Elementary.Shutdown();
+ }
+
+ private IEnumerable<TestCaseBase> GetTestCases()
+ {
+ Assembly asm = typeof(TestRunner).GetTypeInfo().Assembly;
+ Type testCaseType = typeof(TestCaseBase);
+
+ var tests = from test in asm.GetTypes()
+ where testCaseType.IsAssignableFrom(test) && !test.GetTypeInfo().IsInterface && !test.GetTypeInfo().IsAbstract
+ select Activator.CreateInstance(test) as TestCaseBase;
+
+ return from test in tests
+ orderby test.TestName
+ select test;
+ }
+
+ internal static void UIExit()
+ {
+ EcoreMainloop.Quit();
+ }
+
+ private Window CreateWindow(bool isSecond = false)
+ {
+ Window window = new Window("ElmSharp UI Tests")
+ {
+ AvailableRotations = DisplayRotation.Degree_0 | DisplayRotation.Degree_180 | DisplayRotation.Degree_270 | DisplayRotation.Degree_90
+ };
+ window.Show();
+ if (isSecond)
+ {
+ window.BackButtonPressed += (s, e) =>
+ {
+ window.Hide();
+ window.Unrealize();
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ };
+ }
+ else
+ {
+ window.BackButtonPressed += (s, e) =>
+ {
+ UIExit();
+ };
+ }
+ return window;
+ }
+
+ private void CreateFirstPage(IEnumerable<TestCaseBase> testCases)
+ {
+ _firstPageWindow = CreateWindow();
+ Console.WriteLine("Screen DPI : {0}", _firstPageWindow.ScreenDpi.X);
+ Conformant conformant = new Conformant(_firstPageWindow);
+ conformant.Show();
+ Box box = new Box(_firstPageWindow)
+ {
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1,
+ };
+ box.Show();
+ var bg = new Background(_firstPageWindow);
+ bg.Color = Color.White;
+ bg.SetContent(box);
+ conformant.SetContent(bg);
+
+ GenList list = new GenList(_firstPageWindow)
+ {
+ Homogeneous = true,
+ AlignmentX = -1,
+ AlignmentY = -1,
+ WeightX = 1,
+ WeightY = 1
+ };
+
+ GenItemClass defaultClass = new GenItemClass("default")
+ {
+ GetTextHandler = (data, part) =>
+ {
+ return string.Format("{0}",(string)data);
+ }
+ };
+
+ list.Append(defaultClass, "");
+ foreach (var tc in testCases)
+ {
+ list.Append(defaultClass, tc.TestName);
+ }
+ list.Append(defaultClass, "");
+
+ list.ItemSelected += (s, e) =>
+ {
+ foreach (var tc in testCases)
+ {
+ if (tc.TestName == (string)(e.Item.Data))
+ {
+ StartTCFromList(tc);
+ break;
+ }
+ }
+ };
+ list.Show();
+
+ box.PackEnd(list);
+ }
+
+ private void StartTC(TestCaseBase tc)
+ {
+ Window window = CreateWindow();
+ tc.Run(window);
+ }
+
+ private void StartTCFromList(TestCaseBase tc)
+ {
+ Window window = CreateWindow(true);
+ tc.Run(window);
+ }
+
+ static void Main(string[] args)
+ {
+ Elementary.Initialize();
+ Elementary.ThemeOverlay();
+
+ Console.WriteLine("ELM_PROFILE : {0}", Elementary.GetProfile());
+ Console.WriteLine("ELM_SCALE : {0}", Elementary.GetScale());
+
+ TestRunner testRunner = new TestRunner();
+ testRunner.Run(args);
+
+ // if running with appfw is failed, below line will be executed.
+ if (!s_terminated)
+ {
+ testRunner.RunStandalone(args);
+ }
+ }
+ }
+}
diff --git a/ElmSharp.Wearable.Test/res/icons/bg_black.png b/ElmSharp.Wearable.Test/res/icons/bg_black.png
new file mode 100644
index 0000000..08a258a
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/bg_black.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/bg_red.png b/ElmSharp.Wearable.Test/res/icons/bg_red.png
new file mode 100644
index 0000000..b8ccbb5
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/bg_red.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/bg_white.png b/ElmSharp.Wearable.Test/res/icons/bg_white.png
new file mode 100644
index 0000000..1041aa0
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/bg_white.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_aquamarine_260_me.png b/ElmSharp.Wearable.Test/res/icons/icon_aquamarine_260_me.png
new file mode 100644
index 0000000..f6ea110
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_aquamarine_260_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_auamarine_260_me.png b/ElmSharp.Wearable.Test/res/icons/icon_auamarine_260_me.png
new file mode 100644
index 0000000..d35eeca
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_auamarine_260_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_azure_215_me.png b/ElmSharp.Wearable.Test/res/icons/icon_azure_215_me.png
new file mode 100644
index 0000000..17e613c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_azure_215_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_beige_330_me.png b/ElmSharp.Wearable.Test/res/icons/icon_beige_330_me.png
new file mode 100644
index 0000000..7bfac09
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_beige_330_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_blue_45_me.png b/ElmSharp.Wearable.Test/res/icons/icon_blue_45_me.png
new file mode 100644
index 0000000..7da3ffa
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_blue_45_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_brown_90_me.png b/ElmSharp.Wearable.Test/res/icons/icon_brown_90_me.png
new file mode 100644
index 0000000..4b176aa
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_brown_90_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_cyan_230_me.png b/ElmSharp.Wearable.Test/res/icons/icon_cyan_230_me.png
new file mode 100644
index 0000000..c846907
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_cyan_230_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_firebrick_95_me.png b/ElmSharp.Wearable.Test/res/icons/icon_firebrick_95_me.png
new file mode 100644
index 0000000..faaeb6c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_firebrick_95_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_gold_75_me.png b/ElmSharp.Wearable.Test/res/icons/icon_gold_75_me.png
new file mode 100644
index 0000000..b0a23b7
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_gold_75_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_green_60_me.png b/ElmSharp.Wearable.Test/res/icons/icon_green_60_me.png
new file mode 100644
index 0000000..617703f
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_green_60_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_honeydew_285_me.png b/ElmSharp.Wearable.Test/res/icons/icon_honeydew_285_me.png
new file mode 100644
index 0000000..b25e59c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_honeydew_285_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_ivory_315_me.png b/ElmSharp.Wearable.Test/res/icons/icon_ivory_315_me.png
new file mode 100644
index 0000000..1617f72
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_ivory_315_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_khaki_360_me.png b/ElmSharp.Wearable.Test/res/icons/icon_khaki_360_me.png
new file mode 100644
index 0000000..89ee897
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_khaki_360_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_lime_300_me.png b/ElmSharp.Wearable.Test/res/icons/icon_lime_300_me.png
new file mode 100644
index 0000000..685c002
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_lime_300_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_maroon_120_me.png b/ElmSharp.Wearable.Test/res/icons/icon_maroon_120_me.png
new file mode 100644
index 0000000..822d1ec
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_maroon_120_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_me.png b/ElmSharp.Wearable.Test/res/icons/icon_me.png
new file mode 100644
index 0000000..a0ec18c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_orchid_160_me.png b/ElmSharp.Wearable.Test/res/icons/icon_orchid_160_me.png
new file mode 100644
index 0000000..c063483
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_orchid_160_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_pink_145_me.png b/ElmSharp.Wearable.Test/res/icons/icon_pink_145_me.png
new file mode 100644
index 0000000..d0934f0
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_pink_145_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_purple_200_me.png b/ElmSharp.Wearable.Test/res/icons/icon_purple_200_me.png
new file mode 100644
index 0000000..69468e2
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_purple_200_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_red_30_me.png b/ElmSharp.Wearable.Test/res/icons/icon_red_30_me.png
new file mode 100644
index 0000000..66bbd09
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_red_30_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_snow_75_me.png b/ElmSharp.Wearable.Test/res/icons/icon_snow_75_me.png
new file mode 100644
index 0000000..e6d82d7
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_snow_75_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_snow_80_me.png b/ElmSharp.Wearable.Test/res/icons/icon_snow_80_me.png
new file mode 100644
index 0000000..b419131
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_snow_80_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_teal_245_me.png b/ElmSharp.Wearable.Test/res/icons/icon_teal_245_me.png
new file mode 100644
index 0000000..db1a10c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_teal_245_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_violet_180_me.png b/ElmSharp.Wearable.Test/res/icons/icon_violet_180_me.png
new file mode 100644
index 0000000..df07406
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_violet_180_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/icon_yellow_345_me.png b/ElmSharp.Wearable.Test/res/icons/icon_yellow_345_me.png
new file mode 100644
index 0000000..9af0e0f
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/icon_yellow_345_me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/make_icon.sh b/ElmSharp.Wearable.Test/res/icons/make_icon.sh
new file mode 100644
index 0000000..31f6fe8
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/make_icon.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+OPTIND=1
+
+while getopts "h?c:r:" opt; do
+ case "$opt" in
+ h|\?)
+ echo "$0 [-c color] [-r degree]"
+ exit 0
+ ;;
+ c) color=$OPTARG
+ ;;
+ r) rotate=$OPTARG
+ ;;
+ esac
+done
+
+shift $((OPTIND-1))
+filename=$1
+iconname=$2
+
+if [ -z $color ]; then
+ color="white"
+fi
+
+if [ -z $rotate ]; then
+ rotate=0
+fi
+
+if [ -z $toname ]; then
+ iconname="icon_${color}_${rotate}_$filename"
+fi
+
+convert $filename -resize 75x75 \
+ -stroke $color -fill none -draw "stroke-width 5 circle 37, 37, 60, 60" \
+ \( +clone -threshold -1 -negate -fill white -draw "ellipse 37, 37 36, 36 4, 176 ellipse 37, 37, 36, 36 184, 356" \) \
+ -distort SRT $rotate \
+ -alpha off -compose copy_opacity -composite $iconname
+
diff --git a/ElmSharp.Wearable.Test/res/icons/me.png b/ElmSharp.Wearable.Test/res/icons/me.png
new file mode 100644
index 0000000..1653fa6
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/me.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/me_circle.png b/ElmSharp.Wearable.Test/res/icons/me_circle.png
new file mode 100644
index 0000000..f52d56a
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/me_circle.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/me_small.png b/ElmSharp.Wearable.Test/res/icons/me_small.png
new file mode 100644
index 0000000..f024c79
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/me_small.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/pressed.png b/ElmSharp.Wearable.Test/res/icons/pressed.png
new file mode 100644
index 0000000..a0a9abb
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/pressed.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_bg_green.png b/ElmSharp.Wearable.Test/res/icons/round_bg_green.png
new file mode 100644
index 0000000..c13f8c1
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_bg_green.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_bg_white.png b/ElmSharp.Wearable.Test/res/icons/round_bg_white.png
new file mode 100644
index 0000000..9499af8
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_bg_white.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_bg_yellow.png b/ElmSharp.Wearable.Test/res/icons/round_bg_yellow.png
new file mode 100644
index 0000000..a2e1d91
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_bg_yellow.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_content_black.png b/ElmSharp.Wearable.Test/res/icons/round_content_black.png
new file mode 100644
index 0000000..4034791
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_content_black.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_content_blue.png b/ElmSharp.Wearable.Test/res/icons/round_content_blue.png
new file mode 100644
index 0000000..f4e5be9
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_content_blue.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/res/icons/round_content_red.png b/ElmSharp.Wearable.Test/res/icons/round_content_red.png
new file mode 100644
index 0000000..1951a9d
--- /dev/null
+++ b/ElmSharp.Wearable.Test/res/icons/round_content_red.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/shared/res/ElmSharp.Wearable.Test.png b/ElmSharp.Wearable.Test/shared/res/ElmSharp.Wearable.Test.png
new file mode 100644
index 0000000..9765b1b
--- /dev/null
+++ b/ElmSharp.Wearable.Test/shared/res/ElmSharp.Wearable.Test.png
Binary files differ
diff --git a/ElmSharp.Wearable.Test/tizen-manifest.xml b/ElmSharp.Wearable.Test/tizen-manifest.xml
new file mode 100644
index 0000000..623eb7c
--- /dev/null
+++ b/ElmSharp.Wearable.Test/tizen-manifest.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="ElmSharpTest.Wearable" version="1.0.0">
+ <profile name="wearable" />
+ <ui-application appid="org.tizen.ElmSharp.Wearable.Test"
+ exec="ElmSharp.Wearable.Test.exe"
+ type="dotnet"
+ multiple="false"
+ taskmanage="true"
+ launch_mode="single">
+ <icon>ElmSharp.Wearable.Test.png</icon>
+ <label>ElmSharp.Wearable.Test</label>
+ </ui-application>
+</manifest>
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable.csproj b/ElmSharp.Wearable/ElmSharp.Wearable.csproj
new file mode 100644
index 0000000..30674e5
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable.csproj
@@ -0,0 +1,8 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFramework>netstandard1.3</TargetFramework>
+ </PropertyGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\ElmSharp\ElmSharp.csproj" />
+ </ItemGroup>
+</Project>
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleDatetimeSelector.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleDatetimeSelector.cs
new file mode 100644
index 0000000..7834970
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleDatetimeSelector.cs
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+ /// <summary>
+ /// The Circle DateTime Selector is a widget to display and handle datetime value by rotary event
+ /// Inherits <see cref="DateTimeSelector"/>
+ /// </summary>
+ public class CircleDateTimeSelector : DateTimeSelector
+ {
+ IntPtr circleHandle;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the Circle DateTime class
+ /// </summary>
+ /// <param name="parent">The parent of new Circle DateTime instance</param>
+ public CircleDateTimeSelector(EvasObject parent) : base(parent) { }
+
+ /// <summary>
+ /// Sets or gets the disabled state of the Circle DateTime Selector
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the color of the marker
+ /// </summary>
+ public Color MarkerColor
+ {
+ get
+ {
+ int r, g, b, a;
+ Interop.Eext.eext_circle_object_item_color_get(circleHandle, "default", out r, out g, out b, out a);
+ return new Color(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(circleHandle, "default", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line width of the marker
+ /// </summary>
+ public int MarkerLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(circleHandle, "default", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the radius at which the center of the marker lies
+ /// </summary>
+ public double MarkerRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(circleHandle, "default", value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ var handle = base.CreateHandle(parent);
+
+ IntPtr surface = IntPtr.Zero;
+
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent);
+ }
+
+ circleHandle = Interop.Eext.eext_circle_object_datetime_add(RealHandle, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while (!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(circleHandle, w, h);
+ }
+
+ Interop.Eext.eext_rotary_object_event_activated_set(circleHandle, true);
+
+ return handle;
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleGenList.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleGenList.cs
new file mode 100644
index 0000000..c987009
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleGenList.cs
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+ /// <summary>
+ /// The Circle GenList Selector is a widget to display and handle genlist items by rotary event
+ /// Inherits <see cref="GenList"/>
+ /// </summary>
+ public class CircleGenList : GenList
+ {
+ IntPtr circleHandle;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the Circle GenList class
+ /// </summary>
+ /// <param name="parent">The parent of new Circle GenList instance</param>
+ public CircleGenList(EvasObject parent) : base(parent) { }
+
+ /// <summary>
+ /// Sets or gets the disabled state of the Circle GenList Selector
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the color of the scroll background
+ /// </summary>
+ public Color VerticalScrollBackgroundColor
+ {
+ get
+ {
+ int r, g, b, a;
+ Interop.Eext.eext_circle_object_item_color_get(circleHandle, "vertical,scroll,bg", out r, out g, out b, out a);
+ return new Color(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(circleHandle, "vertical,scroll,bg", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line width of the scroll background
+ /// </summary>
+ public int VerticalScrollBackgroundLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(circleHandle, "vertical,scroll,bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(circleHandle, "vertical,scroll,bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the redius of the scroll background
+ /// </summary>
+ public double VerticalScrollBackgroundRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(circleHandle, "vertical,scroll,bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(circleHandle, "vertical,scroll,bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the color of the scroll bar
+ /// </summary>
+ public Color VerticalScrollBarColor
+ {
+ get
+ {
+ int r, g, b, a;
+ Interop.Eext.eext_circle_object_item_color_get(circleHandle, "default", out r, out g, out b, out a);
+ return new Color(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(circleHandle, "default", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line width of the scroll bar
+ /// </summary>
+ public int VerticalScrollBarLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(circleHandle, "default", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the redius of the scroll bar
+ /// </summary>
+ public double VerticalScrollBarRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(circleHandle, "default", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the policy if the scroll bar is visible
+ /// </summary>
+ /// <remarks>
+ /// ScrollBarVisiblePolicy.Auto means the vertical scrollbar is made visible if it is needed, and otherwise kept hidden.
+ /// ScrollBarVisiblePolicy.Visible turns it on all the time, and ScrollBarVisiblePolicy.Invisible always keeps it off.
+ /// </remarks>
+ public ScrollBarVisiblePolicy VerticalScrollBarVisiblePolicy
+ {
+ get
+ {
+ int policy;
+ Interop.Eext.eext_circle_object_genlist_scroller_policy_get(circleHandle, IntPtr.Zero, out policy);
+ return (ScrollBarVisiblePolicy)policy;
+ }
+ set
+ {
+ int h;
+ Interop.Eext.eext_circle_object_genlist_scroller_policy_get(circleHandle, out h, IntPtr.Zero);
+ Interop.Eext.eext_circle_object_genlist_scroller_policy_set(circleHandle, (int)h, (int)value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ var handle = base.CreateHandle(parent);
+
+ IntPtr surface = IntPtr.Zero;
+
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent);
+ }
+
+ circleHandle = Interop.Eext.eext_circle_object_genlist_add(RealHandle, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while(!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(circleHandle, w, h);
+ }
+
+ Interop.Eext.eext_rotary_object_event_activated_set(circleHandle, true);
+
+ return handle;
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleProgressBar.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleProgressBar.cs
new file mode 100644
index 0000000..95fcbae
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleProgressBar.cs
@@ -0,0 +1,338 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+
+ /// <summary>
+ /// The Circle ProgressBar is a widget for visually representing the progress status of a given job/task with the circular design.
+ /// </summary>
+ public class CircleProgressBar : EvasObject
+ {
+ private IntPtr _circleHandle;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the Circle Progressbar class.
+ /// </summary>
+ /// <param name="parent">The parent of new Circle Progressbar instance</param>
+ public CircleProgressBar(EvasObject parent) : base(parent)
+ {
+ }
+
+
+ /// <summary>
+ /// Sets or gets the value of ProgressBar.
+ /// </summary>
+ public double Value
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_value_get(_circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_value_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the maximum value of ProgressBar.
+ /// </summary>
+ public double Maximum
+ {
+ get
+ {
+ double max = 0;
+ double min = 0;
+ Interop.Eext.eext_circle_object_value_min_max_get(_circleHandle, out min, out max);
+ return max;
+ }
+ set
+ {
+ double min = Minimum;
+ Interop.Eext.eext_circle_object_value_min_max_set(_circleHandle, min, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the minimum value of ProgressBar.
+ /// </summary>
+ public double Minimum
+ {
+ get
+ {
+ double max = 0;
+ double min = 0;
+ Interop.Eext.eext_circle_object_value_min_max_get(_circleHandle, out min, out max);
+ return min;
+ }
+ set
+ {
+ double max = Maximum;
+ Interop.Eext.eext_circle_object_value_min_max_set(_circleHandle, value, max);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle value of ProgressBar.
+ /// </summary>
+ public double BarAngle
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_angle_get(_circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_angle_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle value of Background ProgressBar.
+ /// </summary>
+ public double BackgroundAngle
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_angle_get(_circleHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_angle_set(_circleHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle offset value of ProgressBar.
+ /// </summary>
+ public double BarAngleOffset
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_angle_offset_get(_circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_angle_offset_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle offset value of Background ProgressBar.
+ /// </summary>
+ public double BackgroundAngleOffset
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_angle_offset_get(_circleHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_angle_offset_set(_circleHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the maximum angle value of ProgressBar.
+ /// </summary>
+ public double BarAngleMaximum
+ {
+ get
+ {
+ double max = 0;
+ double min = 0;
+ Interop.Eext.eext_circle_object_angle_min_max_get(_circleHandle, out min, out max);
+ return max;
+ }
+ set
+ {
+ double min = BarAngleMinimum;
+ Interop.Eext.eext_circle_object_angle_min_max_set(_circleHandle, min, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the minimum angle value of ProgressBar.
+ /// </summary>
+ public double BarAngleMinimum
+ {
+ get
+ {
+ double max = 0;
+ double min = 0;
+ Interop.Eext.eext_circle_object_angle_min_max_get(_circleHandle, out min, out max);
+ return min;
+ }
+ set
+ {
+ double max = BarAngleMaximum;
+ Interop.Eext.eext_circle_object_angle_min_max_set(_circleHandle, value, max);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets disable status of Circle ProgressBar.
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(_circleHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of ProgressBar.
+ /// </summary>
+ public Color BarColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_color_get(_circleHandle, out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_color_set(_circleHandle, value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of Background ProgressBar.
+ /// </summary>
+ public Color BackgroundColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_item_color_get(_circleHandle, "bg", out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(_circleHandle, "bg", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of ProgressBar.
+ /// </summary>
+ public int BarLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_line_width_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_line_width_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of Background ProgressBar.
+ /// </summary>
+ public int BackgroundLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(_circleHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(_circleHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of ProgressBar.
+ /// </summary>
+ public double BarRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_radius_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_radius_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of Background ProgressBar.
+ /// </summary>
+ public double BackgroundRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(_circleHandle, "bg"); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(_circleHandle, "bg", value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ IntPtr surface = IntPtr.Zero;
+
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent.Handle);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent.Handle);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+
+ _circleHandle = Interop.Eext.eext_circle_object_progressbar_add(parent.Handle, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while (!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(_circleHandle, w, h);
+ }
+
+ Interop.Eext.eext_rotary_object_event_activated_set(_circleHandle, true);
+ return parent.Handle;
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleScroller.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleScroller.cs
new file mode 100644
index 0000000..c786615
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleScroller.cs
@@ -0,0 +1,328 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+ /// <summary>
+ /// Circle scroller provides scrollbar with circular movement and is scrolled by rotary event.
+ /// </summary>
+ public class CircleScroller : Scroller
+ {
+ private IntPtr _circleHandle;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the CircleScroller class.
+ /// </summary>
+ /// <param name="parent">The <see cref="EvasObject"/> to which the new CircleScroller will be attached as a child.</param>
+ public CircleScroller(EvasObject parent) : base(parent)
+ {
+ }
+
+ /// <summary>
+ /// Sets or gets disabled state of the circle scroller object.
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the value of HorizontalScrollBarVisiblePolicy
+ /// </summary>
+ /// <remarks>
+ /// ScrollBarVisiblePolicy.Auto means the horizontal scrollbar is made visible if it is needed, and otherwise kept hidden.
+ /// ScrollBarVisiblePolicy.Visible turns it on all the time, and ScrollBarVisiblePolicy.Invisible always keeps it off.
+ /// </remarks>
+ public override ScrollBarVisiblePolicy HorizontalScrollBarVisiblePolicy
+ {
+ get
+ {
+ int policy;
+ Interop.Eext.eext_circle_object_scroller_policy_get(_circleHandle, out policy, IntPtr.Zero);
+ return (ScrollBarVisiblePolicy)policy;
+ }
+ set
+ {
+ ScrollBarVisiblePolicy v = VerticalScrollBarVisiblePolicy;
+ Interop.Eext.eext_circle_object_scroller_policy_set(_circleHandle, (int)value, (int)v);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the value of VerticalScrollBarVisiblePolicy
+ /// </summary>
+ /// <remarks>
+ /// ScrollBarVisiblePolicy.Auto means the vertical scrollbar is made visible if it is needed, and otherwise kept hidden.
+ /// ScrollBarVisiblePolicy.Visible turns it on all the time, and ScrollBarVisiblePolicy.Invisible always keeps it off.
+ /// </remarks>
+ public override ScrollBarVisiblePolicy VerticalScrollBarVisiblePolicy
+ {
+ get
+ {
+ int policy;
+ Interop.Eext.eext_circle_object_scroller_policy_get(_circleHandle, IntPtr.Zero, out policy);
+ return (ScrollBarVisiblePolicy)policy;
+ }
+ set
+ {
+ ScrollBarVisiblePolicy h = HorizontalScrollBarVisiblePolicy;
+ Interop.Eext.eext_circle_object_scroller_policy_set(_circleHandle, (int)h, (int)value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the vertical scroll bar.
+ /// </summary>
+ public Color VerticalScrollBarColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_color_get(_circleHandle, out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_color_set(_circleHandle, value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the horizontal scroll bar.
+ /// </summary>
+ public Color HorizontalScrollBarColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_item_color_get(_circleHandle, "horizontal,scroll,bar", out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(_circleHandle, "horizontal,scroll,bar", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the vertical scroll background.
+ /// </summary>
+ public Color VerticalScrollBackgroundColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_item_color_get(_circleHandle, "vertical,scroll,bg", out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(_circleHandle, "vertical,scroll,bg", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the horizontal scroll background.
+ /// </summary>
+ public Color HorizontalScrollBackgroundColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_item_color_get(_circleHandle, "horizontal,scroll,bg", out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(_circleHandle, "horizontal,scroll,bg", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of the vertical scroll bar.
+ /// </summary>
+ public int VerticalScrollBarLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_line_width_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_line_width_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of the horizontal scroll bar.
+ /// </summary>
+ public int HorizontalScrollBarLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(_circleHandle, "horizontal,scroll,bar");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(_circleHandle, "horizontal,scroll,bar", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of the vertical scroll background.
+ /// </summary>
+ public int VerticalScrollBackgroundLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(_circleHandle, "vertical,scroll,bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(_circleHandle, "vertical,scroll,bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets line width of the horizontal scroll background.
+ /// </summary>
+ public int HorizontalScrollBackgroundLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(_circleHandle, "horizontal,scroll,bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(_circleHandle, "horizontal,scroll,bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of the vertical scroll bar.
+ /// </summary>
+ public double VerticalScrollBarRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_radius_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_radius_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of the horizontal scroll bar.
+ /// </summary>
+ public double HorizontalScrollBarRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(_circleHandle, "horizontal,scroll,bar"); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(_circleHandle, "horizontal,scroll,bar", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of the vertical scroll background.
+ /// </summary>
+ public double VerticalScrollBackgroundRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(_circleHandle, "vertical,scroll,bg"); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(_circleHandle, "vertical,scroll,bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets radius of the horizontal scroll background.
+ /// </summary>
+ public double HorizontalScrollBackgroundRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(_circleHandle, "horizontal,scroll,bg"); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(_circleHandle, "horizontal,scroll,bg", value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ IntPtr handle = base.CreateHandle(parent);
+ IntPtr surface = IntPtr.Zero;
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+
+ _circleHandle = Interop.Eext.eext_circle_object_scroller_add(RealHandle, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while (!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(_circleHandle, w, h);
+ }
+ Interop.Eext.eext_rotary_object_event_activated_set(_circleHandle, true);
+ return handle;
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleSlider.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleSlider.cs
new file mode 100644
index 0000000..8cf026c
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleSlider.cs
@@ -0,0 +1,375 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+ /// <summary>
+ /// Circle slider is circular designed widget to select a value in a range by rotary event.
+ /// </summary>
+ public class CircleSlider : EvasObject
+ {
+ public event EventHandler Changed;
+
+ SmartEvent _changedEvent;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the CircleSlider class.
+ /// </summary>
+ /// <param name="parent">The EvasObject to which the new CircleSlider will be attached as a child.</param>
+ public CircleSlider(EvasObject parent) : base(parent)
+ {
+ _changedEvent = new SmartEvent(this, "value,changed");
+
+ _changedEvent.On += (s, e) => Changed?.Invoke(this, EventArgs.Empty);
+ }
+
+ /// <summary>
+ /// Sets or gets the step by which the circle slider bar moves.
+ /// </summary>
+ /// <remarks>
+ /// This value is used when circle slider value is changed by an drag or rotary event
+ /// The value of the slider is increased/decreased by the step value.
+ /// </remarks>
+ public double Step
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_slider_step_get(RealHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_slider_step_set(RealHandle, (double)value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets disabled state of the circle slider object.
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(RealHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(RealHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the circle slider bar.
+ /// </summary>
+ public Color BarColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_color_get(RealHandle, out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_color_set(RealHandle, value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets color of the circle slider background.
+ /// </summary>
+ public Color BackgroundColor
+ {
+ get
+ {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ Interop.Eext.eext_circle_object_item_color_get(RealHandle, "bg", out r, out g, out b, out a);
+ return Color.FromRgba(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(RealHandle, "bg", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line with of the circle slider bar.
+ /// </summary>
+ public int BarLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_line_width_get(RealHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_line_width_set(RealHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line with of the circle slider background.
+ /// </summary>
+ public int BackgroundLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(RealHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(RealHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle in degree of the circle slider bar.
+ /// </summary>
+ public double BarAngle
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_angle_get(RealHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_angle_set(RealHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle in degree of the circle slider background.
+ /// </summary>
+ public double BackgroundAngle
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_angle_get(RealHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_angle_set(RealHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle offset for the slider bar.
+ /// offset value means start position of the slider bar.
+ /// </summary>
+ public double BarAngleOffset
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_angle_offset_get(RealHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_angle_offset_set(RealHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the angle offset for the circle slider background.
+ /// offset value means start position of the slider background.
+ /// </summary>
+ public double BackgroundAngleOffset
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_angle_offset_get(RealHandle, "bg");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_angle_offset_set(RealHandle, "bg", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the minimum angle of the circle slider bar.
+ /// </summary>
+ public double BarAngleMinimum
+ {
+ get
+ {
+ double min;
+ double max;
+ Interop.Eext.eext_circle_object_angle_min_max_get(RealHandle, out min, out max);
+ return min;
+ }
+ set
+ {
+ double max = BarAngleMaximum;
+ Interop.Eext.eext_circle_object_angle_min_max_set(RealHandle, (double)value, max);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the maximum angle of the circle slider bar.
+ /// </summary>
+ public double BarAngleMaximum
+ {
+ get
+ {
+ double min;
+ double max;
+ Interop.Eext.eext_circle_object_angle_min_max_get(RealHandle, out min, out max);
+ return max;
+ }
+ set
+ {
+ double min = BarAngleMinimum;
+ Interop.Eext.eext_circle_object_angle_min_max_set(RealHandle, min, (double)value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the minimum values for the circle slider.
+ /// </summary>
+ /// <remarks>
+ /// This defines the allowed minimum values to be selected by the user.
+ /// If the actual value is less than min, it is updated to min.
+ /// Actual value can be obtained with Value.By default, min is equal to 0.0.
+ /// </remarks>
+ public double Minimum
+ {
+ get
+ {
+ double min;
+ double max;
+ Interop.Eext.eext_circle_object_value_min_max_get(RealHandle, out min, out max);
+ return min;
+ }
+ set
+ {
+ double max = Maximum;
+ Interop.Eext.eext_circle_object_value_min_max_set(RealHandle, (double)value, max);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the maximum values for the circle slider.
+ /// </summary>
+ /// <remarks>
+ /// This defines the allowed maximum values to be selected by the user.
+ /// If the actual value is bigger then max, it is updated to max.
+ /// Actual value can be obtained with Value.By default, min is equal to 0.0, and max is equal to 1.0.
+ /// Maximum must be greater than minimum, otherwise the behavior is undefined.
+ /// </remarks>
+ public double Maximum
+ {
+ get
+ {
+ double min;
+ double max;
+ Interop.Eext.eext_circle_object_value_min_max_get(RealHandle, out min, out max);
+ return max;
+ }
+ set
+ {
+ double min = Minimum;
+ Interop.Eext.eext_circle_object_value_min_max_set(RealHandle, min, (double)value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the value displayed by the circle slider.
+ /// </summary>
+ /// <remarks>
+ /// The value must to be between Minimum and Maximum values.
+ /// </remarks>
+ public double Value
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_value_get(RealHandle);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_value_set(RealHandle, (double)value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the radius value for the circle slider bar.
+ /// </summary>
+ public double BarRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_radius_get(RealHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_radius_set(RealHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the radius value for the circle slider background.
+ /// </summary>
+ public double BackgroundRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(RealHandle, "bg"); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(RealHandle, "bg", value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ IntPtr surface = IntPtr.Zero;
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+
+ IntPtr handle = Interop.Eext.eext_circle_object_slider_add(parent, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while (!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(handle, w, h);
+ }
+
+ Interop.Eext.eext_rotary_object_event_activated_set(handle, true);
+ return handle;
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/CircleSpinner.cs b/ElmSharp.Wearable/ElmSharp.Wearable/CircleSpinner.cs
new file mode 100644
index 0000000..e85d589
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/CircleSpinner.cs
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+
+namespace ElmSharp.Wearable
+{
+
+ /// <summary>
+ /// The Circle Spinner is a widget to display and handle spinner value by rotary event
+ /// Inherits <see cref="Spinner"/>.
+ /// </summary>
+ public class CircleSpinner : Spinner
+ {
+ private IntPtr _circleHandle;
+ private double _angleRatio = 1.0;
+
+ /// <summary>
+ /// Creates and initializes a new instance of the Circle Spinner class.
+ /// </summary>
+ /// <param name="parent">The parent of new Circle Spinner instance</param>
+ public CircleSpinner(EvasObject parent) : base(parent)
+ {
+ }
+
+ /// <summary>
+ /// Sets or gets the circle spinner angle per each spinner value.
+ /// </summary>
+ public double AngleRatio
+ {
+ get
+ {
+ return _angleRatio;
+ }
+ set
+ {
+ _angleRatio = value;
+ Interop.Eext.eext_circle_object_spinner_angle_set(_circleHandle, _angleRatio);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets disabled state of the circle spinner object.
+ /// </summary>
+ public bool Disabled
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_disabled_get(_circleHandle); ;
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_disabled_set(_circleHandle, value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the line width of the marker
+ /// </summary>
+ public int MarkerLineWidth
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_line_width_get(_circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_line_width_set(_circleHandle, "default", value);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the color of the marker
+ /// </summary>
+ public Color MarkerColor
+ {
+ get
+ {
+ int r, g, b, a;
+ Interop.Eext.eext_circle_object_item_color_get(_circleHandle, "default", out r, out g, out b, out a);
+ return new Color(r, g, b, a);
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_color_set(_circleHandle, "default", value.R, value.G, value.B, value.A);
+ }
+ }
+
+ /// <summary>
+ /// Sets or gets the radius at which the center of the marker lies
+ /// </summary>
+ public double MarkerRadius
+ {
+ get
+ {
+ return Interop.Eext.eext_circle_object_item_radius_get(_circleHandle, "default");
+ }
+ set
+ {
+ Interop.Eext.eext_circle_object_item_radius_set(_circleHandle, "default", value);
+ }
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ IntPtr handle = base.CreateHandle(parent);
+
+ IntPtr surface = IntPtr.Zero;
+
+ if (parent is Conformant)
+ {
+ surface = Interop.Eext.eext_circle_surface_conformant_add(parent.Handle);
+ }
+ else if (parent is Naviframe)
+ {
+ surface = Interop.Eext.eext_circle_surface_naviframe_add(parent.RealHandle);
+ }
+ else if (parent is Layout)
+ {
+ surface = Interop.Eext.eext_circle_surface_layout_add(parent.Handle);
+ }
+
+ _circleHandle = Interop.Eext.eext_circle_object_spinner_add(RealHandle, surface);
+ if (surface == IntPtr.Zero)
+ {
+ EvasObject p = parent;
+ while (!(p is Window))
+ {
+ p = p.Parent;
+ }
+ var w = (p as Window).ScreenSize.Width;
+ var h = (p as Window).ScreenSize.Height;
+ Interop.Evas.evas_object_resize(_circleHandle, w, h);
+ }
+
+ Interop.Eext.eext_rotary_object_event_activated_set(_circleHandle, true);
+ return handle;
+ }
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/MoreOption.cs b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOption.cs
new file mode 100644
index 0000000..7f75cc1
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOption.cs
@@ -0,0 +1,89 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace ElmSharp.Wearable
+{
+ public class MoreOption : Layout
+ {
+
+ public IList<MoreOptionItem> Items { get; private set; }
+
+ public event EventHandler<MoreOptionItemEventArgs> Selected;
+ public event EventHandler<MoreOptionItemEventArgs> Clicked;
+ public event EventHandler Opened;
+ public event EventHandler Closed;
+
+ SmartEvent<PointerEventArgs> _selectedEvent;
+ SmartEvent<PointerEventArgs> _clickedEvent;
+ SmartEvent _openedEvent;
+ SmartEvent _closedEvent;
+
+ public MoreOption(EvasObject parent) : base(parent)
+ {
+ Items = new MoreOptionList(this);
+
+ _selectedEvent = new SmartEvent<PointerEventArgs>(this, "item,selected", (d, o, info) => new PointerEventArgs { Pointer = info });
+ _clickedEvent = new SmartEvent<PointerEventArgs>(this, "item,clicked", (d, o, info) => new PointerEventArgs { Pointer = info });
+ _openedEvent = new SmartEvent(this, "more,option,opened");
+ _closedEvent = new SmartEvent(this, "more,option,closed");
+
+ _selectedEvent.On += (s, e) =>
+ {
+ MoreOptionItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
+ Selected?.Invoke(this, new MoreOptionItemEventArgs() { Item = selected });
+ };
+
+ _clickedEvent.On += (s, e) =>
+ {
+ MoreOptionItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
+ Clicked?.Invoke(this, new MoreOptionItemEventArgs() { Item = selected });
+ };
+
+ _openedEvent.On += (s, e) => Opened?.Invoke(this, EventArgs.Empty);
+ _closedEvent.On += (s, e) => Closed?.Invoke(this, EventArgs.Empty);
+
+ }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ return Interop.Eext.eext_more_option_add(parent);
+ }
+
+ public MoreOptionDirection Direction
+ {
+ get
+ {
+ int dir = Interop.Eext.eext_more_option_direction_get(this);
+ return (MoreOptionDirection)dir;
+ }
+
+ set
+ {
+ Interop.Eext.eext_more_option_direction_set(this, (int)value);
+ }
+ }
+
+ public bool IsOpened
+ {
+ get
+ {
+ return Interop.Eext.eext_more_option_opened_get(this);
+ }
+
+ set
+ {
+ Interop.Eext.eext_more_option_opened_set(this, value);
+ }
+ }
+ }
+
+ public enum MoreOptionDirection
+ {
+ Top,
+ Bottom,
+ Left,
+ Right
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItem.cs b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItem.cs
new file mode 100644
index 0000000..ad5bf58
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItem.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ public class MoreOptionItem
+ {
+ const string MainTextPartName = "selector,main_text";
+ const string SubTextPartName = "selector,sub_text";
+ const string IconPartName = "item,icon";
+
+ string _mainText;
+ string _subText;
+ Image _icon;
+ IntPtr _handle;
+
+ public IntPtr Handle
+ {
+ get
+ {
+ return _handle;
+ }
+ set
+ {
+ if (_handle == value) return;
+ _handle = value;
+ if (_mainText != null)
+ Interop.Eext.eext_more_option_item_part_text_set(Handle, MainTextPartName, _mainText);
+ if (_subText != null)
+ Interop.Eext.eext_more_option_item_part_text_set(Handle, SubTextPartName, _subText);
+ if (_icon != null)
+ Interop.Eext.eext_more_option_item_part_content_set(Handle, IconPartName, _icon);
+ }
+ }
+
+ public MoreOptionItem()
+ {
+ _icon = null;
+ }
+
+ public string MainText
+ {
+ set
+ {
+ if (_mainText == value) return;
+ _mainText = value;
+ if (Handle != IntPtr.Zero)
+ {
+ Interop.Eext.eext_more_option_item_part_text_set(Handle, MainTextPartName, _mainText);
+ }
+ }
+
+ get
+ {
+ return _mainText;
+ }
+ }
+
+ public string SubText
+ {
+ set
+ {
+ if (_subText == value) return;
+ _subText = value;
+ if (Handle != IntPtr.Zero)
+ {
+ Interop.Eext.eext_more_option_item_part_text_set(Handle, SubTextPartName, _subText);
+ }
+ }
+
+ get
+ {
+ return _subText;
+ }
+ }
+
+ public Image Icon
+ {
+ set
+ {
+ if (_icon == value) return;
+ _icon = value;
+ if (Handle != IntPtr.Zero)
+ {
+ Interop.Eext.eext_more_option_item_part_content_set(Handle, IconPartName, _icon);
+ }
+ }
+ get
+ {
+ return _icon;
+ }
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItemEventArgs.cs b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItemEventArgs.cs
new file mode 100644
index 0000000..7bc9723
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionItemEventArgs.cs
@@ -0,0 +1,10 @@
+
+using System;
+
+namespace ElmSharp.Wearable
+{
+ public class MoreOptionItemEventArgs : EventArgs
+ {
+ public MoreOptionItem Item { get; set; }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionList.cs b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionList.cs
new file mode 100644
index 0000000..577bc8e
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/MoreOptionList.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ class MoreOptionList : IList<MoreOptionItem>
+ {
+ MoreOption Owner { get; set; }
+
+ List<MoreOptionItem> Items { get; set; }
+
+ public int Count => Items.Count;
+
+ public bool IsReadOnly => false;
+
+ public MoreOptionItem this[int index]
+ {
+ get
+ {
+ return Items[index];
+ }
+
+ set
+ {
+ Items[index] = value;
+ }
+ }
+
+ public MoreOptionList(MoreOption owner)
+ {
+ Owner = owner;
+ Items = new List<MoreOptionItem>();
+ }
+
+ public void Add(MoreOptionItem item)
+ {
+ item.Handle = Interop.Eext.eext_more_option_item_append(Owner);
+ Items.Add(item);
+ }
+
+ public void AddFirst(MoreOptionItem item)
+ {
+ item.Handle = Interop.Eext.eext_more_option_item_prepend(Owner);
+ Items.Insert(0, item);
+ }
+
+ public void AddLast(MoreOptionItem item)
+ {
+ Add(item);
+ }
+
+ public int IndexOf(MoreOptionItem item)
+ {
+ return Items.IndexOf(item);
+ }
+
+ public void Insert(int index, MoreOptionItem item)
+ {
+ if (Items.Count < index + 1 || index < 0)
+ throw new ArgumentOutOfRangeException("index is not valid in the MoreOption");
+
+ MoreOptionItem target = Items[index];
+ item.Handle = Interop.Eext.eext_more_option_item_insert_after(Owner, target.Handle);
+ Items.Insert(index, item);
+ }
+
+ public void RemoveAt(int index)
+ {
+ if (Items.Count < index + 1 || index < 0)
+ throw new ArgumentOutOfRangeException("index is not valid in the MoreOptionList");
+
+ MoreOptionItem item = Items[index];
+ Interop.Eext.eext_more_option_item_del(item.Handle);
+ item.Handle = IntPtr.Zero;
+ Items.RemoveAt(index);
+ }
+
+ public void Clear()
+ {
+ Interop.Eext.eext_more_option_items_clear(Owner);
+ foreach (MoreOptionItem item in Items)
+ {
+ item.Handle = IntPtr.Zero;
+ }
+ Items.Clear();
+ }
+
+ public bool Contains(MoreOptionItem item)
+ {
+ return Items.Contains(item);
+ }
+
+ public void CopyTo(MoreOptionItem[] array, int arrayIndex)
+ {
+ Items.CopyTo(array, arrayIndex);
+ }
+
+ public bool Remove(MoreOptionItem item)
+ {
+ if (Items.Contains(item))
+ {
+ Interop.Eext.eext_more_option_item_del(item.Handle);
+ Items.Remove(item);
+ return true;
+ }
+ return false;
+ }
+
+ public IEnumerator<MoreOptionItem> GetEnumerator()
+ {
+ return Items.GetEnumerator();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return Items.GetEnumerator();
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/PointerEventArgs.cs b/ElmSharp.Wearable/ElmSharp.Wearable/PointerEventArgs.cs
new file mode 100644
index 0000000..d746824
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/PointerEventArgs.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ class PointerEventArgs : EventArgs
+ {
+ public IntPtr Pointer { get; set; }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelector.cs b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelector.cs
new file mode 100644
index 0000000..eb0181c
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelector.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ public class RotarySelector : Layout
+ {
+ const string IconPartName = "selector,icon";
+ const string ContentPartName = "selector,content";
+ const string BgPartName = "selector,bg_image";
+
+ const string ItemSelectedEventName = "item,selected";
+ const string ItemClickedEventName = "item,clicked";
+
+ public event EventHandler<RotarySelectorItemEventArgs> Selected;
+ public event EventHandler<RotarySelectorItemEventArgs> Clicked;
+
+ SmartEvent<PointerEventArgs> _selectedEvent;
+ SmartEvent<PointerEventArgs> _clickedEvent;
+ Image _normalBgImage;
+
+ public IList<RotarySelectorItem> Items { get; private set; }
+
+ public RotarySelector(EvasObject parent) : base(parent)
+ {
+ Items = new RotarySelectorList(this);
+
+ _selectedEvent = new SmartEvent<PointerEventArgs>(this, "item,selected", (d, o, info) => new PointerEventArgs { Pointer = info });
+ _clickedEvent = new SmartEvent<PointerEventArgs>(this, "item,clicked", (d, o, info) => new PointerEventArgs { Pointer = info });
+ _selectedEvent.On += (s, e) =>
+ {
+ RotarySelectorItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
+ Selected?.Invoke(this, new RotarySelectorItemEventArgs { Item = selected });
+ };
+
+ _clickedEvent.On += (s, e) =>
+ {
+ RotarySelectorItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
+ Clicked?.Invoke(this, new RotarySelectorItemEventArgs { Item = selected });
+ };
+ }
+
+ public RotarySelectorItem SelectedItem
+ {
+ get
+ {
+ IntPtr selectedPtr = Interop.Eext.eext_rotary_selector_selected_item_get(this);
+ if (selectedPtr == IntPtr.Zero) return null;
+ RotarySelectorItem item = Items.FirstOrDefault(i => i.Handle == selectedPtr);
+ return item;
+ }
+
+ set
+ {
+ if (!Items.Contains(value)) return;
+ Interop.Eext.eext_rotary_selector_selected_item_set(this, value.Handle);
+ }
+ }
+
+ void setPart(ref Image prop, string partName, State state, Image img)
+ {
+ if (prop == img) return;
+ prop = img;
+ if (this != null)
+ {
+ Interop.Eext.eext_rotary_selector_part_content_set(this, partName, (int)state, prop);
+ }
+ }
+ void setPart(ref Color prop, string partName, State state, Color color)
+ {
+ if (prop == color) return;
+ if (this != null)
+ {
+ Interop.Eext.eext_rotary_selector_part_color_set(this, partName, (int)state, color.R, color.G, color.B, color.A);
+ }
+ }
+
+ public Image BackgroundImage { set => setPart(ref _normalBgImage, BgPartName, State.Normal, value); get => _normalBgImage; }
+
+ protected override IntPtr CreateHandle(EvasObject parent)
+ {
+ IntPtr ptr = Interop.Eext.eext_rotary_selector_add(parent);
+ Interop.Eext.eext_rotary_object_event_activated_set(ptr, true);
+ return ptr;
+ }
+
+ internal enum State
+ {
+ Normal,
+ Pressed
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItem.cs b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItem.cs
new file mode 100644
index 0000000..d6abba8
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItem.cs
@@ -0,0 +1,163 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ public class RotarySelectorItem
+ {
+ const string MainTextPartName = "selector,main_text";
+ const string SubTextPartName = "selector,sub_text";
+ const string IconPartName = "item,icon";
+ const string BgPartName = "item,bg_image";
+ const string SelectorIconPartName = "selector,icon";
+
+ string _mainText;
+ string _subText;
+
+ Color _mainTextColor;
+ Color _subTextColor;
+
+ Image _normalIconImage;
+ Image _pressedIconImage;
+ Image _disabledIconImage;
+ Image _selectedIconImage;
+
+ Image _normalBgImage;
+ Image _pressedBgImage;
+ Image _disabledBgImage;
+ Image _selectedBgImage;
+
+ Color _normalBgColor;
+ Color _pressedBgColor;
+ Color _disabledBgColor;
+ Color _selectedBgColor;
+
+ Image _selectorIconImage;
+
+ IntPtr _handle;
+
+ public IntPtr Handle
+ {
+ set
+ {
+ if (_handle == value) return;
+ _handle = value;
+
+ if (_handle == null) return;
+
+ setPart(ref _mainText, MainTextPartName);
+ setPart(ref _subText, SubTextPartName);
+ setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal);
+ setPart(ref _subTextColor, SubTextPartName, ItemState.Normal);
+
+ setPart(ref _normalIconImage, IconPartName, ItemState.Normal);
+ setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed);
+ setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled);
+ setPart(ref _selectedIconImage, IconPartName, ItemState.Selected);
+
+ setPart(ref _normalBgImage, BgPartName, ItemState.Normal);
+ setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed);
+ setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled);
+ setPart(ref _selectedBgImage, BgPartName, ItemState.Selected);
+
+ setPart(ref _normalBgColor, BgPartName, ItemState.Normal);
+ setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed);
+ setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled);
+ setPart(ref _selectedBgColor, BgPartName, ItemState.Selected);
+
+ setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal);
+ }
+
+ get
+ {
+ return _handle;
+ }
+ }
+
+ void setPart(ref Image prop, string partName, ItemState state)
+ {
+ if (prop != null)
+ {
+ Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, prop);
+ }
+ }
+ void setPart(ref Color prop, string partName, ItemState state)
+ {
+ if (prop != default(Color))
+ {
+ Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, prop.R, prop.G, prop.B, prop.A);
+ }
+ }
+
+ void setPart(ref string prop, string partName)
+ {
+ if (prop != null)
+ {
+ Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, prop);
+ }
+ }
+
+ void setPart(ref Image prop, string partName, ItemState state, Image img)
+ {
+ if (prop == img) return;
+ prop = img;
+ if (Handle != null)
+ {
+ Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, img);
+ }
+ }
+
+ void setPart(ref Color prop, string partName, ItemState state, Color color)
+ {
+ if (prop == color) return;
+ prop = color;
+ if (Handle != null)
+ {
+ Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, color.R, color.G, color.B, color.A);
+ }
+ }
+
+ void setPart(ref string prop, string partName, string txt)
+ {
+ if (prop == txt) return;
+ prop = txt;
+ if (Handle != null)
+ {
+ Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, txt);
+ }
+ }
+
+ public string MainText { set => setPart(ref _mainText, MainTextPartName, value); get => _mainText; }
+ public string SubText { set => setPart(ref _subText, SubTextPartName, value); get => _subText; }
+
+ public Color MainTextColor { set => setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal, value); get => _mainTextColor; }
+ public Color SubextColor { set => setPart(ref _subTextColor, SubTextPartName, ItemState.Normal, value); get => _subTextColor; }
+
+ public Image NormalIconImage { set => setPart(ref _normalIconImage, IconPartName, ItemState.Normal, value); get => _normalIconImage; }
+ public Image PressedIconImage { set => setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed, value); get => _pressedIconImage; }
+ public Image DisabledIconImage { set => setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled, value); get => _disabledIconImage; }
+ public Image SelectedIconImage { set => setPart(ref _selectedIconImage, IconPartName, ItemState.Selected, value); get => _selectedIconImage; }
+
+
+ public Image NormalBackgroundImage { set => setPart(ref _normalBgImage, BgPartName, ItemState.Normal, value); get => _normalBgImage; }
+ public Image PressedBackgroundImage { set => setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed, value); get => _pressedBgImage; }
+ public Image DisabledBackgroundImage { set => setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled, value); get => _disabledBgImage; }
+ public Image SelectedBackgroundImage { set => setPart(ref _selectedBgImage, BgPartName, ItemState.Selected, value); get => _selectedBgImage; }
+
+ public Color NormalBackgroundColor { set => setPart(ref _normalBgColor, BgPartName, ItemState.Normal, value); get => _normalBgColor; }
+ public Color PressedBackgroundColor { set => setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed, value); get => _pressedBgColor; }
+ public Color DisabledBackgroundColor { set => setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled, value); get => _disabledBgColor; }
+ public Color SelectedBackgroundColor { set => setPart(ref _selectedBgColor, BgPartName, ItemState.Selected, value); get => _selectedBgColor; }
+
+ public Image SelectorIconImage { set => setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal, value); get => _selectorIconImage; }
+
+ internal enum ItemState
+ {
+ Normal,
+ Pressed,
+ Disabled,
+ Selected
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItemEventArgs.cs b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItemEventArgs.cs
new file mode 100644
index 0000000..401be2f
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorItemEventArgs.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ public class RotarySelectorItemEventArgs : EventArgs
+ {
+ public RotarySelectorItem Item { get; set; }
+ }
+}
diff --git a/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorList.cs b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorList.cs
new file mode 100644
index 0000000..2f73984
--- /dev/null
+++ b/ElmSharp.Wearable/ElmSharp.Wearable/RotarySelectorList.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ElmSharp.Wearable
+{
+ class RotarySelectorList : IList<RotarySelectorItem>
+ {
+ RotarySelector _owner;
+ List<RotarySelectorItem> Items { get; set; }
+
+ public RotarySelectorList(RotarySelector owner)
+ {
+ this._owner = owner;
+ Items = new List<RotarySelectorItem>();
+ }
+
+ public RotarySelectorItem this[int index] { get => Items[index]; set => Items[index] = value; }
+
+ public int Count => Items.Count;
+
+ public bool IsReadOnly => false;
+
+ public void Add(RotarySelectorItem item)
+ {
+ item.Handle = Interop.Eext.eext_rotary_selector_item_append(_owner);
+ Items.Add(item);
+ }
+
+ public void Clear()
+ {
+ Interop.Eext.eext_rotary_selector_items_clear(_owner);
+ }
+
+ public bool Contains(RotarySelectorItem item)
+ {
+ return Items.Contains(item);
+ }
+
+ public void CopyTo(RotarySelectorItem[] array, int arrayIndex)
+ {
+ Items.CopyTo(array, arrayIndex);
+ }
+
+ public IEnumerator<RotarySelectorItem> GetEnumerator()
+ {
+ return Items.GetEnumerator();
+ }
+
+ public int IndexOf(RotarySelectorItem item)
+ {
+ return Items.IndexOf(item);
+ }
+
+ public void Insert(int index, RotarySelectorItem item)
+ {
+ if (Items.Count <= index || index < 0)
+ {
+ throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
+ }
+ RotarySelectorItem target = Items[index];
+ item.Handle = Interop.Eext.eext_rotary_selector_item_insert_after(_owner, target.Handle);
+ Items.Insert(index, item);
+ }
+
+ public bool Remove(RotarySelectorItem item)
+ {
+ if (Items.Contains(item))
+ {
+ Interop.Eext.eext_rotary_selector_item_del(item.Handle);
+ Items.Remove(item);
+ return true;
+ }
+ return false;
+ }
+
+ public void RemoveAt(int index)
+ {
+ if (Items.Count < index + 1 || index < 0)
+ {
+ throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
+ }
+
+ RotarySelectorItem target = Items[index];
+ Interop.Eext.eext_rotary_selector_item_del(target.Handle);
+ target.Handle = IntPtr.Zero;
+ Items.RemoveAt(index);
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return Items.GetEnumerator();
+ }
+ }
+}
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleDatetime.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleDatetime.cs
new file mode 100644
index 0000000..4bbd8d9
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleDatetime.cs
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_datetime_add(IntPtr datetime, IntPtr surface);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleGenList.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleGenList.cs
new file mode 100644
index 0000000..b3581ca
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleGenList.cs
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_genlist_add(IntPtr genlist, IntPtr surface);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_genlist_scroller_policy_set(IntPtr circleGenlist, int policyHorisontal, int policyVertical);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_genlist_scroller_policy_get(IntPtr circleGenlist, out int policyHorisontal, out int policyVertical);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_genlist_scroller_policy_get(IntPtr circleGenlist, out int policyHorisontal, IntPtr policyVertical);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_genlist_scroller_policy_get(IntPtr circleGenlist, IntPtr policyHorisontal, out int policyVertical);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleObject.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleObject.cs
new file mode 100644
index 0000000..e1940f6
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleObject.cs
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_add(IntPtr obj, IntPtr surface);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_disabled_set(IntPtr obj, bool disabled);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern bool eext_circle_object_disabled_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_line_width_set(IntPtr obj, int lineWidth);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern int eext_circle_object_line_width_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_angle_set(IntPtr obj, double angle);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_angle_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_angle_offset_set(IntPtr obj, double offset);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_angle_offset_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_angle_min_max_set(IntPtr obj, double min, double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_angle_min_max_get(IntPtr obj, out double min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_value_min_max_set(IntPtr obj, double min, double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_value_min_max_get(IntPtr obj, out double min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_value_set(IntPtr obj, double value);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_value_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_color_set(IntPtr obj, int r, int g, int b, int a);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_color_get(IntPtr obj, out int r, out int g, out int b, out int a);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_radius_set(IntPtr obj, double radius);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_radius_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_line_width_set(IntPtr obj, string item, int lineWidth);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern int eext_circle_object_item_line_width_get(IntPtr obj, string item);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_set(IntPtr obj, string item, double angle);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_item_angle_get(IntPtr obj, string item);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_offset_set(IntPtr obj, string item, double offset);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_item_angle_offset_get(IntPtr obj, string item);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_min_max_set(IntPtr obj, string item, double min, double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_min_max_get(IntPtr obj, string item, out double min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_min_max_get(IntPtr obj, string item, out double min, IntPtr max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_angle_min_max_get(IntPtr obj, string item, IntPtr min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_value_min_max_set(IntPtr obj, string item, double min, double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_value_min_max_get(IntPtr obj, string item, out double min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_value_min_max_get(IntPtr obj, string item, out double min, IntPtr max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_value_min_max_get(IntPtr obj, string item, IntPtr min, out double max);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_value_set(IntPtr obj, string item, double value);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_item_value_get(IntPtr obj, string item);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_color_set(IntPtr obj, string item, int r, int g, int b, int a);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_color_get(IntPtr obj, string item, out int r, out int g, out int b, out int a);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_item_radius_set(IntPtr obj, string item, double radius);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_item_radius_get(IntPtr obj, string item);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleProgressBar.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleProgressBar.cs
new file mode 100644
index 0000000..8c60209
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleProgressBar.cs
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_progressbar_add(IntPtr parent, IntPtr surface);
+
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleScroller.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleScroller.cs
new file mode 100644
index 0000000..2502100
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleScroller.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_scroller_add(IntPtr scroller, IntPtr surface);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_scroller_policy_set(IntPtr obj, int policy_h, int policy_v);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_scroller_policy_get(IntPtr obj, IntPtr policy_h, IntPtr policy_v);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_scroller_policy_get(IntPtr obj, out int policy_h, IntPtr policy_v);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_scroller_policy_get(IntPtr obj, IntPtr policy_h, out int policy_v);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleSlider.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSlider.cs
new file mode 100644
index 0000000..d2eeef3
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSlider.cs
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_slider_add(IntPtr parent, IntPtr surface);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_circle_object_slider_step_set(IntPtr obj, double value);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern double eext_circle_object_slider_step_get(IntPtr obj);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleSpinner.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSpinner.cs
new file mode 100644
index 0000000..eb221eb
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSpinner.cs
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_spinner_add(IntPtr spinner, IntPtr surface);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_object_spinner_angle_set(IntPtr spinner, double angle);
+
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.CircleSurface.cs b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSurface.cs
new file mode 100644
index 0000000..4b5f820
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.CircleSurface.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_surface_conformant_add(IntPtr conformant);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_surface_layout_add(IntPtr layout);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_surface_naviframe_add(IntPtr naviframe);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_circle_surface_del(IntPtr surface);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.MoreOption.cs b/ElmSharp.Wearable/Interop/Interop.Eext.MoreOption.cs
new file mode 100644
index 0000000..95b1de8
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.MoreOption.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_add(IntPtr parent);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_direction_set(IntPtr obj, int direction);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern int eext_more_option_direction_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_item_append(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_item_del(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_item_domain_translatable_part_text_set(IntPtr item, string part_name, string domain, string text);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_item_insert_after(IntPtr obj, IntPtr after);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_item_insert_before(IntPtr obj, IntPtr before);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_item_part_content_get(IntPtr obj, string part_name);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_item_part_content_set(IntPtr item, string part_name, IntPtr content);
+
+ [DllImport(Libraries.Eext, EntryPoint = "eext_more_option_item_part_text_get")]
+ static extern IntPtr _eext_more_option_item_part_text_get(IntPtr item, string part_name);
+
+ internal static string eext_more_option_item_part_text_get(IntPtr item, string part_name)
+ {
+ var ptr = _eext_more_option_item_part_text_get(item, part_name);
+ return Marshal.PtrToStringAnsi(ptr);
+ }
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_item_part_text_set(IntPtr item, string part_name, string text);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_item_prepend(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_items_clear(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_more_option_items_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern bool eext_more_option_opened_get(IntPtr obj);
+
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_more_option_opened_set(IntPtr obj, bool opened);
+ }
+}
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.Rotary.cs b/ElmSharp.Wearable/Interop/Interop.Eext.Rotary.cs
new file mode 100644
index 0000000..5348d39
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.Rotary.cs
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_object_event_activated_set(IntPtr circleObject, bool activated);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Eext.RotarySelector.cs b/ElmSharp.Wearable/Interop/Interop.Eext.RotarySelector.cs
new file mode 100644
index 0000000..457cfbb
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Eext.RotarySelector.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Runtime.InteropServices;
+
+
+internal static partial class Interop
+{
+ internal static partial class Eext
+ {
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_add(IntPtr parent);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_item_append(IntPtr obj);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_item_prepend(IntPtr obj);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_item_insert_after(IntPtr obj, IntPtr after);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_item_insert_before(IntPtr obj, IntPtr before);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_del(IntPtr item);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_items_clear(IntPtr obj);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_part_text_set(IntPtr item, string part_name, string text);
+ [DllImport(Libraries.Eext)]
+ internal static extern string eext_rotary_selector_item_part_text_get(IntPtr item, string part_name);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_domain_translatable_part_text_set(IntPtr item, string part_name, string domain, string text);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_part_content_set(IntPtr item, string part_name, int state, IntPtr content);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_item_part_content_get(IntPtr item, string part_name, int state);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_part_content_set(IntPtr obj, string part_name, int state, IntPtr content);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_part_content_get(IntPtr obj, string part_name, int state);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_part_color_set(IntPtr item, string part_name, int state, int r, int g, int b, int a);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_item_part_color_get(IntPtr item, string part_name, int state, out int r, out int g, out int b, out int a);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_part_color_set(IntPtr obj, string part_name, int state, int r, int g, int b, int a);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_part_color_get(IntPtr obj, string part_name, int state, out int r, out int g, out int b, out int a);
+ [DllImport(Libraries.Eext)]
+ internal static extern void eext_rotary_selector_selected_item_set(IntPtr obj, IntPtr item);
+ [DllImport(Libraries.Eext)]
+ internal static extern IntPtr eext_rotary_selector_selected_item_get(IntPtr obj);
+
+ }
+}
diff --git a/ElmSharp.Wearable/Interop/Interop.Evas.cs b/ElmSharp.Wearable/Interop/Interop.Evas.cs
new file mode 100644
index 0000000..dbe48e8
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Evas.cs
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class Evas
+ {
+
+ [DllImport(Libraries.Evas)]
+ internal static extern void evas_object_resize(IntPtr obj, int w, int h);
+ }
+} \ No newline at end of file
diff --git a/ElmSharp.Wearable/Interop/Interop.Libraries.cs b/ElmSharp.Wearable/Interop/Interop.Libraries.cs
new file mode 100644
index 0000000..3668358
--- /dev/null
+++ b/ElmSharp.Wearable/Interop/Interop.Libraries.cs
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+internal static partial class Interop
+{
+ internal static class Libraries
+ {
+ internal const string Elementary = "libelementary.so.1";
+ internal const string Eext = "libefl-extension.so.0";
+ internal const string Evas = "libevas.so.1";
+ }
+}