Merge "[NUI] Remove deprecated APIs" 5.0.0-preview1-00369
authordongsug song <dongsug.song@samsung.com>
Wed, 8 Nov 2017 06:52:14 +0000 (06:52 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Wed, 8 Nov 2017 06:52:14 +0000 (06:52 +0000)
211 files changed:
build.cmd
build.sh
build/build.dummy.csproj
build/build.proj
build/common.targets [new file with mode: 0644]
build/directories.props
internal/src/Directory.Build.props [new file with mode: 0644]
internal/src/Directory.Build.targets [new file with mode: 0644]
internal/src/Tizen.CallManager/Interop/Interop.CallManager.cs [moved from src/Tizen.CallManager/Interop/Interop.CallManager.cs with 100% similarity]
internal/src/Tizen.CallManager/Interop/Interop.GsList.cs [moved from src/Tizen.CallManager/Interop/Interop.GsList.cs with 100% similarity]
internal/src/Tizen.CallManager/Interop/Interop.Libraries.cs [moved from src/Tizen.CallManager/Interop/Interop.Libraries.cs with 100% similarity]
internal/src/Tizen.CallManager/Tizen.CallManager.csproj [moved from src/Tizen.CallManager/Tizen.CallManager.csproj with 54% similarity]
internal/src/Tizen.CallManager/Tizen.CallManager.sln [moved from src/Tizen.CallManager/Tizen.CallManager.sln with 95% similarity]
internal/src/Tizen.CallManager/Tizen.CallManager/CallData.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CallData.cs with 87% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CallEventData.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CallEventData.cs with 88% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CallManager.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CallManager.cs with 95% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CmClientHandle.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CmClientHandle.cs with 95% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CmEnumerations.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CmEnumerations.cs with 95% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CmEventArgs.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CmEventArgs.cs with 88% similarity, mode: 0644]
internal/src/Tizen.CallManager/Tizen.CallManager/CmUtility.cs [moved from src/Tizen.CallManager/Tizen.CallManager/CmUtility.cs with 100% similarity]
internal/src/Tizen.CallManager/Tizen.CallManager/ConferenceCallData.cs [moved from src/Tizen.CallManager/Tizen.CallManager/ConferenceCallData.cs with 89% similarity, mode: 0644]
internal/src/Tizen.Network.Mtp/Interop/Interop.Glib.cs [moved from src/Tizen.Network.Mtp/Interop/Interop.Glib.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Interop/Interop.Libc.cs [moved from src/Tizen.Network.Mtp/Interop/Interop.Libc.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Interop/Interop.Libraries.cs [moved from src/Tizen.Network.Mtp/Interop/Interop.Libraries.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Interop/Interop.Mtp.cs [moved from src/Tizen.Network.Mtp/Interop/Interop.Mtp.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp.csproj [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp.csproj with 54% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp.sln [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp.sln with 91% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpDevice.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpDevice.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpEnumerations.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpEnumerations.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpErrorFactory.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpErrorFactory.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpEventArgs.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpEventArgs.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManager.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManager.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManagerEvent.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManagerEvent.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManagerImpl.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpManagerImpl.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpObject.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpObject.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpStorage.cs [moved from src/Tizen.Network.Mtp/Tizen.Network.Mtp/MtpStorage.cs with 100% similarity]
internal/src/Tizen.Network.Mtp/doc/api/Tizen.Network.Mtp.md [moved from src/Tizen.Network.Mtp/doc/api/Tizen.Network.Mtp.md with 100% similarity]
internal/src/Tizen.Tapi/Interop/Interop.Libraries.cs [moved from src/Tizen.Tapi/Interop/Interop.Libraries.cs with 100% similarity]
internal/src/Tizen.Tapi/Interop/Interop.Tapi.cs [moved from src/Tizen.Tapi/Interop/Interop.Tapi.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi.csproj [moved from src/Tizen.Tapi/Tizen.Tapi.csproj with 51% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi.sln [moved from src/Tizen.Tapi/Tizen.Tapi.sln with 91% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Call.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Call.cs with 98% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/CallData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/CallData.cs with 89% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/CallEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/CallEnumerations.cs with 96% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/CallStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/CallStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Modem.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Modem.cs with 97% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/ModemData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/ModemData.cs with 84% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/ModemEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/ModemEnumerations.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/ModemStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/ModemStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Network.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Network.cs with 97% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/NetworkData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/NetworkData.cs with 87% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/NetworkEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/NetworkEnumerations.cs with 95% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/NetworkStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/NetworkStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Oem.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Oem.cs with 97% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/OemData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/OemData.cs with 91% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/OemStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/OemStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Phonebook.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Phonebook.cs with 98% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/PhonebookData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/PhonebookData.cs with 88% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/PhonebookEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/PhonebookEnumerations.cs with 95% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/PhonebookStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/PhonebookStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/SatData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SatData.cs with 88% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SatEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SatEnumerations.cs with 95% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SatStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SatStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Sim.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Sim.cs with 98% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SimData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SimData.cs with 86% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SimEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SimEnumerations.cs with 97% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SimStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SimStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/SmsData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SmsData.cs with 88% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SmsEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SmsEnumerations.cs with 96% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SmsStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SmsStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/Ss.cs [moved from src/Tizen.Tapi/Tizen.Tapi/Ss.cs with 98% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SsData.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SsData.cs with 89% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SsEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SsEnumerations.cs with 97% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/SsStructs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/SsStructs.cs with 100% similarity]
internal/src/Tizen.Tapi/Tizen.Tapi/TapiEnumerations.cs [moved from src/Tizen.Tapi/Tizen.Tapi/TapiEnumerations.cs with 99% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/TapiEventArgs.cs [moved from src/Tizen.Tapi/Tizen.Tapi/TapiEventArgs.cs with 89% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/TapiHandle.cs [moved from src/Tizen.Tapi/Tizen.Tapi/TapiHandle.cs with 99% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/TapiManager.cs [moved from src/Tizen.Tapi/Tizen.Tapi/TapiManager.cs with 95% similarity, mode: 0644]
internal/src/Tizen.Tapi/Tizen.Tapi/TapiUtility.cs [moved from src/Tizen.Tapi/Tizen.Tapi/TapiUtility.cs with 100% similarity]
internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Libraries.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.VoiceControlCommand.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Widget.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.csproj [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.sln [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/AsrResultEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentCommandListEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentLanguageChangedEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ErrorOccurredEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ExceptionFactory.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/RecognitionResult.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ServiceStateChangedEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/StateChangedEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/TooltipEventArgs.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommand.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommandList.cs [new file with mode: 0755]
internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceControlWidget.cs [new file with mode: 0755]
packaging/csapi-tizenfx.spec
packaging/csapi-tizenfx.spec.in [new file with mode: 0644]
pkg/PlatformFileList.txt
pkg/PublicModuleList.txt [deleted file]
pkg/Tizen.NET.Internals.nuspec [moved from pkg/Tizen.NET.Private.nuspec with 50% similarity]
pkg/Tizen.NET.nuspec
src/Directory.Build.props
src/Directory.Build.targets [new file with mode: 0644]
src/ElmSharp.Wearable/ElmSharp.Wearable/CircleSurface.cs [changed mode: 0644->0755]
src/ElmSharp/ElmSharp/Elementary.cs [changed mode: 0755->0644]
src/Tizen.Multimedia.Camera/doc/api/Tizen.Multimedia.Camera.md [new file with mode: 0644]
src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs
src/Tizen.Multimedia.MediaPlayer/Player/Player.cs
src/Tizen.Multimedia.MediaPlayer/doc/api/Tizen.Multimedia.Player.md [new file with mode: 0644]
src/Tizen.Multimedia.Metadata/ObjectDescriptionBuilder.cs
src/Tizen.Multimedia.Remoting/doc/api/Tizen.Multimedia.Remoting.ScreenMirroring.md [new file with mode: 0644]
src/Tizen.Multimedia.Vision/doc/api/Tizen.Multimedia.Vision.MediaVisionSource.md [new file with mode: 0644]
src/Tizen.Multimedia/doc/api/Tizen.Multimedia.MediaPacket.md [new file with mode: 0644]
src/Tizen.NUI/src/internal/Application.cs
src/Tizen.NUI/src/internal/ManualPINVOKE.cs
src/Tizen.NUI/src/internal/NDalic.cs
src/Tizen.NUI/src/internal/NDalicPINVOKE.cs
src/Tizen.NUI/src/internal/VersionCheck.cs [new file with mode: 0755]
src/Tizen.NUI/src/internal/ViewWrapperImpl.cs
src/Tizen.NUI/src/public/BaseComponents/ImageView.cs
src/Tizen.NUI/src/public/NUIConstants.cs
src/Tizen.NUI/src/public/VisualMaps.cs
src/Tizen.NUI/src/public/Window.cs
src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionInternalManager.cs
src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiErrorFactory.cs
src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
src/Tizen.Pims.Calendar/Interop/Interop.Record.cs
src/Tizen.Pims.Calendar/Tizen.Pims.Calendar/CalendarRecord.cs
src/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodEditor.cs
test/NUITestSample/NUITestSample.sln [new file with mode: 0755]
test/NUITestSample/NUITestSample/NUITestSample.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/NUITestSample.csproj [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/as-is-test-sample.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/color-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/control-dashboard.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/custom-control.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/dali-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/date-picker-using-json/ViewRegistryHelper.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/date-picker-using-json/date-picker-using-json.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/date-picker.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/dispose-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/feedkey-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/flex-container.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/gc-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/hello-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/hello-world.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/image-orientation-correct-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/image-view.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/positionUsesPivotPoint-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/relative-vector.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/scroll-view.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/sibling-order-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/svg-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/test1.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/text-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/text-test2.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/timer-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/ttsplayer-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/user-alphafunction.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/view-navi-property.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-animation-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-animation-test2.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-animation-test3.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-view-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-view-test2.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visual-view-test3.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visuals-example.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactData.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactView.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/visuals-using-custom-view.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/examples/widget-view-test.cs [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_color.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_gloss.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_nmap.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_color.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_nmap.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Kid1.svg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/Mail.svg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/World.svg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/application-icon-0.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/arrow.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/background-blocks.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/dali-logo-anim.gif [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/dog-anim.gif [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/echo.gif [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-0.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-1.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-2.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-3.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-4.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-5.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/gallery-small-43.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/image-1.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/image-2.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/image-3.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/mask.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/not_yet_sign.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/star-dim.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/star-highlight.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/star-mod.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/images/test-image.jpg [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/control-dashboard.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/date-picker-template.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/date-picker-theme.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/date-picker.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/spin.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/json/style-example-theme-one.json [new file with mode: 0755]
test/NUITestSample/NUITestSample/res/models/Dino.mtl [new file with mode: 0755]
test/NUITestSample/NUITestSample/shared/res/NUITestSample.png [new file with mode: 0755]
test/NUITestSample/NUITestSample/tizen-manifest.xml [new file with mode: 0755]

index 2862a21..8755816 100644 (file)
--- a/build.cmd
+++ b/build.cmd
@@ -26,11 +26,14 @@ if /I [%2] == [] (
   echo No module specified.
   exit /b !ERRORLEVEL!
 )
-call dotnet msbuild %~dp0build\build.proj /t:build /p:Project=%2
+call dotnet msbuild %~dp0build\build.proj /nologo /t:restore /p:Project=%2
+call dotnet msbuild %~dp0build\build.proj /nologo /t:build /p:Project=%2
 goto :EOF
 
 :FullBuild
-call dotnet msbuild %~dp0build\build.proj /t:build
+call dotnet msbuild %~dp0build\build.proj /nologo /t:clean
+call dotnet msbuild %~dp0build\build.proj /nologo /t:restore
+call dotnet msbuild %~dp0build\build.proj /nologo /t:build
 goto :EOF
 
 :DummyBuild
@@ -38,14 +41,26 @@ call dotnet build %~dp0build\build.dummy.csproj
 goto :EOF
 
 :Pack
-set NUGET_VERSION_OPT=
-if /I not [%2] == [] set NUGET_VERSION_OPT=-Version %2
+set VERSION=%2
+set VERSION_INTERNAL=%3
+call :GetUnixTime TIMESTAMP
+if /I [%VERSION%] == [] set VERSION=5.0.0-local-%TIMESTAMP%
+if /I [%VERSION_INTERNAL%] == [] set VERSION_INTERNAL=%VERSION%
 set OUTDIR=%~dp0Artifacts
 set NUGET_CMD=%~dp0tools\NuGet.exe
-%NUGET_CMD% pack %~dp0pkg\Tizen.NET.Private.nuspec -Symbols -NoPackageAnalysis %NUGET_VERSION_OPT% -BasePath %~dp0 -OutputDirectory %OUTDIR%
-%NUGET_CMD% pack %~dp0pkg\Tizen.NET.nuspec -Symbols -NoPackageAnalysis %NUGET_VERSION_OPT% -BasePath %~dp0 -OutputDirectory %OUTDIR%
+%NUGET_CMD% pack %~dp0pkg\Tizen.NET.nuspec -NoPackageAnalysis -Version %VERSION% -BasePath %~dp0 -OutputDirectory %OUTDIR%
+%NUGET_CMD% pack %~dp0pkg\Tizen.NET.Internals.nuspec -NoPackageAnalysis -Version %VERSION_INTERNAL% -BasePath %~dp0 -OutputDirectory %OUTDIR%
 goto :EOF
 
 :Clean
-call dotnet msbuild %~dp0build\build.proj /t:clean
+call dotnet msbuild %~dp0build\build.proj /nologo /t:clean
 goto :EOF
+
+:GetUnixTime
+setlocal enableextensions
+for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do (
+    set %%x)
+set /a z=(14-100%Month%%%100)/12, y=10000%Year%%%10000-z
+set /a ut=y*365+y/4-y/100+y/400+(153*(100%Month%%%100+12*z-3)+2)/5+Day-719469
+set /a ut=ut*86400+100%Hour%%%100*3600+100%Minute%%%100*60+100%Second%%%100
+endlocal & set "%1=%ut%" & goto :EOF
index 27d8a49..bcc2fee 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -10,7 +10,7 @@ RETRY_CMD="$SCRIPT_DIR/tools/retry.sh"
 TIMEOUT_CMD="$SCRIPT_DIR/tools/timeout.sh"
 DOTNET_CMD="$RETRY_CMD $TIMEOUT_CMD 600 dotnet"
 
-RUN_BUILD="$DOTNET_CMD msbuild $SCRIPT_DIR/build/build.proj"
+RUN_BUILD="$DOTNET_CMD msbuild $SCRIPT_DIR/build/build.proj /nologo"
 RUN_BUILD_DUMMY="$DOTNET_CMD build $SCRIPT_DIR/build/build.dummy.csproj"
 
 usage() {
@@ -31,14 +31,17 @@ cmd_build() {
   if [ -d /nuget ]; then
     NUGET_SOURCE_OPT="/p:RestoreSources=/nuget"
   fi
-  $RUN_BUILD /t:build /p:Project=$1 $NUGET_SOURCE_OPT
+  $RUN_BUILD /t:restore /p:Project=$1 $NUGET_SOURCE_OPT
+  $RUN_BUILD /t:build /p:Project=$1
 }
 
 cmd_full_build() {
   if [ -d /nuget ]; then
     NUGET_SOURCE_OPT="/p:RestoreSources=/nuget"
   fi
-  $RUN_BUILD /t:build $NUGET_SOURCE_OPT
+  $RUN_BUILD /t:clean
+  $RUN_BUILD /t:restore $NUGET_SOURCE_OPT
+  $RUN_BUILD /t:build
 }
 
 cmd_dummy_build() {
@@ -49,12 +52,18 @@ cmd_dummy_build() {
 }
 
 cmd_pack() {
-  if [ -n "$1" ]; then
-    NUGET_VERSION_OPT="-Version $1"
+  VERSION=$1
+  VERSION_INTERNAL=$2
+  if [ -z "$VERSION" ]; then
+    TIMESTAMP=$(date +"%s")
+    VERSION="5.0.0-local-$TIMESTAMP"
+  fi
+  if [ -z "$VERSION_INTERNAL" ]; then
+    VERSION_INTERNAL=$VERSION
   fi
 
-  $NUGET_CMD pack $SCRIPT_DIR/pkg/Tizen.NET.Private.nuspec -Symbols -NoPackageAnalysis $NUGET_VERSION_OPT -BasePath $SCRIPT_DIR -OutputDirectory $OUTDIR
-  $NUGET_CMD pack $SCRIPT_DIR/pkg/Tizen.NET.nuspec -Symbols -NoPackageAnalysis $NUGET_VERSION_OPT -BasePath $SCRIPT_DIR -OutputDirectory $OUTDIR
+  $NUGET_CMD pack $SCRIPT_DIR/pkg/Tizen.NET.nuspec -NoPackageAnalysis -Version $VERSION -BasePath $SCRIPT_DIR -OutputDirectory $OUTDIR
+  $NUGET_CMD pack $SCRIPT_DIR/pkg/Tizen.NET.Internals.nuspec -NoPackageAnalysis -Version $VERSION_INTERNAL -BasePath $SCRIPT_DIR -OutputDirectory $OUTDIR
 }
 
 cmd_clean() {
index c0b89c6..48bb206 100644 (file)
@@ -26,7 +26,7 @@
   <!-- Source assemblies -->
   <ItemGroup>
     <TizenAssemblies Include="$(OutputPublicDir)\*.dll" />
-    <TizenAssemblies Include="$(OutputPlatformDir)\*.dll" />
+    <TizenAssemblies Include="$(OutputInternalDir)\*.dll" />
   </ItemGroup>
 
   <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
index 661081e..dc28ff4 100644 (file)
@@ -2,11 +2,6 @@
 
   <Import Project="$(MSBuildThisFileDirectory)directories.props" />
 
-  <!-- Common Properties -->
-  <PropertyGroup>
-    <PublicModuleListFile>$(PackageSrcDir)PublicModuleList.txt</PublicModuleListFile>
-  </PropertyGroup>
-
   <!-- Build Properties -->
   <PropertyGroup>
     <Configuration>Release</Configuration>
@@ -16,6 +11,7 @@
   <ItemGroup>
     <ProjectToBuild Include="$(ProjectSrcDir)\$(Project)\$(Project).csproj" Condition="'$(Project)' != ''" />
     <ProjectToBuild Include="$(ProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''" />
+    <ProjectToBuild Include="$(InternalProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''" />
   </ItemGroup>
 
   <!--
     Delete all artifacts,
     including the Artifacts/ directory and the obj/ directories for all projects.
   -->
-  <Target Name="Clean" Condition="'$(Project)' == ''" >
+  <Target Name="Clean">
 
     <ItemGroup>
       <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\*" />
+      <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\*" />
       <ProjectIntermediateDir Include="@(ProjectIntermediateAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
     </ItemGroup>
 
 
   </Target>
 
-
   <!--
-    Target : Build
+    Target : Restore
     ==============
-    Build all projects in src/ directory.
-    The output(.dll, .pdb, .xml) of the project specfied in
-    pkg/PublicModuleList.txt is copied to Artifacts/bin/public,
-    and the rest are copied to Artifacts/bin/platform.
+    Restore all projects.
   -->
-  <Target Name="Build" DependsOnTargets="Clean">
+  <Target Name="Restore">
 
     <MSBuild Projects="@(ProjectToBuild)"
              Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
              BuildInParallel="false"
              Targets="Restore" />
 
+  </Target>
+
+  <!--
+    Target : Build
+    ==============
+    Build all projects.
+  -->
+  <Target Name="Build">
+
     <MSBuild Projects="@(ProjectToBuild)"
-             Properties="Configuration=$(Configuration);OutDir=$(OutputPlatformDir)"
+             Properties="Configuration=$(Configuration)"
              BuildInParallel="true"
              UseResultsCache="true"
              Targets="Build" />
 
-    <ReadLinesFromFile File="$(PublicModuleListFile)">
-      <Output TaskParameter="Lines" ItemName="PublicProject" />
-    </ReadLinesFromFile>
-
-    <ItemGroup>
-      <PlatformFiles Include="$(OutputPlatformDir)**" />
-      <_PublicFilesToMove Include="$(OutputPlatformDir)%(PublicProject.Identity).dll" />
-      <_PublicFilesToMove Include="$(OutputPlatformDir)%(PublicProject.Identity).pdb" />
-      <_PublicFilesToMove Include="$(OutputPlatformDir)%(PublicProject.Identity).xml" />
-      <_PublicFilesToMove Include="$(OutputPlatformDir)*\%(PublicProject.Identity).dll" />
-      <PublicFilesToMove Include="@(_PublicFilesToMove)" Condition="'@(PlatformFiles)' == '@(_PublicFilesToMove)' and '%(Identity)' != '' " />
-    </ItemGroup>
-
-    <Move SourceFiles="@(PublicFilesToMove)" DestinationFiles="$(OutputPublicDir)%(RecursiveDir)%(Filename)%(Extension)" />
-
-    <Message Text="The assemblies written in pkg/PublicModuleList.txt were moved to $(OutputPublicDir)" Importance="High" />
+    <MSBuild Projects="@(ProjectToBuild)"
+             Properties="Configuration=$(Configuration)"
+             BuildInParallel="false"
+             Targets="CopyToArtifactsDirectory" />
 
   </Target>
 
diff --git a/build/common.targets b/build/common.targets
new file mode 100644 (file)
index 0000000..bb8b895
--- /dev/null
@@ -0,0 +1,15 @@
+<Project>
+
+  <Target Name="CopyToArtifactsDirectory"
+          Condition="'$(ArtifactsDirectory)' != ''"
+          DependsOnTargets="GetCopyToOutputDirectoryItems">
+    <ItemGroup>
+      <OutputFilesToCopy Include="$(OutDir)**" />
+    </ItemGroup>
+
+    <Copy SourceFiles="@(OutputFilesToCopy)"
+          DestinationFiles="$(ArtifactsDirectory)%(RecursiveDir)%(Filename)%(Extension)" />
+
+  </Target>
+
+</Project>
index 32ed386..28b5ed1 100644 (file)
@@ -5,14 +5,14 @@
     <ProjectRootDir>$(MSBuildThisFileDirectory)..\</ProjectRootDir>
 
     <ProjectSrcDir>$(ProjectRootDir)src\</ProjectSrcDir>
-    <PackageSrcDir>$(ProjectRootDir)pkg\</PackageSrcDir>
+    <InternalProjectSrcDir>$(ProjectRootDir)\internal\src\</InternalProjectSrcDir>
 
     <ToolsDir>$(ProjectRootDir)tools\</ToolsDir>
     <GenAPIDir>$(ToolsDir)GenAPI\</GenAPIDir>
 
     <OutputBaseDir>$(ProjectRootDir)Artifacts\</OutputBaseDir>
     <OutputPublicDir>$(OutputBaseDir)bin\public\</OutputPublicDir>
-    <OutputPlatformDir>$(OutputBaseDir)bin\platform\</OutputPlatformDir>
+    <OutputInternalDir>$(OutputBaseDir)bin\internal\</OutputInternalDir>
     <OutputDummyDir>$(OutputBaseDir)bin\dummy\</OutputDummyDir>
 
   </PropertyGroup>
diff --git a/internal/src/Directory.Build.props b/internal/src/Directory.Build.props
new file mode 100644 (file)
index 0000000..2abd25e
--- /dev/null
@@ -0,0 +1,10 @@
+<Project>
+
+       <Import Project="$(MSBuildThisFileDirectory)..\..\build\common.props" />
+  <Import Project="$(MSBuildThisFileDirectory)..\..\build\directories.props" />
+
+  <PropertyGroup>
+    <ArtifactsDirectory>$(OutputInternalDir)</ArtifactsDirectory>
+  </PropertyGroup>
+
+</Project>
\ No newline at end of file
diff --git a/internal/src/Directory.Build.targets b/internal/src/Directory.Build.targets
new file mode 100644 (file)
index 0000000..7e3dd2b
--- /dev/null
@@ -0,0 +1,5 @@
+<Project>
+
+  <Import Project="$(MSBuildThisFileDirectory)..\..\build\common.targets" />
+
+</Project>
\ No newline at end of file
@@ -5,8 +5,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\Tizen\Tizen.csproj" />
-    <ProjectReference Include="..\Tizen.Log\Tizen.Log.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen\Tizen.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen.Log\Tizen.Log.csproj" />
   </ItemGroup>
 
 </Project>
similarity index 95%
rename from src/Tizen.CallManager/Tizen.CallManager.sln
rename to internal/src/Tizen.CallManager/Tizen.CallManager.sln
index 983c733..f80d411 100755 (executable)
@@ -4,9 +4,9 @@ VisualStudioVersion = 15.0.26430.13
 MinimumVisualStudioVersion = 15.0.26124.0
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.CallManager", "Tizen.CallManager.csproj", "{18DF1A45-32B3-4577-84DF-BB3A1537ADC9}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{D06D0004-6A5F-4D6C-98C4-ADD3766A867A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\..\..\src\Tizen\Tizen.csproj", "{D06D0004-6A5F-4D6C-98C4-ADD3766A867A}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{78875590-41AB-4382-B64E-73A50DE0851C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\..\..\src\Tizen.Log\Tizen.Log.csproj", "{78875590-41AB-4382-B64E-73A50DE0851C}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from src/Tizen.CallManager/Tizen.CallManager/CallData.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CallData.cs
index 8f7b2da..59abfcd
@@ -21,6 +21,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// A class which defines the properties of call.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallData
     {
         internal uint CallId;
@@ -51,6 +52,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets call id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Id
         {
             get
@@ -62,6 +64,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets call direction(MO or MT).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallDirection Direction
         {
             get
@@ -73,6 +76,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the call number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CallNumber
         {
             get
@@ -84,6 +88,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the contact name of calling number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CallingName
         {
             get
@@ -95,6 +100,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the call type(Voice call or Video call).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallType Type
         {
             get
@@ -106,6 +112,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the call state(Incoming, Active, etc).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallState State
         {
             get
@@ -117,6 +124,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the member count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int MemberCount
         {
             get
@@ -128,6 +136,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the call is emergency call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsEmergency
         {
             get
@@ -139,6 +148,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the number is voice mail number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsVoiceMailNumber
         {
             get
@@ -150,6 +160,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the call domain(PS call, CS call, etc).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallDomain Domain
         {
             get
@@ -161,6 +172,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the person ID.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int PersonId
         {
             get
@@ -172,6 +184,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the start time of the call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public long StartTime
         {
             get
@@ -183,6 +196,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the contact name mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallNameMode Mode
         {
             get
@@ -194,6 +208,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the session ID of the call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int SessionId
         {
             get
@@ -205,6 +220,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if HD is enabled for calling.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsHdEnable
         {
             get
@@ -216,6 +232,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the call is a WiFi call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsWiFiCalling
         {
             get
@@ -227,6 +244,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if upgrade/downgrade is enabled.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsUpgradeDowngradeEnable
         {
             get
@@ -238,6 +256,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the remote call is on hold.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsRemoteOnHold
         {
             get
@@ -249,6 +268,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the call is added to conference.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsAddedToConference
         {
             get
@@ -260,6 +280,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Checks if the incoming call is a forwarded call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsMtForwarded
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 88%
rename from src/Tizen.CallManager/Tizen.CallManager/CallEventData.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CallEventData.cs
index dce2d9f..9e36776
@@ -21,6 +21,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// A class which contains information about call event data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallEventData
     {
         internal uint EventId;
@@ -36,6 +37,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the Call id of the number for which Call event has occurred.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Id
         {
             get
@@ -47,6 +49,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the Sim slot type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public MultiSimSlot SimSlot
         {
             get
@@ -58,6 +61,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get call end cause type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallEndCause EndCause
         {
             get
@@ -69,6 +73,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get incoming call data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallData IncomingData
         {
             get
@@ -80,6 +85,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get active call data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallData ActiveData
         {
             get
@@ -91,6 +97,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Get the call data for held call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallData HeldData
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.CallManager/Tizen.CallManager/CallManager.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CallManager.cs
index 4a555f8..902bf9f
@@ -21,11 +21,13 @@ namespace Tizen.CallManager
     /// <summary>
     /// A class which manages the use of Call Manager APIs.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public static class CallManager
     {
         /// <summary>
         /// Initializes the call manager.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>An instance of CmClientHandle class to use call manager APIs.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
@@ -45,6 +47,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Deinitializes the Call Manager handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">The Call Manager handle to be deinitialized.</param>
         /// <exception cref="ArgumentNullException">Thrown when CmClientHandle is passed as null.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -68,6 +71,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets LCD state for the device display.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="state">LCD state to be set.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public static void SetLcdState(LcdControlState state)
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.CallManager/Tizen.CallManager/CmClientHandle.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CmClientHandle.cs
index 72eb620..9227521
@@ -24,6 +24,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// A class which manages call manager events, properties and functions.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CmClientHandle
     {
         internal IntPtr _handle = IntPtr.Zero;
@@ -53,6 +54,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when call status changes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<CallStatusChangedEventArgs> CallStatusChanged
         {
             add
@@ -78,6 +80,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when the mute status changes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<CallMuteStatusChangedEventArgs> CallMuteStatusChanged
         {
             add
@@ -103,6 +106,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when call events change.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<CallEventEventArgs> CallEvent
         {
             add
@@ -128,6 +132,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when dial status changes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<DialStatusEventArgs> DialStatusChanged
         {
             add
@@ -153,6 +158,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when audio status changes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<AudioStatusChangedEventArgs> AudioStateChanged
         {
             add
@@ -178,6 +184,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised during DTMF indication.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<DtmfIndicationEventArgs> DtmfIndication
         {
             add
@@ -203,6 +210,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when call comes to foreground.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<EventArgs> GoForeground
         {
             add
@@ -228,6 +236,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// This event is raised when voice record status is changed.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<VoiceRecordStatusEventArgs> VoiceRecordStatusChanged
         {
             add
@@ -445,6 +454,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets the status of the current call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallStatus CallStatus
         {
             get
@@ -463,6 +473,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets the mute status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallMuteStatus CallMuteStatus
         {
             get
@@ -481,6 +492,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets the audio state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public AudioState AudioState
         {
             get
@@ -499,6 +511,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets the list of call data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<CallData> AllCalls
         {
             get
@@ -535,6 +548,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets the list of conference call data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<ConferenceCallData> AllConferenceCalls
         {
             get
@@ -570,6 +584,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Rejects the incoming call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privlevel>partner</privlevel>
         /// <privilege>http://developer.samsung.com/tizen/privilege/call.reject</privilege>
         /// <exception cref="UnauthorizedAccessException">Thrown when privilege access is denied.</exception>
@@ -587,6 +602,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Starts incoming call alert ringtone.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="UnauthorizedAccessException">Thrown when privilege access is denied.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void StartAlert()
@@ -602,6 +618,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Stops incoming call alert ringtone.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privlevel>partner</privlevel>
         /// <privilege>http://developer.samsung.com/tizen/privilege/call.reject</privilege>
         /// <exception cref="UnauthorizedAccessException">Thrown when privilege access is denied.</exception>
@@ -619,6 +636,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Enables call recovery.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="appId">App ID to be recovered.</param>
         /// <exception cref="ArgumentNullException">Thrown appId is passed as null.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -640,6 +658,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Dials a call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="number">Calling number to be dialed.</param>
         /// <param name="type">Type of the call to be dialed.</param>
         /// <param name="slot">Multi sim slot type in which the call is dialed.</param>
@@ -664,6 +683,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Swaps the calls.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SwapCall()
         {
@@ -678,6 +698,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Joins a call with another.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void JoinCall()
         {
@@ -692,6 +713,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Splits a call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="id">Call id to be splitted.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SplitCall(uint id)
@@ -707,6 +729,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Transfers a call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void TransferCall()
         {
@@ -721,6 +744,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Accepts MT ViLTE call as VoLTE.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="answerType">Call answer type.</param>
         /// <param name="type">Call type.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -737,6 +761,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Answers an incoming call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="answerType">Call answer type.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void AnswerCall(CallAnswerType answerType)
@@ -752,6 +777,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Upgrades a call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void UpgradeCall()
         {
@@ -766,6 +792,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Downgrades a call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void DowngradeCall()
         {
@@ -780,6 +807,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Confirms upgrade call request.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="response">Upgrade response type.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void ConfirmUpgradeCall(CallUpgradeResponseType response)
@@ -795,6 +823,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets the speaker on/off.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="status">Status of the speaker to be set.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void ManageSpeaker(FeatureStatus status)
@@ -820,6 +849,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets the bluetooth feature on/off.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="status">Status of the bluetooth to be set.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void ManageBluetooth(FeatureStatus status)
@@ -845,6 +875,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets extra volume if needed.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="isExtraVolume">Boolean value to indicate if the call is set to have extra volume.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SetExtraVolume(bool isExtraVolume)
@@ -860,6 +891,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets the noise reduction feature during call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="isNoiceReduction">Boolean value to indicate whether the call needs noise reduction.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SetNoiseReduction(bool isNoiceReduction)
@@ -875,6 +907,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets the mute state of the call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="isMuteState">Mute state to be set.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SetMuteState(bool isMuteState)
@@ -890,6 +923,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Starts sending signal through DTMF digit.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="dtmfDigit">DTMF digit to be pressed on the phone.</param>
         /// <exception cref="ArgumentException">Thrown when method failed due to invalid parameter.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -906,6 +940,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Stops sending DTMF signal.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void StopDtmf()
         {
@@ -920,6 +955,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sends signal through DTMF digits.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="dtmfDigits">DTMF digits.</param>
         /// <exception cref="ArgumentNullException">Thrown when dtmfDigits is passed as null.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -941,6 +977,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sends DTMF response.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="response">DTMF response type.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SendDtmfResponse(DtmfResponseType response)
@@ -956,6 +993,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Activates call manager UI.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void ActivateUi()
         {
@@ -970,6 +1008,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Sets device LCD time out.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="timeout">LCD timeout to be set.</param>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void SetLcdTimeout(LcdTimeOut timeout)
@@ -985,6 +1024,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Starts voice recording.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="number">Call number.</param>
         /// <exception cref="ArgumentNullException">Thrown when number is passed as null.</exception>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
@@ -1006,6 +1046,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Stops voice record.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="InvalidOperationException">Thrown when method failed due to invalid operation.</exception>
         public void StopVoiceRecord()
         {
@@ -1020,6 +1061,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Gets all current call data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="incoming">Incoming calldata instance to be filled.</param>
         /// <param name="active">Active calldata instance to be filled.</param>
         /// <param name="held">Held calldata instance to be filled.</param>
@@ -1041,6 +1083,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Holds the active call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privlevel>platform</privlevel>
         /// <privilege>http://developer.samsung.com/tizen/privilege/call.admin</privilege>
         /// <exception cref="UnauthorizedAccessException">Thrown when privilege access is denied.</exception>
@@ -1058,6 +1101,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Unholds the active call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privlevel>platform</privlevel>
         /// <privilege>http://developer.samsung.com/tizen/privilege/call.admin</privilege>
         /// <exception cref="UnauthorizedAccessException">Thrown when privilege access is denied.</exception>
@@ -1075,6 +1119,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Ends ongoing call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="id">ID of the call which is to be ended.</param>
         /// <param name="type">Call release type.</param>
         /// <privlevel>platform</privlevel>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.CallManager/Tizen.CallManager/CmEnumerations.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CmEnumerations.cs
index a7965dd..5e9a445
@@ -19,6 +19,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for Call status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallStatus
     {
         /// <summary>
@@ -42,6 +43,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for Mute status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallMuteStatus
     {
         /// <summary>
@@ -61,6 +63,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call dial status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum DialStatus
     {
         /// <summary>
@@ -92,6 +95,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for DTMF indication type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum DtmfIndication
     {
         /// <summary>
@@ -111,6 +115,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for audio state type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum AudioState
     {
         /// <summary>
@@ -138,6 +143,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for video record status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum VrStatus
     {
         /// <summary>
@@ -153,6 +159,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for Video record status extra type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum VrStatusExtraType
     {
         /// <summary>
@@ -204,6 +211,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallType
     {
         /// <summary>
@@ -223,6 +231,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for sim slot type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum MultiSimSlot
     {
         /// <summary>
@@ -242,6 +251,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call answer types for accepting the incoming call.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallAnswerType
     {
         /// <summary>
@@ -269,6 +279,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call upgrade response type while receiving upgrade request.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallUpgradeResponseType
     {
         /// <summary>
@@ -284,6 +295,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for feature(speaker/bluetooth) status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum FeatureStatus
     {
         /// <summary>
@@ -299,6 +311,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for DTMF response type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum DtmfResponseType
     {
         /// <summary>
@@ -314,6 +327,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for LCD time out.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum LcdTimeOut
     {
         /// <summary>
@@ -341,6 +355,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for contact name mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallNameMode
     {
         /// <summary>
@@ -364,6 +379,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for LCD control state.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum LcdControlState
     {
         /// <summary>
@@ -395,6 +411,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call event type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallEvent
     {
         /// <summary>
@@ -486,6 +503,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call direction
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallDirection
     {
         /// <summary>
@@ -501,6 +519,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for the call state.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallState
     {
         /// <summary>
@@ -536,6 +555,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call domain.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallDomain
     {
         /// <summary>
@@ -555,6 +575,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call end cause type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallEndCause
     {
         /// <summary>
@@ -670,6 +691,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// Enumeration for call release type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallReleaseType
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 88%
rename from src/Tizen.CallManager/Tizen.CallManager/CmEventArgs.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/CmEventArgs.cs
index 77a69fd..1074682
@@ -21,6 +21,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains information about DTMF indication.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class DtmfIndicationEventArgs : EventArgs
     {
         private DtmfIndication _indication;
@@ -35,6 +36,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// DTMF indication.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public DtmfIndication Indication
         {
             get
@@ -46,6 +48,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// DTMF number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string DtmfNumber
         {
             get
@@ -58,6 +61,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed audio status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class AudioStatusChangedEventArgs : EventArgs
     {
         private AudioState _state;
@@ -70,6 +74,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Audio state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public AudioState State
         {
             get
@@ -82,6 +87,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed voice record status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class VoiceRecordStatusEventArgs : EventArgs
     {
         private VrStatus _status;
@@ -96,6 +102,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Voice record status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public VrStatus Status
         {
             get
@@ -107,6 +114,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Voice record status extra type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public VrStatusExtraType ExtraType
         {
             get
@@ -119,6 +127,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed call mute status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallMuteStatusChangedEventArgs : EventArgs
     {
         private CallMuteStatus _Status;
@@ -131,6 +140,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call mute status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallMuteStatus Status
         {
             get
@@ -143,6 +153,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed call status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallStatusChangedEventArgs : EventArgs
     {
         private CallStatus _status;
@@ -157,6 +168,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallStatus Status
         {
             get
@@ -168,6 +180,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CallNumber
         {
             get
@@ -180,6 +193,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed dial status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class DialStatusEventArgs : EventArgs
     {
         private DialStatus _status;
@@ -192,6 +206,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Dial status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public DialStatus Status
         {
             get
@@ -204,6 +219,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// An extended EventArgs class which contains changed call event.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallEventEventArgs : EventArgs
     {
         private CallEvent _event;
@@ -218,6 +234,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call event.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallEvent Event
         {
             get
@@ -229,6 +246,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call event data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallEventData EventData
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 89%
rename from src/Tizen.CallManager/Tizen.CallManager/ConferenceCallData.cs
rename to internal/src/Tizen.CallManager/Tizen.CallManager/ConferenceCallData.cs
index dcf83ae..acbb0c5
@@ -21,6 +21,7 @@ namespace Tizen.CallManager
     /// <summary>
     /// A class which defines the properties of conference call.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class ConferenceCallData
     {
         internal uint CallId;
@@ -34,6 +35,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Conference call ID.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Id
         {
             get
@@ -45,6 +47,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CallNumber
         {
             get
@@ -56,6 +59,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Person ID.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int PersonId
         {
             get
@@ -67,6 +71,7 @@ namespace Tizen.CallManager
         /// <summary>
         /// Call name mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallNameMode Mode
         {
             get
@@ -5,8 +5,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\Tizen\Tizen.csproj" />
-    <ProjectReference Include="..\Tizen.Log\Tizen.Log.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen\Tizen.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen.Log\Tizen.Log.csproj" />
   </ItemGroup>
 
 </Project>
similarity index 91%
rename from src/Tizen.Network.Mtp/Tizen.Network.Mtp.sln
rename to internal/src/Tizen.Network.Mtp/Tizen.Network.Mtp.sln
index a010f46..ea26cb1 100755 (executable)
@@ -5,9 +5,9 @@ VisualStudioVersion = 15.0.26430.12
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Network.Mtp", "Tizen.Network.Mtp.csproj", "{66896B73-D51B-4E1D-9A7A-B5D66FDE6E97}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{82B9BB77-6809-4DA0-9BCE-DAC24C7A7669}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\..\..\src\Tizen\Tizen.csproj", "{82B9BB77-6809-4DA0-9BCE-DAC24C7A7669}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{AD803503-C70D-4CE7-A1F1-9DF0B890A42F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\..\..\src\Tizen.Log\Tizen.Log.csproj", "{AD803503-C70D-4CE7-A1F1-9DF0B890A42F}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
similarity index 51%
rename from src/Tizen.Tapi/Tizen.Tapi.csproj
rename to internal/src/Tizen.Tapi/Tizen.Tapi.csproj
index 4c51c41..0d450ba 100644 (file)
@@ -5,8 +5,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\Tizen\Tizen.csproj" />
-    <ProjectReference Include="..\Tizen.Log\Tizen.Log.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen\Tizen.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen.Log\Tizen.Log.csproj" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
similarity index 91%
rename from src/Tizen.Tapi/Tizen.Tapi.sln
rename to internal/src/Tizen.Tapi/Tizen.Tapi.sln
index c699156..12cc38a 100755 (executable)
@@ -5,9 +5,9 @@ VisualStudioVersion = 15.0.26430.12
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Tapi", "Tizen.Tapi.csproj", "{77F9FF6F-DF82-4A48-AFF8-9031B5065AA5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{79F086CB-DB6C-452F-A15C-274676452682}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\..\..\src\Tizen\Tizen.csproj", "{79F086CB-DB6C-452F-A15C-274676452682}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{29669E98-429B-4FDD-8E21-85D78B07346F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\..\..\src\Tizen.Log\Tizen.Log.csproj", "{29669E98-429B-4FDD-8E21-85D78B07346F}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
old mode 100755 (executable)
new mode 100644 (file)
similarity index 98%
rename from src/Tizen.Tapi/Tizen.Tapi/Call.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Call.cs
index c33adb6..b3078b0
@@ -24,6 +24,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class provides functions to manage call related setup and methods.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Call
     {
         private IntPtr _handle;
@@ -34,6 +35,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A public constructor for Call class to create a Call instance for the given tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">The tapi handle.</param>
         public Call(TapiHandle handle)
         {
@@ -48,6 +50,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Setup the call to be dialled asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="info">Information of call type and number.</param>
         /// <returns>A task indicating whether the DialCall method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -106,6 +109,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Supports answering the incoming call by accepting or rejecting the call asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callHandle">Unique handle that refer to the call.</param>
         /// <param name="type">The answer type.</param>
         /// <returns>The call id of answer call. This call handle is available to the application through an incoming call(IncomingVoiceCall) event.</returns>
@@ -157,6 +161,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Releases the call asynchronously irrespective of whether the call is in the hold or active state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callHandle">Unique handle that refer to the call.</param>
         /// <param name="type">The end call type.</param>
         /// <returns>Instance of CallEndData.</returns>
@@ -209,6 +214,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Puts the given call on hold asynchoronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callHandle">Unique handle for referring the call.</param>
         /// <returns>The call id of hold call.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -259,6 +265,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Retrieves the call being held asynchoronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callHandle">Unique handle for referring the call.</param>
         /// <returns>The call id of active call.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -309,6 +316,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Swaps calls asynchoronously. This is only for calls dialed or answered with Telephony.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="activeCallHandle">Active call.</param>
         /// <param name="heldCallHandle">Held call.</param>
         /// <returns>The call id of swap call.</returns>
@@ -359,6 +367,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Starts continuous dtmf by sending a single digit during the call asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="digit">The dtmf digit to be sent.</param>
         /// <returns>A task indicating whether the StartContDtmfCall method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -409,6 +418,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Stops continuous dtmf during the call asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task indicating whether the StopContDtmfCall method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
@@ -458,6 +468,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Send one or more dtmf digits during the call asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="dtmfData">A burst dtmf info containing dtmf string, pulse width, and inter digit interval.</param>
         /// <returns>A task indicating whether the SendBurstDtmfCall method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -517,6 +528,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Joins the given two calls (one call in the active conversation state and the other call in the held state) into conference asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="activeCallhandle">Unique handle which is either an active call or a held call.</param>
         /// <param name="callHandle">Unique call handle.</param>
         /// <returns>The call id of join call.</returns>
@@ -568,6 +580,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Triggers splitting a private call from a multiparty call asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callHandle">The handle of the call to be made private. The call handle referring to the call that is to be split from the conference.</param>
         /// <returns>The call id of split call.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -618,6 +631,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Triggers making an explicit call transfer by connecting the two parties where one party is being active(active state) and another party is being held(held state) asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="activeCallHandle">The call handle of an active call.</param>
         /// <returns>The call id of transferred call.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -668,6 +682,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Redirects the incoming call to another subscriber asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="incomingCallHandle">Incoming call handle.</param>
         /// <param name="destinationNumber">The destination number.</param>
         /// <returns>A task indicating whether the DeflectCall method is done or not.</returns>
@@ -718,6 +733,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the status of the current call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="callId">A unique handle for referring the call.</param>
         /// <returns>The call status information like destination number, call direction, call type, whether call is in the conference state or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -742,6 +758,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the list of status of the current call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>List of CallStatus.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -772,6 +789,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the call volume asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="device">The sound device.</param>
         /// <param name="type">The sound type.</param>
         /// <returns>Instance of CallVolumeInfo.</returns>
@@ -819,6 +837,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the call volume asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="record">The call volume information.</param>
         /// <returns>A task indicating whether the SetCallVolumeInfo method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -874,6 +893,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the call sound path asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="path">The call sound path information.</param>
         /// <returns>A task indicating whether the SetCallSoundPath method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -929,6 +949,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the call mute state asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="record">The call mute status information.</param>
         /// <returns>A task indicating whether the SetCallMuteStatus method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -983,6 +1004,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the call mute state asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of CallMuteStatusRecord.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1028,6 +1050,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the voice privacy mode in the phone asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>CallPrivacyMode value.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1074,6 +1097,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the voice privacy mode in the phone asynchronously. It is available only where a call exists.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="mode">Voice privacy option mode value.</param>
         /// <returns>A task indicating whether the SetCallPrivacyMode method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -1120,6 +1144,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the preferred voice subscription asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="subscription">Preferred voice subscription value.</param>
         /// <returns>A task indicating whether the SetCallPreferredVoiceSubscription method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -1165,6 +1190,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the preferred voice subscription.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>CallPreferredVoiceSubscription value.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 89%
rename from src/Tizen.Tapi/Tizen.Tapi/CallData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/CallData.cs
index 0ce86ec..2efe261
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information about call idle status notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallIdleStatusNotificationData
     {
         internal uint Id;
@@ -33,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Notification id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Notificatio id in unsigned integer format.</value>
         public uint NotiId
         {
@@ -45,6 +47,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// End cause for the call indicates whether the call is released normally or due to some other cause.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>En cause enum value.</value>
         public CallEndCause EndCause
         {
@@ -58,6 +61,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains calling name information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallerNameInfo
     {
         internal CallNameMode Mode;
@@ -70,6 +74,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Display mode of the name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Enum value for call name mode</value>
         public CallNameMode NameMode
         {
@@ -82,6 +87,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Calling party name string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>String value representing calling party name.</value>
         public string Name
         {
@@ -95,6 +101,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains details about call information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallIncomingInfo
     {
         internal uint Handle;
@@ -113,6 +120,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call handle indicates the handle of the call for the application.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call handle represented in unsigned integer format.</value>
         public uint CallHandle
         {
@@ -125,6 +133,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call type indicating whether the requested call is a voice or video call.</value>
         public CallType CallType
         {
@@ -137,6 +146,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Caller number, null terminated ASCII.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A string representing calling party number.</value>
         public string CallerNumber
         {
@@ -149,6 +159,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call name info. If there is no information from the network, this information will be null.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A CallerNameInfo which contains information about the calling party name.</value>
         public CallerNameInfo NameInfo
         {
@@ -161,6 +172,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CLI mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Enum value representing CLI mode.</value>
         public CallCliMode CliMode
         {
@@ -173,6 +185,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// No CLI cause.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Enum value representing the cause for no CLI.</value>
         public CallNoCliCause CliCause
         {
@@ -185,6 +198,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Checks whether the incoming call is a forwarded call or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>True or false. If the incoming call is a forwarded call, then true else false.</value>
         public bool IsForwarded
         {
@@ -197,6 +211,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Current Active Line.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Enum value representing call active line.</value>
         public CallActiveLine ActiveLine
         {
@@ -210,6 +225,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call line control.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallRecordLineControl
     {
         internal byte PolarityInc;
@@ -224,6 +240,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Polarity included.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Polarity value represented in byte format.</value>
         public byte PolarityIncluded
         {
@@ -236,6 +253,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Toggle mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Toggle mode represented in byte format.</value>
         public byte ToggleMode
         {
@@ -248,6 +266,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Reverse polarity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Reverse polarity value represented in byte format.</value>
         public byte ReversePolarity
         {
@@ -260,6 +279,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Power denial time.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Time value in byte which represents power denial time.</value>
         public byte PowerDenialTime
         {
@@ -273,6 +293,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call record.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallRecord
     {
         internal uint Id;
@@ -288,6 +309,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call id
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call id which is represented in unsigned integer format.</value>
         public uint CallId
         {
@@ -300,6 +322,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call record type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An enum value representing the call record type.</value>
         public CallRecordType CallRecordType
         {
@@ -312,6 +335,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Name record.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallRecordType is Name, otherwise it is null.
         /// </remarks>
@@ -327,6 +351,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number record.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallRecordType is Record, otherwise it is null.
         /// </remarks>
@@ -342,6 +367,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the line control info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallRecordType is LineControl, otherwise it is null.
         /// </remarks>
@@ -358,6 +384,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call signal notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallSignalNotification
     {
         internal CallAlertSignal Signal;
@@ -373,6 +400,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the call signal type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Signal type of the call represented as CallAlertSignal enum.</value>
         public CallAlertSignal SignalType
         {
@@ -385,6 +413,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the call pitch type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Pitch type of the call represented as CallAlertPitch enum.</value>
         public CallAlertPitch PitchType
         {
@@ -397,6 +426,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the call signal tone type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if SignalType is Tone.
         /// </remarks>
@@ -412,6 +442,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the signal ISDN Alert type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if SignalType is IsdnAlert.
         /// </remarks>
@@ -427,6 +458,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the signal IS54B alert type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if SignalType is Is54bAlert.
         /// </remarks>
@@ -443,6 +475,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call upgrade/downgrade request of VoLTE call.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallUpgradeDowngradeRequestNoti
     {
         internal int Handle;
@@ -455,6 +488,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the call handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call handle value represented in integer format.</value>
         public int CallHandle
         {
@@ -467,6 +501,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the call upgrade/downgrade config type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call upgrade/downgrade type represented in CallConfigType enum.</value>
         public CallConfigType UpgradeType
         {
@@ -480,6 +515,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about an outgoing call.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallInformation
     {
         private CallType _type;
@@ -492,6 +528,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A parameterized constructor of CallInformation.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">Type of call(voice, data, video, emergency).</param>
         /// <param name="etype">Emergency category.</param>
         /// <param name="phoneNumber">Destination phone number.</param>
@@ -530,6 +567,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call end response data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallEndData
     {
         private CallEndType _type;
@@ -548,6 +586,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// End type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallEndType Type
         {
             get
@@ -559,6 +598,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Id
         {
             get
@@ -571,6 +611,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about burst DTMF in CDMA.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallBurstDtmfData
     {
         private string _dtmf;
@@ -584,6 +625,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A parameterized constructor of CallBurstDtmfData.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="dtmf">Burst DTMF string.</param>
         /// <param name="width">DTMF Pulse Width.</param>
         /// <param name="interval">DTMF Inter Digit Interval.</param>
@@ -622,6 +664,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about call status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallStatus
     {
         private int _handle;
@@ -638,6 +681,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int CallHandle
         {
             get
@@ -654,6 +698,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Status will be true for MO calls. If MT call, then its false.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsMoCall
         {
             get
@@ -670,6 +715,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string PhoneNumber
         {
             get
@@ -686,6 +732,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type of call(voice, data, emergency).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallType Type
         {
             get
@@ -702,6 +749,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Current call state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public CallState State
         {
             get
@@ -718,6 +766,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Whether call is in conference state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsConferenceState
         {
             get
@@ -734,6 +783,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Whether call is volte call.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsVolteCall
         {
             get
@@ -751,6 +801,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class that contains call volume info.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallVolumeRecord
     {
         private SoundDevice _device;
@@ -763,6 +814,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A parameterized constructor of CallVolumeRecord.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="device">Call sound device.</param>
         /// <param name="type">Call sound type.</param>
         /// <param name="volume">Call sound volume.</param>
@@ -776,6 +828,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call sound device info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SoundDevice Device
         {
             get
@@ -787,6 +840,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call sound type info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SoundType Type
         {
             get
@@ -798,6 +852,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call sound volume info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SoundVolume Volume
         {
             get
@@ -810,6 +865,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains call volume info reponse data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallVolumeInfo
     {
         private uint _id;
@@ -828,6 +884,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint RecordId
         {
             get
@@ -839,6 +896,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Volume info record.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<CallVolumeRecord> Records
         {
             get
@@ -851,6 +909,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains call sound path and volume information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallSoundPathInfo
     {
         private SoundPath _path;
@@ -862,6 +921,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A parameterized constructor of CallSoundPathInfo.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="path">Sound path.</param>
         /// <param name="exVolume">Extra volume status.</param>
         public CallSoundPathInfo(SoundPath path, ExtraVolume exVolume)
@@ -890,6 +950,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains call mute status reponse data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class CallMuteStatusRecord
     {
         private SoundMutePath _path;
@@ -901,6 +962,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A parameterized constructor of CallMuteStatusRecord.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="path">Mute path.</param>
         /// <param name="status">Mute status.</param>
         public CallMuteStatusRecord(SoundMutePath path, SoundMuteStatus status)
@@ -912,6 +974,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the sound mute path.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SoundMutePath Path
         {
             get
@@ -923,6 +986,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the sound mute status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SoundMuteStatus Status
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 96%
rename from src/Tizen.Tapi/Tizen.Tapi/CallEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/CallEnumerations.cs
index 37b7671..c27b037
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call end cause.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallEndCause
     {
         /// <summary>
@@ -510,6 +511,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call type to be used by applications.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallType
     {
         /// <summary>
@@ -529,6 +531,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call name mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallNameMode
     {
         /// <summary>
@@ -552,6 +555,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the "Cli mode" value.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallCliMode
     {
         /// <summary>
@@ -575,6 +579,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for "No Cli cause" value.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallNoCliCause
     {
         /// <summary>
@@ -602,6 +607,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call active line(IN GSM ONLY: call identification number).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallActiveLine
     {
         /// <summary>
@@ -617,6 +623,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call record info type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallRecordType
     {
         /// <summary>
@@ -636,6 +643,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the voice privacy option mode. (CDMA only).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallPrivacyMode
     {
         /// <summary>
@@ -651,6 +659,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the OTASP Status. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallOtaspStatus
     {
         /// <summary>
@@ -718,6 +727,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the OTAPA status. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallOtapaStatus
     {
         /// <summary>
@@ -733,6 +743,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound path.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundPath
     {
         /// <summary>
@@ -860,6 +871,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the Alert Signal Type. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallAlertSignal
     {
         /// <summary>
@@ -883,6 +895,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the Alert Pitch Type. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallAlertPitch
     {
         /// <summary>
@@ -906,6 +919,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the signals specific to the alert signal type. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallToneSignal
     {
         /// <summary>
@@ -961,6 +975,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call ISDN Alert signal. (CDMA only)
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallIsdnAlertSignal
     {
         /// <summary>
@@ -1004,6 +1019,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call IS54B Alert signal types.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallIs54bAlertSignal
     {
         /// <summary>
@@ -1063,6 +1079,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound ringback tone notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallSoundRingbackNoti
     {
         /// <summary>
@@ -1078,6 +1095,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound WBAMR notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallSoundWbamrNoti
     {
         /// <summary>
@@ -1101,6 +1119,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound noise reduction.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallSoundNoiseReduction
     {
         /// <summary>
@@ -1116,6 +1135,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call preferred voice subscription.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallPreferredVoiceSubscription
     {
         /// <summary>
@@ -1143,6 +1163,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for specifying type for call upgrade/downgrade.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallConfigType
     {
         /// <summary>
@@ -1254,6 +1275,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the emergency call category type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum EmergencyType
     {
         /// <summary>
@@ -1297,6 +1319,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call answer type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallAnswerType
     {
         /// <summary>
@@ -1320,6 +1343,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call end type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallEndType
     {
         /// <summary>
@@ -1343,6 +1367,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the onlength to send DTMF.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallDtmfPulseWidth
     {
         /// <summary>
@@ -1378,6 +1403,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the offlength to send DTMF.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallDtmfDigitInterval
     {
         /// <summary>
@@ -1401,6 +1427,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call states.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum CallState
     {
         /// <summary>
@@ -1440,6 +1467,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound device type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundDevice
     {
         /// <summary>
@@ -1471,6 +1499,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundType
     {
         /// <summary>
@@ -1502,6 +1531,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound volume level.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundVolume
     {
         /// <summary>
@@ -1549,6 +1579,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call extra volume.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum ExtraVolume
     {
         /// <summary>
@@ -1564,6 +1595,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound mute status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundMuteStatus
     {
         /// <summary>
@@ -1579,6 +1611,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for call sound mute path.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SoundMutePath
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 97%
rename from src/Tizen.Tapi/Tizen.Tapi/Modem.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Modem.cs
index 2408faa..afd2640
@@ -9,6 +9,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class provides functions for modem services.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Modem
     {
         private IntPtr _handle;
@@ -18,6 +19,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A public constructor for Modem class to create a Modem instance for the given tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">The tapi handle.</param>
         public Modem(TapiHandle handle)
         {
@@ -32,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Turn the modem on/off asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="cmd">Power command value.</param>
         /// <returns>A task indicating whether the ProcessPowerCommand method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -77,6 +80,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Switch the flight mode on/off asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="mode">Flight mode request value.</param>
         /// <returns>A task indicating whether the SetFlightMode method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -123,6 +127,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the flight mode asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>If flight mode is On, it returns true else it returns false.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -175,6 +180,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get Me version information asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of MiscVersionInformation.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -220,6 +226,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Misc me version information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <remarks>Returns null in case of failure.</remarks>
@@ -242,6 +249,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the Me Esn/Meid for each phone type asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of MiscSerialNumberInformation.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -287,6 +295,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Misc me serial number information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <remarks>Returns null in case of failure.</remarks>
@@ -309,6 +318,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the Misc Me Imei asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>The imei string.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -352,6 +362,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Misc me Imei information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <remarks>Returns null in case of failure.</remarks>
@@ -372,6 +383,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Check the modem power status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Phone power status value.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -394,6 +406,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get device vendor name and device name of cellular dongle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of MiscDeviceInfo.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 84%
rename from src/Tizen.Tapi/Tizen.Tapi/ModemData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/ModemData.cs
index a7dfe24..d37fd3e
@@ -7,6 +7,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information about mobile equipment version.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class MiscVersionInformation
     {
         internal byte Version;
@@ -26,6 +27,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Version mask.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte VersionMask
         {
             get
@@ -37,6 +39,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Software version.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string SwVersion
         {
             get
@@ -48,6 +51,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Hardware version.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string HwVersion
         {
             get
@@ -59,6 +63,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Calculation date.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CalculationDate
         {
             get
@@ -70,6 +75,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Product code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ProductCode
         {
             get
@@ -81,6 +87,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Model id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ModelId
         {
             get
@@ -92,6 +99,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of prl nam fields.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte PrlNam
         {
             get
@@ -103,6 +111,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Prl version (only for CDMA).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string PrlVersion
         {
             get
@@ -114,6 +123,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of Eri nam fields.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte EriNam
         {
             get
@@ -125,6 +135,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Eri version.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string EriVersion
         {
             get
@@ -137,6 +148,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information about mobile serial number.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class MiscSerialNumberInformation
     {
         internal string SzEsn;
@@ -150,6 +162,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Esn number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Esn
         {
             get
@@ -161,6 +174,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Meid number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string MeId
         {
             get
@@ -172,6 +186,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Imei number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Imei
         {
             get
@@ -183,6 +198,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Imeisv number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ImeiSv
         {
             get
@@ -195,6 +211,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing device information of cellular dongle.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class MiscDeviceInfo
     {
         internal string Vendor;
@@ -206,6 +223,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Vendor name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string VendorName
         {
             get
@@ -217,6 +235,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Device name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string DeviceName
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 97%
rename from src/Tizen.Tapi/Tizen.Tapi/Network.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Network.cs
index 886261d..c37eed8
@@ -24,6 +24,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class provides functions for managing telephony service network.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Network
     {
         private IntPtr _handle;
@@ -33,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A public constructor for Network class to create a Network instance for the given tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">The tapi handle.</param>
         public Network(TapiHandle handle)
         {
@@ -47,6 +49,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Request the lower layers to select the network automatically asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -90,6 +93,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Request the lower layers to select the network which is selected by the user from the network list asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="plmn">The user selected plmn.</param>
         /// <param name="act">The user selected access technology.</param>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -135,6 +139,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends a request to do manual search for the available networks and provides the Network List to the user asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of NetworkPlmnList.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
@@ -181,6 +186,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the present network selection mode i.e. automatic or manual asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Value of NetworkSelectionMode.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -224,6 +230,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the network preferred plmn asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="operation">The operation to be done on the preferred plmn.</param>
         /// <param name="info">The preferred plmn info.</param>
         /// <returns>A task indicating whether the SetNetworkPreferredPlmn method is done or not.</returns>
@@ -280,6 +287,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the preferred plmn list asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>List of NetworkPreferredPlmnInfo.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -325,6 +333,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cancel the triggered manual network search asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task indicating whether the CancelNetworkManualSearch method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
@@ -369,6 +378,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the network serving information asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of NetworkServing.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -414,6 +424,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the network mode asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="mode">The network mode.</param>
         /// <returns>A task indicating whether the SetNetworkMode method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -459,6 +470,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the network mode asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Value of NetworkMode.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -502,6 +514,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the neighboring cell info asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Instance of NetworkNeighboringCell.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -547,6 +560,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Enters or exits the emergency callback mode asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="mode">The emergency callback mode.</param>
         /// <returns>A task indicating whether the SetEmergencyCallbackMode method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -592,6 +606,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the network roaming preference asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="roamPref">The network roaming preference.</param>
         /// <returns>A task indicating whether the SetRoamingPreference method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -637,6 +652,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the network roaming preference asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Value of NetworkPreferred.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -680,6 +696,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the default data subscription asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task indicating whether the SetDefaultDataSubscription method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
@@ -724,6 +741,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the default data subscription.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Value of NetworkDefaultDataSubscription.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -746,6 +764,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Set the default subscription for voice asynchronously.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task indicating whether the SetNetworkDefaultSubscription method is done or not.</returns>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
         /// <privlevel>platform</privlevel>
@@ -790,6 +809,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Get the default subscription for voice.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>Value of NetworkDefaultSubscription.</returns>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from src/Tizen.Tapi/Tizen.Tapi/NetworkData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/NetworkData.cs
index ed4a3ba..f7f4487
@@ -22,6 +22,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network registration status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkRegistrationStatus
     {
         internal NetworkServiceLevel Cs;
@@ -36,6 +37,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Circuit Switched status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Status of circuit switched data.</value>
         public NetworkServiceLevel CircuitStatus
         {
@@ -48,6 +50,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Packet Switched status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Status of packet switched data.</value>
         public NetworkServiceLevel PacketStatus
         {
@@ -60,6 +63,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Registration service type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Service type represented in NetworkServiceType enum.</value>
         public NetworkServiceType Type
         {
@@ -72,6 +76,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Roaming status
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the roaming status.</value>
         public bool IsRoaming
         {
@@ -85,6 +90,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network cell info notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkCellNoti
     {
         internal int Location;
@@ -97,6 +103,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Location Area Code (In case of LTE network, it represents Tracking Area Code).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Location area code represented in integer.</value>
         public int Lac
         {
@@ -109,6 +116,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cell ID.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Cell id represented in integer.</value>
         public int CellId
         {
@@ -122,6 +130,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network change notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkChangeNoti
     {
         internal NetworkSystemType Type;
@@ -134,6 +143,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Access technology.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Access technology represented in NetworkSystemType enum.</value>
         public NetworkSystemType Act
         {
@@ -146,6 +156,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network PLMN.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Plmn value represented as string.</value>
         public string Plmn
         {
@@ -159,6 +170,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network time notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkTimeNoti
     {
         internal DateTime TimeInfo;
@@ -175,6 +187,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Date time information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of DateTime representing date time information.</value>
         public DateTime Time
         {
@@ -187,6 +200,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Wday information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Wday info represented in integer.</value>
         public int WDay
         {
@@ -199,6 +213,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// GMT Off.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>GMT off info represented in integer.</value>
         public int GmtOff
         {
@@ -211,6 +226,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// DST Off.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>DST off info represented in integer.</value>
         public int DstOff
         {
@@ -223,6 +239,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking if it is DST.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check if the time is DST or not.</value>
         public bool IsDst
         {
@@ -235,6 +252,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network PLMN.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>PLMN value represented in string.</value>
         public string Plmn
         {
@@ -248,6 +266,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network identity notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkIdentityNoti
     {
         internal string NwPlmn;
@@ -261,6 +280,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network PLMN.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Plmn value represented in string.</value>
         public string Plmn
         {
@@ -273,6 +293,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Short network name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Short name of the network in string.</value>
         public string ShortName
         {
@@ -285,6 +306,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Full network name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Full name of the network in string.</value>
         public string FullName
         {
@@ -298,6 +320,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network VoLTE status notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkVolteStatus
     {
         internal bool NwIsRegistered;
@@ -311,6 +334,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// VoLTE status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check if it is registered.</value>
         public bool IsRegistered
         {
@@ -323,6 +347,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Services registered for.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Service mask represented in integer.</value>
         public int FeatureMask
         {
@@ -335,6 +360,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network on which VoLTE is registered.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of VoLTE network represented in VolteNetworkType enum.</value>
         public VolteNetworkType Type
         {
@@ -348,6 +374,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines network identity.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkIdentity
     {
         internal string IdName;
@@ -363,6 +390,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Name
         {
             get
@@ -374,6 +402,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Service provider name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ServiceProviderName
         {
             get
@@ -385,6 +414,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network plmn.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Plmn
         {
             get
@@ -396,6 +426,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Plmn Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint PlmnId
         {
             get
@@ -407,6 +438,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Plmn type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public NetworkPlmnType PlmnType
         {
             get
@@ -418,6 +450,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Access technology.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public NetworkSystemType SystemType
         {
             get
@@ -430,6 +463,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class for the network plmn list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkPlmnList
     {
         internal byte NwCount;
@@ -442,6 +476,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network plmn count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Count of the network plmn.</value>
         public byte NetworkCount
         {
@@ -454,6 +489,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of NetworkIdentity.</value>
         public IEnumerable<NetworkIdentity> NetworkList
         {
@@ -467,6 +503,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the preferred plmn information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkPreferredPlmnInfo
     {
         internal byte idex;
@@ -478,6 +515,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Preferred plmn list index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         ///<value>Index of preferred plmn list.</value>
         public byte Index
         {
@@ -495,6 +533,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Preferred plmn.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Plmn string.</value>
         public string Plmn
         {
@@ -512,6 +551,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Name of network.</value>
         public string NetworkName
         {
@@ -529,6 +569,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Service provider name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Name of service provider.</value>
         public string ServiceProviderName
         {
@@ -546,6 +587,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// System type of network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>System type of network.</value>
         public NetworkSystemType SystemType
         {
@@ -564,6 +606,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information related to a cdma system.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkCdmaSysInfo
     {
         internal int Car;
@@ -581,6 +624,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cdma carrier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Cdma carrier.</value>
         public int Carrier
         {
@@ -593,6 +637,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// System Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>System Id.</value>
         public uint SystemId
         {
@@ -605,6 +650,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Id of network.</value>
         public uint NetworkId
         {
@@ -617,6 +663,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Base station Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Id of base station.</value>
         public uint BaseStationId
         {
@@ -629,6 +676,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Latitude of the current base station.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Latitude of the current base station.</value>
         public int BaseStationLatitude
         {
@@ -641,6 +689,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Longitude of the current base station.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Longitude of the current base station.</value>
         public int BaseStationLongitude
         {
@@ -653,6 +702,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Registration zone.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Registration zone.</value>
         public uint RegistrationZone
         {
@@ -665,6 +715,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Pilot offset.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Offset of pilot.</value>
         public uint PilotOffset
         {
@@ -678,6 +729,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information about network area.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkAreaInfo
     {
         internal int Code;
@@ -689,6 +741,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Location area code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Area code of location.</value>
         public int Lac
         {
@@ -701,6 +754,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Instance of NetworkCdmaSysInfo.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkCdmaSysInfo.</value>
         public NetworkCdmaSysInfo CdmaInfo
         {
@@ -714,6 +768,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information of serving network.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkServing
     {
         internal NetworkSystemType Type;
@@ -726,6 +781,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Access technology.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>System type of network.</value>
         public NetworkSystemType SystemType
         {
@@ -738,6 +794,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network plmn.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Plmn of network.</value>
         public string Plmn
         {
@@ -750,6 +807,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Area information of network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkAreaInfo.</value>
         public NetworkAreaInfo AreaInfo
         {
@@ -763,6 +821,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information of cdma cell.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkCdmaCell
     {
         internal uint SysId;
@@ -778,6 +837,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// System Id info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>System Id.</value>
         public uint SystemId
         {
@@ -790,6 +850,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Network Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Network Id.</value>
         public uint NetworkId
         {
@@ -802,6 +863,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Base station Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Base station id.</value>
         public uint BaseStationId
         {
@@ -814,6 +876,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Reference pn.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Reference pn.</value>
         public uint ReferencePn
         {
@@ -826,6 +889,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Latitude of the current base station.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Latitude of the current base station.</value>
         public int BaseStationLatitude
         {
@@ -838,6 +902,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Longitude of the current base station.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Longitude of the current base station.</value>
         public int BaseStationLongitude
         {
@@ -851,6 +916,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information of lte cell.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkLteCell
     {
         internal int Id;
@@ -866,6 +932,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Value of cell Id. -1 indicates that cell Id information is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Cell Id.</value>
         public int CellId
         {
@@ -878,6 +945,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Location area code. This field is ignored when CellId is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Code of area.</value>
         public int Lac
         {
@@ -890,6 +958,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Physical cell id info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Physical cell id.</value>
         public int PhysicalId
         {
@@ -902,6 +971,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// E-Utra absolute rf channel number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>E-Utra absolute rf channel number.</value>
         public int Earfcn
         {
@@ -914,6 +984,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Tracking area code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Area code for tracking.</value>
         public int Tac
         {
@@ -926,6 +997,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Rssi in dBm(signed)
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Rssi in dBm.</value>
         public int Rssi
         {
@@ -939,6 +1011,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information of umts cell.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkUmtsCell
     {
         internal int Id;
@@ -953,6 +1026,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Ucid. -1 indicates that cell Id information is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>RNCID + Cell ID(16 bit).</value>
         public int CellId
         {
@@ -965,6 +1039,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Location area code. This field is ignored when CellId is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Code of area.</value>
         public int Lac
         {
@@ -977,6 +1052,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Utra absolute rf channel number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Utra absolute rf channel number.</value>
         public int Arfcn
         {
@@ -989,6 +1065,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Primary scrambling code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Primary scrambling code.</value>
         public int Psc
         {
@@ -1001,6 +1078,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Received signal code power. Valid values are (0-96, 255).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Power of received signal code.</value>
         public int Rscp
         {
@@ -1015,6 +1093,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing information of geran cell.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkGeranCell
     {
         internal int Id;
@@ -1029,6 +1108,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Value of cell Id. -1 indicates that cell Id information is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Cell Id.</value>
         public int CellId
         {
@@ -1041,6 +1121,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Location area code. This field is ignored when CellId is not present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Code of area.</value>
         public int Lac
         {
@@ -1053,6 +1134,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Broadcast control channel frequency number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Broadcast control channel frequency number.</value>
         public int Bcch
         {
@@ -1065,6 +1147,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Base station identification code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Id code of base station.</value>
         public int Bsic
         {
@@ -1077,6 +1160,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Received signal strength level. Valid values are (0-63, 99).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Strength of received signal.</value>
         public int Rxlev
         {
@@ -1090,6 +1174,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains geran, umts, cdma and lte cell information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Cell
     {
         internal NetworkGeranCell Geran;
@@ -1103,6 +1188,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Geran cell information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkGeranCell.</value>
         public NetworkGeranCell GeranCell
         {
@@ -1115,6 +1201,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cdma cell information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkCdmaCell.</value>
         public NetworkCdmaCell CdmaCell
         {
@@ -1127,6 +1214,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Umts cell information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkUmtsCell.</value>
         public NetworkUmtsCell UmtsCell
         {
@@ -1139,6 +1227,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Lte cell information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkLteCell.</value>
         public NetworkLteCell LteCell
         {
@@ -1152,6 +1241,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains serving cell information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkServingCell
     {
         internal NetworkSystemType SysType;
@@ -1165,6 +1255,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Access technology.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Network system type.</value>
         public NetworkSystemType SystemType
         {
@@ -1177,6 +1268,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile country code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Country code of the mobile.</value>
         public int MobileCountryCode
         {
@@ -1189,6 +1281,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile network code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Network code of the mobile.</value>
         public int MobileNetworkCode
         {
@@ -1201,6 +1294,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Information of cell.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         ///<value>Instance of Cell.</value>
         public Cell CellInfo
         {
@@ -1214,6 +1308,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains neighboring cell information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NetworkNeighboringCell
     {
         internal NetworkServingCell ServCell;
@@ -1227,6 +1322,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Serving cell information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Instance of NetworkServingCell.</value>
         public NetworkServingCell ServingCell
         {
@@ -1239,6 +1335,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Geran cell info list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of NetworkGeranCell.</value>
         public IEnumerable<NetworkGeranCell> GeranList
         {
@@ -1251,6 +1348,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Umts cell info list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of NetworkUmtsCell.</value>
         public IEnumerable<NetworkUmtsCell> UmtsList
         {
@@ -1263,6 +1361,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Lte cell info list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of NetworkLteCell.</value>
         public IEnumerable<NetworkLteCell> LteList
         {
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.Tapi/Tizen.Tapi/NetworkEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/NetworkEnumerations.cs
index f047dfb..1e3aa06
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the status of the network service.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkServiceLevel
     {
         /// <summary>
@@ -42,6 +43,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the service types of TAPI.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkServiceType
     {
         /// <summary>
@@ -89,6 +91,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the system types of network.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkSystemType
     {
         /// <summary>
@@ -176,6 +179,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the network emergency callback mode states (3GPP2 specific enum).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkEmergencyCallbackMode
     {
         /// <summary>
@@ -191,6 +195,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the possible default Data Subscriptions.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkDefaultDataSubscription
     {
         /// <summary>
@@ -210,6 +215,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the possible default Subscriptions for CS (Voice).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkDefaultSubscription
     {
         /// <summary>
@@ -229,6 +235,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for type of network on which VoLTE is registered.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum VolteNetworkType
     {
         /// <summary>
@@ -248,6 +255,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the packet service protocol type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkPsType
     {
         /// <summary>
@@ -275,6 +283,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the network name display condition type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkNameDisplayCondition
     {
         /// <summary>
@@ -298,6 +307,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the different serving network LTE  band type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkLteBandType
     {
         /// <summary>
@@ -317,6 +327,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the operation that can be done on a preferred PLMN.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkPreferredPlmnOp
     {
         /// <summary>
@@ -336,6 +347,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the CDMA Preferred Network Type(CDMA only).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkPreferred
     {
         /// <summary>
@@ -379,6 +391,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the different network operation causes.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkOperationCause
     {
         /// <summary>
@@ -418,6 +431,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the network plmn type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkPlmnType
     {
         /// <summary>
@@ -441,6 +455,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the network selection mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkSelectionMode
     {
         /// <summary>
@@ -456,6 +471,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the different network modes.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum NetworkMode
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 97%
rename from src/Tizen.Tapi/Tizen.Tapi/Oem.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Oem.cs
index 3aa69ac..00084cd
@@ -24,6 +24,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class provides functions for sending oem related data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Oem
     {
         private IntPtr _handle;
@@ -33,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A public constructor for Oem class to create a Oem instance for the given tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">The tapi handle.</param>
         public Oem(TapiHandle handle)
         {
@@ -47,6 +49,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends oem data directly.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="oemId">Oem id for user specification.</param>
         /// <param name="data">Oem data for sending.</param>
         /// <privilege>http://tizen.org/privilege/telephony.admin</privilege>
@@ -71,6 +74,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends oem data directly.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="oemId">Oem id for user specification.</param>
         /// <param name="data">Oem data for sending.</param>
         /// <returns>The oem data which is sent.</returns>
@@ -100,6 +104,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends oem data directly.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="oemId">Oem id for user specification.</param>
         /// <param name="data">Oem data for sending.</param>
         /// <returns>The oem data which is sent.</returns>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 91%
rename from src/Tizen.Tapi/Tizen.Tapi/OemData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/OemData.cs
index f008d96..6fc59d5
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines OEM data base structure.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class OemData
     {
         internal uint OemId;
@@ -32,6 +33,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Oem ID.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Oem id represented in unsigned integer.</value>
         public uint Id
         {
@@ -44,6 +46,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Oem data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Oem data represented in byte array.</value>
         public byte[] Data
         {
old mode 100755 (executable)
new mode 100644 (file)
similarity index 98%
rename from src/Tizen.Tapi/Tizen.Tapi/Phonebook.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Phonebook.cs
index 217d390..2db6032
@@ -24,6 +24,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which manages sim phonebook record information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Phonebook
     {
         private IntPtr _handle = IntPtr.Zero;
@@ -37,6 +38,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the instance of Phonebook class.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">An instance of TapiHandle obtained from InitTapi in TapiManager API.</param>
         /// <exception cref="ArgumentNullException">Thrown when handle is passed as null.</exception>
         public Phonebook(TapiHandle handle)
@@ -52,6 +54,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the current inserted SIM phonebook init status, available phonebook list, and first valid index in case of FDN, ADN, and 3G phonebook.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>An instance of SimPhonebookStatus containing init status and phonebook list information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -77,6 +80,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the number of used records and total records of a specific SIM phonebook type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The different storage types to be selected in the SIM.</param>
         /// <returns>A task containing an instance of PhonebookStorageInfo.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -121,6 +125,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the max text length and max number length supported by the SIM phone book elementary file.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The different storage types to be selected in the SIM.</param>
         /// <returns>A task containing an instance of PhonebookMetaInfo.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -165,6 +170,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM 3G phonebook supported EFs like ANR, SNE, GRP, EMAIL and the corresponding EFs max text length, number length, and size.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing an instance of PhonebookMetaInfo3G.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -208,6 +214,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Reads SIM phone book entry information from the given storage type and index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The different storage types to be selected in the SIM.</param>
         /// <param name="index">The index for accessing the SIM data.</param>
         /// <returns>A task containing an instance of PhonebookRecord.</returns>
@@ -258,6 +265,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Adds or edits SIM phone book record entry information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="record">The phonebook data to be updated or added.</param>
         /// <returns>A task indicating whether the updation is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -314,6 +322,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Deletes a SIM phonebook record.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The different storage types to be selected in the SIM.</param>
         /// <param name="index">The index of the record to be deleted.</param>
         /// <returns>A task indicating whether deletion is done or not.</returns>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 88%
rename from src/Tizen.Tapi/Tizen.Tapi/PhonebookData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/PhonebookData.cs
index f28cd93..c528b26
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the list of phone book availability of the current SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPhonebookList
     {
         internal int PbFdn;
@@ -37,6 +38,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Fixed Dialing Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Fdn represented in integer format.</value>
         public int Fdn
         {
@@ -49,6 +51,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM - ADN(2G phonebook, Under DF phonebook).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Adn represented in integer format.</value>
         public int Adn
         {
@@ -61,6 +64,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Service Dialing Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sdn represented in integer format.</value>
         public int Sdn
         {
@@ -73,6 +77,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USIM - 3G phonebook.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Usim represented in integer format.</value>
         public int Usim
         {
@@ -85,6 +90,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Additional number Alpha String phonebook.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Aas represented in integer format.</value>
         public int Aas
         {
@@ -97,6 +103,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Grouping information Alpha String phonebook.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Gas represented in integer format.</value>
         public int Gas
         {
@@ -110,6 +117,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines phone book status of the current SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPhonebookStatus
     {
         internal bool InitStatus;
@@ -122,6 +130,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Init completed or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the status of Init.</value>
         public bool IsInitCompleted
         {
@@ -134,6 +143,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of phonebook.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SimPhonebookList containing the list of available phone book.</value>
         public SimPhonebookList PbList
         {
@@ -147,6 +157,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines phonebook contact change information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PhonebookContactChangeInfo
     {
         internal PhonebookType PbType;
@@ -160,6 +171,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Storage file type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of phonebook storage represented as PhonebookType enum.</value>
         public PhonebookType Type
         {
@@ -172,6 +184,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Changed index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Index value represented in unsigned short.</value>
         public ushort Index
         {
@@ -184,6 +197,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phonebook operation.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Operation indicating the action on phonebook contact.</value>
         public PhonebookOperationType Operation
         {
@@ -197,6 +211,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines phone book storage count information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PhonebookStorageInfo
     {
         internal PhonebookType PbType;
@@ -209,6 +224,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Storage file type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of phone book storage file.</value>
         public PhonebookType Type
         {
@@ -221,6 +237,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Total record count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Count of total phonebook record.</value>
         public ushort TotalRecord
         {
@@ -233,6 +250,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Used record count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Number of used phonebook record.</value>
         public ushort UsedRecord
         {
@@ -246,6 +264,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines phone book entry information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PhonebookMetaInfo
     {
         internal PhonebookType MetaType;
@@ -261,6 +280,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Storage file type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of phonebook storage.</value>
         public PhonebookType Type
         {
@@ -273,6 +293,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phone book minimum index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Minimum index value of the phone book record.</value>
         public ushort MinIndex
         {
@@ -285,6 +306,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phone book maximum index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum index value of the phone book record.</value>
         public ushort MaxIndex
         {
@@ -297,6 +319,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phone number's maximum length
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum length of the phone number.</value>
         public ushort NumberMaxLength
         {
@@ -309,6 +332,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Text's maximum length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum length of the text.</value>
         public ushort TextMaxLength
         {
@@ -321,6 +345,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phone book used record count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Number of used phone book record.</value>
         public ushort UsedCount
         {
@@ -334,6 +359,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines 3G phone book capability information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class FileTypeCapabilityInfo3G
     {
         internal PhonebookFileType3G Type;
@@ -347,6 +373,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// 3G phonebook file type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>File type of the 3G phonebook.</value>
         public PhonebookFileType3G FileType
         {
@@ -359,6 +386,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Max index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum index value present in 3G phonebook.</value>
         public ushort MaxIndex
         {
@@ -371,6 +399,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Max text length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum text length in unsigned short.</value>
         public ushort TextMaxLength
         {
@@ -383,6 +412,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Used record count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Number of used record in 3G phonebook.</value>
         public ushort UsedCount
         {
@@ -396,6 +426,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which manages Sim phonebook and its capabilities information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PhonebookMetaInfo3G
     {
         internal ushort FileCount;
@@ -407,6 +438,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phonebook file type count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Filetype count of the 3G phonebook.</value>
         public ushort FileTypeCount
         {
@@ -419,6 +451,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phonebook file type information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of FileTypeCapabilityInfo3G instances.</value>
         public IEnumerable<FileTypeCapabilityInfo3G> FileTypeInfo
         {
@@ -432,6 +465,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains information about phonebook record.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PhonebookRecord
     {
         private PhonebookType _type;
@@ -459,6 +493,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phonebook type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of the phonebook used.</value>
         public PhonebookType Type
         {
@@ -476,6 +511,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Index value represented in unsigned short.</value>
         public ushort Index
         {
@@ -493,6 +529,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Next index (This field is not used in the add/update case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Next index represented in unsigned short.</value>
         public ushort NextIndex
         {
@@ -510,6 +547,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Name in phonebook record.</value>
         public string Name
         {
@@ -527,6 +565,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Dcs.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sim encryption type.</value>
         public TextEncryptionType Dcs
         {
@@ -544,6 +583,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Number in phonebook record.</value>
         public string Number
         {
@@ -561,6 +601,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Ton.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sim type of number.</value>
         public SimTypeOfNumber Ton
         {
@@ -578,6 +619,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SNE(Second Name Entry).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Second name entry in byte array.</value>
         public string Sne
         {
@@ -595,6 +637,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SNE DCS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SNE text encryption type.</value>
         public TextEncryptionType SneDcs
         {
@@ -612,6 +655,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Additional Number1.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number1 represented in byte array.</value>
         public string Anr1
         {
@@ -629,6 +673,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ANR1 TON.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number1 type of number.</value>
         public SimTypeOfNumber Anr1Ton
         {
@@ -646,6 +691,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Additional Number2.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number2 represented in byte array.</value>
         public string Anr2
         {
@@ -663,6 +709,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ANR2 TON.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number2 type of number.</value>
         public SimTypeOfNumber Anr2Ton
         {
@@ -680,6 +727,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Additional number3.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number3 represented in byte array.</value>
         public string Anr3
         {
@@ -697,6 +745,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ANR3 TON.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Additional number3 type of number.</value>
         public SimTypeOfNumber Anr3Ton
         {
@@ -714,6 +763,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Email1.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Email1 represented in byte array.</value>
         public string Email1
         {
@@ -731,6 +781,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Email2.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Email2 represented in byte array.</value>
         public string Email2
         {
@@ -748,6 +799,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Email3.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Email3 represented in byte array.</value>
         public string Email3
         {
@@ -765,6 +817,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Email4.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Email4 reprensented in byte array.</value>
         public string Email4
         {
@@ -782,6 +835,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Group index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Group index represented in unsigned short.</value>
         public ushort GroupIndex
         {
@@ -799,6 +853,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Phonebook control.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Phonebook control represented in unsigned short.</value>
         public ushort PbControl
         {
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.Tapi/Tizen.Tapi/PhonebookEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/PhonebookEnumerations.cs
index 414ecbc..b05fef9
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the storage types to be selected in the SIM or USIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum PhonebookType
     {
         /// <summary>
@@ -54,6 +55,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the phonebook operation types.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum PhonebookOperationType
     {
         /// <summary>
@@ -73,6 +75,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the storage field types in the 3G Phone book.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum PhonebookFileType3G
     {
         /// <summary>
@@ -128,6 +131,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the text encryption type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum TextEncryptionType
     {
         /// <summary>
@@ -151,6 +155,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the phonebook access result.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum PhonebookAccessResult
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 88%
rename from src/Tizen.Tapi/Tizen.Tapi/SatData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SatData.cs
index 0a2f215..26df621
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SAT main menu info.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatMainMenuInfo
     {
         internal int Id;
@@ -40,6 +41,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command number represented in integer format.</value>
         public int CommandId
         {
@@ -52,6 +54,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether main menu is present or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value checking the presence of main menu.</value>
         public bool IsMainMenuPresent
         {
@@ -64,6 +67,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Menu title text.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Title text of the menu item represented in string.</value>
         public string MenuTitle
         {
@@ -76,6 +80,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Menu items.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of SatMenuInfo objects.</value>
         public IEnumerable<SatMenuInfo> MenuItems
         {
@@ -88,6 +93,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of menu itmes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An unsigned value representing the number of menu items.</value>
         public ushort MainMenuCount
         {
@@ -100,6 +106,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for a help information request.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value for checking the flag for help information request.</value>
         public bool IsMainMenuHelpInfo
         {
@@ -112,6 +119,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Updated Sat main menu or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check whether Sat main menu is updated or not.</value>
         public bool IsUpdatedMainMenu
         {
@@ -124,6 +132,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo class representing the icon identifier.</value>
         public SatIconIdInfo IconId
         {
@@ -136,6 +145,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of Icon Identifiers.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdListInfo class representing the icon identifier list.</value>
         public SatIconIdListInfo IconIdList
         {
@@ -150,6 +160,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which contains menu item information for the setup menu.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatMenuInfo
     {
         internal string Item;
@@ -162,6 +173,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Menu item character data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Menu item data represented in string.</value>
         public string MenuItem
         {
@@ -174,6 +186,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Identifies the item on the menu that the user selected.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Item identifier value represented as a character.</value>
         public char ItemId
         {
@@ -187,6 +200,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class defining the icon data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatIconIdInfo
     {
         internal bool IsPresent;
@@ -201,6 +215,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether the icon identifier exists.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value representing if the icon exists or not.</value>
         public bool IsIconPresent
         {
@@ -213,6 +228,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon qualifier type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Icon qualifier type represented as SatIconQualifierType enum.</value>
         public SatIconQualifierType IconQualifier
         {
@@ -225,6 +241,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A byte value representing the icon identifier.</value>
         public byte IconId
         {
@@ -237,6 +254,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconInfo class.</value>
         public SatIconInfo IconInfo
         {
@@ -250,6 +268,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing the definition of icon info object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatIconInfo
     {
         internal byte IconWidth;
@@ -267,6 +286,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon width.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Width of the icon represented in byte.</value>
         public byte Width
         {
@@ -279,6 +299,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon height.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Height of the icon represented in byte.</value>
         public byte Height
         {
@@ -291,6 +312,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Image coding scheme.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Image coding scheme represented as SatImageCodingScheme enum.</value>
         public SatImageCodingScheme Ics
         {
@@ -303,6 +325,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon data length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Data length of the icon represented in ushort.</value>
         public ushort IconDataLength
         {
@@ -315,6 +338,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Clut data length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Data length of the clut represented in ushort.</value>
         public ushort ClutDataLength
         {
@@ -327,6 +351,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon file.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Icon file string.</value>
         public string IconFile
         {
@@ -339,6 +364,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Clut file.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Clut file string.</value>
         public string ClutFile
         {
@@ -352,6 +378,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the icon identifier data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatIconIdListInfo
     {
         internal bool IsPresent;
@@ -367,6 +394,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether the icon identifier exists.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value indicating the presence of icon.</value>
         public bool IsIconPresent
         {
@@ -379,6 +407,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon list qualifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Icon list qualifier represented in SatIconQualifierType enum.</value>
         public SatIconQualifierType IconListQualifier
         {
@@ -391,6 +420,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of icons.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Byte value indicating the number of icons.</value>
         public byte IconCount
         {
@@ -403,6 +433,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon identifier list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A byte array containing the list of Icon identifier.</value>
         public byte[] IconIdList
         {
@@ -415,6 +446,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon list info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>List of icon info.</value>
         public IEnumerable<SatIconInfo> IconInfo
         {
@@ -428,6 +460,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class containing display text proactive command for SAT UI.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatDisplayTextData
     {
         internal int Id;
@@ -445,6 +478,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id in integer format.</value>
         public int CommandId
         {
@@ -457,6 +491,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Character data to display on screen.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo containing text information.</value>
         public SatTextInfo TextInfo
         {
@@ -469,6 +504,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Duration of the display.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Duration in integer format.</value>
         public uint Duration
         {
@@ -481,6 +517,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag that indicates whether text is to be displayed if some other app is using the screen.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value checking the priority of the display.</value>
         public bool IsPriorityHigh
         {
@@ -493,6 +530,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag that indicates whether user response is required.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the need of user response.</value>
         public bool IsUserResponseRequired
         {
@@ -505,6 +543,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether immediate response is required.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the immediate response status.</value>
         public bool IsImmediateResponse
         {
@@ -517,6 +556,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo class.</value>
         public SatIconIdInfo IconId
         {
@@ -530,6 +570,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class defining character data for the SAT engine data structure.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatTextInfo
     {
         internal ushort Length;
@@ -542,6 +583,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Character data length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An unsigned short value representing the string length.</value>
         public ushort StringLength
         {
@@ -554,6 +596,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Character data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A byte array representing the string data.</value>
         public byte[] StringData
         {
@@ -567,6 +610,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines select item proactive command data for SAT UI.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSelectItemData
     {
         internal int Id;
@@ -585,6 +629,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -597,6 +642,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for a help information request.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check whether help information is availale or not.</value>
         public bool IsHelpInfoAvailable
         {
@@ -609,6 +655,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Menu title text.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class containing the text information.</value>
         public SatTextInfo TextInfo
         {
@@ -621,6 +668,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Selected default item.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Default item index of the given items.</value>
         public char DefaultItemIndex
         {
@@ -633,6 +681,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of menu items.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Menu items count represented as a character.</value>
         public char MenuItemCount
         {
@@ -645,6 +694,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Menu items.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of SatMenuItemInfo objects.</value>
         public IEnumerable<SatMenuItemInfo> MenuItems
         {
@@ -657,6 +707,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo class.</value>
         public SatIconIdInfo IconId
         {
@@ -669,6 +720,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of Icon Identifiers.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdListInfo class containing the list of icon identifiers.</value>
         public SatIconIdListInfo IconIdList
         {
@@ -682,6 +734,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the menu item data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatMenuItemInfo
     {
         internal byte Id;
@@ -695,6 +748,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Item identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Item Id represented in byte.</value>
         public byte ItemId
         {
@@ -707,6 +761,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Text length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of the text represented in byte.</value>
         public byte TextLength
         {
@@ -719,6 +774,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Text information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A byte array of length TextLength containing the text information.</value>
         public byte[] Text
         {
@@ -732,6 +788,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines get inkey proactive command data for SAT UI.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatGetInKeyData
     {
         internal int Id;
@@ -750,6 +807,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -762,6 +820,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Input Type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Character Set or Yes/No.</value>
         public SatInKeyType KeyType
         {
@@ -786,6 +845,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether input character is numeric.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value for checking whether input character is numeric or not.</value>
         public bool IsNumeric
         {
@@ -798,6 +858,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Help info request flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value for checking whether help info is available or not.</value>
         public bool IsHelpInfoAvailable
         {
@@ -810,6 +871,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Character data to display on the screen.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class containing the text information.</value>
         public SatTextInfo TextInfo
         {
@@ -822,6 +884,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Duration of the display.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Display duration represented in unsigned integer.</value>
         public uint Duration
         {
@@ -834,6 +897,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo class containing the Icon identifier information.</value>
         public SatIconIdInfo IconId
         {
@@ -847,6 +911,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines get input proactive command data for SAT UI.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatGetInputData
     {
         internal int Id;
@@ -866,6 +931,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -878,6 +944,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Input character mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SMS default, UCS2.</value>
         public SatInputAlphabetType AlphabetType
         {
@@ -890,6 +957,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check whether input character is numeric.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the nature of input character.</value>
         public bool IsNumeric
         {
@@ -902,6 +970,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Help info request flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check help information availability.</value>
         public bool IsHelpInfoAvailable
         {
@@ -914,6 +983,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag that indicates whether to show input data on the screen.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the availability of input data on the screen.</value>
         public bool IsEchoInput
         {
@@ -926,6 +996,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Character data to display on the screen.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo.</value>
         public SatTextInfo TextInfo
         {
@@ -938,6 +1009,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Input data min, max length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatResponseLengthInfo.</value>
         public SatResponseLengthInfo ResponseLength
         {
@@ -950,6 +1022,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Default input character data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo.</value>
         public SatTextInfo DefualtText
         {
@@ -962,6 +1035,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo.</value>
         public SatIconIdInfo IconId
         {
@@ -975,6 +1049,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines expected user response length.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatResponseLengthInfo
     {
         internal byte Min;
@@ -987,6 +1062,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// User response length's minimum value.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Minimum value represented in byte.</value>
         public byte Minimum
         {
@@ -999,6 +1075,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// User response length's maximum value.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Maximum value represented in byte.</value>
         public byte Maximum
         {
@@ -1012,6 +1089,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines refresh proactive command data for applications that are concerned with files residing on USIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatRefreshData
     {
         internal int Id;
@@ -1027,6 +1105,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive command number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -1039,6 +1118,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Concerned application type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Refresh app type represented in SatRefreshAppType enum.</value>
         public SatRefreshAppType AppType
         {
@@ -1051,6 +1131,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Refresh mode.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Refresh mode represented in SatCmdQualiRefresh enum.</value>
         public SatCmdQualiRefresh RefreshMode
         {
@@ -1063,6 +1144,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Refresh file count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>File count represented in byte.</value>
         public byte FileCount
         {
@@ -1075,6 +1157,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Refresh file identifiers.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of SimFileId enums.</value>
         public IEnumerable<SimFileId> FileId
         {
@@ -1088,6 +1171,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines send SMS proactive command data for the SMS application.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSendSmsData
     {
         internal int Id;
@@ -1102,6 +1186,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive Command Number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer.</value>
         public int CommandId
         {
@@ -1114,6 +1199,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if packing is required for SMS Tpdu.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the need of packing in SMS Tpdu data.</value>
         public bool IsPackingRequired
         {
@@ -1126,6 +1212,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Destination address.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatAddressData containing the address info.</value>
         public SatAddressData Address
         {
@@ -1138,6 +1225,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SMS Tpdu data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatSmsTpduInfo.</value>
         public SatSmsTpduInfo TpduInfo
         {
@@ -1151,6 +1239,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SAT address data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatAddressData
     {
         internal SimTypeOfNumber Type;
@@ -1165,6 +1254,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type of number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sim type of number represented in SimTypeOfNumber enum.</value>
         public SimTypeOfNumber Ton
         {
@@ -1177,6 +1267,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number plan identity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sim number plan represented in SimNumberPlanIdentity enum.</value>
         public SimNumberPlanIdentity Npi
         {
@@ -1189,6 +1280,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Length of dialling number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Dialling number length represented in byte.</value>
         public byte DiallingNumberLength
         {
@@ -1201,6 +1293,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Dialling number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Dialling number represented in string.</value>
         public string DiallingNumber
         {
@@ -1214,6 +1307,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the Result data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSmsTpduInfo
     {
         internal SatSmsTpduType Type;
@@ -1227,6 +1321,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SMS TPDU type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Tpdu type represented in SatSmsTpduType.</value>
         public SatSmsTpduType TpduType
         {
@@ -1239,6 +1334,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SMS TPDU data length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of Tpdu data represented in byte.</value>
         public byte DataLength
         {
@@ -1251,6 +1347,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SMS TPDU data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An array of bytes representing TPDU data.</value>
         public byte[] TpduData
         {
@@ -1264,6 +1361,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines Event list info.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatEventListData
     {
         internal bool IsDownloadActive;
@@ -1286,6 +1384,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event download is acive.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check for active event download.</value>
         public bool IsEventDownloadActive
         {
@@ -1298,6 +1397,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event is about Mt call event.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the event for Mt call event.</value>
         public bool IsMtCallEvent
         {
@@ -1310,6 +1410,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the call is connected.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the connection of call.</value>
         public bool IsCallConnected
         {
@@ -1322,6 +1423,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the call is disconnected.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the call disconnection.</value>
         public bool IsCallDisconnected
         {
@@ -1334,6 +1436,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event is aboout locaion status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the presence of location status in the event.</value>
         public bool IsLocationStatus
         {
@@ -1346,6 +1449,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event is about user activity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the presence of user activity.</value>
         public bool IsUserActivity
         {
@@ -1358,6 +1462,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if idle screen is available.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the availability of idle screen.</value>
         public bool IsIdleScreenAvailable
         {
@@ -1370,6 +1475,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event is about card reader status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the status of card reader.</value>
         public bool IsCardReaderStatus
         {
@@ -1382,6 +1488,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event is about language selection.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check if the event is language selection.</value>
         public bool IsLanguageSelection
         {
@@ -1394,6 +1501,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the browser is terminated.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the termination of browser.</value>
         public bool IsBrowserTermination
         {
@@ -1406,6 +1514,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the data is available.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check availablility of data.</value>
         public bool IsDataAvailable
         {
@@ -1418,6 +1527,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to check if the event has channel status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check if this field is a channel status.</value>
         public bool IsChannelStatus
         {
@@ -1431,6 +1541,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines send DTMF proactive command data for the DTMF application.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSendDtmfData
     {
         internal int Id;
@@ -1444,6 +1555,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive Command Number sent by USIM
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer.</value>
         public int CommandId
         {
@@ -1456,6 +1568,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Hidden mode flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Flag to check if the data is in hidden mode.</value>
         public bool IsHiddenMode
         {
@@ -1468,6 +1581,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// DTMF string data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo containing DTMF string data.</value>
         public SatTextInfo DtmfString
         {
@@ -1481,6 +1595,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines call control confirm data for Call/Ss.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatCallCtrlData
     {
         internal SatTextInfo Addr;
@@ -1496,6 +1611,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call destination address.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class.</value>
         public SatTextInfo Address
         {
@@ -1508,6 +1624,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call SUB address.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class.</value>
         public SatTextInfo SubAddress
         {
@@ -1520,6 +1637,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// BC repeat indicator.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SatBcRepeatIndicatorType enum representing Bc repeat indicator.</value>
         public SatBcRepeatIndicatorType BcRepeatIndicator
         {
@@ -1532,6 +1650,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Configuration Capability Parameter 1.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class.</value>
         public SatTextInfo Ccp1
         {
@@ -1544,6 +1663,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Configuration Capability Parameter 2.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class.</value>
         public SatTextInfo Ccp2
         {
@@ -1557,6 +1677,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines common call control confirm data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatCallCtrlConfirmData
     {
         internal SatCallType Type;
@@ -1574,6 +1695,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control confirm type - call, SS or USSD.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of call represented in SatCallType enum.</value>
         public SatCallType CallType
         {
@@ -1586,6 +1708,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control result type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of call control result represented in SatCallCtrlResultType enum.</value>
         public SatCallCtrlResultType CallCtrlResult
         {
@@ -1598,6 +1721,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control display data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo class containing information about call control display data.</value>
         public SatTextInfo DisplayData
         {
@@ -1610,6 +1734,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking existence of call control display.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check existence of user info display.</value>
         public bool IsUserInfoDisplayEnabled
         {
@@ -1622,6 +1747,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control call address.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallType is MoVoice. Otherwise it will be null.
         /// </remarks>
@@ -1637,6 +1763,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control SS string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallType is Ss. Otherwise it will be null.
         /// </remarks>
@@ -1652,6 +1779,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call control USSD string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This value will be filled only if CallType is Ussd. Otherwise it will be null.
         /// </remarks>
@@ -1668,6 +1796,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A  class which defines the data coding scheme object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatDataCodingScheme
     {
         internal bool IsCompressed;
@@ -1682,6 +1811,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag to verify the compressed format.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the compressed value.</value>
         public bool IsCompressedFormat
         {
@@ -1694,6 +1824,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Alphabet format type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Represented in SatAlphabetFormat enum.</value>
         public SatAlphabetFormat AlphabetFormat
         {
@@ -1706,6 +1837,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type of message class.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Message class represented in SatMsgClassType enum.</value>
         public SatMsgClassType MsgClass
         {
@@ -1718,6 +1850,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Raw DCS info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Dcs info stored in byte.</value>
         public byte RawDcs
         {
@@ -1731,6 +1864,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines text string data object.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatTextTypeInfo
     {
         internal bool IsDigit;
@@ -1745,6 +1879,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag for checking whether only digits are used.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value for checking the usage of only digits.</value>
         public bool IsDigitOnly
         {
@@ -1757,6 +1892,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Data coding scheme.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatDataCodingScheme class.</value>
         public SatDataCodingScheme DCS
         {
@@ -1769,6 +1905,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Text length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of the string in unsigned short format.</value>
         public ushort StringLength
         {
@@ -1781,6 +1918,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Text string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Text represented in string.</value>
         public string TextString
         {
@@ -1794,6 +1932,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines MO SMS control confirm data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatMoSmsCtrlData
     {
         internal SatCallCtrlResultType Result;
@@ -1809,6 +1948,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Envelope result.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Result of MO SMS control confirm data.</value>
         public SatCallCtrlResultType MoResult
         {
@@ -1821,6 +1961,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Display present flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the presence of user information display.</value>
         public bool IsUserInfoDisplayEnabled
         {
@@ -1833,6 +1974,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Display data for sending SMS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextTypeInfo containing display data for sending SMS.</value>
         public SatTextTypeInfo DisplayData
         {
@@ -1845,6 +1987,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The RP destination address of the service center.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextTypeInfo containing RP destination address.</value>
         public SatTextTypeInfo RpDestAddress
         {
@@ -1857,6 +2000,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The TP destinationn address.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextTypeInfo containing TP destination address.</value>
         public SatTextTypeInfo TpDestAddress
         {
@@ -1870,6 +2014,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines setup call proactive command data for the call application.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSetupCallData
     {
         internal int Id;
@@ -1886,6 +2031,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive Command Number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command Id represented in integer format.</value>
         public int CommandId
         {
@@ -1898,6 +2044,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call type
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of call represented in SatCmdQualiSetupCall enum.</value>
         public SatCmdQualiSetupCall CallType
         {
@@ -1910,6 +2057,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Display data for calling.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo containing display data for calling.</value>
         public SatTextInfo DisplayText
         {
@@ -1922,6 +2070,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatTextInfo containing call number information.</value>
         public SatTextInfo CallNumber
         {
@@ -1934,6 +2083,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Maximum repeat duration.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Max repeat duration represented in unsigned integer format.</value>
         public uint Duration
         {
@@ -1946,6 +2096,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Icon identifier for the call application.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SatIconIdInfo containing Icon id information.</value>
         public SatIconIdInfo IconId
         {
@@ -1959,6 +2110,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines Send SS notification proactive command data for the applicaiton.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSendSsData
     {
         internal int Id;
@@ -1974,6 +2126,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive Command Number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -1986,6 +2139,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type of Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>TON represented in SimTypeOfNumber enum.</value>
         public SimTypeOfNumber Ton
         {
@@ -1998,6 +2152,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Numbering Plan Identity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>NPI reprensented in SimNumberPlanIdentity enum.</value>
         public SimNumberPlanIdentity Npi
         {
@@ -2010,6 +2165,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS string length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of SS string represented in byte.</value>
         public byte StringLength
         {
@@ -2022,6 +2178,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Text string represented in string.</value>
         public string SsString
         {
@@ -2035,6 +2192,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines send USSD notification proactive command data for the application.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SatSetupUssdData
     {
         internal int Id;
@@ -2049,6 +2207,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Proactive Command Number sent by USIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Command id represented in integer format.</value>
         public int CommandId
         {
@@ -2061,6 +2220,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Raw DCS info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Raw DCS information represented in byte.</value>
         public byte RawDcs
         {
@@ -2073,6 +2233,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD string length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of USSD string in byte.</value>
         public byte UssdStringLength
         {
@@ -2085,6 +2246,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Ussd text represented in string format.</value>
         public string UssdString
         {
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.Tapi/Tizen.Tapi/SatEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SatEnumerations.cs
index f3477c0..3b2ad50
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the UI display status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatUiDisplayStatus
     {
         /// <summary>
@@ -34,6 +35,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the command qualifier values of the refresh command.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatCmdQualiRefresh
     {
         /// <summary>
@@ -73,6 +75,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the icon qualifier.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatIconQualifierType
     {
         /// <summary>
@@ -92,6 +95,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM image coding scheme type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatImageCodingScheme
     {
         /// <summary>
@@ -111,6 +115,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the inkey type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatInKeyType
     {
         /// <summary>
@@ -126,6 +131,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the user input type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatInputAlphabetType
     {
         /// <summary>
@@ -141,6 +147,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the refresh application type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatRefreshAppType
     {
         /// <summary>
@@ -164,6 +171,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SMS TPDU type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatSmsTpduType
     {
         /// <summary>
@@ -195,6 +203,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the type of command and the next action indicator.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatCommandType
     {
         /// <summary>
@@ -310,6 +319,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SAT call type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatCallType
     {
         /// <summary>
@@ -341,6 +351,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the result of call control by SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatCallCtrlResultType
     {
         /// <summary>
@@ -364,6 +375,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM ATK BC repeat indicator type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatBcRepeatIndicatorType
     {
         /// <summary>
@@ -383,6 +395,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for alphabet format.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatAlphabetFormat
     {
         /// <summary>
@@ -406,6 +419,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the message class.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatMsgClassType
     {
         /// <summary>
@@ -437,6 +451,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the command qualifier values of the setup call command.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SatCmdQualiSetupCall
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 98%
rename from src/Tizen.Tapi/Tizen.Tapi/Sim.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Sim.cs
index 4400737..f503f6f
@@ -25,6 +25,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which manages SIM card services.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Sim
     {
         private IntPtr _handle = IntPtr.Zero;
@@ -37,6 +38,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate Sim class using the Tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">An instance of TapiHandle obtained from InitTapi in TapiManager API.</param>
         /// <exception cref="ArgumentNullException">Thrown when handle is passed as null.</exception>
         public Sim(TapiHandle handle)
@@ -52,6 +54,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM card initialization status and SIM card identification.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>An instance of SimInitInfo class in case of success. Null in case of failure.</value>
         public SimInitInfo InitInfo
         {
@@ -85,6 +88,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the card type (SIM/USIM).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCardType SimType
         {
             get
@@ -104,6 +108,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM IMSI information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimImsiInfo Imsi
         {
             get
@@ -123,6 +128,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets ECC(SIM) or UECC(USIM) data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimEccInfoList Ecc
         {
             get
@@ -142,6 +148,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the list of application on UICC.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A byte containing the masking value for SimAppType.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -165,6 +172,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the unique identification number of the (U)ICC.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing ICCID information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -208,6 +216,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets language preference(indication) information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing information about SIM language preference.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -250,6 +259,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Updates language preference information to the SIM card.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="language">The language preference information.</param>
         /// <returns>A task indicating whether setting of language preference is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -294,6 +304,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM call forwarding indication related data(EF-CFIS and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing call forward response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -337,6 +348,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sets SIM call forwarding indication related data(EF-CFIS and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="request">The data requesting for call forwarding.</param>
         /// <returns>A task indicating whether setting call forward info is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -388,6 +400,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM message waiting indication related data(EF-MWIS and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing message waiting response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -431,6 +444,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sets SIM message waiting indication related data(EF-MWIS and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="request">The data requesting for message waiting.</param>
         /// <returns>A task indicating whether setting message waiting info is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -482,6 +496,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM mailbox related data(EF-MBDN, MBDI, and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimMailboxList information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -525,6 +540,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sets SIM mailbox related data(EF-MBDN, MBDI and CPHS case).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="mailboxNumber">The data requesting for mailbox info.</param>
         /// <returns>A task indicating whether setting mailbox info is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -577,6 +593,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM CPHS specific data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimCphs information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -620,6 +637,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the SIM Service Table.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SIM service table information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -663,6 +681,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM MSISDN data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimMsisdnList information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -706,6 +725,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM OPLMNWACT(Operator controlled PLMN Selector with Access Technology) data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimOplmnwactList information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -749,6 +769,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM SPN data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimSpn information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -792,6 +813,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM CPHS NETNAME data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SimCphsNetName information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -835,6 +857,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Executes an authentication procedure by using SIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="authenticationData">The authentication code to be validated by the ISIM, 3G, and GSM application in the SIM card.</param>
         /// <returns>A task containing SimAuthenticationResponse information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -887,6 +910,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Performs PIN1/PIN2/SIM LOCK verification.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="pinData">The PIN code.</param>
         /// <returns>A task containing SimPinResult information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -940,6 +964,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Performs PIN1/PIN2 unblocking operation based on PUK information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="pukData">The unblocking PIN password.</param>
         /// <param name="newPinData">The PIN password to use after the unblocking operation.</param>
         /// <returns>A task containing SimPinResult information.</returns>
@@ -995,6 +1020,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Changes the PIN1/PIN2 code based on the PIN type passed along with old PIN data and new PIN data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="oldPin">The old PIN code entered by the user.</param>
         /// <param name="newPin">The new PIN code entered by the user.</param>
         /// <returns>A task containing SimPinResult information.</returns>
@@ -1050,6 +1076,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Disables the SIM facility.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="facility">An object which contains the facility type and password.</param>
         /// <returns>A task containing SIM facility result information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1103,6 +1130,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Enables the SIM facility.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="facility">An object which contains the facility type and password.</param>
         /// <returns>A task containing SIM facility result information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1156,6 +1184,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the SIM facility.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="lockType">The type of security lock.</param>
         /// <returns>A task containing SIM facility information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1200,6 +1229,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets SIM lock type info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="lockType">The type of security lock.</param>
         /// <returns>A task containing SIM lock information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1244,6 +1274,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sets the SIM power state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="state">The state of SIM to be set.</param>
         /// <returns>A task indicating whether setting SIM power state is done or not.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1288,6 +1319,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Provides a common interface for accessing SIM data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="apdu">The APDU data.</param>
         /// <returns>A task containing SIM APDU response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -1340,6 +1372,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Provides a common interface to get the SIM ATR(Answer To Reset) value.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SIM ATR response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -1383,6 +1416,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the IMPI(IMS private user identity). (ISIM only).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing IMPI string.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -1425,6 +1459,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the IMPU(IMS public user identity). (ISIM only).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SIM IMPU list information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -1468,6 +1503,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the Domain(Home Network Domain Name). (ISIM only)
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing domain string.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -1510,6 +1546,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the P-CSCF(Proxy Call Session Control Function). (ISIM only)
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing SIM PCSCF list information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
@@ -1553,6 +1590,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the ISIM service table. (ISIM only).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>A task containing a byte array in which mask value of SimIsimService enum will be stored.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <privilege>http://tizen.org/privilege/telephony</privilege>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 86%
rename from src/Tizen.Tapi/Tizen.Tapi/SimData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SimData.cs
index 96a3cdb..72c46ea
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SIM card initialization information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimInitInfo
     {
         internal SimCardStatus SimStatus;
@@ -32,6 +33,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The SIM initialization status from the Telephony server boot up time.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCardStatus Status
         {
             get
@@ -43,6 +45,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The SIM card identification value. It will be true when the current inserted SIM card differs from the previous SIM. False otherwise.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCardChanged
         {
             get
@@ -55,6 +58,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines data for IMSI information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimImsiInfo
     {
         internal string CountryCode;
@@ -67,6 +71,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile Country Code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Mcc
         {
             get
@@ -78,6 +83,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile Network Code.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Mnc
         {
             get
@@ -89,6 +95,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mobile Station Identification Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Msin
         {
             get
@@ -101,6 +108,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines data for ECC information of GSM/USIM/CDMA SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimEccInfo
     {
         internal string NameInfo;
@@ -113,6 +121,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Name. Applicable only for USIM(3G) SIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Name
         {
             get
@@ -124,6 +133,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Number
         {
             get
@@ -135,6 +145,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Emergency service type. Applicable only for USIM(3G) SIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimEccEmergencyServiceType Category
         {
             get
@@ -147,6 +158,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines ECC information list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimEccInfoList
     {
         internal int EccCount;
@@ -158,6 +170,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ECC count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Count
         {
             get
@@ -169,6 +182,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of ECC.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimEccInfo> EccList
         {
             get
@@ -181,6 +195,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines ICCID(Integrated Circuit Card Identifier).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimIccIdInfo
     {
         internal int Length;
@@ -192,6 +207,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Integrated Circuit Card number length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int IccLength
         {
             get
@@ -203,6 +219,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Integrated Circuit Card number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string IccNumber
         {
             get
@@ -215,6 +232,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines call forwarding indication status data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCfis
     {
         private int _recIndex;
@@ -229,6 +247,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RecIndex
         {
             get
@@ -245,6 +264,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// MSP number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte MspNum
         {
             get
@@ -261,6 +281,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call forwarding unconditional indication status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte CfuStatus
         {
             get
@@ -277,6 +298,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM Type of number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimTypeOfNumber Ton
         {
             get
@@ -293,6 +315,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM numbering plan identity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimNumberPlanIdentity Npi
         {
             get
@@ -309,6 +332,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Dialing Number/SSC String.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CfuNum
         {
             get
@@ -325,6 +349,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Capability/Configuration 2 Record Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte Cc2Id
         {
             get
@@ -341,6 +366,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Extension 7 Record Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte Ext7Id
         {
             get
@@ -358,6 +384,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines call forwarding indication status list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCfisList
     {
         internal int Count;
@@ -369,6 +396,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Profile count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int ProfileCount
         {
             get
@@ -380,6 +408,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of CFIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimCfis> CfisList
         {
             get
@@ -392,6 +421,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines CPHS call forwarding status data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCphsCf
     {
         private int _line1;
@@ -402,6 +432,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CallForwardUnconditionalLine 1.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Line1
         {
             get
@@ -418,6 +449,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CallForwardUnconditionalLine 2.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Line2
         {
             get
@@ -434,6 +466,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CallForwardUnconditional Fax.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Fax
         {
             get
@@ -450,6 +483,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CallForwardUnconditional data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Data
         {
             get
@@ -467,6 +501,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines call forwarding response.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCallForwardResponse
     {
         internal bool IsCphsCf;
@@ -479,6 +514,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCphs
         {
             get
@@ -490,6 +526,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of CFIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCfisList CfList
         {
             get
@@ -501,6 +538,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS CF.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCphsCf CphsCf
         {
             get
@@ -513,6 +551,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines call forwarding request.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCallForwardRequest
     {
         private bool _isCphs;
@@ -522,6 +561,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCphs
         {
             get
@@ -538,6 +578,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CFIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This should be filled only if IsCphs is false.
         /// </remarks>
@@ -557,6 +598,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS CF.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This should be filled only if IsCphs is true.
         /// </remarks>
@@ -577,6 +619,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines message waiting indication status data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMwis
     {
         private int _recIndex;
@@ -590,6 +633,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RecIndex
         {
             get
@@ -606,6 +650,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Indicator type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte IndicatorStatus
         {
             get
@@ -622,6 +667,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// VoiceMail count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int VoiceCount
         {
             get
@@ -638,6 +684,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Fax count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int FaxCount
         {
             get
@@ -654,6 +701,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Email count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int EmailCount
         {
             get
@@ -670,6 +718,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Other count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int OtherCount
         {
             get
@@ -686,6 +735,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// VideoMail count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int VideoCount
         {
             get
@@ -703,6 +753,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines message waiting indication status list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMwisList
     {
         internal int Count;
@@ -714,6 +765,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Profile count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int ProfileCount
         {
             get
@@ -725,6 +777,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of MWIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimMwis> MwList
         {
             get
@@ -737,6 +790,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines CPHS message waiting status data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCphsMw
     {
         private bool _isVoice1;
@@ -747,6 +801,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// VoiceMsgLine1 message waiting flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsVoice1
         {
             get
@@ -763,6 +818,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// VoiceMsgLine2 message waiting flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsVoice2
         {
             get
@@ -779,6 +835,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// FAX message waiting flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsFax
         {
             get
@@ -795,6 +852,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Data message waiting flag.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsData
         {
             get
@@ -812,6 +870,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines message waiting reponse.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMessageWaitingResponse
     {
         internal bool IsCphsMw;
@@ -824,6 +883,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCphs
         {
             get
@@ -835,6 +895,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of MWIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimMwisList MwList
         {
             get
@@ -846,6 +907,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS MW.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCphsMw CphsMw
         {
             get
@@ -858,6 +920,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines message waiting request.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMessageWaitingRequest
     {
         private bool _isCphs;
@@ -867,6 +930,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCphs
         {
             get
@@ -883,6 +947,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// MWIS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This should be filled only if IsCphs is false.
         /// </remarks>
@@ -902,6 +967,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS MW.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This should be filled only if IsCphs is true.
         /// </remarks>
@@ -922,6 +988,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines mailbox dialing number data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMailboxNumber
     {
         private bool _isCphs;
@@ -939,6 +1006,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsCphs
         {
             get
@@ -955,6 +1023,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Index which stands for the location where the record is saved in SIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RecIndex
         {
             get
@@ -971,6 +1040,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM profile index.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int ProfileNumber
         {
             get
@@ -987,6 +1057,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mailbox type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimMailboxType MbType
         {
             get
@@ -1003,6 +1074,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Alpha max length in SIM.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int AlphaMaxLength
         {
             get
@@ -1019,6 +1091,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Alpha Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string AlphaId
         {
             get
@@ -1035,6 +1108,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type Of Number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimTypeOfNumber Ton
         {
             get
@@ -1051,6 +1125,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number Plan Identity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimNumberPlanIdentity Npi
         {
             get
@@ -1067,6 +1142,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Dialing Number/SSC String.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Number
         {
             get
@@ -1083,6 +1159,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Capability/Configuration Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte CcId
         {
             get
@@ -1099,6 +1176,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Extension 1 Record Identifier.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte Ext1Id
         {
             get
@@ -1116,6 +1194,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines mailbox dialing number list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMailboxList
     {
         internal int MbCount;
@@ -1127,6 +1206,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Mailbox count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Count
         {
             get
@@ -1138,6 +1218,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of mailbox.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimMailboxNumber> List
         {
             get
@@ -1150,6 +1231,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines available optional CPHS SIM files.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCphsServiceTable
     {
         internal int CustomerSvcProfile;
@@ -1164,6 +1246,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Customer Service Profile (CSP).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int CustomerServiceProfile
         {
             get
@@ -1175,6 +1258,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Service String Table (SST).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int ServiceStringTable
         {
             get
@@ -1186,6 +1270,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// MailBoxNumbers.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int MailboxNumbers
         {
             get
@@ -1197,6 +1282,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Short form of operator name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int OperatorNameShortForm
         {
             get
@@ -1208,6 +1294,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Information numbers.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int InformationNumbers
         {
             get
@@ -1220,6 +1307,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines CPHS information data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCphsInfo
     {
         internal SimCphsPhaseType Phase;
@@ -1231,6 +1319,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS phase type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCphsPhaseType CphsPhase
         {
             get
@@ -1242,6 +1331,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CPHS service table.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCphsServiceTable CphsServiceTable
         {
             get
@@ -1254,6 +1344,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines CSIM service table.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCst
     {
         internal SimCdmaServiceTable CdmaSvc;
@@ -1266,6 +1357,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cdma service table;
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCdmaServiceTable CdmaSvcTable
         {
             get
@@ -1277,6 +1369,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cdma service. Gives mask value of SimCdmaService enum.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This will be filled only if CdmaSvcTable is Cdma.
         /// </remarks>
@@ -1291,6 +1384,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Csim service. Gives mask value of SimCsimService enum.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This will be filled only if CdmaSvcTable is Csim.
         /// </remarks>
@@ -1306,6 +1400,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SIM service table.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimServiceTable
     {
         internal SimCardType Type;
@@ -1319,6 +1414,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM card type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimCardType SimType
         {
             get
@@ -1330,6 +1426,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SIM service table. Gives mask value of SimSstService enum.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This will be filled only if SimType is Gsm.
         /// </remarks>
@@ -1344,6 +1441,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USIM service table. Gives mask value of SimUstService enum.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This will be filled only if SimType is Usim.
         /// </remarks>
@@ -1358,6 +1456,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// CSIM service table.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <remarks>
         /// This will be filled only if SimType is Ruim.
         /// </remarks>
@@ -1373,6 +1472,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines MSISDN information of the GSM/CDMA SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimSubscriberInfo
     {
         internal string MsisdnNum;
@@ -1384,6 +1484,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// MSISDN number. If it does not exist, a null string will be returned
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Number
         {
             get
@@ -1395,6 +1496,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// MSISDN name. If it does not exist, a null string will be returned. Not applicable for CDMA.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Name
         {
             get
@@ -1407,6 +1509,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines MSISDN list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimMsisdnList
     {
         internal int MsisdnCount;
@@ -1418,6 +1521,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Count
         {
             get
@@ -1429,6 +1533,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of subscriber info.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimSubscriberInfo> List
         {
             get
@@ -1441,6 +1546,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines OPLMNwACT data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimOplmnwact
     {
         internal string PlmnString;
@@ -1453,6 +1559,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// PLMN.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Plmn
         {
             get
@@ -1464,6 +1571,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// UMTS or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsUmts
         {
             get
@@ -1475,6 +1583,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// GSM or not.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsGsm
         {
             get
@@ -1487,6 +1596,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines OPLMNwACT list.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimOplmnwactList
     {
         internal int OplmnCount;
@@ -1498,6 +1608,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Count
         {
             get
@@ -1509,6 +1620,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// List of OPLMNWACT.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimOplmnwact> List
         {
             get
@@ -1521,6 +1633,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SPN(Service Provider Name).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimSpn
     {
         internal byte Condition;
@@ -1532,6 +1645,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Display condition.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte DisplayCondition
         {
             get
@@ -1543,6 +1657,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Service Provider Name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Spn
         {
             get
@@ -1555,6 +1670,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines CPHS network name.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimCphsNetName
     {
         internal string Full;
@@ -1566,6 +1682,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Full name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string FullName
         {
             get
@@ -1577,6 +1694,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Short name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ShortName
         {
             get
@@ -1589,6 +1707,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines authentication request data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimAuthenticationData
     {
         private SimAuthenticationType _authType;
@@ -1603,6 +1722,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate SimAuthenticationData class with necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="authType">Authentication type.</param>
         /// <param name="randLength">The length of RAND.</param>
         /// <param name="autnLength">The length of AUTN. It is not used in case of GSM AUTH.</param>
@@ -1661,6 +1781,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines authentication result data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimAuthenticationResponse
     {
         internal SimAuthenticationType Type;
@@ -1680,6 +1801,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Authentication type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimAuthenticationType AuthType
         {
             get
@@ -1691,6 +1813,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Authentication result.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimAuthenticationResult AuthResult
         {
             get
@@ -1702,6 +1825,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Response length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int ResponseLength
         {
             get
@@ -1713,6 +1837,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Response data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string ResponseData
         {
             get
@@ -1724,6 +1849,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The length of the authentication key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int AuthKeyLength
         {
             get
@@ -1735,6 +1861,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The data of the authentication key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string AuthKey
         {
             get
@@ -1746,6 +1873,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The length of the cipher key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int CipherLength
         {
             get
@@ -1757,6 +1885,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cipher key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string CipherData
         {
             get
@@ -1768,6 +1897,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// The length of the integrity key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int IntegrityLength
         {
             get
@@ -1779,6 +1909,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Integrity key.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string IntegrityData
         {
             get
@@ -1791,6 +1922,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines information about SIM PIN data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPinData
     {
         private SimPinType _type;
@@ -1803,6 +1935,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate SimPinData class which necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">PIN type.</param>
         /// <param name="pin">PIN code.</param>
         /// <param name="pinLength">PIN code length.</param>
@@ -1841,6 +1974,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines PIN information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPinResult
     {
         internal SimPinType PinType;
@@ -1852,6 +1986,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the PIN or PUK type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimPinType Type
         {
             get
@@ -1863,6 +1998,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of attempts remaining for PIN/PUK verification.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RetryCount
         {
             get
@@ -1875,6 +2011,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which is used to used to enable/disable facility.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimFacility
     {
         private SimLockType _lockType;
@@ -1887,6 +2024,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate SimFacility class with necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="lockType">Facility type.</param>
         /// <param name="password">Password.</param>
         /// <param name="passwordLength">Password length.</param>
@@ -1925,6 +2063,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines facility result data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimFacilityResult
     {
         internal SimLockType LockType;
@@ -1936,6 +2075,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the PIN or PUK type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimLockType Type
         {
             get
@@ -1947,6 +2087,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Number of attempts remaining for PIN/PUK verification.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RetryCount
         {
             get
@@ -1959,6 +2100,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines facility info data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimFacilityInfo
     {
         internal SimLockType LockType;
@@ -1970,6 +2112,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Lock type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimLockType Type
         {
             get
@@ -1981,6 +2124,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Facility status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimFacilityStatus Status
         {
             get
@@ -1993,6 +2137,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines information about lock type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimLockInfo
     {
         internal SimLockType LockType;
@@ -2005,6 +2150,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Lock type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimLockType Type
         {
             get
@@ -2016,6 +2162,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Lock status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimLockStatus Status
         {
             get
@@ -2027,6 +2174,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Retry counts.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int RetryCount
         {
             get
@@ -2039,6 +2187,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines APDU information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimApdu
     {
         private byte[] _apdu;
@@ -2049,6 +2198,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate SimApdu class with necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="apdu">APDU.</param>
         public SimApdu(byte[] apdu)
         {
@@ -2067,6 +2217,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the response of sending APDU.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimApduResponse
     {
         internal ushort ApduLen;
@@ -2078,6 +2229,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Length of response APDU.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public ushort ApduLength
         {
             get
@@ -2089,6 +2241,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Response APDU.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte[] ApduResponse
         {
             get
@@ -2101,6 +2254,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the response of sending ATR.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimAtrResponse
     {
         internal ushort AtrRespLen;
@@ -2112,6 +2266,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Length of response ATR.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public ushort AtrRespLength
         {
             get
@@ -2123,6 +2278,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Response ATR.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte[] AtrResponse
         {
             get
@@ -2135,6 +2291,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines ISIM IMPU list data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimImpuList
     {
         internal uint DataCount;
@@ -2146,6 +2303,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM IMPU data count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Count
         {
             get
@@ -2157,6 +2315,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM IMPU list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<string> List
         {
             get
@@ -2169,6 +2328,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines ISIM P-CSCF data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPcscf
     {
         internal SimPcscfType PcscfType;
@@ -2180,6 +2340,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM P-CSCF type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SimPcscfType Type
         {
             get
@@ -2191,6 +2352,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM P-CSCF data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string Pcscf
         {
             get
@@ -2203,6 +2365,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines ISIM P-CSCF list data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SimPcscfList
     {
         internal uint DataCount;
@@ -2214,6 +2377,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM P-CSCF data count.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint Count
         {
             get
@@ -2225,6 +2389,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ISIM P-CSCF list.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public IEnumerable<SimPcscf> List
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 97%
rename from src/Tizen.Tapi/Tizen.Tapi/SimEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SimEnumerations.cs
index 7c115cd..a18e4d1
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM card status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCardStatus
     {
         /// <summary>
@@ -90,6 +91,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM card type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCardType
     {
         /// <summary>
@@ -121,6 +123,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the language preference code.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimLanguagePreference
     {
         /// <summary>
@@ -208,6 +211,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the security lock type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimLockType
     {
         /// <summary>
@@ -247,6 +251,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the power state of the SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimPowerState
     {
         /// <summary>
@@ -265,6 +270,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the file ID.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimFileId
     {
         /// <summary>
@@ -424,6 +430,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM number type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimTypeOfNumber
     {
         /// <summary>
@@ -463,6 +470,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the numbering plan identifier.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimNumberPlanIdentity
     {
         /// <summary>
@@ -510,6 +518,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the emergency service type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimEccEmergencyServiceType
     {
         /// <summary>
@@ -541,6 +550,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM app type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimAppType
     {
         /// <summary>
@@ -564,6 +574,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM access result from the lower layers.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimAccessResult
     {
         /// <summary>
@@ -591,6 +602,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the mailbox type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimMailboxType
     {
         /// <summary>
@@ -622,6 +634,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the current CPHS phase of the SIM card.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCphsPhaseType
     {
         /// <summary>
@@ -641,6 +654,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for CDMA service table.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCdmaServiceTable
     {
         /// <summary>
@@ -660,6 +674,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM Authentication type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimAuthenticationType
     {
         /// <summary>
@@ -707,6 +722,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM Authentication result.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimAuthenticationResult
     {
         /// <summary>
@@ -750,6 +766,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the PIN type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimPinType
     {
         /// <summary>
@@ -785,6 +802,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the PIN status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimFacilityStatus
     {
         /// <summary>
@@ -804,6 +822,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the security lock key information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimLockStatus
     {
         /// <summary>
@@ -835,6 +854,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for P-CSCF type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimPcscfType
     {
         /// <summary>
@@ -854,6 +874,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SIM power set result from the lower layers.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimPowerSetResult
     {
         /// <summary>
@@ -869,6 +890,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the list of IST services in the ISIM Service Table (ISIM).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimIsimService
     {
         /// <summary>
@@ -920,6 +942,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the list of SST services in the SIM Service Table (GSM).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimSstService
     {
         /// <summary>
@@ -1151,6 +1174,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the list of UST services in the SIM Service Table (USIM).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimUstService
     {
         /// <summary>
@@ -1414,6 +1438,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the list of CST services in the CDMA Service Table.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCdmaService
     {
         /// <summary>
@@ -1609,6 +1634,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the list of CST services in the CSIM Service Table (CSIM).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SimCsimService
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 88%
rename from src/Tizen.Tapi/Tizen.Tapi/SmsData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SmsData.cs
index f17e09d..9a2c1d8
@@ -22,6 +22,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines incoming SMS message notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SmsIncomingMessageNoti
     {
         internal string ScaVal;
@@ -36,6 +37,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SCA.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Sca value represented in string.</value>
         public string Sca
         {
@@ -48,6 +50,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Message length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of incoming message.</value>
         public int MessageLength
         {
@@ -60,6 +63,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Data representing incoming message information.</value>
         public string SzData
         {
@@ -72,6 +76,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SMS format.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Format of the incoming SMS.</value>
         public SmsNetType Format
         {
@@ -85,6 +90,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines incoming CB message notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SmsIncomingCbMessageNoti
     {
         internal SmsCbMsgType CbType;
@@ -98,6 +104,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cell Broadcast message type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of cell broadcast message.</value>
         public SmsCbMsgType Type
         {
@@ -110,6 +117,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Size of MsgData (which is the actual TPDU message).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of message data.</value>
         public short Length
         {
@@ -122,6 +130,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Cell broadcast message data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Message data representing cell broadcast message.</value>
         public string SzMsgData
         {
@@ -135,6 +144,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines incoming ETWS message notification data.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SmsIncomingEtwsMessageNoti
     {
         internal SmsEtwsMsgType EtwsType;
@@ -148,6 +158,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ETWS message type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of ETWS message.</value>
         public SmsEtwsMsgType Type
         {
@@ -160,6 +171,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Size of MsgData (which is the actual TPDU message).
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of message data.</value>
         public short Length
         {
@@ -172,6 +184,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// ETWS message data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Message data representing ETWS message.</value>
         public string SzMsgData
         {
old mode 100755 (executable)
new mode 100644 (file)
similarity index 96%
rename from src/Tizen.Tapi/Tizen.Tapi/SmsEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SmsEnumerations.cs
index d79e30f..ae3a385
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the type of sms network.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsNetType
     {
         /// <summary>
@@ -34,6 +35,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for different CB message types.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsCbMsgType
     {
         /// <summary>
@@ -53,6 +55,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for different ETWS message types.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsEtwsMsgType
     {
         /// <summary>
@@ -76,6 +79,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for memory status type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsMemoryStatus
     {
         /// <summary>
@@ -99,6 +103,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the sms ready status type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsReadyStatus
     {
         /// <summary>
@@ -122,6 +127,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for sms status type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsMessageStatus
     {
         /// <summary>
@@ -161,6 +167,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for different response types that come in the sent status acknowledgement/notification after sending a message to the network.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SmsResponse
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 98%
rename from src/Tizen.Tapi/Tizen.Tapi/Ss.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/Ss.cs
index 4d33974..0552457
@@ -24,6 +24,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which manages Supplementary Services of the SIM.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class Ss
     {
         private IntPtr _handle = IntPtr.Zero;
@@ -36,6 +37,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor to instantiate Ss class using the Tapi handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="handle">An instance of TapiHandle obtained from InitTapi in TapiManager API.</param>
         /// <exception cref="ArgumentNullException">Thrown when handle is passed as null.</exception>
         public Ss(TapiHandle handle)
@@ -51,6 +53,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends a request to activate/deactivate call barring.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="info">The information about call barring.</param>
         /// <returns>A task containing an instance of SsBarringResponse which contains information about barring response.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -103,6 +106,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets call barring status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="ssClass">The type of call.</param>
         /// <param name="type">The barring type.</param>
         /// <returns>A task containing information about barring response.</returns>
@@ -148,6 +152,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Allows changing of the barring password in the network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="oldPassword">The old password set for Barring in the Network.</param>
         /// <param name="newPassword">The new password set for Barring in the Network.</param>
         /// <param name="newPasswordAgain">The new password again.</param>
@@ -200,6 +205,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Allows to set the (register/erase/activate/deactivate) call forwarding option at the network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="info">The Call forward information such as a forward mode, a forward type, and so on.</param>
         /// <returns>A task containing information about SS forward response.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -252,6 +258,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Provides an option to get the call forwarding status of different calls from the Network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="ssClass">The Forward call type.</param>
         /// <param name="condition">The forward condition.</param>
         /// <returns>A task containing SS forward response information.</returns>
@@ -297,6 +304,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Activates/deactivates the call waiting service.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="info">The status of call-waiting service.</param>
         /// <returns>A task containing SS waiting response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -349,6 +357,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the status of the call waiting service.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="ssClass">The call types.</param>
         /// <returns>A task containing information about SS waiting response.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -393,6 +402,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Activates/deactivates the status of the calling line identity service.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The Cli service type.</param>
         /// <param name="status">The Cli Status.</param>
         /// <returns>A task indicating whether setting of CLI status is done or not.</returns>
@@ -438,6 +448,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the status of the calling line identity service.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="type">The Cli service type.</param>
         /// <returns>A task containing SS CLI response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -482,6 +493,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Sends a USSD string or User response to the Network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="info">The data coding scheme used</param>
         /// <returns>A task containing SS USSD response information.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 89%
rename from src/Tizen.Tapi/Tizen.Tapi/SsData.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SsData.cs
index 9901405..53850e1
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines values for USSD request type. Applicable to 3GPP(GSM/UMTS/LET) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsUssdMsgInfo
     {
         private SsUssdType _type;
@@ -31,6 +32,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of USSD represented in SsUssdType enum.</value>
         public SsUssdType Type
         {
@@ -48,6 +50,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// DCS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Dcs value represented in byte.</value>
         public byte Dcs
         {
@@ -65,6 +68,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD string length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of USSD string in integer.</value>
         public int Length
         {
@@ -82,6 +86,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD string.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Ussd string represented in string.</value>
         public string UssdString
         {
@@ -100,6 +105,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines release complete message notification type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsReleaseCompleteMsgInfo
     {
         internal byte Length;
@@ -112,6 +118,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the Release complete messageg length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Length of release complete message in byte.</value>
         public byte MsgLength
         {
@@ -124,6 +131,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the release complete message.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Release complete message represented in byte array.</value>
         public byte[] Message
         {
@@ -137,6 +145,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SS forward record information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsForwardRecord
     {
         internal SsClass SsClass;
@@ -155,6 +164,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS class
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SS class type.</value>
         public SsClass Class
         {
@@ -167,6 +177,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call forwarding SS status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Status of SS call forwarding.</value>
         public SsStatus Status
         {
@@ -179,6 +190,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call forward types providing various conditions when a call can be forwarded.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Forwarding condition of SS call forward.</value>
         public SsForwardCondition ForwardCondition
         {
@@ -191,6 +203,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Flag that indicates whether call forwarding number is present.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Boolean value to check the presence of call forwarding number.</value>
         public bool IsForwardingNumberPresent
         {
@@ -203,6 +216,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// No reply time.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Waiting time when there is no reply.</value>
         public SsNoReplyTime NoReplyTime
         {
@@ -215,6 +229,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Type of number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SS call forward type of number.</value>
         public SsForwardTypeOfNumber Ton
         {
@@ -227,6 +242,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Numbering Plan Identity.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SS call forward numbering plan identity.</value>
         public SsForwardNumberingPlanIdentity Npi
         {
@@ -239,6 +255,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Forwarded number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Call forwarding number.</value>
         public string ForwardingNumber
         {
@@ -252,6 +269,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines values for SS call forwarding record. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsForwardResponse
     {
         internal int RecordNum;
@@ -264,6 +282,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Record value represented in integer.</value>
         public int RecordNumber
         {
@@ -276,6 +295,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the maximum of SS forward records.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of instances of SsForwardRecord.</value>
         public IEnumerable<SsForwardRecord> Record
         {
@@ -289,6 +309,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SS call barring record information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsBarringRecord
     {
         internal SsClass SsClass;
@@ -302,6 +323,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS class
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SS class type.</value>
         public SsClass Class
         {
@@ -314,6 +336,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Status of SS call barring.</value>
         public SsStatus Status
         {
@@ -326,6 +349,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Call barring types providing various barring conditions on which calls are barred.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Type of SS call barring.</value>
         public SsBarringType BarringType
         {
@@ -339,6 +363,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines values for SS call barring record. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsBarringResponse
     {
         internal int RecordNum;
@@ -351,6 +376,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Record value represented in integer.</value>
         public int RecordNumber
         {
@@ -363,6 +389,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the maximum of SS barring records.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of instances of SsBarringRecord.</value>
         public IEnumerable<SsBarringRecord> Record
         {
@@ -376,6 +403,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SS waiting record information.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsWaitingRecord
     {
         internal SsClass SsClass;
@@ -388,6 +416,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS class
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>SS class type.</value>
         public SsClass Class
         {
@@ -400,6 +429,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Status of SS call waiting.</value>
         public SsStatus Status
         {
@@ -413,6 +443,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines values for SS call waiting record. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsWaitingResponse
     {
         internal int RecordNum;
@@ -425,6 +456,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Record number.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Record value represented in integer.</value>
         public int RecordNumber
         {
@@ -437,6 +469,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Specifies the maximum of SS waiting records.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>A list of instances of SsWaitingRecord.</value>
         public IEnumerable<SsWaitingRecord> Record
         {
@@ -450,6 +483,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines SUPS information message notification type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsInfo
     {
         internal SsCause Cse;
@@ -462,6 +496,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SS error cause.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Ss request result.</value>
         public SsCause Cause
         {
@@ -474,6 +509,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// SUPS information.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>Ss information type.</value>
         public SsInfoType SsType
         {
@@ -487,6 +523,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines parameters related to call barring.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsBarringInfo
     {
         private SsClass _class;
@@ -500,6 +537,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor for instantiating SsBarringInfo class with the necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="classType">Call type.</param>
         /// <param name="mode">Barring mode.</param>
         /// <param name="type">Barring type.</param>
@@ -548,6 +586,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines the parameters related to forward info.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsForwardInfo
     {
         private SsClass _class;
@@ -564,6 +603,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor for instantiating SsForwardInfo class with the necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="classType">SS Class.</param>
         /// <param name="mode">Forward Mode.</param>
         /// <param name="condition">Forward Condition.</param>
@@ -642,6 +682,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines parameters related to call waiting.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsWaitingInfo
     {
         private SsClass _class;
@@ -653,6 +694,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// A constructor for instantiating SsWaitingInfo class with necessary parameters.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="ssClass">Call type.</param>
         /// <param name="mode">Call waiting mode.</param>
         public SsWaitingInfo(SsClass ssClass, SsCallWaitingMode mode)
@@ -681,6 +723,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines values for calling line identity service. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsCliResponse
     {
         internal SsLineIdentificationType LineType;
@@ -692,6 +735,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Various line identification types.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SsLineIdentificationType Type
         {
             get
@@ -703,6 +747,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Line identification status from the network.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SsCliStatus Status
         {
             get
@@ -715,6 +760,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// A class which defines USSD response data. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class SsUssdResponse
     {
         internal SsUssdType UssdType;
@@ -729,6 +775,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD Type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SsUssdType Type
         {
             get
@@ -740,6 +787,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD Status.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public SsUssdStatus Status
         {
             get
@@ -751,6 +799,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// DCS.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public byte Dcs
         {
             get
@@ -762,6 +811,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD string length.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int Length
         {
             get
@@ -773,6 +823,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// USSD String.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public string UssdString
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 97%
rename from src/Tizen.Tapi/Tizen.Tapi/SsEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/SsEnumerations.cs
index 0403fce..1cec978
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the SS class type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsClass
     {
         /// <summary>
@@ -230,6 +231,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for various types of call barring.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsBarringType
     {
         /// <summary>
@@ -277,6 +279,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the CLI service type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsCliType
     {
         /// <summary>
@@ -308,6 +311,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the CLI service status.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsCliStatus
     {
         /// <summary>
@@ -339,6 +343,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call forwarding condition.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsForwardCondition
     {
         /// <summary>
@@ -374,6 +379,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the USSD type. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsUssdType
     {
         /// <summary>
@@ -393,6 +399,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the status of a supplementary service feature (e.g. call forwarding or call barring).
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     /// <remarks>
     /// These enumerated values should be used as masks.
     /// </remarks>
@@ -423,6 +430,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for no-reply time. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsNoReplyTime
     {
         /// <summary>
@@ -454,6 +462,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call forwarding type of number.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsForwardTypeOfNumber
     {
         /// <summary>
@@ -493,6 +502,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call forward numbering plan identity.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsForwardNumberingPlanIdentity
     {
         /// <summary>
@@ -540,6 +550,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the supplementary service request results.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsCause
     {
         /// <summary>
@@ -687,6 +698,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for SS info type.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsInfoType
     {
         /// <summary>
@@ -718,6 +730,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call barring operation mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsBarringMode
     {
         /// <summary>
@@ -733,6 +746,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the forward mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsForwardMode
     {
         /// <summary>
@@ -756,6 +770,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the call waiting mode.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsCallWaitingMode
     {
         /// <summary>
@@ -771,6 +786,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the types of identity presentation / restriction services.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsLineIdentificationType
     {
         /// <summary>
@@ -802,6 +818,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumeration for the USSD indication type. Applicable to 3GPP(GSM/UMTS/LTE) only.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum SsUssdStatus
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 99%
rename from src/Tizen.Tapi/Tizen.Tapi/TapiEnumerations.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/TapiEnumerations.cs
index f08e736..76f5b6b
@@ -19,6 +19,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumerations for the types of Notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum Notification
     {
         /// <summary>
@@ -500,6 +501,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// Enumerations for the types of property definition.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public enum Property
     {
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 89%
rename from src/Tizen.Tapi/Tizen.Tapi/TapiEventArgs.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/TapiEventArgs.cs
index 08d5520..b9e520d
@@ -21,6 +21,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// An extended EventArgs class which contains changed tapi state.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class StateChangedEventArgs : EventArgs
     {
         private int _state;
@@ -33,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Tapi ready state.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public int State
         {
             get
@@ -45,6 +47,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// An extended EventArgs class which contains changed TAPI notification.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class NotificationChangedEventArgs : EventArgs
     {
         private Notification _id;
@@ -59,6 +62,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Notification Id.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public Notification Id
         {
             get
@@ -70,6 +74,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Notification data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public object Data
         {
             get
@@ -82,6 +87,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// An extended EventArgs class which contains changed TAPI property.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class PropertyChangedEventArgs : EventArgs
     {
         private Property _property;
@@ -96,6 +102,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Property definition type.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public Property Property
         {
             get
@@ -107,6 +114,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Property data.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public object Data
         {
             get
old mode 100755 (executable)
new mode 100644 (file)
similarity index 99%
rename from src/Tizen.Tapi/Tizen.Tapi/TapiHandle.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/TapiHandle.cs
index 51b1a2e..56b2c63
@@ -23,6 +23,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class is used for managing event callbacks for notifications and properties.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public class TapiHandle
     {
         internal IntPtr _handle = IntPtr.Zero;
@@ -35,6 +36,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// This event is called for the TAPI notification change.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<NotificationChangedEventArgs> NotificationChanged
         {
             add
@@ -51,6 +53,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// This event is called for the TAPI property change.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler<PropertyChangedEventArgs> PropertyChanged
         {
             add
@@ -72,6 +75,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Registers a notification callback for notification change events on DBus interface.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="id">Notification id for which a callback has to be registered.</param>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
@@ -435,6 +439,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Registers a notification callback for property change events on DBus interface.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="property">Property definition for which a callback has to be registered.</param>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
@@ -601,6 +606,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Deregisters notification callback for notification change events on DBus interface.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="id">Notification id for which the callback has to be de-registered.</param>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
@@ -619,6 +625,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Deregisters notification callback for property change events on DBus interface.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="property">Property definition for which the callback has to be de-registered.</param>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
@@ -637,6 +644,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the property value in an integer format for the given property.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="property">The property to be retrieved from Dbus.</param>
         /// <returns>The property value in integer format.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -661,6 +669,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the property value in a string format for the given property.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="property">The property to be retrieved from Dbus.</param>
         /// <returns>The property value in string format.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from src/Tizen.Tapi/Tizen.Tapi/TapiManager.cs
rename to internal/src/Tizen.Tapi/Tizen.Tapi/TapiManager.cs
index 589e540..18fffe0
@@ -25,6 +25,7 @@ namespace Tizen.Tapi
     /// <summary>
     /// This class is used for initializing/deinitializing Tapi and manages the state of it.
     /// </summary>
+    /// <since_tizen> 4 </since_tizen>
     public static class TapiManager
     {
         private static event EventHandler<StateChangedEventArgs> s_stateChanged;
@@ -33,6 +34,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Gets the state value if tapi is ready.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <value>The State value in integer format - 0 is False and 1 is True. Returns -1 in case of error.</value>
         public static int State
         {
@@ -53,6 +55,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// This event is raised when Tapi ready state changes.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public static event EventHandler<StateChangedEventArgs> StateChanged
         {
             add
@@ -100,6 +103,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Fetches a list of available CPs.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <returns>List of available CPs in case of success. Null in case of failure.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         public static IEnumerable<string> GetCpNames()
@@ -134,6 +138,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Acquires a TAPI Handle for the specified CP name.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <param name="cpName">The CP Name against which a TAPI handle is required (A NULL CP Name will return a #TapiHandle bound to the first CP in the list of available CPs).</param>
         /// <returns>Instance of TapiHandle on success, null on failure.</returns>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
@@ -151,6 +156,7 @@ namespace Tizen.Tapi
         /// <summary>
         /// Deinitializes the TAPI Handle.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         /// <feature>http://tizen.org/feature/network.telephony</feature>
         /// <exception cref="NotSupportedException">Thrown when telephony feature is not supported.</exception>
         /// <exception cref="ArgumentException">Thrown when it is failed due to invalid parameter.</exception>
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Libraries.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Libraries.cs
new file mode 100755 (executable)
index 0000000..ace6e03
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+* 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.
+*/
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+    /// <summary>
+    /// Partial Libraries Class
+    /// </summary>
+    internal static partial class Libraries
+    {
+        internal const string VoiceControl = "libvc.so";
+        internal const string VoiceControlWidget = "libvc_widget.so";
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.VoiceControlCommand.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.VoiceControlCommand.cs
new file mode 100755 (executable)
index 0000000..cdd0819
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+* 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;
+using Tizen;
+using Tizen.Uix.VoiceControlWidget;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+    /// <summary>
+    /// VoiceControlCommand Interop Class
+    /// </summary>
+    internal static class VoiceControlCommand
+    {
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_create")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListCreate(out SafeCommandListHandle cmdList);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_destroy")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListDestroy(IntPtr cmdList, bool freeCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_get_count")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListGetCount(SafeCommandListHandle cmdList, out int count);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_add")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListAdd(SafeCommandListHandle cmdList, SafeCommandHandle vcCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_remove")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListRemove(SafeCommandListHandle cmdList, SafeCommandHandle vcCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_foreach_commands")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListForeachCommands(SafeCommandListHandle cmdList, VcCmdListCb callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_first")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListFirst(SafeCommandListHandle cmdList);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_last")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListLast(SafeCommandListHandle cmdList);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_next")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListNext(SafeCommandListHandle cmdList);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_prev")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListPrev(SafeCommandListHandle cmdList);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_list_get_current")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdListGetCurrent(SafeCommandListHandle cmdList, out SafeCommandHandle vcCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_create")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdCreate(out SafeCommandHandle vcCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_destroy")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdDestroy(IntPtr vcCommand);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_set_command")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdSetCommand(SafeCommandHandle vcCommand, string command);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_get_command")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdGetCommand(SafeCommandHandle vcCommand, out string command);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_get_unfixed_command")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdGetUnfixedCommand(SafeCommandHandle vcCommand, out string command);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_set_type")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdSetType(SafeCommandHandle vcCommand, CommandType type);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_get_type")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdGetType(SafeCommandHandle vcCommand, out int type);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_set_format")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdSetFormat(SafeCommandHandle vcCommand, CommandFormat format);
+
+        [DllImport(Libraries.VoiceControl, EntryPoint = "vc_cmd_get_format")]
+        internal static extern Interop.VoiceControlWidget.ErrorCode VcCmdGetFormat(SafeCommandHandle vcCommand, out CommandFormat format);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool VcCmdListCb(IntPtr vcCommand, IntPtr userData);
+
+        internal sealed class SafeCommandListHandle : SafeHandle
+        {
+            internal bool _ownership;
+
+            public SafeCommandListHandle(IntPtr handle)
+                : base(handle, true)
+            {
+                _ownership = true;
+            }
+
+            public SafeCommandListHandle()
+                : base(IntPtr.Zero, true)
+            {
+                _ownership = true;
+            }
+
+            public override bool IsInvalid
+            {
+                get { return this.handle == IntPtr.Zero; }
+            }
+
+            protected override bool ReleaseHandle()
+            {
+                if (_ownership && !IsInvalid)
+                {
+                    Interop.VoiceControlWidget.ErrorCode error = VcCmdListDestroy(this.handle, false);
+                    if (error != Interop.VoiceControlWidget.ErrorCode.None)
+                    {
+                        Log.Error(VoiceControlWidget.LogTag, "Destroy Failed with error " + error);
+                    }
+                    Log.Debug(VoiceControlWidget.LogTag, "Destroy command list handle");
+                }
+                this.SetHandle(IntPtr.Zero);
+
+                Log.Debug(VoiceControlWidget.LogTag, "Release command list handle");
+                return true;
+            }
+        }
+
+        internal sealed class SafeCommandHandle : SafeHandle
+        {
+            internal bool _ownership;
+
+            public SafeCommandHandle(IntPtr handle)
+                : base(handle, true)
+            {
+                _ownership = true;
+            }
+
+            public SafeCommandHandle()
+                : base(IntPtr.Zero, true)
+            {
+                _ownership = true;
+            }
+
+            public override bool IsInvalid
+            {
+                get { return this.handle == IntPtr.Zero; }
+            }
+
+            protected override bool ReleaseHandle()
+            {
+                Interop.VoiceControlWidget.ErrorCode error = VoiceControlWidget.ErrorCode.None;
+                if (_ownership && !IsInvalid)
+                {
+                    error = VcCmdDestroy(this.handle);
+                    if (error != Interop.VoiceControlWidget.ErrorCode.None)
+                    {
+                        Log.Error(VoiceControlWidget.LogTag, "Destroy Failed with error " + error);
+                    }
+                    Log.Debug(VoiceControlWidget.LogTag, "Destroy command handle");
+                }
+                Log.Debug(VoiceControlWidget.LogTag, "Release command handle");
+                this.SetHandle(IntPtr.Zero);
+                return true;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Widget.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Interop/Interop.Widget.cs
new file mode 100755 (executable)
index 0000000..1713cb4
--- /dev/null
@@ -0,0 +1,157 @@
+// Copyright 2016 by Samsung Electronics, Inc.,
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+using static Interop.VoiceControlCommand;
+using Tizen.Uix.VoiceControlWidget;
+using Tizen;
+
+internal static partial class Interop
+{
+    internal static partial class VoiceControlWidget
+    {
+        internal static string LogTag = "Tizen.Uix.VoiceControlWidget";
+
+        private const int ErrorVoiceControl = -0x02F50000;
+
+        internal enum ErrorCode
+        {
+            None = Tizen.Internals.Errors.ErrorCode.None,            /**< Successful */
+            OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,        /**< Out of Memory */
+            IoError = Tizen.Internals.Errors.ErrorCode.IoError,         /**< I/O error */
+            InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,   /**< Invalid parameter */
+            TimedOut = Tizen.Internals.Errors.ErrorCode.TimedOut,       /**< No answer from service */
+            RecorderBusy = Tizen.Internals.Errors.ErrorCode.ResourceBusy,       /**< Busy recorder */
+            PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,   /**< Permission denied */
+            NotSupported = Tizen.Internals.Errors.ErrorCode.NotSupported,       /**< VC NOT supported */
+            InvalidState = ErrorVoiceControl | 0x011,   /**< Invalid state */
+            InvalidLanguage = ErrorVoiceControl | 0x012,    /**< Invalid language */
+            EngineNotFound = ErrorVoiceControl | 0x013, /**< No available engine */
+            OperationFailed = ErrorVoiceControl | 0x014,    /**< Operation failed */
+            OperationRejected = ErrorVoiceControl | 0x015,  /**< Operation rejected */
+            IterationEnd = ErrorVoiceControl | 0x016,   /**< List reached end */
+            Empty = ErrorVoiceControl | 0x017,  /**< List empty */
+            ServiceReset = ErrorVoiceControl | 0x018,   /**< Service daemon reset (Since 3.0) */
+            InProgressToReady = ErrorVoiceControl | 0x019,  /**< In progress to ready (Since 3.0) */
+            InProgressToRecording = ErrorVoiceControl | 0x020,  /**< In progress to recording (Since 3.0) */
+            InProgressToProcessing = ErrorVoiceControl | 0x021 /**< In progress to processing (Since 3.0) */
+        };
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_initialize")]
+        internal static extern ErrorCode VcWidgetInitialize(out IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_deinitialize")]
+        internal static extern ErrorCode VcWidgetDeinitialize(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_prepare")]
+        internal static extern ErrorCode VcWidgetPrepare(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unprepare")]
+        internal static extern ErrorCode VcWidgetUnprepare(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_foreach_supported_languages")]
+        internal static extern ErrorCode VcWidgetForeachSupportedLanguages(IntPtr widget, VcWidgetSupportedLanguageCb callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_get_current_language")]
+        internal static extern ErrorCode VcWidgetGetCurrentLanguage(IntPtr widget, out string language);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_get_state")]
+        internal static extern ErrorCode VcWidgetGetState(IntPtr widget, out State state);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_get_service_state")]
+        internal static extern ErrorCode VcWidgetGetServiceState(IntPtr widget, out ServiceState state);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_is_command_format_supported")]
+        internal static extern ErrorCode VcWidgetIsCommandFormatSupported(IntPtr widget, CommandFormat format, out bool support);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_foreground")]
+        internal static extern ErrorCode VcWidgetSetForeground(IntPtr widget, bool value);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_cancel")]
+        internal static extern ErrorCode VcWidgetCancel(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_result_cb")]
+        internal static extern ErrorCode VcWidgetSetResultCb(IntPtr widget, VcWidgetResultCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_result_cb")]
+        internal static extern ErrorCode VcWidgetUnsetResultCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_state_changed_cb")]
+        internal static extern ErrorCode VcWidgetSetStateChangedCb(IntPtr widget, VcWidgetStateChangedCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_state_changed_cb")]
+        internal static extern ErrorCode VcWidgetUnsetStateChangedCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_service_state_changed_cb")]
+        internal static extern ErrorCode VcWidgetSetServiceStateChangedCb(IntPtr widget, VcWidgetServiceStateChangedCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_service_state_changed_cb")]
+        internal static extern ErrorCode VcWidgetUnsetServiceStateChangedCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_show_tooltip_cb")]
+        internal static extern ErrorCode VcWidgetSetShowTooltipCb(IntPtr widget, VcWidgetShowTooltipCb callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_show_tooltip_cb")]
+        internal static extern ErrorCode VcWidgetUnSetShowTooltipCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_current_language_changed_cb")]
+        internal static extern ErrorCode VcWidgetSetCurrentLanguageChangedCb(IntPtr widget, VcWidgetCurrentLanguageChangedCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_current_language_changed_cb")]
+        internal static extern ErrorCode VcWidgetUnsetCurrentLanguageChangedCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_error_cb")]
+        internal static extern ErrorCode VcWidgetSetErrorCb(IntPtr widget, VcWidgetErrorCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_error_cb")]
+        internal static extern ErrorCode VcWidgetUnsetErrorCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_send_current_command_list_cb")]
+        internal static extern ErrorCode VcWidgetSetSendCurrentCommandListCb(IntPtr widget, VcWidgetSendCurrentCommandListCb callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_send_current_command_list_cb")]
+        internal static extern ErrorCode VcWidgetUnSetSendCurrentCommandListCb(IntPtr widget);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_enable_asr_result")]
+        internal static extern ErrorCode VcWidgetEnableAsrResult(IntPtr widget, bool enable);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_set_asr_result_cb")]
+        internal static extern ErrorCode VcWidgetSetAsrResultCb(IntPtr widget, VcWidgetAsrResultCallback callback, IntPtr userData);
+
+        [DllImport(Libraries.VoiceControlWidget, EntryPoint = "vc_widget_unset_asr_result_cb")]
+        internal static extern ErrorCode VcWidgetUnSetAsrResultCb(IntPtr widget);
+
+        [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+        internal delegate bool VcWidgetAsrResultCallback(ResultEvent evt, IntPtr result, IntPtr userData);
+
+        [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+        internal delegate bool VcWidgetSupportedLanguageCb(IntPtr language, IntPtr userData);
+
+        [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetShowTooltipCb(bool show, IntPtr userData);
+
+        [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetSendCurrentCommandListCb(out IntPtr listPtr, IntPtr userData);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetCurrentLanguageChangedCallback(IntPtr previous, IntPtr current, IntPtr userData);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetStateChangedCallback(State previous, State current, IntPtr userData);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetServiceStateChangedCallback(ServiceState previous, ServiceState current, IntPtr userData);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetErrorCallback(ErrorCode reason, IntPtr userData);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void VcWidgetResultCallback(ResultEvent evt, IntPtr cmdList, IntPtr result, IntPtr userData);
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.csproj b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.csproj
new file mode 100755 (executable)
index 0000000..0d450ba
--- /dev/null
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\src\Tizen\Tizen.csproj" />
+    <ProjectReference Include="..\..\..\src\Tizen.Log\Tizen.Log.csproj" />
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.sln b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget.sln
new file mode 100755 (executable)
index 0000000..8a763f7
--- /dev/null
@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26730.16
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Uix.VoiceControlWidget", "Tizen.Uix.VoiceControlWidget.csproj", "{9204FAA1-799E-4109-8E5C-8B0219951530}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\..\..\src\Tizen\Tizen.csproj", "{DC1D4741-6C89-47E6-B039-B715B4EBB171}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\..\..\src\Tizen.Log\Tizen.Log.csproj", "{5D1CB4C3-CC99-440E-8C6F-E8DA387E3F3F}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {9204FAA1-799E-4109-8E5C-8B0219951530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9204FAA1-799E-4109-8E5C-8B0219951530}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9204FAA1-799E-4109-8E5C-8B0219951530}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9204FAA1-799E-4109-8E5C-8B0219951530}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DC1D4741-6C89-47E6-B039-B715B4EBB171}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DC1D4741-6C89-47E6-B039-B715B4EBB171}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DC1D4741-6C89-47E6-B039-B715B4EBB171}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DC1D4741-6C89-47E6-B039-B715B4EBB171}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5D1CB4C3-CC99-440E-8C6F-E8DA387E3F3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5D1CB4C3-CC99-440E-8C6F-E8DA387E3F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5D1CB4C3-CC99-440E-8C6F-E8DA387E3F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5D1CB4C3-CC99-440E-8C6F-E8DA387E3F3F}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {4DA985A7-0407-40ED-AF02-4009E98085E4}
+       EndGlobalSection
+EndGlobal
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/AsrResultEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/AsrResultEventArgs.cs
new file mode 100755 (executable)
index 0000000..17f34ed
--- /dev/null
@@ -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.
+*/
+
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class AsrResultEventArgs
+    {
+        internal AsrResultEventArgs(ResultEvent evt, string resultString)
+        {
+            ResultEvent = evt;
+            Result = resultString;
+        }
+
+        public ResultEvent ResultEvent
+        {
+            get;
+            private set;
+        }
+
+        public string Result
+        {
+            get;
+            private set;
+        }
+    }
+}
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentCommandListEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentCommandListEventArgs.cs
new file mode 100755 (executable)
index 0000000..7e270b7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+* 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.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.VoiceControlWidget;
+using static Interop.VoiceControlCommand;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class CurrentCommandListEventArgs
+    {
+        private VoiceCommandList _list;
+
+        internal CurrentCommandListEventArgs()
+        {
+            _list = new VoiceCommandList();
+        }
+
+        public VoiceCommandList CommandList
+        {
+            get
+            {
+                return _list;
+            }
+            set
+            {
+                _list = value;
+            }
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentLanguageChangedEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/CurrentLanguageChangedEventArgs.cs
new file mode 100755 (executable)
index 0000000..895a8bc
--- /dev/null
@@ -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.
+*/
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class CurrentLanguageChangedEventArgs
+    {
+        internal CurrentLanguageChangedEventArgs(string previous, string current)
+        {
+            PreviousLanguage = previous;
+            CurrentLanguage = current;
+        }
+
+        public string PreviousLanguage
+        {
+            get;
+            internal set;
+        }
+
+        public string CurrentLanguage
+        {
+            get;
+            internal set;
+        }
+    }
+}
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ErrorOccurredEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ErrorOccurredEventArgs.cs
new file mode 100755 (executable)
index 0000000..0d33872
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+* 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 static Interop.VoiceControlWidget;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class ErrorOccurredEventArgs
+    {
+        internal ErrorOccurredEventArgs(ErrorCode error)
+        {
+            switch (error)
+            {
+                case ErrorCode.None:
+                    {
+                        ErrorValue = Error.None;
+                        break;
+                    }
+
+                case ErrorCode.OutOfMemory:
+                    {
+                        ErrorValue = Error.OutOfMemory;
+                        break;
+                    }
+
+                case ErrorCode.IoError:
+                    {
+                        ErrorValue = Error.IoError;
+                        break;
+                    }
+
+                case ErrorCode.InvalidParameter:
+                    {
+                        ErrorValue = Error.InvalidParameter;
+                        break;
+                    }
+
+                case ErrorCode.TimedOut:
+                    {
+                        ErrorValue = Error.TimedOut;
+                        break;
+                    }
+
+                case ErrorCode.RecorderBusy:
+                    {
+                        ErrorValue = Error.RecorderBusy;
+                        break;
+                    }
+
+                case ErrorCode.PermissionDenied:
+                    {
+                        ErrorValue = Error.PermissionDenied;
+                        break;
+                    }
+
+                case ErrorCode.NotSupported:
+                    {
+                        ErrorValue = Error.NotSupported;
+                        break;
+                    }
+
+                case ErrorCode.InvalidState:
+                    {
+                        ErrorValue = Error.InvalidState;
+                        break;
+                    }
+
+                case ErrorCode.InvalidLanguage:
+                    {
+                        ErrorValue = Error.InvalidLanguage;
+                        break;
+                    }
+
+                case ErrorCode.EngineNotFound:
+                    {
+                        ErrorValue = Error.EngineNotFound;
+                        break;
+                    }
+
+                case ErrorCode.OperationFailed:
+                    {
+                        ErrorValue = Error.OperationFailed;
+                        break;
+                    }
+
+                case ErrorCode.OperationRejected:
+                    {
+                        ErrorValue = Error.OperationRejected;
+                        break;
+                    }
+
+                case ErrorCode.IterationEnd:
+                    {
+                        ErrorValue = Error.IterationEnd;
+                        break;
+                    }
+
+                case ErrorCode.Empty:
+                    {
+                        ErrorValue = Error.Empty;
+                        break;
+                    }
+
+                case ErrorCode.InProgressToReady:
+                    {
+                        ErrorValue = Error.InProgressToReady;
+                        break;
+                    }
+
+                case ErrorCode.InProgressToRecording:
+                    {
+                        ErrorValue = Error.InProgressToRecording;
+                        break;
+                    }
+
+                case ErrorCode.InProgressToProcessing:
+                    {
+                        ErrorValue = Error.InProgressToProcessing;
+                        break;
+                    }
+
+                case ErrorCode.ServiceReset:
+                    {
+                        ErrorValue = Error.ServiceReset;
+                        break;
+                    }
+            }
+        }
+
+        /// <summary>
+        /// The error value.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public Error ErrorValue
+        {
+            get;
+            internal set;
+        }
+    }
+}
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ExceptionFactory.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ExceptionFactory.cs
new file mode 100755 (executable)
index 0000000..864dab3
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+* 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 static Interop.VoiceControlWidget;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    internal static class ExceptionFactory
+    {
+        internal static Exception CreateException(ErrorCode err)
+        {
+            Tizen.Log.Error(LogTag, "Error " + err);
+            Exception exp;
+            switch (err)
+            {
+                case ErrorCode.OutOfMemory:
+                    {
+                        exp = new OutOfMemoryException("Out Of Memory");
+                        break;
+                    }
+
+                case ErrorCode.IoError:
+                    {
+                        exp = new InvalidOperationException("I/O Error Occurred");
+                        break;
+                    }
+
+                case ErrorCode.InvalidParameter:
+                    {
+                        exp = new ArgumentException("Invalid Parameters Provided");
+                        break;
+                    }
+
+                case ErrorCode.TimedOut:
+                    {
+                        exp = new TimeoutException("No answer from service");
+                        break;
+                    }
+
+                case ErrorCode.RecorderBusy:
+                    {
+                        exp = new InvalidOperationException("Recorder is Busy ");
+                        break;
+                    }
+
+                case ErrorCode.PermissionDenied:
+                    {
+                        exp = new UnauthorizedAccessException("Permission Denied");
+                        break;
+                    }
+
+                case ErrorCode.NotSupported:
+                    {
+                        exp = new NotSupportedException("VC NOT supported");
+                        break;
+                    }
+
+                case ErrorCode.InvalidState:
+                    {
+                        exp = new InvalidOperationException("Invalid state");
+                        break;
+                    }
+
+                case ErrorCode.InvalidLanguage:
+                    {
+                        exp = new InvalidOperationException("Invalid language");
+                        break;
+                    }
+
+                case ErrorCode.EngineNotFound:
+                    {
+                        exp = new InvalidOperationException("No available engine");
+                        break;
+                    }
+
+                case ErrorCode.OperationFailed:
+                    {
+                        exp = new InvalidOperationException("Operation Failed");
+                        break;
+                    }
+
+                case ErrorCode.OperationRejected:
+                    {
+                        exp = new InvalidOperationException("Operation Rejected");
+                        break;
+                    }
+
+                case ErrorCode.IterationEnd:
+                    {
+                        exp = new InvalidOperationException("List Reached End");
+                        break;
+                    }
+
+                case ErrorCode.Empty:
+                    {
+                        exp = new InvalidOperationException("List Empty");
+                        break;
+                    }
+
+                case ErrorCode.InProgressToReady:
+                    {
+                        exp = new InvalidOperationException("Progress to ready is not finished");
+                        break;
+                    }
+
+                case ErrorCode.InProgressToRecording:
+                    {
+                        exp = new InvalidOperationException("Progress to recording is not finished");
+                        break;
+                    }
+
+                case ErrorCode.InProgressToProcessing:
+                    {
+                        exp = new InvalidOperationException("Progress to processing is not finished");
+                        break;
+                    }
+
+                case ErrorCode.ServiceReset:
+                    {
+                        exp = new InvalidOperationException("Service reset");
+                        break;
+                    }
+
+                default:
+                    {
+                        exp = new Exception("");
+                        break;
+                    }
+            }
+
+            return exp;
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/RecognitionResult.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/RecognitionResult.cs
new file mode 100755 (executable)
index 0000000..da9db41
--- /dev/null
@@ -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 System.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.VoiceControlWidget;
+using static Interop.VoiceControlCommand;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class RecognitionResult
+    {
+        private ResultEvent _resultEvent;
+        private VoiceCommandList _list;
+        private string _result;
+
+        internal RecognitionResult(ResultEvent evt, IntPtr cmdList, IntPtr result)
+        {
+            _resultEvent = evt;
+            SafeCommandListHandle handle = new SafeCommandListHandle(cmdList);
+            handle._ownership = false;
+            _list = new VoiceCommandList(handle);
+            _result = Marshal.PtrToStringAnsi(result);
+        }
+
+        public ResultEvent Result
+        {
+            get
+            {
+                return _resultEvent;
+            }
+        }
+
+        public string ResultMessage
+        {
+            get
+            {
+                return _result;
+            }
+        }
+
+        public VoiceCommandList CommandList
+        {
+            get
+            {
+                return _list;
+            }
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ServiceStateChangedEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/ServiceStateChangedEventArgs.cs
new file mode 100755 (executable)
index 0000000..e86d471
--- /dev/null
@@ -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.
+*/
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class ServiceStateChangedEventArgs
+    {
+        internal ServiceStateChangedEventArgs(ServiceState previous, ServiceState current)
+        {
+            Previous = previous;
+            Current = current;
+        }
+
+        public ServiceState Previous
+        {
+            get;
+            internal set;
+        }
+
+        public ServiceState Current
+        {
+            get;
+            internal set;
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/StateChangedEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/StateChangedEventArgs.cs
new file mode 100755 (executable)
index 0000000..67a6183
--- /dev/null
@@ -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.
+*/
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class StateChangedEventArgs
+    {
+        internal StateChangedEventArgs(State previous, State current)
+        {
+            Previous = previous;
+            Current = current;
+        }
+
+        public State Previous
+        {
+            get;
+            internal set;
+        }
+
+        public State Current
+        {
+            get;
+            internal set;
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/TooltipEventArgs.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/TooltipEventArgs.cs
new file mode 100755 (executable)
index 0000000..32f5423
--- /dev/null
@@ -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.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.VoiceControlWidget;
+using static Interop.VoiceControlCommand;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    public class TooltipEventArgs
+    {
+        internal TooltipEventArgs(bool value)
+        {
+            Show = value;
+        }
+
+        public bool Show
+        {
+            get;
+        }
+    }
+}
\ No newline at end of file
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommand.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommand.cs
new file mode 100755 (executable)
index 0000000..d99cef2
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+* 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 static Interop.VoiceControlCommand;
+using static Interop.VoiceControlWidget;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    /// <summary>
+    /// Enumeration for the command format.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum CommandFormat
+    {
+        /// <summary>
+        /// The fixed command format.
+        /// </summary>
+        Fixed = 0,
+        /// <summary>
+        /// The fixed and variable fixed command format.
+        /// </summary>
+        FixedAndVFixed = 1,
+        /// <summary>
+        /// The variable fixed and fixed command format.
+        /// </summary>
+        VFixedAndFixed = 2,
+        /// <summary>
+        /// The fixed and non-fixed command format.
+        /// </summary>
+        FixedAndNonFixed = 3,
+        /// <summary>
+        /// The non-fixed and fixed command format.
+        /// </summary>
+        NonFixedAndFixed = 4,
+        /// <summary>
+        /// The action command
+        /// </summary>
+        Action = 5,
+        /// <summary>
+        /// The partial matched command
+        /// </summary>
+        Partial = 6,
+        /// <summary>
+        /// Undefined
+        /// </summary>
+        Undefined = -1
+    };
+
+    /// <summary>
+    /// This class represents a voice command.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public class VoiceCommand
+    {
+        internal SafeCommandHandle _handle;
+
+        /// <summary>
+        /// The public constructor.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="InvalidOperationException">This exception can be due to an invalid state.</exception>
+        /// <exception cref="OutOfMemoryException">This exception can be due to out Of memory.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public VoiceCommand()
+        {
+            SafeCommandHandle handle;
+            ErrorCode error = VcCmdCreate(out handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Create Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            _handle = handle;
+        }
+
+        internal VoiceCommand(SafeCommandHandle handle)
+        {
+            _handle = handle;
+        }
+
+        /// <summary>
+        /// Gets the unfixed command.
+        /// This property should be used for commands which have non-fixed format.
+        /// An empty string will be returned in case of some internal error.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public string UnfixedCommand
+        {
+            get
+            {
+                string unfixedCommand;
+                ErrorCode error = VcCmdGetUnfixedCommand(_handle, out unfixedCommand);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "UnfixedCommand Failed with error " + error);
+                    return "";
+                }
+
+                return unfixedCommand;
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the command type.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <remarks>If you do not set the command type, the default value is undefined. You should set the type if the command is valid.</remarks>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public CommandType Type
+        {
+            get
+            {
+                CommandType cmdType = CommandType.Undefined;
+                int type;
+                ErrorCode error = VcCmdGetType(_handle, out type);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "GetType Failed with error " + error);
+                    return CommandType.Undefined;
+                }
+
+                if (type != -1)
+                {
+                    cmdType = (CommandType)type;
+                }
+
+                return cmdType;
+            }
+            set
+            {
+                ErrorCode error = VcCmdSetType(_handle, value);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "SetType Failed with error " + error);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the command format.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <remarks>The default format is Fixed.</remarks>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public CommandFormat Format
+        {
+            get
+            {
+                CommandFormat format;
+                ErrorCode error = VcCmdGetFormat(_handle, out format);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "GetFormat Failed with error " + error);
+                    return CommandFormat.Undefined;
+                }
+
+                return format;
+            }
+            set
+            {
+                ErrorCode error = VcCmdSetFormat(_handle, value);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "SetFormat Failed with error " + error);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the command.
+        /// A get empty string will be returned in case of some internal error.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public string Command
+        {
+            get
+            {
+                string command;
+                ErrorCode error = VcCmdGetCommand(_handle, out command);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "GetCommand Failed with error " + error);
+                    return "";
+                }
+
+                return command;
+            }
+            set
+            {
+                ErrorCode error = VcCmdSetCommand(_handle, value);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "SetCommand Failed with error " + error);
+                }
+            }
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommandList.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceCommandList.cs
new file mode 100755 (executable)
index 0000000..31e79f5
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+* 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.Collections.Generic;
+using static Interop.VoiceControlWidget;
+using static Interop.VoiceControlCommand;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    /// <summary>
+    /// This class represents a list of the voice commands.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public class VoiceCommandList
+    {
+        internal SafeCommandListHandle _handle;
+        private List<VoiceCommand> _list;
+        private VcCmdListCb _callback;
+        private int _index;
+
+        /// <summary>
+        /// The public constructor.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="OutOfMemoryException">This exception can be due to out of memory.</exception>
+        /// <exception cref="ArgumentException">This exception can be due to an invalid parameter.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public VoiceCommandList()
+        {
+            SafeCommandListHandle handle;
+            ErrorCode error = VcCmdListCreate(out handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Create Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            _handle = handle;
+            _list = new List<VoiceCommand>();
+            _index = 0;
+        }
+
+        internal VoiceCommandList(SafeCommandListHandle handle)
+        {
+            _handle = handle;
+            _index = 0;
+
+            _list = new List<VoiceCommand>();
+            _callback = (IntPtr vcCommand, IntPtr userData) =>
+            {
+                SafeCommandHandle cmdHandle = new SafeCommandHandle(vcCommand);
+                cmdHandle._ownership = false;
+                _list.Add(new VoiceCommand(cmdHandle));
+                return true;
+            };
+            ErrorCode error = VcCmdListForeachCommands(_handle, _callback, IntPtr.Zero);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "GetAllCommands Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        /// <summary>
+        /// Gets a command count of the list.
+        /// -1 is returned in case of an internal failure.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <value>
+        /// Command count of the list.
+        /// </value>
+        public int Count
+        {
+            get
+            {
+                int count;
+                ErrorCode error = VcCmdListGetCount(_handle, out count);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Count Failed with error " + error);
+                    return -1;
+                }
+
+                return count;
+            }
+        }
+
+        /// <summary>
+        /// Gets the current command from the command list by index.
+        /// Null will be returned in case of an empty list.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <value>
+        /// Current command from the command list.
+        /// </value>
+        public VoiceCommand Current
+        {
+            get
+            {
+                SafeCommandHandle current;
+                ErrorCode error = VcCmdListGetCurrent(_handle, out current);
+                if (ErrorCode.None != error)
+                {
+                    Log.Error(LogTag, "Current Failed with error " + error);
+                    return null;
+                }
+
+                current._ownership = false;
+                return _list[_index];
+            }
+        }
+
+        /// <summary>
+        /// Adds a command to the command list.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <param name="command">The command</param>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        /// <exception cref="NullReferenceException">This will occur if the provided parameter is null.</exception>
+        public void Add(VoiceCommand command)
+        {
+            ErrorCode error = VcCmdListAdd(_handle, command._handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Add Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+
+            _list.Add(command);
+        }
+
+        /// <summary>
+        /// Removes a command from the command list.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <param name="command">The command</param>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        /// <exception cref="NullReferenceException">This will occur if the provided parameter is null.</exception>
+        public void Remove(VoiceCommand command)
+        {
+            ErrorCode error = VcCmdListRemove(_handle, command._handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Remove Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+
+            _list.Remove(command);
+        }
+
+        /// <summary>
+        /// Retrieves all commands from the command list.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public IEnumerable<VoiceCommand> GetAllCommands()
+        {
+            _callback = (IntPtr vcCommand, IntPtr userData) =>
+            {
+                if (IntPtr.Zero == vcCommand) {
+                    Log.Error(LogTag, "Invalid command pointer");
+                    return false;
+                }
+                return true;
+            };
+            ErrorCode error = VcCmdListForeachCommands(_handle, _callback, IntPtr.Zero);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "GetAllCommands Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+
+            return _list;
+        }
+
+        /// <summary>
+        /// Moves an index to the first command.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="InvalidOperationException">This exception can be due to list empty.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public void First()
+        {
+            ErrorCode error = VcCmdListFirst(_handle);
+            if (ErrorCode.None != error)
+            {
+                Log.Error(LogTag, "First Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            _index = 0;
+        }
+
+        /// <summary>
+        /// Moves an index to the last command.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="InvalidOperationException">This exception can be due to list empty.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public void Last()
+        {
+            ErrorCode error = VcCmdListLast(_handle);
+            if (ErrorCode.None != error)
+            {
+                Log.Error(LogTag, "Last Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            _index = Count - 1;
+        }
+
+        /// <summary>
+        /// Moves an index to the next command.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="InvalidOperationException">This exception can be due to list empty or list end.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public void Next()
+        {
+            ErrorCode error = VcCmdListNext(_handle);
+            if (ErrorCode.None != error)
+            {
+                Log.Error(LogTag, "Next Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+           _index++;
+        }
+
+        /// <summary>
+        /// Moves an index to the previous command.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        /// <exception cref="InvalidOperationException">This exception can be due to list empty or list end.</exception>
+        /// <exception cref="UnauthorizedAccessException">This exception can be due to permission denied.</exception>
+        /// <exception cref="NotSupportedException">This exception can be due to not supported.</exception>
+        public void Previous()
+        {
+            ErrorCode error = VcCmdListPrev(_handle);
+            if (ErrorCode.None != error)
+            {
+                Log.Error(LogTag, "Previous Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            _index--;
+        }
+    }
+}
diff --git a/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceControlWidget.cs b/internal/src/Tizen.Uix.VoiceControlWidget/Tizen.Uix.VoiceControlWidget/VoiceControlWidget.cs
new file mode 100755 (executable)
index 0000000..75d7c4c
--- /dev/null
@@ -0,0 +1,713 @@
+/*
+* 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.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.VoiceControlWidget;
+using static Interop.VoiceControlCommand;
+
+namespace Tizen.Uix.VoiceControlWidget
+{
+    /// <summary>
+    /// Enumeration for the error values that can occur.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum Error
+    {
+        /// <summary>
+        /// Successful, no error.
+        /// </summary>
+        None,
+        /// <summary>
+        /// Out of memory.
+        /// </summary>
+        OutOfMemory,
+        /// <summary>
+        /// I/O error.
+        /// </summary>
+        IoError,
+        /// <summary>
+        /// Invalid parameter.
+        /// </summary>
+        InvalidParameter,
+        /// <summary>
+        /// No answer from the STT service.
+        /// </summary>
+        TimedOut,
+        /// <summary>
+        /// Device or resource busy.
+        /// </summary>
+        RecorderBusy,
+        /// <summary>
+        /// Permission denied.
+        /// </summary>
+        PermissionDenied,
+        /// <summary>
+        /// VC NOT supported.
+        /// </summary>
+        NotSupported,
+        /// <summary>
+        /// Invalid state.
+        /// </summary>
+        InvalidState,
+        /// <summary>
+        /// Invalid language.
+        /// </summary>
+        InvalidLanguage,
+        /// <summary>
+        /// No available engine.
+        /// </summary>
+        EngineNotFound,
+        /// <summary>
+        /// Operation failed.
+        /// </summary>
+        OperationFailed,
+        /// <summary>
+        /// Operation rejected.
+        /// </summary>
+        OperationRejected,
+        /// <summary>
+        /// List reached end.
+        /// </summary>
+        IterationEnd,
+        /// <summary>
+        /// List empty.
+        /// </summary>
+        Empty,
+        /// <summary>
+        /// Service reset.
+        /// </summary>
+        ServiceReset,
+        /// <summary>
+        /// Progress to ready is not finished.
+        /// </summary>
+        InProgressToReady,
+        /// <summary>
+        /// Progress to recording is not finished.
+        /// </summary>
+        InProgressToRecording,
+        /// <summary>
+        /// Progress to processing is not finished.
+        /// </summary>
+        InProgressToProcessing
+    };
+
+    /// <summary>
+    /// Enumeration for the client state.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum State
+    {
+        /// <summary>
+        /// 'None' state.
+        /// </summary>
+        None = 0,
+        /// <summary>
+        /// 'Initialized' state.
+        /// </summary>
+        Initialized = 1,
+        /// <summary>
+        /// 'Ready' state.
+        /// </summary>
+        Ready = 2,
+        /// <summary>
+        /// The state cannot be determined.
+        /// </summary>
+        Unavailable = -1
+    };
+
+    /// <summary>
+    /// Enumeration for the service state.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum ServiceState
+    {
+        /// <summary>
+        /// 'None' state.
+        /// </summary>
+        None = 0,
+        /// <summary>
+        /// 'Ready' state.
+        /// </summary>
+        Ready = 1,
+        /// <summary>
+        /// 'Recording' state.
+        /// </summary>
+        Recording = 2,
+        /// <summary>
+        /// 'Processing' state.
+        /// </summary>
+        Processing = 3,
+        /// <summary>
+        /// The state cannot be determined.
+        /// </summary>
+        Unavailable = -1
+    };
+
+    /// <summary>
+    /// Enumeration for the result event.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum ResultEvent
+    {
+        /// <summary>
+        /// Normal result.
+        /// </summary>
+        Success = 0,
+        /// <summary>
+        /// Rejected result.
+        /// </summary>
+        Rejected = 1
+    };
+
+    /// <summary>
+    /// Enumeration for the command type.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum CommandType
+    {
+        /// <summary>
+        /// foreground command type
+        /// </summary>
+        Foreground = 1,
+        /// <summary>
+        /// background command type
+        /// </summary>
+        Background = 2,
+        /// <summary>
+        /// widget command type
+        /// </summary>
+        Widget = 3,
+        /// <summary>
+        /// system command type
+        /// </summary>
+        System = 4,
+        /// <summary>
+        /// system background command type
+        /// </summary>
+        SystemBackground = 5,
+        /// <summary>
+        /// exclusive command type
+        /// </summary>
+        Exclusive = 6,
+        /// <summary>
+        /// Undefined command
+        /// </summary>
+        Undefined = -1
+    };
+
+    /// <summary>
+    /// Enumerations of send event type
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum SendEventType
+    {
+        /// <summary>
+        /// Send text event to vc engine
+        /// </summary>
+        Text,
+        /// <summary>
+        /// Send list event to vc engine
+        /// </summary>
+        ListEvent,
+        /// <summary>
+        /// Send haptic event to vc engine
+        /// </summary>
+        HapticEvent,
+    }
+
+    /// <summary>
+    /// Enumerations of recognition mode
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
+    public enum RecognitionModeType
+    {
+        /// <summary>
+        /// Default mode
+        /// </summary>
+        StopBySilence,
+        /// <summary>
+        /// Restart recognition after rejected result
+        /// </summary>
+        RestartAfterReject,
+        /// <summary>
+        /// Continuously restart recognition - not support yet
+        /// </summary>
+        RestartContinuously,
+        /// <summary>
+        /// Start and stop manually without silence
+        /// </summary>
+        Manual,
+        /// <summary>
+        /// Undefined
+        /// </summary>
+        Undefined = -1
+    }
+
+    public class VoiceControlWidget
+    {
+        private event EventHandler<StateChangedEventArgs> _stateChanged;
+        private event EventHandler<ServiceStateChangedEventArgs> _serviceStateChanged;
+        private event EventHandler<ErrorOccurredEventArgs> _errorOccurred;
+        private event EventHandler<CurrentLanguageChangedEventArgs> _currentLanguageChanged;
+        private event EventHandler<CurrentCommandListEventArgs> _currentCommandList;
+        private event EventHandler<AsrResultEventArgs> _asrResult;
+        private event EventHandler<TooltipEventArgs> _tooltip;
+        private event EventHandler<RecognitionResult> _recognitionResult;
+        private VcWidgetStateChangedCallback _stateDelegate;
+        private VcWidgetServiceStateChangedCallback _serviceStateDelegate;
+        private VcWidgetErrorCallback _errorDelegate;
+        private VcWidgetCurrentLanguageChangedCallback _languageDelegate;
+        private VcWidgetSendCurrentCommandListCb _currentCommandListDelegate;
+        private VcWidgetAsrResultCallback _asrResultDelegate;
+        private VcWidgetShowTooltipCb _showTooltiptDelegate;
+        private List<string> _supportedLanguages;
+        private IntPtr _handle;
+        private VcWidgetResultCallback _resultDelegate;
+        private VcWidgetSupportedLanguageCb _supportedLanguagesDelegate;
+
+
+        public string CurrentLanguage
+        {
+            get
+            {
+                string currentLanguage;
+
+                ErrorCode error = VcWidgetGetCurrentLanguage(_handle, out currentLanguage);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "CurrentLanaguge Failed with error " + error);
+                    return "";
+                }
+
+                return currentLanguage;
+            }
+        }
+
+        public State State
+        {
+            get
+            {
+                State state;
+
+                ErrorCode error = VcWidgetGetState(_handle, out state);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "State Failed with error " + error);
+                    return State.Unavailable;
+                }
+
+                return state;
+            }
+        }
+
+        public ServiceState ServiceState
+        {
+            get
+            {
+                ServiceState state;
+
+                ErrorCode error = VcWidgetGetServiceState(_handle, out state);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "ServiceState Failed with error " + error);
+                    return ServiceState.Unavailable;
+                }
+
+                return state;
+            }
+        }
+
+        public bool IsCommandFormatSupported(CommandFormat format)
+        {
+            bool supported = false;
+            ErrorCode error = VcWidgetIsCommandFormatSupported(_handle, format, out supported);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "IsCommandFormatSupported Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+            return supported;
+        }
+
+        public void SetForeground(bool value)
+        {
+            ErrorCode error = VcWidgetSetForeground(_handle, value);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "SetForeground Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void Cancel()
+        {
+            ErrorCode error = VcWidgetCancel(_handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Cancel Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void Initialize()
+        {
+            ErrorCode error = VcWidgetInitialize(out _handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Initialize Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void Deinitialize()
+        {
+            ErrorCode error = VcWidgetDeinitialize(_handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Deinitialize Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void Prepare()
+        {
+            ErrorCode error = VcWidgetPrepare(_handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Prepare Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void Unprepare()
+        {
+            ErrorCode error = VcWidgetUnprepare(_handle);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "Unprepare Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public void EnableAsr(bool enable)
+        {
+            ErrorCode error = VcWidgetEnableAsrResult(_handle, enable);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "EnableAsr Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+        }
+
+        public IEnumerable<string> GetSupportedLanguages()
+        {
+            _supportedLanguages = new List<string>();
+            _supportedLanguagesDelegate = (IntPtr language, IntPtr userData) =>
+            {
+                string languageStr = Marshal.PtrToStringAnsi(language);
+                _supportedLanguages.Add(languageStr);
+                return true;
+            };
+            ErrorCode error = VcWidgetForeachSupportedLanguages(_handle, _supportedLanguagesDelegate, IntPtr.Zero);
+            if (error != ErrorCode.None)
+            {
+                Log.Error(LogTag, "GetSupportedLanguages Failed with error " + error);
+                throw ExceptionFactory.CreateException(error);
+            }
+
+            return _supportedLanguages;
+        }
+
+        public event EventHandler<ServiceStateChangedEventArgs> ServiceStateChanged
+        {
+            add
+            {
+                _serviceStateDelegate = (ServiceState previous, ServiceState current, IntPtr userData) =>
+                {
+                    ServiceStateChangedEventArgs args = new ServiceStateChangedEventArgs(previous, current);
+                    _serviceStateChanged?.Invoke(null, args);
+                };
+                ErrorCode error = VcWidgetSetServiceStateChangedCb(_handle, _serviceStateDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add ServiceStateChanged Failed with error " + error);
+                }
+                else
+                {
+                    _serviceStateChanged += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnsetServiceStateChangedCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove ServiceStateChanged Failed with error " + error);
+                }
+
+                _serviceStateChanged -= value;
+            }
+        }
+
+        public event EventHandler<StateChangedEventArgs> StateChanged
+        {
+            add
+            {
+                _stateDelegate = (State previous, State current, IntPtr userData) =>
+                {
+                    StateChangedEventArgs args = new StateChangedEventArgs(previous, current);
+                    _stateChanged?.Invoke(null, args);
+                };
+                ErrorCode error = VcWidgetSetStateChangedCb(_handle, _stateDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add StateChanged Failed with error " + error);
+                }
+                else
+                {
+                    _stateChanged += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnsetStateChangedCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove StateChanged Failed with error " + error);
+                }
+
+                _stateChanged -= value;
+            }
+        }
+
+        public event EventHandler<ErrorOccurredEventArgs> ErrorOccurred
+        {
+            add
+            {
+                _errorDelegate = (ErrorCode reason, IntPtr userData) =>
+            {
+                ErrorOccurredEventArgs args = new ErrorOccurredEventArgs(reason);
+                _errorOccurred?.Invoke(null, args);
+            };
+                ErrorCode error = VcWidgetSetErrorCb(_handle, _errorDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add ErrorOccurred Failed with error " + error);
+                }
+
+                else
+                {
+                    _errorOccurred += value;
+                }
+            }
+
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnsetErrorCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove ErrorOccurred Failed with error " + error);
+                }
+
+                _errorOccurred -= value;
+            }
+        }
+
+        public event EventHandler<CurrentLanguageChangedEventArgs> CurrentLanguageChanged
+        {
+            add
+            {
+                _languageDelegate = (IntPtr previousLanguage, IntPtr currentLanguage, IntPtr userData) =>
+            {
+                string previousLanguageString = Marshal.PtrToStringAnsi(previousLanguage);
+                string currentLanguageString = Marshal.PtrToStringAnsi(currentLanguage);
+                CurrentLanguageChangedEventArgs args = new CurrentLanguageChangedEventArgs(previousLanguageString, currentLanguageString);
+                _currentLanguageChanged?.Invoke(null, args);
+            };
+                ErrorCode error = VcWidgetSetCurrentLanguageChangedCb(_handle, _languageDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add CurrentLanguageChanged Failed with error " + error);
+                }
+
+                else
+                {
+                    _currentLanguageChanged += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnsetCurrentLanguageChangedCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove CurrentLanguageChanged Failed with error " + error);
+                }
+
+                _currentLanguageChanged -= value;
+            }
+        }
+
+        public event EventHandler<CurrentCommandListEventArgs> CurrentCommandList
+        {
+            add
+            {
+                _currentCommandListDelegate = (out IntPtr listPtr, IntPtr userData) =>
+                {
+                    CurrentCommandListEventArgs args = new CurrentCommandListEventArgs();
+                    _currentCommandList?.Invoke(null, args);
+
+                    listPtr = args.CommandList._handle.DangerousGetHandle();
+                    Log.Debug(LogTag, "Send current Command list");
+                };
+                ErrorCode error = VcWidgetSetSendCurrentCommandListCb(_handle, _currentCommandListDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add CurrentCommandList Failed with error " + error);
+                }
+
+                else
+                {
+                    _currentCommandList += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnSetSendCurrentCommandListCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove CurrentCommandList Failed with error " + error);
+                }
+
+                _currentCommandList -= value;
+            }
+        }
+
+        public event EventHandler<AsrResultEventArgs> AsrResult
+        {
+            add
+            {
+                _asrResultDelegate = (ResultEvent evt, IntPtr result, IntPtr userData) =>
+                {
+                    string resultString = Marshal.PtrToStringAnsi(result);
+                    AsrResultEventArgs args = new AsrResultEventArgs(evt, resultString);
+                    _asrResult?.Invoke(null, args);
+                    return true;
+                };
+                ErrorCode error = VcWidgetSetAsrResultCb(_handle, _asrResultDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add AsrResult Failed with error " + error);
+                }
+
+                else
+                {
+                    _asrResult += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnSetAsrResultCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove AsrResult Failed with error " + error);
+                }
+
+                _asrResult -= value;
+            }
+        }
+
+        public event EventHandler<TooltipEventArgs> ShowTooltip
+        {
+            add
+            {
+                _showTooltiptDelegate = (bool show, IntPtr userData) =>
+                {
+                    TooltipEventArgs args = new TooltipEventArgs(show);
+                    _tooltip?.Invoke(null, args);
+                };
+                ErrorCode error = VcWidgetSetShowTooltipCb(_handle, _showTooltiptDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add ShowTooltip Failed with error " + error);
+                }
+
+                else
+                {
+                    _tooltip += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnSetShowTooltipCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove ShowTooltip Failed with error " + error);
+                }
+
+                _tooltip -= value;
+            }
+        }
+
+        public event EventHandler<RecognitionResult> RecognitionResult
+        {
+            add
+            {
+                _resultDelegate = (ResultEvent evt, IntPtr cmdList, IntPtr result, IntPtr userData) =>
+                {
+                    Log.Info(LogTag, "Recognition Result Event Triggered");
+                    if ((cmdList != null) && (result != null))
+                    {
+                        RecognitionResult args = new RecognitionResult(evt, cmdList, result);
+                        _recognitionResult?.Invoke(null, args);
+                    }
+                    else
+                    {
+                        Log.Info(LogTag, "Recognition Result Event null received");
+                    }
+                };
+                ErrorCode error = VcWidgetSetResultCb(_handle, _resultDelegate, IntPtr.Zero);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Add RecognitionResult Failed with error " + error);
+                }
+                else
+                {
+                    _recognitionResult += value;
+                }
+            }
+
+            remove
+            {
+                ErrorCode error = VcWidgetUnsetResultCb(_handle);
+                if (error != ErrorCode.None)
+                {
+                    Log.Error(LogTag, "Remove RecognitionResult Failed with error " + error);
+                }
+
+                _recognitionResult -= value;
+            }
+        }
+    }
+}
index 8099c4f..de23950 100644 (file)
@@ -1,16 +1,18 @@
 # !! IMPORTANT !!
 # This packaging spec file is for developer testing only.
-# For Tizen release, the spec file in the tizen branch should be used.
+# For Tizen release, the spec.in file should be used.
 
 %define DOTNET_ASSEMBLY_PATH /usr/share/dotnet.tizen/framework
 %define DOTNET_ASSEMBLY_DUMMY_PATH %{DOTNET_ASSEMBLY_PATH}/ref
 %define DOTNET_ASSEMBLY_RES_PATH %{DOTNET_ASSEMBLY_PATH}/res
 %define DOTNET_NUGET_SOURCE /nuget
 
-%define DOTNET_TIZEN_API_VERSION 5
-
 %define _tizenfx_bin_path Artifacts
 
+%define TIZEN_NET_API_VERSION 5
+%define TIZEN_NET_NUGET_VERSION 5.0.0-preview1
+%define TIZEN_NET_INTERNAL_NUGET_VERSION 5.0.0.999
+
 Name:       csapi-tizenfx
 Summary:    Assemblies of Tizen .NET
 Version:    99.99.99
@@ -148,7 +150,7 @@ rm -fr %{_tizenfx_bin_path}
 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
 ./build.sh --full
 ./build.sh --dummy
-./build.sh --pack
+./build.sh --pack %{TIZEN_NET_NUGET_VERSION} %{TIZEN_NET_INTERNAL_NUGET_VERSION}
 
 %install
 mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_PATH}
@@ -156,16 +158,28 @@ mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_DUMMY_PATH}
 mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
 mkdir -p %{buildroot}%{DOTNET_NUGET_SOURCE}
 
+# Install Runtime Assemblies
 install -p -m 644 %{_tizenfx_bin_path}/bin/public/*.dll %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+install -p -m 644 %{_tizenfx_bin_path}/bin/internal/*.dll %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+
+# Install Debug Symbols
 install -p -m 644 %{_tizenfx_bin_path}/bin/public/*.pdb %{buildroot}%{DOTNET_ASSEMBLY_PATH}
-install -p -m 644 %{_tizenfx_bin_path}/bin/platform/*.dll %{buildroot}%{DOTNET_ASSEMBLY_PATH}
-install -p -m 644 %{_tizenfx_bin_path}/bin/platform/*.pdb %{buildroot}%{DOTNET_ASSEMBLY_PATH}
-install -p -m 644 %{_tizenfx_bin_path}/bin/platform/res/* %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+install -p -m 644 %{_tizenfx_bin_path}/bin/internal/*.pdb %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+
+# Install Resource files
+[ -d %{_tizenfx_bin_path}/bin/public/res ] \
+  && install -p -m 644 %{_tizenfx_bin_path}/bin/public/res/* %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+[ -d %{_tizenfx_bin_path}/bin/internal/res ] \
+  && install -p -m 644 %{_tizenfx_bin_path}/bin/internal/res/* %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+
+# Install Dummy Assemblies
 install -p -m 644 %{_tizenfx_bin_path}/bin/dummy/*.dll %{buildroot}%{DOTNET_ASSEMBLY_DUMMY_PATH}
+
+# Install NuGet Packages
 install -p -m 644 %{_tizenfx_bin_path}/*.nupkg %{buildroot}%{DOTNET_NUGET_SOURCE}
 
 %post
-vconftool set -t int "db/dotnet/tizen_api_version" %{DOTNET_TIZEN_API_VERSION} -f
+vconftool set -t int "db/dotnet/tizen_api_version" %{TIZEN_NET_API_VERSION} -f
 
 
 %files
diff --git a/packaging/csapi-tizenfx.spec.in b/packaging/csapi-tizenfx.spec.in
new file mode 100644 (file)
index 0000000..bceb934
--- /dev/null
@@ -0,0 +1,214 @@
+%define DOTNET_ASSEMBLY_PATH /usr/share/dotnet.tizen/framework
+%define DOTNET_ASSEMBLY_DUMMY_PATH %{DOTNET_ASSEMBLY_PATH}/ref
+%define DOTNET_ASSEMBLY_RES_PATH %{DOTNET_ASSEMBLY_PATH}/res
+%define DOTNET_NUGET_SOURCE /nuget
+
+%define _tizenfx_bin_path Artifacts
+
+%define TIZEN_NET_API_VERSION 5
+%define TIZEN_NET_NUGET_VERSION @nuget_version@
+%define TIZEN_NET_INTERNAL_NUGET_VERSION @internal_nuget_version@
+
+Name:       csapi-tizenfx
+Summary:    Assemblies of Tizen .NET
+Version:    @rpm_version@
+Release:    1
+Group:      Development/Libraries
+License:    Apache-2.0
+URL:        https://www.tizen.org
+Source0:    %{name}-%{version}.tar.gz
+Source1:    %{name}.manifest
+
+BuildRequires: dotnet-build-tools
+
+BuildArch: noarch
+ExcludeArch: aarch64
+AutoReqProv: no
+
+Requires(post): vconf
+
+
+%description
+%{summary}
+
+%package nuget
+Summary:   NuGet package for %{name}
+Group:     Development/Libraries
+AutoReqProv: no
+
+%description nuget
+NuGet package for %{name}
+
+%package dummy
+Summary:   Dummy assemblies of Tizen .NET
+Group:     Development/Libraries
+AutoReqProv: no
+
+%description dummy
+Dummy assemblies of Tizen .NET
+
+%package full
+Summary:   All Tizen .NET assemblies
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+AutoReqProv: no
+
+%description full
+All Tizen .NET assemblies
+
+%package debug
+Summary:   All .pdb files of Tizen .NET
+Group:     Development/Libraries
+AutoReqProv: no
+
+%description debug
+All .pdb files of Tizen .NET
+
+%package common
+Summary:   Tizen .NET assemblies for Common profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description common
+Tizen .NET assemblies for Common profile
+
+%package mobile
+Summary:   Tizen .NET assemblies for Mobile profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description mobile
+Tizen .NET assemblies for Mobile profile
+
+%package mobile-emul
+Summary:   Tizen .NET assemblies for Emulator of Mobile profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description mobile-emul
+Tizen .NET assemblies for Emulator of Mobile profile
+
+%package tv
+Summary:   Tizen .NET assemblies for TV profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description tv
+Tizen .NET assemblies for TV profile
+
+%package ivi
+Summary:   Tizen .NET assemblies for IVI profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description ivi
+Tizen .NET assemblies for IVI profile
+
+%package wearable
+Summary:   Tizen .NET assemblies for Wearable profile
+Group:     Development/Libraries
+Requires:  %{name} = %{version}-%{release}
+Requires:  csapi-tizenfx-dummy = %{version}-%{release}
+AutoReqProv: no
+
+%description wearable
+Tizen .NET assemblies for Wearable profile
+
+%prep
+%setup -q
+cp %{SOURCE1} .
+
+%build
+
+GetFileList() {
+  PROFILE=$1
+  cat pkg/PlatformFileList.txt | grep -E "#$PROFILE[[:space:]]|#$PROFILE$" | cut -d# -f1 | sed "s#^#%{DOTNET_ASSEMBLY_PATH}/#"
+}
+
+GetFileList common > common.filelist
+GetFileList mobile > mobile.filelist
+GetFileList mobile-emul > mobile-emul.filelist
+GetFileList tv > tv.filelist
+GetFileList ivi > ivi.filelist
+GetFileList wearable > wearable.filelist
+
+rm -fr %{_tizenfx_bin_path}
+export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+./build.sh --full
+./build.sh --dummy
+./build.sh --pack %{TIZEN_NET_NUGET_VERSION} %{TIZEN_NET_INTERNAL_NUGET_VERSION}
+
+%install
+mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_DUMMY_PATH}
+mkdir -p %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+mkdir -p %{buildroot}%{DOTNET_NUGET_SOURCE}
+
+# Install Runtime Assemblies
+install -p -m 644 %{_tizenfx_bin_path}/bin/public/*.dll %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+install -p -m 644 %{_tizenfx_bin_path}/bin/internal/*.dll %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+
+# Install Debug Symbols
+install -p -m 644 %{_tizenfx_bin_path}/bin/public/*.pdb %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+install -p -m 644 %{_tizenfx_bin_path}/bin/internal/*.pdb %{buildroot}%{DOTNET_ASSEMBLY_PATH}
+
+# Install Resource files
+[ -d %{_tizenfx_bin_path}/bin/public/res ] \
+  && install -p -m 644 %{_tizenfx_bin_path}/bin/public/res/* %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+[ -d %{_tizenfx_bin_path}/bin/internal/res ] \
+  && install -p -m 644 %{_tizenfx_bin_path}/bin/internal/res/* %{buildroot}%{DOTNET_ASSEMBLY_RES_PATH}
+
+# Install Dummy Assemblies
+install -p -m 644 %{_tizenfx_bin_path}/bin/dummy/*.dll %{buildroot}%{DOTNET_ASSEMBLY_DUMMY_PATH}
+
+# Install NuGet Packages
+install -p -m 644 %{_tizenfx_bin_path}/*.nupkg %{buildroot}%{DOTNET_NUGET_SOURCE}
+
+%post
+vconftool set -t int "db/dotnet/tizen_api_version" %{TIZEN_NET_API_VERSION} -f
+
+
+%files
+%license LICENSE
+
+%files nuget
+%{DOTNET_NUGET_SOURCE}/*.nupkg
+
+%files dummy
+%attr(644,root,root) %{DOTNET_ASSEMBLY_DUMMY_PATH}/*.dll
+
+%files full
+%manifest %{name}.manifest
+%attr(644,root,root) %{DOTNET_ASSEMBLY_PATH}/*.dll
+%attr(644,root,root) %{DOTNET_ASSEMBLY_RES_PATH}/*
+
+%files debug
+%attr(644,root,root) %{DOTNET_ASSEMBLY_PATH}/*.pdb
+
+%files common -f common.filelist
+%manifest %{name}.manifest
+
+%files mobile -f mobile.filelist
+%manifest %{name}.manifest
+
+%files mobile-emul -f mobile-emul.filelist
+%manifest %{name}.manifest
+
+%files tv -f tv.filelist
+%manifest %{name}.manifest
+
+%files ivi -f ivi.filelist
+%manifest %{name}.manifest
+
+%files wearable -f wearable.filelist
+%manifest %{name}.manifest
index 92060d9..62c008f 100644 (file)
@@ -85,4 +85,5 @@ Tizen.Uix.SttEngine.dll                            #common #mobile #mobile-emul
 Tizen.Uix.Tts.dll                                  #common #mobile #mobile-emul #tv #ivi #wearable
 Tizen.Uix.TtsEngine.dll                            #common #mobile #mobile-emul #tv #ivi #wearable
 Tizen.Uix.VoiceControl.dll                         #common #mobile #mobile-emul #tv #ivi #wearable
+Tizen.Uix.VoiceControlWidget.dll                   #common #mobile #mobile-emul #tv #ivi #wearable
 Tizen.WebView.dll                                  #common #mobile #mobile-emul #tv #ivi #wearable
diff --git a/pkg/PublicModuleList.txt b/pkg/PublicModuleList.txt
deleted file mode 100755 (executable)
index e0d5ed4..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-ElmSharp
-ElmSharp.Wearable
-Tizen
-Tizen.Account.AccountManager
-Tizen.Account.FidoClient
-Tizen.Account.OAuth2
-Tizen.Account.SyncManager
-Tizen.Applications.Alarm
-Tizen.Applications.AttachPanel
-Tizen.Applications.Badge
-Tizen.Applications.Common
-Tizen.Applications.DataControl
-Tizen.Applications.MessagePort
-Tizen.Applications.Notification
-Tizen.Applications.NotificationEventListener
-Tizen.Applications.PackageManager
-Tizen.Applications.Preference
-Tizen.Applications.RemoteView
-Tizen.Applications.Service
-Tizen.Applications.Shortcut
-Tizen.Applications.ToastMessage
-Tizen.Applications.UI
-Tizen.Applications.WatchApplication
-Tizen.Applications.WidgetApplication
-Tizen.Applications.WidgetControl
-Tizen.Content.Download
-Tizen.Content.MediaContent
-Tizen.Content.MimeType
-Tizen.Context
-Tizen.Location
-Tizen.Location.Geofence
-Tizen.Log
-Tizen.Maps
-Tizen.Messaging
-Tizen.Messaging.Push
-Tizen.Multimedia
-Tizen.Multimedia.AudioIO
-Tizen.Multimedia.Camera
-Tizen.Multimedia.MediaCodec
-Tizen.Multimedia.MediaPlayer
-Tizen.Multimedia.Metadata
-Tizen.Multimedia.Radio
-Tizen.Multimedia.Recorder
-Tizen.Multimedia.Remoting
-Tizen.Multimedia.StreamRecorder
-Tizen.Multimedia.Util
-Tizen.Multimedia.Vision
-Tizen.Network.Bluetooth
-Tizen.Network.Connection
-Tizen.Network.IoTConnectivity
-Tizen.Network.Nfc
-Tizen.Network.Nsd
-Tizen.Network.Smartcard
-Tizen.Network.WiFi
-Tizen.Network.WiFiDirect
-Tizen.NUI
-Tizen.PhonenumberUtils
-Tizen.Pims.Calendar
-Tizen.Pims.Contacts
-Tizen.Security
-Tizen.Security.PrivacyPrivilegeManager
-Tizen.Security.SecureRepository
-Tizen.Security.TEEC
-Tizen.Sensor
-Tizen.System
-Tizen.System.Feedback
-Tizen.System.Information
-Tizen.System.MediaKey
-Tizen.System.PlatformConfig
-Tizen.System.Storage
-Tizen.System.Usb
-Tizen.System.SystemSettings
-Tizen.Telephony
-Tizen.Tracer
-Tizen.Uix.InputMethod
-Tizen.Uix.InputMethodManager
-Tizen.Uix.Stt
-Tizen.Uix.SttEngine
-Tizen.Uix.Tts
-Tizen.Uix.TtsEngine
-Tizen.Uix.VoiceControl
-Tizen.WebView
similarity index 50%
rename from pkg/Tizen.NET.Private.nuspec
rename to pkg/Tizen.NET.Internals.nuspec
index 0a068ae..83cbc30 100644 (file)
@@ -1,28 +1,21 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
   <metadata>
-    <id>Tizen.NET.Private</id>
-    <version>5.0.0-preview1</version>
+    <id>Tizen.NET.Internals</id>
+    <version>5.0.0</version>
     <authors>Samsung Electronics</authors>
     <owners>Samsung Electronics</owners>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <licenseUrl>https://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
     <projectUrl>https://www.tizen.org/</projectUrl>
     <iconUrl>https://developer.tizen.org/sites/default/files/images/tizen-pinwheel-on-light-rgb_64_64.png</iconUrl>
-    <description>A set of Tizen.NET APIs. This includes all of the APIs built on top of Tizen Platform.</description>
+    <description>Internal Use Only. Internal APIs for Tizen platform.</description>
     <copyright>© Samsung Electronics Co., Ltd All Rights Reserved</copyright>
   </metadata>
   <files>
 
-    <file src="pkg\build\**" target="build" />
-
-    <file src="Artifacts\bin\public\*.dll"  target="lib\netstandard2.0" />
-    <file src="Artifacts\bin\public\*.pdb"  target="lib\netstandard2.0" />
-    <file src="Artifacts\bin\public\*.xml"  target="lib\netstandard2.0" />
-
-    <file src="Artifacts\bin\platform\*.dll"  target="lib\netstandard2.0" />
-    <file src="Artifacts\bin\platform\*.pdb"  target="lib\netstandard2.0" />
-    <file src="Artifacts\bin\platform\*.xml"  target="lib\netstandard2.0" />
+    <file src="Artifacts\bin\internal\*.dll"  target="lib\netstandard2.0" />
+    <file src="Artifacts\bin\internal\*.xml"  target="lib\netstandard2.0" />
 
   </files>
 </package>
index 666fd50..2b8933b 100644 (file)
 
     <file src="pkg\build\**" target="build" />
 
-    <!--
-        Please edit pkg/PublicModuleList.txt,
-        if want to add modules to Tizen.NET package.
-    -->
     <file src="Artifacts\bin\public\*.dll"  target="lib\netstandard2.0" />
-    <file src="Artifacts\bin\public\*.pdb"  target="lib\netstandard2.0" />
     <file src="Artifacts\bin\public\*.xml"  target="lib\netstandard2.0" />
 
   </files>
index 0faa38c..095b8fb 100644 (file)
@@ -1,5 +1,10 @@
 <Project>
 
-       <Import Project="$(MSBuildThisFileDirectory)..\build\common.props" />
+  <Import Project="$(MSBuildThisFileDirectory)..\build\common.props" />
+  <Import Project="$(MSBuildThisFileDirectory)..\build\directories.props" />
+
+  <PropertyGroup>
+    <ArtifactsDirectory>$(OutputPublicDir)</ArtifactsDirectory>
+  </PropertyGroup>
 
 </Project>
\ No newline at end of file
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
new file mode 100644 (file)
index 0000000..c0b0154
--- /dev/null
@@ -0,0 +1,5 @@
+<Project>
+
+  <Import Project="$(MSBuildThisFileDirectory)..\build\common.targets" />
+
+</Project>
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index c36cef9..e00df89
@@ -39,7 +39,7 @@ namespace ElmSharp.Wearable
         /// <since_tizen> preview </since_tizen>
         public CircleSurface(Naviframe naviframe)
         {
-            _handle = Interop.Eext.eext_circle_surface_naviframe_add(naviframe);
+            _handle = Interop.Eext.eext_circle_surface_naviframe_add(naviframe.RealHandle);
         }
 
         /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
index ef66745..35c7343
@@ -339,11 +339,21 @@ namespace ElmSharp
         }
 
         /// <summary>
+        /// Use FlushAllCache instead.
+        /// </summary>
+        [Obsolete("use FlushAllCache instead")]
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static void FlushAllCashe()
+        {
+            Interop.Elementary.elm_cache_all_flush();
+        }
+
+        /// <summary>
         /// Flush all caches.
         /// Frees all data that was in cache and is not currently being used to reduce memory usage. This frees Edje's, Evas' and Eet's cache.
         /// </summary>
         /// <since_tizen> preview </since_tizen>
-        public static void FlushAllCashe()
+        public static void FlushAllCache()
         {
             Interop.Elementary.elm_cache_all_flush();
         }
@@ -389,4 +399,4 @@ namespace ElmSharp
             Interop.Elementary.elm_config_all_flush();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/src/Tizen.Multimedia.Camera/doc/api/Tizen.Multimedia.Camera.md b/src/Tizen.Multimedia.Camera/doc/api/Tizen.Multimedia.Camera.md
new file mode 100644 (file)
index 0000000..3b8a365
--- /dev/null
@@ -0,0 +1,5 @@
+---
+uid: Tizen.Multimedia.Camera
+syntax:
+  content: 'public class Camera : IDisposable'
+---
index 6dc0322..70e66fa 100644 (file)
@@ -265,7 +265,6 @@ namespace Tizen.Multimedia
 
                     throw new ArgumentException("The display has already been assigned to another.");
                 }
-                SetDisplay(value).ThrowIfFailed("Failed to set the display to the player");
 
                 ReplaceDisplay(value);
             }
index 6eece57..ffb066b 100644 (file)
@@ -271,6 +271,8 @@ namespace Tizen.Multimedia
 
             ValidatePlayerState(PlayerState.Idle);
 
+            SetDisplay(_display).ThrowIfFailed("Failed to configure display of the player");
+
             OnPreparing();
 
             var completionSource = new TaskCompletionSource<bool>();
diff --git a/src/Tizen.Multimedia.MediaPlayer/doc/api/Tizen.Multimedia.Player.md b/src/Tizen.Multimedia.MediaPlayer/doc/api/Tizen.Multimedia.Player.md
new file mode 100644 (file)
index 0000000..3361f79
--- /dev/null
@@ -0,0 +1,5 @@
+---
+uid: Tizen.Multimedia.Player
+syntax:
+  content: 'public class Player : IDisposable'
+---
index 96f1f68..44c7802 100644 (file)
@@ -50,7 +50,7 @@ namespace Tizen.Multimedia
             }
             if (sb.Length >= 2)
             {
-                sb.Remove(sb.Length - 1, 2);
+                sb.Remove(sb.Length - 2, 2);
             }
 
             return sb.ToString();
diff --git a/src/Tizen.Multimedia.Remoting/doc/api/Tizen.Multimedia.Remoting.ScreenMirroring.md b/src/Tizen.Multimedia.Remoting/doc/api/Tizen.Multimedia.Remoting.ScreenMirroring.md
new file mode 100644 (file)
index 0000000..3f992df
--- /dev/null
@@ -0,0 +1,5 @@
+---
+uid: Tizen.Multimedia.Remoting.ScreenMirroring
+syntax:
+  content: 'public class ScreenMirroring : IDisposable'
+---
diff --git a/src/Tizen.Multimedia.Vision/doc/api/Tizen.Multimedia.Vision.MediaVisionSource.md b/src/Tizen.Multimedia.Vision/doc/api/Tizen.Multimedia.Vision.MediaVisionSource.md
new file mode 100644 (file)
index 0000000..1509ca9
--- /dev/null
@@ -0,0 +1,5 @@
+---
+uid: Tizen.Multimedia.Vision.MediaVisionSource
+syntax:
+  content: 'public class MediaVisionSource : IDisposable'
+---
diff --git a/src/Tizen.Multimedia/doc/api/Tizen.Multimedia.MediaPacket.md b/src/Tizen.Multimedia/doc/api/Tizen.Multimedia.MediaPacket.md
new file mode 100644 (file)
index 0000000..e0dca89
--- /dev/null
@@ -0,0 +1,5 @@
+---
+uid: Tizen.Multimedia.MediaPacket
+syntax:
+  content: 'public abstract class MediaPacket : IDisposable'
+---
index fa69d30..f74d695 100755 (executable)
@@ -515,6 +515,11 @@ namespace Tizen.NUI
         // Callback for Application InitSignal
         private void OnApplicationInit(IntPtr data)
         {
+            if (Version.DaliVersionMatchWithNUI() == false)
+            {
+                Tizen.Log.Fatal("NUI", "Dali and NUI are version mismatched!");
+            }
+
             // Initialize DisposeQueue Singleton class. This is also required to create DisposeQueue on main thread.
             DisposeQueue.Instance.Initialize();
             NUIApplicationInitEventArgs e = new NUIApplicationInitEventArgs();
index 7ac7fdf..13a3bc2 100755 (executable)
@@ -181,6 +181,9 @@ namespace Tizen.NUI
         [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_ViewWrapperImpl_CreateTransition")]
         public static extern global::System.IntPtr ViewWrapperImpl_CreateTransition(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
+        [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_View_GetVisualResourceStatus")]
+        public static extern int View_GetVisualResourceStatus(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+
         [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_View_CreateTransition")]
         public static extern global::System.IntPtr View_CreateTransition(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
@@ -844,6 +847,9 @@ namespace Tizen.NUI
         [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_Window_GetPosition")]
         public static extern global::System.IntPtr GetPosition(global::System.Runtime.InteropServices.HandleRef jarg1);
 
+        [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_Window_SetTransparency")]
+        public static extern global::System.IntPtr SetTransparency(global::System.Runtime.InteropServices.HandleRef jarg1, bool jarg2);
+
         [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_Adaptor_FeedKeyEvent")]
         public static extern void Window_FeedKeyEvent(global::System.Runtime.InteropServices.HandleRef jarg1);
 
index ef7d80a..1b62c0a 100755 (executable)
@@ -886,7 +886,9 @@ namespace Tizen.NUI
         internal static readonly int IMAGE_VISUAL_FRAME_DELAY = NDalicPINVOKE.IMAGE_VISUAL_FRAME_DELAY_get();
         internal static readonly int IMAGE_VISUAL_MASK_CONTENT_SCALE = NDalicPINVOKE.IMAGE_VISUAL_MASK_CONTENT_SCALE_get();
         internal static readonly int IMAGE_VISUAL_CROP_TO_MASK = NDalicPINVOKE.IMAGE_VISUAL_CROP_TO_MASK_get();
-
+        internal static readonly int IMAGE_VISUAL_RELEASE_POLICY = NDalicPINVOKE.IMAGE_VISUAL_RELEASE_POLICY_get();
+        internal static readonly int IMAGE_VISUAL_LOAD_POLICY = NDalicPINVOKE.IMAGE_VISUAL_LOAD_POLICY_get();
+        internal static readonly int IMAGE_VISUAL_ORIENTATION_CORRECTION = NDalicPINVOKE.IMAGE_VISUAL_ORIENTATION_CORRECTION_get();
         internal static readonly int MESH_VISUAL_OBJECT_URL = NDalicPINVOKE.MESH_VISUAL_OBJECT_URL_get();
         internal static readonly int MESH_VISUAL_MATERIAL_URL = NDalicPINVOKE.MESH_VISUAL_MATERIAL_URL_get();
         internal static readonly int MESH_VISUAL_TEXTURES_PATH = NDalicPINVOKE.MESH_VISUAL_TEXTURES_PATH_get();
index b5693d1..61cb7ba 100755 (executable)
@@ -6631,6 +6631,15 @@ class NDalicPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_IMAGE_VISUAL_CROP_TO_MASK_get")]
   public static extern int IMAGE_VISUAL_CROP_TO_MASK_get();
 
+  [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_IMAGE_VISUAL_RELEASE_POLICY_get")]
+  public static extern int IMAGE_VISUAL_RELEASE_POLICY_get();
+
+  [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_IMAGE_VISUAL_LOAD_POLICY_get")]
+  public static extern int IMAGE_VISUAL_LOAD_POLICY_get();
+
+  [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint ="CSharp_Dali_IMAGE_VISUAL_ORIENTATION_CORRECTION_get")]
+  public static extern int IMAGE_VISUAL_ORIENTATION_CORRECTION_get();
+
   [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_MESH_VISUAL_OBJECT_URL_get")]
   public static extern int MESH_VISUAL_OBJECT_URL_get();
 
diff --git a/src/Tizen.NUI/src/internal/VersionCheck.cs b/src/Tizen.NUI/src/internal/VersionCheck.cs
new file mode 100755 (executable)
index 0000000..46b96b4
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright(c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+
+namespace Tizen.NUI
+{
+    //This version should be updated and synced for every Dali native release
+    internal static class Version
+    {
+        public const int daliVer1 = 1;
+        public const int daliVer2 = 2;
+        public const int daliVer3 = 61002;
+        public const int nuiVer1 = 0;
+        public const int nuiVer2 = 2;
+        public const int nuiVer3 = 61002;
+        public const string nuiRelease = "";
+
+
+        static internal bool DaliVersionMatchWithNUI()
+        {
+            int ver1 = -1;
+            int ver2 = -1;
+            int ver3 = -1;
+
+            try
+            {
+                if (NDalicManualPINVOKE.NativeVersionCheck(ref ver1, ref ver2, ref ver3))
+                {
+                    if (ver1 != daliVer1 || ver2 != daliVer2 || ver3 != daliVer3)
+                    {
+                        Tizen.Log.Fatal("NUI", $"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali= { ver1 }.{ ver2}.{ ver3}");
+                        throw new System.InvalidOperationException($"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali={ ver1 }.{ ver2}.{ ver3}");
+                        return false;
+                    }
+                }
+                else
+                {
+                    Tizen.Log.Fatal("NUI", $"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali= { ver1 }.{ ver2}.{ ver3}");
+                    throw new System.InvalidOperationException($"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali={ ver1 }.{ ver2}.{ ver3}");
+                    return false;
+                }
+            }
+            catch (Exception exc)
+            {
+                Tizen.Log.Fatal("NUI", $"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali= { ver1 }.{ ver2}.{ ver3}");
+                throw new System.InvalidOperationException($"Dali native version mismatch error! nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3} but dali={ ver1 }.{ ver2}.{ ver3}");
+            }
+            Tizen.Log.Fatal("NUI", $"version info: nui={ nuiVer1}.{ nuiVer2}.{ nuiVer3}, dali= { ver1 }.{ ver2}.{ ver3}");
+            return true;
+        }
+    }
+}
index 3735036..c1cb572 100755 (executable)
@@ -170,7 +170,6 @@ namespace Tizen.NUI
                 if (swigCMemOwn)
                 {
                     swigCMemOwn = false;
-                    NDalicManualPINVOKE.delete_ViewWrapperImpl(swigCPtr);
                 }
                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
             }
index 635fb13..90d8321 100755 (executable)
@@ -417,6 +417,60 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// Gets or sets whether to correct orientation of image automatically.<br />
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public bool OrientationCorrection
+        {
+            get
+            {
+                return _orientationCorrection ?? false;
+            }
+            set
+            {
+                _orientationCorrection = value;
+                UpdateImage();
+            }
+        }
+
+
+        /// <summary>
+        /// Get the loading state of the visual resource.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public ImageView.LoadingStatusType LoadingStatus
+        {
+            get
+            {
+                return (ImageView.LoadingStatusType)NDalicManualPINVOKE.View_GetVisualResourceStatus(swigCPtr, (int)Property.IMAGE);
+            }
+        }
+
+        /// <summary>
+        /// Enumeration for LoadingStatus of image.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public enum LoadingStatusType
+        {
+            /// <summary>
+            /// Loading preparing status.
+            /// </summary>
+            /// <since_tizen> 5 </since_tizen>
+            Preparing,
+            /// <summary>
+            /// Loading ready status.
+            /// </summary>
+            /// <since_tizen> 5 </since_tizen>
+            Ready,
+            /// <summary>
+            /// Loading failed status.
+            /// </summary>
+            /// <since_tizen> 5 </since_tizen>
+            Failed
+        }
+
+
         private void UpdateImage()
         {
             if (_url != null)
@@ -428,15 +482,17 @@ namespace Tizen.NUI.BaseComponents
                     _nPatchMap.Add(NpatchImageVisualProperty.URL, new PropertyValue(_url));
                     _nPatchMap.Add(NpatchImageVisualProperty.Border, new PropertyValue(_border));
                     if (_borderOnly != null) { _nPatchMap.Add(NpatchImageVisualProperty.BorderOnly, new PropertyValue((bool)_borderOnly)); }
-                    if (_synchronousLoading != null) _nPatchMap.Add(NpatchImageVisualProperty.SynchronousLoading, new PropertyValue((bool)_synchronousLoading));
+                    if (_synchronousLoading != null) { _nPatchMap.Add(NpatchImageVisualProperty.SynchronousLoading, new PropertyValue((bool)_synchronousLoading)); }
+                    if (_orientationCorrection != null) { _nPatchMap.Add(ImageVisualProperty.OrientationCorrection, new PropertyValue((bool)_orientationCorrection)); }
                     SetProperty(ImageView.Property.IMAGE, new PropertyValue(_nPatchMap));
                 }
-                else if (_synchronousLoading != null)
+                else if (_synchronousLoading != null || _orientationCorrection != null)
                 { // for normal image, with synchronous loading property
                     PropertyMap imageMap = new PropertyMap();
                     imageMap.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
                     imageMap.Add(ImageVisualProperty.URL, new PropertyValue(_url));
-                    imageMap.Add(ImageVisualProperty.SynchronousLoading, new PropertyValue((bool)_synchronousLoading));
+                    if (_synchronousLoading != null) { imageMap.Add(ImageVisualProperty.SynchronousLoading, new PropertyValue((bool)_synchronousLoading)); }
+                    if (_orientationCorrection != null) { imageMap.Add(ImageVisualProperty.OrientationCorrection, new PropertyValue((bool)_orientationCorrection)); }
                     SetProperty(ImageView.Property.IMAGE, new PropertyValue(imageMap));
                 }
                 else
@@ -451,7 +507,7 @@ namespace Tizen.NUI.BaseComponents
         private bool? _synchronousLoading = null;
         private bool? _borderOnly = null;
         private string _url = null;
-
+        private bool? _orientationCorrection = null;
     }
 
 }
index 2656603..800c82a 100755 (executable)
@@ -650,6 +650,45 @@ namespace Tizen.NUI
     }
 
     /// <summary>
+    /// Specifies the Release Policy types <br />
+    /// Decides if the image should be cached in different conditions
+    /// </summary>
+    /// <since_tizen> 5 </since_tizen>
+    public enum ReleasePolicyType
+    {
+      /// <summary>
+      /// Image is released when visual detached from scene
+      /// </summary>
+      Detached = 0,
+      /// <summary>
+      /// Image is only released when visual is destroyed
+      /// </summary>
+      Destroyed,
+      /// <summary>
+      /// Image is not released.
+      /// </summary>
+      Never
+    }
+
+    /// <summary>
+    /// Specifies the Load Policy types <br />
+    /// Decides when the image texture should be loaded
+    /// </summary>
+    /// <since_tizen> 5 </since_tizen>
+    public enum LoadPolicyType
+    {
+       /// <summary>
+       /// Load texture once the image source has been provided. Even if not being used yet.
+       /// </summary>
+       Immediate = 0,
+       /// <summary>
+       /// Only load texture once the visual is attached, when the image needs to be shown.
+       /// </summary>
+       Attached
+    }
+
+
+    /// <summary>
     /// The type of coordinate system for certain attributes of the points in a gradient.
     /// </summary>
     /// <since_tizen> 3 </since_tizen>
@@ -1215,7 +1254,21 @@ namespace Tizen.NUI
         /// </summary>
         /// <since_tizen> 4 </since_tizen>
         public static readonly int FrameDelay = NDalic.IMAGE_VISUAL_FRAME_DELAY;
-
+        /// <summary>
+        /// The policy to determine when an image should no longer be cached
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public static readonly int ReleasePolicy = NDalic.IMAGE_VISUAL_RELEASE_POLICY;
+        /// <summary>
+        /// The policy to determine when an image should be loaded
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public static readonly int LoadPolicy = NDalic.IMAGE_VISUAL_LOAD_POLICY;
+        /// <summary>
+        /// Determines if image orientation should be corrected so the image displays as it was intended
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public static readonly int OrientationCorrection = NDalic.IMAGE_VISUAL_ORIENTATION_CORRECTION;
     }
 
     /// <summary>
index 3d4c996..261a510 100755 (executable)
  *
  */
 
+using System.Text;
+using System.Collections.Generic;
+using Tizen.NUI.BaseComponents;
+using System.ComponentModel;
 
 namespace Tizen.NUI
 {
-    using System.Text;
-    using System.Collections.Generic;
-    using Tizen.NUI.BaseComponents;
-
     /// <summary>
     /// A class encapsulating the transform map of the visual.
     /// </summary>
@@ -636,6 +636,9 @@ namespace Tizen.NUI
         private WrapModeType? _wrapModeV = null;
         private float? _maskContentScale = null;
         private bool? _cropToMask = null;
+        private ReleasePolicyType? _releasePolicy = null;
+        private LoadPolicyType? _loadPolicy = null;
+        private bool? _orientationCorrection = true;
 
         /// <summary>
         /// Gets or sets the URL of the image.<br />
@@ -893,6 +896,65 @@ namespace Tizen.NUI
             }
         }
 
+
+        /// <summary>
+        /// Get or set the Image Visual release policy<br />
+        /// It decides if a texture should be released from the cache or kept to reduce loading time <br />
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public ReleasePolicyType ReleasePolicy
+        {
+            get
+            {
+                return _releasePolicy ?? (ReleasePolicyType.Destroyed );
+            }
+            set
+            {
+                _releasePolicy = value;
+                UpdateVisual();
+            }
+        }
+
+
+        /// <summary>
+        /// Get or set the Image Visual image loading policy<br />
+        /// It decides if a texture should be loaded immediately after source set or only after visual is added to window <br />
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public LoadPolicyType LoadPolicy
+        {
+            get
+            {
+                return _loadPolicy ?? (LoadPolicyType.Attached);
+            }
+            set
+            {
+                _loadPolicy = value;
+                UpdateVisual();
+            }
+        }
+
+        /// <summary>
+        /// Get or set whether to automatically correct the orientation based on exif data.<br />
+        /// If not specified, the default is true.<<br />
+        /// For JPEG images only.<br />
+        /// Optional.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public bool OrientationCorrection
+        {
+            get
+            {
+                return _orientationCorrection ?? (true);
+            }
+            set
+            {
+                _orientationCorrection = value;
+                UpdateVisual();
+            }
+        }
+
+
         /// <summary>
         /// Compose the out visual map.
         /// </summary>
@@ -920,6 +982,9 @@ namespace Tizen.NUI
                 if (_opacity != null) { _outputVisualMap.Add((int)Visual.Property.Opacity, new PropertyValue((float)_opacity)); }
                 if (_maskContentScale != null) { _outputVisualMap.Add((int)ImageVisualProperty.MaskContentScale, new PropertyValue((float)_maskContentScale)); }
                 if (_cropToMask != null) { _outputVisualMap.Add((int)ImageVisualProperty.CropToMask, new PropertyValue((bool)_cropToMask)); }
+                if (_releasePolicy != null) { _outputVisualMap.Add( ImageVisualProperty.ReleasePolicy , new PropertyValue((int)_releasePolicy)); }
+                if (_loadPolicy != null) { _outputVisualMap.Add( ImageVisualProperty.LoadPolicy, new PropertyValue((int)_loadPolicy)); }
+                if (_orientationCorrection != null) { _outputVisualMap.Add( ImageVisualProperty.OrientationCorrection, new PropertyValue((bool)_orientationCorrection)); }
             }
         }
     }
index 5306c67..5cae4d9 100644 (file)
@@ -18,6 +18,7 @@ using System;
 using System.Runtime.InteropServices;
 using Tizen.NUI.BaseComponents;
 using System.ComponentModel;
+using System.Collections.Generic;
 
 namespace Tizen.NUI
 {
@@ -33,6 +34,15 @@ namespace Tizen.NUI
         private Layer _rootLayer;
         private string _windowTitle;
 
+        private List<Layer> _childLayers = new List<Layer>();
+        private List<Layer> LayersChildren
+        {
+            get
+            {
+                return _childLayers;
+            }
+        }
+
         internal Window(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.Window_SWIGUpcast(cPtr), cMemoryOwn)
         {
             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
@@ -652,12 +662,16 @@ namespace Tizen.NUI
         {
             NDalicPINVOKE.Stage_Add(stageCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            LayersChildren.Add(layer);
         }
 
         internal void Remove(Layer layer)
         {
             NDalicPINVOKE.Stage_Remove(stageCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            LayersChildren.Remove(layer);
         }
 
         /// <summary>
@@ -701,9 +715,10 @@ namespace Tizen.NUI
         /// <remarks>Note that a default layer is always provided (count >= 1).</remarks>
         internal uint GetLayerCount()
         {
-            uint ret = NDalicPINVOKE.Stage_GetLayerCount(stageCPtr);
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
+            if (LayersChildren == null || LayersChildren.Count < 0)
+                return 0;
+
+            return (uint) LayersChildren.Count;
         }
 
         /// <summary>
@@ -729,6 +744,7 @@ namespace Tizen.NUI
             {
                 _rootLayer = new Layer(NDalicPINVOKE.Stage_GetRootLayer(stageCPtr), true);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                LayersChildren.Add(_rootLayer);
             }
             return _rootLayer;
         }
@@ -1458,6 +1474,16 @@ namespace Tizen.NUI
         }
 
         /// <summary>
+        /// Sets whether the window is transparent or not.
+        /// </summary>
+        /// <param name="transparent">Whether the window is transparent.</param>
+        /// <since_tizen> 5 </since_tizen>
+        public void SetTransparency(bool transparent) {
+            NDalicManualPINVOKE.SetTransparency(swigCPtr, transparent);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
         /// The window size property (read-only).
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
@@ -1523,6 +1549,8 @@ namespace Tizen.NUI
         {
             NDalicPINVOKE.Stage_Add(stageCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            LayersChildren.Add(layer);
         }
 
         /// <summary>
@@ -1534,6 +1562,8 @@ namespace Tizen.NUI
         {
             NDalicPINVOKE.Stage_Remove(stageCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            LayersChildren.Remove(layer);
         }
 
         /// <summary>
index 2725077..56f6290 100755 (executable)
@@ -766,11 +766,19 @@ namespace Tizen.Network.Connection
             int ret = Interop.Connection.GetCurrentProfile(GetHandle(), out ProfileHandle);
             if ((ConnectionError)ret != ConnectionError.None)
             {
-                Log.Error(Globals.LogTag, "It failed to get current profile, " + (ConnectionError)ret);
-                ConnectionErrorFactory.CheckFeatureUnsupportedException(ret, "http://tizen.org/feature/network.telephony " + "http://tizen.org/feature/network.wifi " + "http://tizen.org/feature/network.tethering.bluetooth " + "http://tizen.org/feature/network.ethernet");
-                ConnectionErrorFactory.CheckPermissionDeniedException(ret, "(http://tizen.org/privilege/network.get)");
-                ConnectionErrorFactory.CheckHandleNullException(ret, (GetHandle() == IntPtr.Zero), "Connection Handle may have been disposed or released");
-                ConnectionErrorFactory.ThrowConnectionException(ret);
+                if ((ConnectionError)ret == ConnectionError.NoConnection)
+                {
+                    Log.Error(Globals.LogTag, "No connection " + (ConnectionError)ret);
+                    return null;
+                }
+                else
+                {
+                    Log.Error(Globals.LogTag, "It failed to get current profile, " + (ConnectionError)ret);
+                    ConnectionErrorFactory.CheckFeatureUnsupportedException(ret, "http://tizen.org/feature/network.telephony " + "http://tizen.org/feature/network.wifi " + "http://tizen.org/feature/network.tethering.bluetooth " + "http://tizen.org/feature/network.ethernet");
+                    ConnectionErrorFactory.CheckPermissionDeniedException(ret, "(http://tizen.org/privilege/network.get)");
+                    ConnectionErrorFactory.CheckHandleNullException(ret, (GetHandle() == IntPtr.Zero), "Connection Handle may have been disposed or released");
+                    ConnectionErrorFactory.ThrowConnectionException(ret);
+                }
             }
 
             ConnectionProfile Profile = new ConnectionProfile(ProfileHandle);
index 1b43a1d..a771486 100755 (executable)
@@ -19,6 +19,11 @@ using Tizen.Internals.Errors;
 
 namespace Tizen.Network.WiFi
 {
+    static internal class WiFiErrorValue
+    {
+        internal const int Base = -0x01CE0000;
+    }
+
     internal enum WiFiError
     {
         None = ErrorCode.None,
@@ -26,15 +31,15 @@ namespace Tizen.Network.WiFi
         OutOfMemoryError = ErrorCode.OutOfMemory,
         InvalidOperationError = ErrorCode.InvalidOperation,
         AddressFamilyNotSupportedError = ErrorCode.AddressFamilyNotSupported,
-        OperationFailedError = -0x01C50000 | 0x0301,
-        NoConnectionError = -0x01C50000 | 0x0302,
+        OperationFailedError = WiFiErrorValue.Base | 0x01,
+        NoConnectionError = WiFiErrorValue.Base | 0x02,
         NowInProgressError = ErrorCode.NowInProgress,
-        AlreadyExistsError = -0x01C50000 | 0x0303,
-        OperationAbortedError = -0x01C50000 | 0x0304,
-        DhcpFailedError = -0x01C50000 | 0x0306,
-        InvalidKeyError = -0x01C50000 | 0x0307,
-        NoReplyError = -0x01C50000 | 0x0308,
-        SecurityRestrictedError = -0x01C50000 | 0x0309,
+        AlreadyExistsError = WiFiErrorValue.Base | 0x03,
+        OperationAbortedError = WiFiErrorValue.Base | 0x04,
+        DhcpFailedError = WiFiErrorValue.Base | 0x05,
+        InvalidKeyError = WiFiErrorValue.Base | 0x06,
+        NoReplyError = WiFiErrorValue.Base | 0x07,
+        SecurityRestrictedError = WiFiErrorValue.Base | 0x08,
         PermissionDeniedError = ErrorCode.PermissionDenied,
         NotSupportedError = ErrorCode.NotSupported
     }
index bd56b97..1058ddd 100755 (executable)
@@ -264,8 +264,16 @@ namespace Tizen.Network.WiFi
             int ret = Interop.WiFi.GetConnectedAP(GetSafeHandle(), out apHandle);
             if (ret != (int)WiFiError.None)
             {
-                Log.Error(Globals.LogTag, "Failed to connect with AP, Error - " + (WiFiError)ret);
-                WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.get");
+                if (ret == (int)WiFiError.NoConnectionError)
+                {
+                    Log.Error(Globals.LogTag, "No connection " + (WiFiError)ret);
+                    return null;
+                }
+                else
+                {
+                    Log.Error(Globals.LogTag, "Failed to get connected AP, Error - " + (WiFiError)ret);
+                    WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.get");
+                }
             }
             WiFiAP ap = new WiFiAP(apHandle);
             return ap;
index be79a6a..771bf1f 100644 (file)
@@ -22,16 +22,24 @@ internal static partial class Interop
     internal static partial class Record
     {
         [StructLayout(LayoutKind.Sequential)]
+        internal unsafe struct LOCAL
+        {
+            internal int year;
+            internal int month;
+            internal int mday;
+            internal int hour;
+            internal int minute;
+            internal int second;
+        };
+        [StructLayout(LayoutKind.Explicit)]
             internal struct DateTime
             {
+                [FieldOffset(0)]
                 internal int type;
+                [FieldOffset(8)]
                 internal long utime;
-                internal int year;
-                internal int month;
-                internal int mday;
-                internal int hour;
-                internal int minute;
-                internal int second;
+                [FieldOffset(8)]
+                internal LOCAL local;
             };
 
         [DllImport(Libraries.Calendar, EntryPoint = "calendar_record_create")]
index a97ab83..89d32c8 100644 (file)
@@ -168,12 +168,12 @@ namespace Tizen.Pims.Calendar
             }
             else
             {
-                time.year = value.LocalTime.Year;
-                time.month = value.LocalTime.Month;
-                time.mday = value.LocalTime.Day;
-                time.hour = value.LocalTime.Hour;
-                time.minute = value.LocalTime.Minute;
-                time.second = value.LocalTime.Second;
+                time.local.year = value.LocalTime.Year;
+                time.local.month = value.LocalTime.Month;
+                time.local.mday = value.LocalTime.Day;
+                time.local.hour = value.LocalTime.Hour;
+                time.local.minute = value.LocalTime.Minute;
+                time.local.second = value.LocalTime.Second;
             }
             return time;
         }
@@ -188,7 +188,7 @@ namespace Tizen.Pims.Calendar
             }
             else
             {
-                value = new CalendarTime(time.year, time.month, time.mday, time.hour, time.minute, time.second);
+                value = new CalendarTime(time.local.year, time.local.month, time.local.mday, time.local.hour, time.local.minute, time.local.second);
             }
             value._type = time.type;
             return value;
index bcd453b..0e23e98 100755 (executable)
@@ -18,6 +18,7 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.ComponentModel;
 using static Interop.InputMethod;
 
 namespace Tizen.Uix.InputMethod
@@ -1999,6 +2000,7 @@ namespace Tizen.Uix.InputMethod
         /// 2) Operation Failed
         /// </exception>
         /// <since_tizen> 4 </since_tizen>
+        [EditorBrowsable(EditorBrowsableState.Never)]
         public static void Create()
         {
             ErrorCode error = ImeInitialize();
@@ -2030,6 +2032,7 @@ namespace Tizen.Uix.InputMethod
         /// 2) Operation Failed
         /// </exception>
         /// <since_tizen> 4 </since_tizen>
+        [EditorBrowsable(EditorBrowsableState.Never)]
         public static void Destroy()
         {
             ErrorCode error = ImeFinalize();
diff --git a/test/NUITestSample/NUITestSample.sln b/test/NUITestSample/NUITestSample.sln
new file mode 100755 (executable)
index 0000000..f89637e
--- /dev/null
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27004.2006
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUITestSample", "NUITestSample\NUITestSample.csproj", "{848AFBC8-7318-4856-8FA5-51AFA4919838}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {848AFBC8-7318-4856-8FA5-51AFA4919838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {848AFBC8-7318-4856-8FA5-51AFA4919838}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {848AFBC8-7318-4856-8FA5-51AFA4919838}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {848AFBC8-7318-4856-8FA5-51AFA4919838}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {1121C38F-65D0-4F7B-8097-9A363A641DF2}
+       EndGlobalSection
+EndGlobal
diff --git a/test/NUITestSample/NUITestSample/NUITestSample.cs b/test/NUITestSample/NUITestSample/NUITestSample.cs
new file mode 100755 (executable)
index 0000000..4c626f3
--- /dev/null
@@ -0,0 +1,42 @@
+using System;
+
+namespace NUITestSample
+{
+    class Application
+    {
+        [STAThread]
+        static void Main(string[] args)
+        {
+            //new ControlDashboard.Example().Run(args);
+            //new DatePickerTest.Example().Run(args);
+            //new DatePickerUsingJson.Example().Run(args);
+            //new HelloTest.Example().Run(args);
+            //new HelloWorldTest.Example().Run(args);
+            //new Test1.Example().Run(args);
+            //new SiblingOrderTest.Example().Run(args);
+            //new UserAlphaFunctionTest.Example().Run(args);
+            //new MyCSharpExample.Example().Run(args);
+            //new CustomControlTest.Example().Run(args);
+            //new ScrollViewTest.Example().Run(args);
+            //new ImageViewTest.Example().Run(args);
+            //new FlexContainerTest.SampleMain().Run(args);
+            //new DaliTest.Example().Run(args);
+            //new RelativeVectorTest.Example().Run(args);
+            //new VisaulAnimationExample.Example().Run(args);
+            //new VisaulAnimationExample.Example2().Run(args);
+            //new VisaulAnimationExample.Example3().Run(args);
+            //new VisualViewTest.Example().Run(args);
+            //new VisualViewTest2.VisualSample().Run(args);
+            //new PositionUsesPivotPointTest.Example().Run(args);
+            //new VisualViewTest3.Example().Run(args);
+            //new VisualsUsingCustomView.VisualsExample().Run(args);
+            //new FirstScreen.FirstScreenApp().Run(args);
+            //new VisualsExampleTest.Example().Run(args);
+            //new AsIsTest.Example().Run(args);
+            //new WidgetViewTest.Example().Run(args);
+            //new DisposeTest.Example().Run(args);
+            //new SvgTest.Program().Run(args);
+            new ImageViewOrientationCorrectionTest.Program().Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/NUITestSample.csproj b/test/NUITestSample/NUITestSample/NUITestSample.csproj
new file mode 100755 (executable)
index 0000000..df7cfc8
--- /dev/null
@@ -0,0 +1,28 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.0</TargetFramework>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>portable</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>None</DebugType>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Folder Include="lib\"/>
+    <Folder Include="res\"/>
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Tizen.NET" Version="4.0.0" >
+      <ExcludeAssets>Runtime</ExcludeAssets>
+    </PackageReference>
+    <PackageReference Include="Tizen.NET.Sdk" Version="1.0.0" />
+  </ItemGroup>
+
+</Project>
+
diff --git a/test/NUITestSample/NUITestSample/examples/as-is-test-sample.cs b/test/NUITestSample/NUITestSample/examples/as-is-test-sample.cs
new file mode 100755 (executable)
index 0000000..da94300
--- /dev/null
@@ -0,0 +1,255 @@
+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI;
+
+namespace AsIsTest
+{
+    class Example : NUIApplication
+    {
+        private Timer myTimer;
+
+        private View myView;
+        private TextLabel myTextLabel;
+
+
+        //===========================
+        Layer layer;
+        View vi1, vi2, vi3;
+        TextLabel tl1, tl2, tl3;
+        ToggleButton tb1, tb2, tb3;
+
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            myView = new View();
+            myView.Size2D = new Size2D(100, 100);
+            myView.Position = new Position(100, 100, 0);
+            myView.BackgroundColor = Color.Red;
+            myView.Name = "myView";
+            myView.SizeWidth = 111;
+
+            Window.Instance.GetDefaultLayer().Add(myView);
+
+            myTextLabel = new TextLabel();
+            myTextLabel.Position = new Position(100, 100, 0);
+            myTextLabel.Size2D = new Size2D(100, 100);
+            myTextLabel.Name = "myTextLabel";
+
+            myView.Add(myTextLabel);
+
+            //===========================
+            LayerTest2();
+
+            myTimer = new Timer(500);
+            myTimer.Tick += Mytimer_Tick;
+            myTimer.Start();
+        }
+
+        private void ObjectDumpTrigger()
+        {
+            for (int i = 0; i < Window.LayerCount; i++)
+            {
+                BFS(Window.GetLayer((uint)i), 1);
+            }
+        }
+
+
+
+        private static void BFS(Animatable o, int depth)
+        {
+            if (o == null)
+            {
+                Tizen.Log.Fatal("NUI-APP", "##### o == null! return here!");
+                return;
+            }
+
+            Tizen.Log.Fatal("NUI-APP", "##### o.GetTypeName()=" + o.GetTypeName());
+
+            if (o is View)
+            {
+                View myView = o as View;
+
+                if (o is TextLabel)
+                {
+                    TextLabel myTextLabel = o as TextLabel;
+
+                    Tizen.Log.Fatal("NUI-APP", string.Format("it is TextLabel, {0}", myTextLabel.Text));
+
+                    return;
+                }
+                else
+                {
+                    Tizen.Log.Fatal("NUI-APP", string.Format("it is not TextLaebl"));
+                }
+
+                for (int i = 0; i < myView.ChildCount; i++)
+                {
+                    BFS(myView.GetChildAt((uint)i), depth + 1);
+                }
+            }
+            else if (o is Layer)
+            {
+                Layer myLayer = o as Layer;
+
+                for (int i = 0; i < myLayer.ChildCount; i++)
+                {
+                    BFS(myLayer.GetChildAt((uint)i), depth + 1);
+                }
+            }
+            else
+            {
+                return;
+            }
+        }
+
+        private bool Mytimer_Tick(object source, Timer.TickEventArgs e)
+        {
+            ObjectDumpTrigger();
+            ObjectDumpTrigger2();
+            Tizen.Log.Debug("NUI", " === Size property set/get test!");
+            myView.Size2D.Width += 5;  //this is not working, because stage's Size is Vector2 but view's Size is Vector3. need to figure out.
+            myView.SizeHeight += 5;
+            Tizen.Log.Debug("NUI", $" view's size width= {myView.Size2D.Width} heigh={myView.Size2D.Height}");
+
+            return true;
+        }
+
+
+
+        //======================================================================
+        void LayerTest2()
+        {
+            layer = new Layer();
+
+            vi1 = new View();
+            vi2 = new View();
+            vi3 = new View();
+
+            tl1 = new TextLabel();
+            tl2 = new TextLabel();
+            tl3 = new TextLabel();
+
+            tb1 = new ToggleButton();
+            tb2 = new ToggleButton();
+            tb3 = new ToggleButton();
+
+            vi1.Add(vi3);
+            vi1.Add(tl1);
+            vi1.Add(tl2);
+
+            vi3.Add(tb1);
+            vi3.Add(tb2);
+
+            vi2.Add(tl3);
+
+            layer.Add(vi1);
+            layer.Add(vi2);
+            layer.Add(tb3);
+
+            Window.Instance.AddLayer(layer);
+        }
+
+        void ObjectDumpTrigger2()
+        {
+            uint layerCnt = Window.LayerCount;
+            Tizen.Log.Fatal("NUI-APP", "layerCnt=" + layerCnt);
+
+            for (uint i = 0; i < layerCnt; i++)
+            {
+                Tizen.Log.Fatal("NUI-APP", "T[" + DateTime.Now + "]__________ layer #" + i + " traverse");
+                CheckViewsInLayer(Window.GetLayer(i));
+            }
+        }
+        void CheckViewsInLayer(Animatable obj)
+        {
+            if (obj is Layer)
+            {
+                var layer = obj as Layer;
+                if (layer == null)
+                {
+                    Tizen.Log.Fatal("NUI-APP", "### layer is null! just return!");
+                    return;
+                }
+                uint childCnt = layer.ChildCount;
+                if (childCnt > 0)
+                {
+                    for (uint i = 0; i < childCnt; i++)
+                    {
+                        var temp = layer.GetChildAt(i) as View;
+                        Tizen.Log.Fatal("NUI-APP", "depth[1] child in layer! type=" + temp?.GetTypeName());
+                        ViewCheckRecurse(temp, 1);
+                    }
+                }
+                else
+                {
+                    Tizen.Log.Fatal("NUI-APP", "### there is no child in this layer! just return!");
+                }
+            }
+            else
+            {
+                Tizen.Log.Fatal("NUI-APP", "obj is NOT Layer! do nothing!");
+            }
+        }
+        void ViewCheckRecurse(View view, int depth)
+        {
+            if (view)
+            {
+                uint childCnt = view.ChildCount;
+                if (childCnt > 0)
+                {
+                    depth = depth + 1;
+                    for (uint i = 0; i < childCnt; i++)
+                    {
+                        var temp = view.GetChildAt(i) as View;
+                        Tizen.Log.Fatal("NUI-APP", "depth[" + depth + "] child in layer! type=" + temp.GetTypeName() + " AS-IS Test: IsView?=" + (temp is View) + " IsTextLabel?=" + (temp is TextLabel) );
+
+                        if (temp is TextLabel)
+                        {
+                            ToggleButton _toggleBt = temp as ToggleButton;
+                            if(_toggleBt == null)
+                            {
+                                Tizen.Log.Debug("NUI", $"temp is TextLabel! try to do invalid cast! should return null! OK!GOOD!");
+                            }
+                            else
+                            {
+                                Tizen.Log.Debug("NUI", $"temp is TextLabel! try to do invalid cast! should return null! BAD!ERROR!");
+                            }
+                        }
+                        else if (temp is ToggleButton)
+                        {
+                            TextLabel _textLb = temp as TextLabel;
+                            if(_textLb == null)
+                            {
+                                Tizen.Log.Debug("NUI", $"temp is ToggleButton! try to do invalid cast! should return null! OK!GOOD!");
+                            }
+                            else
+                            {
+                                Tizen.Log.Debug("NUI", $"temp is ToggleButton! try to do invalid cast! should return null! BAD!ERROR!");
+                            }
+                        }
+
+                        ViewCheckRecurse(temp, depth);
+                    }
+                }
+                else
+                {
+                    //Tizen.Log.Fatal("NUI-APP", "depth[" + depth + "] child in layer! type=" + view.GetTypeName());
+                    return;
+                }
+            }
+            else
+            {
+                //Tizen.Log.Fatal("NUI-APP", "### view is null! just return!");
+            }
+        }
+
+        private static void _Main(string[] args)
+        {
+            //Create an Application
+            Example myProgram = new Example();
+            myProgram.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/color-test.cs b/test/NUITestSample/NUITestSample/examples/color-test.cs
new file mode 100755 (executable)
index 0000000..6608418
--- /dev/null
@@ -0,0 +1,89 @@
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace ColorTest
+{
+    internal class Example : NUIApplication
+    {
+        View mainView;
+        TextLabel title;
+
+        public Example() : base("", WindowMode.Transparent)
+        {
+        }
+
+        Size2D screenSize;
+        int pixelSize;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            Window.Instance.BackgroundColor = Color.Transparent;
+            Window.Instance.KeyEvent += Instance_KeyEvent;
+
+            screenSize = Window.Instance.Size;
+            pixelSize = screenSize.Width / 10;
+
+            mainView = new View();
+            mainView.Size2D = screenSize;
+            mainView.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 1.0f);
+            mainView.PivotPoint = PivotPoint.TopLeft;
+            mainView.Position = new Position(0, 0, 0);
+            Window.Instance.GetDefaultLayer().Add(mainView);
+
+            title = new TextLabel("Ambient is the new off");
+            title.PivotPoint = PivotPoint.TopLeft;
+            title.Size2D = new Size2D(screenSize.Width, screenSize.Height / 2);
+            title.Position = new Position(0, 0, 0);
+            //title.TextColor = new Color(1.0f, 1.0f, 1.0f, 1.0f);
+            title.TextColor = new Color(255.0f, 255.0f, 255.0f, 255.0f);
+            title.PixelSize = pixelSize;
+            title.HorizontalAlignment = HorizontalAlignment.Center;
+            title.VerticalAlignment = VerticalAlignment.Center;
+            title.MultiLine = true;
+
+            mainView.Add(title);
+        }
+
+        private void Instance_KeyEvent(object sender, Window.KeyEventArgs e)
+        {
+            //////NUILog.Debug("State=" + e.Key.State.ToString() + " Pressed=" + e.Key.KeyPressedName + " Time=" + e.Key.Time);
+
+            if (e.Key.State == Key.StateType.Down && (e.Key.KeyPressedName == "BackSpace" || e.Key.KeyPressedName == "XF86Back"))
+            {
+                Exit();
+            }
+
+            if (e.Key.State == Key.StateType.Down)
+            {
+                if (e.Key.KeyPressedName == "Left")
+                {
+                    mainView.Remove(title);
+                    title.Dispose();
+                    title = null;
+
+                    mainView = new View();
+                    mainView.Size2D = screenSize;
+                    mainView.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 1.0f);
+                    mainView.PivotPoint = PivotPoint.TopLeft;
+                    mainView.Position = new Position(0, 0, 0);
+                    Window.Instance.GetDefaultLayer().Add(mainView);
+
+                    title = new TextLabel("Ambient is the new off");
+                    title.PivotPoint = PivotPoint.TopLeft;
+                    title.Size2D = new Size2D(screenSize.Width, screenSize.Height / 2);
+                    title.Position = new Position(0, 0, 0);
+                    //title.TextColor = new Color(1.0f, 1.0f, 1.0f, 1.0f);
+                    title.TextColor = new Color(255.0f, 255.0f, 255.0f, 255.0f);
+                    title.PixelSize = pixelSize;
+                    title.HorizontalAlignment = HorizontalAlignment.Center;
+                    title.VerticalAlignment = VerticalAlignment.Center;
+                    title.MultiLine = true;
+
+                    mainView.Add(title);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/control-dashboard.cs b/test/NUITestSample/NUITestSample/examples/control-dashboard.cs
new file mode 100755 (executable)
index 0000000..bea0ec6
--- /dev/null
@@ -0,0 +1,502 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace ControlDashboard
+{
+    class Example : NUIApplication
+    {
+        // This is simple structure to contain Control name and implement state at once
+        // name : control name
+        // isImplemented : the state which the control is implemented in public or not
+        private struct Item
+        {
+            public String name;
+            public bool isImplemented;
+
+            public Item(String name, bool isImplemented)
+            {
+                this.name = name;
+                this.isImplemented = isImplemented;
+            }
+        }
+
+        private TableView _contentContainer;
+        private Timer _timer;
+        private Window _window;
+        private Popup _popup;
+        private ProgressBar _progressBar;
+        //private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private const string _resPath = "./res";  //for ubuntu
+
+
+        // List of items
+        private Item[] mViewList = {
+      new Item("PushButton", true),  new Item("DropDown", false),    new Item("Toggle", true),
+      new Item("InputField", false),  new Item("AnimateGif", false),  new Item("Loading", false),
+      new Item("ProgressBar", true), new Item("CheckBox", false),    new Item("RadioButton", true),
+      new Item("Tooltip", true),     new Item("Popup", true),       new Item("Toast", true),
+      new Item("ItemView", false),    new Item("CheckBox", true)
+    };
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, NUIApplication.WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Tizen.Log.Debug("NUI", "Customized Application Initialize event handler");
+            _window = Window.Instance;
+            _window.BackgroundColor = Color.White;
+
+            // Top label
+            TextLabel topLabel = new TextLabel();
+            topLabel.WidthResizePolicy = ResizePolicyType.FillToParent;
+            topLabel.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            topLabel.PivotPoint = PivotPoint.TopCenter;
+            topLabel.SetSizeModeFactor(new Vector3(0.0f, 0.1f, 0.0f));
+            topLabel.BackgroundColor = new Color(43.0f / 255.0f, 145.0f / 255.0f, 175.0f / 255.0f, 1.0f);
+            topLabel.TextColor = Color.White;
+            topLabel.Text = " DALi Views";
+            topLabel.HorizontalAlignment = HorizontalAlignment.Begin;
+            topLabel.VerticalAlignment = VerticalAlignment.Center;
+            topLabel.PointSize = 42.0f;
+            _window.Add(topLabel);
+            //StyleManager.Get().ApplyStyle(topLabel, _resPath + "/json/control-dashboard-theme.json", "TextFieldFontSize4");
+            topLabel.SetStyleName("TextFieldFontSize4");
+
+            // Grid container to contain items. Use tableView because FlexContainer support focus navigation just two direction ( up/down or left/right )
+            _contentContainer = new TableView(6, 5);
+            _contentContainer.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _contentContainer.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentContainer.SetSizeModeFactor(new Vector3(0.0f, 0.9f, 0.0f));
+            _contentContainer.PivotPoint = PivotPoint.BottomCenter;
+            _contentContainer.Position = new Position(0, _window.Size.Height * 0.1f, 0);
+            _contentContainer.SetRelativeHeight(0, 0.07f);
+            _contentContainer.SetRelativeHeight(1, 0.26f);
+            _contentContainer.SetRelativeHeight(2, 0.07f);
+            _contentContainer.SetRelativeHeight(3, 0.26f);
+            _contentContainer.SetRelativeHeight(4, 0.07f);
+            _contentContainer.SetRelativeHeight(5, 0.26f);
+            _contentContainer.Focusable = (true);
+            _window.Add(_contentContainer);
+
+            CreateContent();
+
+            FocusManager.Instance.PreFocusChange += OnPreFocusChange;
+        }
+
+        // Callback for KeyboardFocusManager
+        private View OnPreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            if (!e.ProposedView && !e.CurrentView)
+            {
+                e.ProposedView = _contentContainer.GetChildAt(1);
+            }
+            return e.ProposedView;
+        }
+
+        private void CreateContent()
+        {
+            for (int i = 0; i < mViewList.Length; i++)
+            {
+                CreateItem(mViewList[i], i);
+            }
+        }
+
+        private void CreateItem(Item item, int idx)
+        {
+            // Make label for item
+            TextLabel itemLabel = new TextLabel("    " + item.name);
+            itemLabel.Size2D = new Size2D((int)(_window.Size.Width * 0.2f), (int)(_window.Size.Height * 0.05f));
+            itemLabel.HorizontalAlignment = HorizontalAlignment.Begin;
+            itemLabel.VerticalAlignment = VerticalAlignment.Bottom;
+            //itemLabel.PointSize = 18.0f;
+            _contentContainer.AddChild(itemLabel, new TableView.CellPosition(((uint)idx / 5) * 2, (uint)idx % 5));
+
+            // If item is implemented in public, attach it on window
+            if (item.isImplemented)
+            {
+                if (item.name.CompareTo("PushButton") == 0)
+                {
+                    PushButton pushButton = new PushButton();
+                    pushButton.LabelText = "Push Button";
+                    pushButton.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    pushButton.HeightResizePolicy = ResizePolicyType.FillToParent;
+                    pushButton.UnselectedColor = new Vector4(1.0f, 0.0f, 0.0f, 1.0f);
+                    pushButton.SelectedColor = new Vector4(0.0f, 1.0f, 0.0f, 1.0f);
+                    pushButton.Clicked += (obj, e) =>
+                    {
+                        Button sender = obj as Button;
+                        sender.LabelText = "Click Me";
+                        sender.UnselectedColor = new Vector4(0.0f, 0.0f, 1.0f, 1.0f);
+                        return true;
+                    };
+
+                    _contentContainer.AddChild(pushButton, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("DropDown") == 0)
+                {
+
+                }
+                if (item.name.CompareTo("Toggle") == 0)
+                {
+                    ToggleButton toggleButton = new ToggleButton();
+                    PropertyArray array = new PropertyArray();
+                    array.Add(new PropertyValue(_resPath + "/images/star-highlight.png"));
+                    array.Add(new PropertyValue(_resPath + "/images/star-mod.png"));
+                    array.Add(new PropertyValue(_resPath + "/images/star-dim.png"));
+                    toggleButton.StateVisuals = array;
+
+                    PropertyArray tooltips = new PropertyArray();
+                    tooltips.Add(new PropertyValue("State A"));
+                    tooltips.Add(new PropertyValue("State B"));
+                    tooltips.Add(new PropertyValue("State C"));
+                    toggleButton.Tooltips = tooltips;
+
+                    toggleButton.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    toggleButton.HeightResizePolicy = ResizePolicyType.FillToParent;
+                    toggleButton.Clicked += (obj, e) =>
+                    {
+                        Tizen.Log.Debug("NUI", "Toggle button state changed.");
+                        return true;
+                    };
+
+                    _contentContainer.AddChild(toggleButton, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("InputField") == 0)
+                {
+
+                }
+                if (item.name.CompareTo("AnimateGif") == 0)
+                {
+
+                }
+                if (item.name.CompareTo("Loading") == 0)
+                {
+
+                }
+                if (item.name.CompareTo("ProgressBar") == 0)
+                {
+                    _progressBar = new ProgressBar();
+                    _progressBar.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    _progressBar.HeightResizePolicy = ResizePolicyType.Fixed;
+                    _progressBar.Size2D = new Size2D(0, 100);
+
+                    _progressBar.ValueChanged += OnProgressBarValueChanged;
+
+                    _timer = new Timer(100);
+                    _timer.Tick += (obj, e) =>
+                    {
+                        float progress = (float)Math.Round(_progressBar.ProgressValue, 2);
+
+                        if (progress == 1.0f)
+                        {
+                            _progressBar.ProgressValue = 0.0f;
+                            _progressBar.SecondaryProgressValue = 0.01f;
+                        }
+                        else
+                        {
+                            _progressBar.ProgressValue = progress + 0.01f;
+                            _progressBar.SecondaryProgressValue = progress + 0.21f;
+                        }
+                        return true;
+                    };
+                    _timer.Start();
+
+                    _contentContainer.AddChild(_progressBar, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("ScrollBar") == 0)
+                {
+
+                }
+                if (item.name.CompareTo("CheckBox") == 0)
+                {
+                    CheckBoxButton checkBoxButton = new CheckBoxButton();
+                    checkBoxButton.LabelText = "Yes";
+
+                    _contentContainer.AddChild(checkBoxButton, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("RadioButton") == 0)
+                {
+                    TableView tableView = new TableView(2, 1);
+                    tableView.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    tableView.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+                    RadioButton rButton = new RadioButton();
+                    rButton.LabelText = "Yes";
+                    rButton.Selected = true;
+                    tableView.AddChild(rButton, new TableView.CellPosition(0, 0));
+
+                    rButton = new RadioButton();
+                    rButton.LabelText = "No";
+
+                    tableView.AddChild(rButton, new TableView.CellPosition(1, 0));
+
+                    _contentContainer.AddChild(tableView, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("Tooltip") == 0)
+                {
+                    TableView tableView = new TableView(2, 1);
+                    tableView.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    tableView.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+                    // Create two push buttons and add them to a table view
+                    PushButton buttonWithSimpleTooltip = new PushButton();
+                    buttonWithSimpleTooltip.LabelText = "Tooltip with text only";
+                    buttonWithSimpleTooltip.UnselectedColor = new Vector4(0.5f, 0.5f, 0.7f, 1.0f);
+                    buttonWithSimpleTooltip.SelectedColor = new Vector4(0.7f, 0.5f, 0.7f, 1.0f);
+                    buttonWithSimpleTooltip.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    tableView.AddChild(buttonWithSimpleTooltip, new TableView.CellPosition(0, 0));
+
+                    PushButton buttonWithIconTooltip = new PushButton();
+                    buttonWithIconTooltip.LabelText = "Tooltip with Text and Icon";
+                    buttonWithIconTooltip.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    buttonWithIconTooltip.UnselectedColor = new Vector4(0.5f, 0.5f, 0.7f, 1.0f);
+                    buttonWithIconTooltip.SelectedColor = new Vector4(0.7f, 0.5f, 0.7f, 1.0f);
+                    tableView.AddChild(buttonWithIconTooltip, new TableView.CellPosition(1, 0));
+
+                    // Add a simple text only tooltip to the first push button
+                    buttonWithSimpleTooltip.TooltipText = "Simple Tooltip";
+
+                    // Create a property map for a tooltip with one icon and one text
+                    PropertyArray iconTooltipContent = new PropertyArray();
+
+                    PropertyMap iconVisual = new PropertyMap();
+                    iconVisual.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image))
+                      .Add(ImageVisualProperty.URL, new PropertyValue(_resPath + "/images/star-highlight.png"));
+                    iconTooltipContent.Add(new PropertyValue(iconVisual));
+
+                    PropertyMap textVisual = new PropertyMap();
+                    textVisual.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Text))
+                      .Add(TextVisualProperty.Text, new PropertyValue("Tooltip with Icon"));
+                    iconTooltipContent.Add(new PropertyValue(textVisual));
+
+                    PropertyMap iconTooltip = new PropertyMap();
+                    iconTooltip.Add(Tizen.NUI.Constants.Tooltip.Property.Content, new PropertyValue(iconTooltipContent))
+                      .Add(Tizen.NUI.Constants.Tooltip.Property.Tail, new PropertyValue(true));
+
+                    // Add the tooltip with icon and text to the second push button
+                    buttonWithIconTooltip.Tooltip = iconTooltip;
+
+                    _contentContainer.AddChild(tableView, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("Popup") == 0)
+                {
+                    PushButton button = new PushButton();
+                    button.LabelText = "Popup";
+                    button.PivotPoint = PivotPoint.Center;
+                    button.MaximumSize = new Size2D(150, 100);
+                    _popup = CreatePopup();
+                    _popup.SetTitle(CreateTitle("Popup"));
+
+                    TextLabel text = new TextLabel("This will erase the file permanently. Are you sure?");
+                    text.BackgroundColor = Color.White;
+                    text.MultiLine = true;
+                    text.WidthResizePolicy = ResizePolicyType.FillToParent;
+                    text.HeightResizePolicy = ResizePolicyType.DimensionDependency;
+                    text.SetPadding(new PaddingType(10.0f, 10.0f, 20.0f, 0.0f));
+                    _popup.SetContent(text);
+                    _popup.Focusable = (true);
+                    _popup.SetDisplayState(Popup.DisplayStateType.Hidden);
+
+                    button.Clicked += (obj, ee) =>
+                    {
+                        _window.Add(_popup);
+                        _popup.SetDisplayState(Popup.DisplayStateType.Shown);
+                        FocusManager.Instance.SetCurrentFocusView((_popup.FindChildByName("Footer")).FindChildByName("OKButton"));
+                        return true;
+                    };
+                    _contentContainer.AddChild(button, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("Toast") == 0)
+                {
+                    PushButton button = new PushButton();
+                    button.LabelText = "Toast";
+                    button.PivotPoint = PivotPoint.Center;
+                    button.Clicked += (obj, ee) =>
+                    {
+                        Popup toast = new Popup();
+                        toast.SizeModeFactor = new Vector3(0.75f, 0.75f, 0.75f);
+                        toast.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+                        toast.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+                        toast.ContextualMode = Popup.ContextualModeType.NonContextual;
+                        toast.AnimationDuration = 0.65f;
+                        toast.TailVisibility = false;
+
+                        // Disable the dimmed backing.
+                        toast.BackingEnabled = false;
+
+                        // The toast popup should fade in (not zoom).
+                        toast.AnimationMode = Popup.AnimationModeType.Fade;
+
+                        // The toast popup should auto-hide.
+                        toast.AutoHideDelay = 3000;
+
+                        // Align to the bottom of the screen.
+                        toast.ParentOrigin = new Position(0.5f, 0.94f, 0.5f);
+                        toast.PivotPoint = PivotPoint.BottomCenter;
+
+                        // Let events pass through the toast popup.
+                        toast.TouchTransparent = true;
+
+                        TextLabel text = new TextLabel("This is a Toast.\nIt will auto-hide itself");
+                        text.TextColor = Color.White;
+                        text.MultiLine = true;
+                        text.HorizontalAlignment = HorizontalAlignment.Center;
+                        toast.SetTitle(text);
+                        _window.Add(toast);
+                        toast.DisplayState = Popup.DisplayStateType.Shown;
+
+                        return true;
+                    };
+                    _contentContainer.AddChild(button, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+                }
+                if (item.name.CompareTo("ItemView") == 0)
+                {
+
+                }
+            }
+            else
+            {
+                ImageView notSupportView = new ImageView(_resPath + "/images/not_yet_sign.png");
+                notSupportView.Size2D = new Size2D((int)(_window.Size.Width * 0.2f), (int)(_window.Size.Height * 0.25f));
+                notSupportView.Focusable = (true);
+                _contentContainer.AddChild(notSupportView, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5));
+            }
+        }
+        Popup CreatePopup()
+        {
+            Popup confirmationPopup = new Popup();
+
+            View footer = new View();
+            footer.Name = ("Footer");
+            footer.WidthResizePolicy = ResizePolicyType.FillToParent;
+            footer.HeightResizePolicy = ResizePolicyType.Fixed;
+            footer.Size2D = new Size2D(0, 80);
+            footer.PivotPoint = PivotPoint.Center;
+
+            PushButton okButton = CreateOKButton();
+            okButton.PivotPoint = PivotPoint.Center;
+            okButton.WidthResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            okButton.HeightResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            okButton.SetSizeModeFactor(new Vector3(-20.0f, -20.0f, 0.0f));
+
+            PushButton cancelButton = CreateCancelButton();
+            cancelButton.PivotPoint = PivotPoint.Center;
+            cancelButton.WidthResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            cancelButton.HeightResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            cancelButton.SetSizeModeFactor(new Vector3(-20.0f, -20.0f, 0.0f));
+
+            TableView controlLayout = new TableView(1, 2);
+            controlLayout.PivotPoint = PivotPoint.Center;
+            controlLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            controlLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+            controlLayout.SetCellPadding(new Size2D(10, 10));
+            controlLayout.SetRelativeWidth(0, 0.5f);
+            controlLayout.SetRelativeWidth(1, 0.5f);
+            controlLayout.SetCellAlignment(new TableView.CellPosition(0, 0), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);
+            controlLayout.SetCellAlignment(new TableView.CellPosition(0, 1), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);
+            controlLayout.AddChild(okButton, new TableView.CellPosition(0, 0));
+            controlLayout.AddChild(cancelButton, new TableView.CellPosition(0, 1));
+
+            footer.Add(controlLayout);
+
+            confirmationPopup.SetFooter(footer);
+            return confirmationPopup;
+        }
+        View CreateTitle(string title)
+        {
+            TextLabel titleView = new TextLabel(title);
+            titleView.TextColor = Color.White;
+            titleView.MultiLine = true;
+            titleView.HorizontalAlignment = HorizontalAlignment.Center;
+            return titleView;
+        }
+
+        PushButton CreateOKButton()
+        {
+            PushButton okayButton = new PushButton();
+            okayButton.Name = ("OKButton");
+            okayButton.LabelText = "OK";
+            okayButton.Focusable = (true);
+            okayButton.Clicked += (obj, ee) =>
+            {
+                _popup.SetDisplayState(Popup.DisplayStateType.Hidden);
+                return true;
+            };
+            return okayButton;
+        }
+        PushButton CreateCancelButton()
+        {
+            PushButton cancelButton = new PushButton();
+            cancelButton.LabelText = "Cancel";
+            cancelButton.Focusable = (true);
+            cancelButton.Clicked += (obj, ee) =>
+            {
+                _popup.SetDisplayState(Popup.DisplayStateType.Hidden);
+                return true;
+            };
+            return cancelButton;
+        }
+
+        void OnProgressBarValueChanged(object source, ProgressBar.ValueChangedEventArgs e)
+        {
+            PropertyMap labelVisual = new PropertyMap();
+            labelVisual.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Text))
+              .Add(TextVisualProperty.Text, new PropertyValue(Math.Round(e.ProgressBar.ProgressValue, 2) + " / " + Math.Round(e.ProgressBar.SecondaryProgressValue, 2)))
+              .Add(TextVisualProperty.PointSize, new PropertyValue(10.0f));
+            e.ProgressBar.LabelVisual = labelVisual;
+            return;
+        }
+
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Tizen.Log.Debug("NUI", "Hello Mono World");
+
+            Example example = new Example("/home/owner/apps_rw/NUISamples.TizenTV/res/json/control-dashboard-theme.json");
+            
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/custom-control.cs b/test/NUITestSample/NUITestSample/examples/custom-control.cs
new file mode 100755 (executable)
index 0000000..df9e60e
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI;
+
+namespace CustomControlTest
+{
+
+    // A custom control for star rating (draggable to change the rating)
+    class StarRating : CustomView
+    {
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private FlexContainer _container;
+        private ImageView[] _images;
+        private Vector3 _gestureDisplacement;
+        private int _currentValue;
+        private int _myRating;
+        private bool _myDragEnabled;
+
+        // Called by DALi Builder if it finds a StarRating control in a JSON file
+        static CustomView CreateInstance()
+        {
+          return new StarRating();
+        }
+
+        // static constructor registers the control type (only runs once)
+        static StarRating()
+        {
+          // ViewRegistry registers control type with DALi type registery
+          // also uses introspection to find any properties that need to be registered with type registry
+          CustomViewRegistry.Instance.Register(CreateInstance, typeof(StarRating) );
+        }
+
+        public StarRating() : base(typeof(StarRating).Name, CustomViewBehaviour.ViewBehaviourDefault)
+        {
+        }
+
+        public override void OnInitialize()
+        {
+            // Create a container for the star images
+            _container = new FlexContainer();
+
+            _container.FlexDirection = FlexContainer.FlexDirectionType.Row;
+            _container.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _container.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+            this.Add(_container);
+
+            // Create the images
+            _images = new ImageView[5];
+
+            for(int i = 0; i < 5; i++)
+            {
+                _images[i] = new ImageView(resources+"/images/star-dim.png");
+                _container.Add( _images[i] );
+            }
+
+            // Update the images according to the rating (dimmed star by default)
+            _myRating = 0;
+            UpdateStartImages(_myRating);
+
+            // Enable pan gesture detection
+            EnableGestureDetection(Gesture.GestureType.Pan);
+            _myDragEnabled = true; // Allow dragging by default (can be disabled)
+        }
+
+        // Pan gesture handling
+        public override void OnPan(PanGesture gesture)
+        {
+            // Only handle pan gesture if dragging is allowed
+            if(_myDragEnabled)
+            {
+                switch (gesture.State)
+                {
+                    case Gesture.StateType.Started:
+                    {
+                        _gestureDisplacement = new Vector3(0.0f, 0.0f, 0.0f);
+                        _currentValue = 0;
+                        break;
+                    }
+                    case Gesture.StateType.Continuing:
+                    {
+                        // Calculate the rating according to pan desture displacement
+                        _gestureDisplacement.X += gesture.Displacement.X;
+                        int delta = (int)Math.Ceiling(_gestureDisplacement.X / 40.0f);
+                        _currentValue = _myRating + delta;
+
+                        // Clamp the rating
+                        if(_currentValue < 0) _currentValue = 0;
+                        if(_currentValue > 5) _currentValue = 5;
+
+                        // Update the images according to the rating
+                        UpdateStartImages(_currentValue);
+                        break;
+                    }
+                    default:
+                    {
+                        _myRating = _currentValue;
+                        break;
+                    }
+                }
+            }
+        }
+
+        // Update the images according to the rating
+        private void UpdateStartImages(int rating)
+        {
+            for(int i = 0; i < rating; i++)
+            {
+                _images[i].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+                _images[i].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+                _images[i].SetImage(resources+"/images/star-highlight.png");
+            }
+
+            for(int i = rating; i < 5; i++)
+            {
+                _images[i].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+                _images[i].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+                _images[i].SetImage(resources+"/images/star-dim.png");
+            }
+        }
+
+        // Rating property of type int:
+        public int Rating
+        {
+            get
+            {
+                return _myRating;
+            }
+            set
+            {
+                _myRating = value;
+                UpdateStartImages(_myRating);
+            }
+        }
+
+        // DragEnabled property of type bool:
+        public bool DragEnabled
+        {
+            get
+            {
+                return _myDragEnabled;
+            }
+            set
+            {
+                _myDragEnabled = value;
+            }
+        }
+    }
+
+    class Example : NUIApplication
+    {
+        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+        delegate void CallbackDelegate();
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            // Create a container to layout the rows of image and rating vertically
+            FlexContainer container = new FlexContainer();
+
+            container.ParentOrigin = ParentOrigin.TopLeft;
+            container.PivotPoint = PivotPoint.TopLeft;
+            container.FlexDirection = (int)FlexContainer.FlexDirectionType.Column;
+            container.WidthResizePolicy = ResizePolicyType.FillToParent;
+            container.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+            window.Add(container);
+
+            Random random = new Random();
+
+            for(int i = 0; i < 6; i++) // 6 rows in total
+            {
+                // Create a container to layout the image and rating (in each row) horizontally
+                FlexContainer imageRow = new FlexContainer();
+                imageRow.ParentOrigin = ParentOrigin.TopLeft;
+                imageRow.PivotPoint = PivotPoint.TopLeft;
+                imageRow.FlexDirection = FlexContainer.FlexDirectionType.Row;
+                imageRow.Flex = 1.0f;
+                container.Add(imageRow);
+
+                // Add the image view to the row
+                ImageView image = new ImageView(resources+"/images/gallery-" + i + ".jpg");
+                image.Size2D = new Size2D(120, 120);
+                image.WidthResizePolicy = ResizePolicyType.Fixed;
+                image.HeightResizePolicy = ResizePolicyType.Fixed;
+                image.AlignSelf = (int)FlexContainer.Alignment.AlignCenter;
+                image.Flex = 0.3f;
+                image.FlexMargin = new Vector4(10.0f, 0.0f, 0.0f, 0.0f);
+                imageRow.Add(image);
+
+                // Create a rating control
+                StarRating view = new StarRating();
+
+                // Add the rating control to the row
+                view.ParentOrigin = ParentOrigin.Center;
+                view.PivotPoint = PivotPoint.Center;
+                view.Size2D = new Size2D(200, 40);
+                view.Flex = 0.7f;
+                view.AlignSelf = (int)FlexContainer.Alignment.AlignCenter;
+                view.FlexMargin = new Vector4(30.0f, 0.0f, 0.0f, 0.0f);
+                imageRow.Add(view);
+
+                // Set the initial rating randomly between 1 and 5
+                view.Rating = random.Next(1, 6);
+            }
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            //System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (typeof(MyCSharpExample.StarRating).TypeHandle);
+
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/dali-test.cs b/test/NUITestSample/NUITestSample/examples/dali-test.cs
new file mode 100755 (executable)
index 0000000..08aadd6
--- /dev/null
@@ -0,0 +1,914 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace DaliTest
+{
+    class MyView : View
+    {
+        private string _myOwnName;
+        public int _myCurrentValue;
+
+        public MyView()
+        {
+            _myCurrentValue = 0;
+        }
+
+        public string MyOwnName
+        {
+            get
+            {
+                return _myOwnName;
+            }
+            set
+            {
+              _myOwnName = value;
+            }
+        }
+    }
+
+    class MyButton : PushButton
+    {
+        private string _myOwnName;
+        public int _myCurrentValue;
+
+        public MyButton()
+        {
+            _myCurrentValue = 0;
+        }
+
+        public string MyOwnName
+        {
+            get
+            {
+                return _myOwnName;
+            }
+            set
+            {
+              _myOwnName = value;
+            }
+        }
+    }
+
+    class MySpin : Spin
+    {
+        private string _myOwnName;
+        public int _myCurrentValue;
+
+        public MySpin()
+        {
+            _myCurrentValue = 0;
+        }
+
+        public string MyOwnName
+        {
+            get
+            {
+                return _myOwnName;
+            }
+            set
+            {
+              _myOwnName = value;
+            }
+        }
+    }
+
+    class Example : NUIApplication
+    {
+        //private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private const string _resPath = "./res";  //for ubuntu
+
+        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+        delegate void CallbackDelegate(IntPtr appPtr); // void, void delgate
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            DowncastTest();
+
+            NavigationPropertiesTests();
+
+            OperatorTests();
+
+            CustomViewPropertyTest();
+
+            VisibilityChangeTest();
+
+            ResourceReadyTest();
+
+            ViewFocusTest();
+
+            WindowDevelPropertyTest();
+
+            Animatable handle = new Animatable();
+            int myPropertyIndex = handle.RegisterProperty("myProperty", new PropertyValue(10.0f), PropertyAccessMode.ReadWrite);
+            float myProperty = 0.0f;
+            handle.GetProperty(myPropertyIndex).Get(out myProperty);
+            Tizen.Log.Debug("NUI",  "myProperty value: " + myProperty );
+
+            int myPropertyIndex2 = handle.RegisterProperty("myProperty2", new PropertyValue(new Size(5.0f, 5.0f, 0.0f)), PropertyAccessMode.ReadWrite);
+            Size2D myProperty2 = new Size2D(0, 0);
+            handle.GetProperty(myPropertyIndex2).Get(myProperty2);
+            Tizen.Log.Debug("NUI",  "myProperty2 value: " + myProperty2.Width + ", " + myProperty2.Height );
+
+            View view = new View();
+            view.Size2D = new Size2D(200, 200);
+            view.Name = "MyView";
+            //view.MixColor = new Color(1.0f, 0.0f, 1.0f, 0.8f);
+            Tizen.Log.Debug("NUI", "View size: " + view.Size2D.Width + ", " + view.Size2D.Height);
+            Tizen.Log.Debug("NUI", "View name: " + view.Name);
+
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+            Size windowSize = new Size(window.Size.Width, window.Size.Height, 0.0f);
+            Tizen.Log.Debug("NUI", "Window size: " + windowSize.Width + ", " + windowSize.Height);
+            window.Add(view);
+
+            TextLabel text = new TextLabel("Hello Mono World");
+            text.ParentOrigin = ParentOrigin.Center;
+            text.PivotPoint = PivotPoint.Center;
+            text.HorizontalAlignment = HorizontalAlignment.Center;
+            window.Add(text);
+
+            Tizen.Log.Debug("NUI",  "Text label text:  " + text.Text );
+
+            Tizen.Log.Debug("NUI",  "Text label point size:  " + text.PointSize );
+            text.PointSize = 32.0f;
+            Tizen.Log.Debug("NUI",  "Text label new point size:  " + text.PointSize );
+
+            RectanglePaddingClassTest();
+
+            Tizen.Log.Debug("NUI",  " *************************" );
+            Size Size = new Size(100, 50, 0);
+            Tizen.Log.Debug("NUI",  "    Created " + Size );
+            Tizen.Log.Debug("NUI",  "    Size x =  " + Size.Width + ", y = " + Size.Height );
+            Size += new Size(20, 20, 0);
+            Tizen.Log.Debug("NUI",  "    Size x =  " + Size.Width + ", y = " + Size.Height );
+            Size.Width += 10;
+            Size.Height += 10;
+            Tizen.Log.Debug("NUI",  "    Size width =  " + Size.Width + ", height = " + Size.Height );
+
+            Tizen.Log.Debug("NUI",  " *************************" );
+            Position Position = new Position(20, 100, 50);
+            Tizen.Log.Debug("NUI",  "    Created " + Position );
+            Tizen.Log.Debug("NUI",  "    Position x =  " + Position.X + ", y = " + Position.Y + ", z = " + Position.Z );
+            Position += new Position(20, 20, 20);
+            Tizen.Log.Debug("NUI",  "    Position x =  " + Position.X + ", y = " + Position.Y + ", z = " + Position.Z );
+            Position.X += 10;
+            Position.Y += 10;
+            Position.Z += 10;
+            Tizen.Log.Debug("NUI",  "    Position width =  " + Position.X + ", height = " + Position.Y + ", depth = " + Position.Z );
+
+            Tizen.Log.Debug("NUI",  " *************************" );
+            Color color = new Color(20, 100, 50, 200);
+            Tizen.Log.Debug("NUI",  "    Created " + color );
+            Tizen.Log.Debug("NUI",  "    Color R =  " + color.R + ", G = " + color.G + ", B = " + color.B + ", A = " + color.A );
+            color += new Color(20, 20, 20, 20);
+            Tizen.Log.Debug("NUI",  "    Color R =  " + color.R + ", G = " + color.G + ", B = " + color.B + ", A = " + color.A );
+            color.R += 10;
+            color.G += 10;
+            color.B += 10;
+            color.A += 10;
+            Tizen.Log.Debug("NUI",  "    Color r =  " + color.R + ", g = " + color.G + ", b = " + color.B + ", a = " + color.A );
+
+            ViewDownCastTest();
+        }
+
+        public void RectanglePaddingClassTest()
+        {
+            using (Rectangle r1 = new Rectangle(2, 5, 20, 30))
+            {
+                Tizen.Log.Debug("NUI",  "    Created " + r1 );
+                Tizen.Log.Debug("NUI",  "    IsEmpty() =  " + r1.IsEmpty() );
+                Tizen.Log.Debug("NUI",  "    Left =  " + r1.Left() );
+                Tizen.Log.Debug("NUI",  "    Right =  " + r1.Right() );
+                Tizen.Log.Debug("NUI",  "    Top  = " + r1.Top() );
+                Tizen.Log.Debug("NUI",  "    Bottom  = " + r1.Bottom() );
+                Tizen.Log.Debug("NUI",  "    Area  = " + r1.Area() );
+            }
+
+            Tizen.Log.Debug("NUI",  " *************************" );
+
+            using (Rectangle r2 = new Rectangle(2, 5, 20, 30))
+            {
+                Tizen.Log.Debug("NUI",  "    Created " + r2 );
+                r2.Set(1,1,40,40);
+                Tizen.Log.Debug("NUI",  "    IsEmpty() =  " + r2.IsEmpty() );
+                Tizen.Log.Debug("NUI",  "    Left =  " + r2.Left() );
+                Tizen.Log.Debug("NUI",  "    Right =  " + r2.Right() );
+                Tizen.Log.Debug("NUI",  "    Top  = " + r2.Top() );
+                Tizen.Log.Debug("NUI",  "    Bottom  = " + r2.Bottom() );
+                Tizen.Log.Debug("NUI",  "    Area  = " + r2.Area() );
+            }
+
+            Tizen.Log.Debug("NUI",  " *************************" );
+
+            Rectangle r3 = new Rectangle(10, 10, 20, 20);
+            Rectangle r4 = new Rectangle(10, 10, 20, 20);
+
+            if (r3 == r4)
+            {
+                Tizen.Log.Debug("NUI", "r3 == r4");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "r3 != r4");
+            }
+
+            r4 = new Rectangle(12, 10, 20, 20);
+
+            if (r3 == r4)
+            {
+                Tizen.Log.Debug("NUI", "r3 == r4");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "r3 != r4");
+            }
+
+            PaddingType p1 = new PaddingType(10.5f, 10.7f, 20.8f, 20.8f);
+            PaddingType p2 = new PaddingType(10.5f, 10.7f, 20.8f, 20.8f);
+
+            if (p1 == p2)
+            {
+                Tizen.Log.Debug("NUI", "p1 == p2");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "p1 != p2");
+            }
+
+            p2 = new PaddingType(12.0f, 10.7f, 20.2f, 20.0f);
+
+            if (p1 == p2)
+            {
+                Tizen.Log.Debug("NUI", "p1 == p2");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "p1 != p2");
+            }
+        }
+
+        public void NavigationPropertiesTests()
+        {
+            View view = new View();
+            View leftView, rightView, upView, downView, tmpView;
+
+            leftView = new View();
+            leftView.Name = "leftView";
+            rightView = new View();
+            rightView.Name = "rightView";
+            upView = new View();
+            upView.Name = "upView";
+            downView = new View();
+            downView.Name = "downView";
+
+            Window.Instance.Add(leftView);
+            Window.Instance.Add(rightView);
+            Window.Instance.Add(upView);
+            Window.Instance.Add(downView);
+
+            view.LeftFocusableView = leftView;
+            tmpView = view.LeftFocusableView;
+            if (string.Compare(tmpView.Name, "leftView") == 0)
+            {
+                Tizen.Log.Debug("NUI", "Passed: LeftFocusedView = " + tmpView.Name);
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Failed: LeftFocusedView = " + tmpView.Name);
+            }
+
+            view.RightFocusableView = rightView;
+            tmpView = view.RightFocusableView;
+            if (string.Compare(tmpView.Name, "rightView") == 0)
+            {
+                Tizen.Log.Debug("NUI", "Passed: RightFocusedView = " + tmpView.Name);
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Failed: RightFocusedView = " + tmpView.Name);
+            }
+
+            Window.Instance.Add(view);
+
+            view.UpFocusableView = upView;
+            tmpView = view.UpFocusableView;
+            if (string.Compare(tmpView.Name, "upView") == 0)
+            {
+                Tizen.Log.Debug("NUI", "Passed: UpFocusedView = " + tmpView.Name);
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Failed: UpFocusedView = " + tmpView.Name);
+            }
+
+            view.DownFocusableView = downView;
+            tmpView = view.DownFocusableView;
+            if (string.Compare(tmpView.Name, "downView") == 0)
+            {
+                Tizen.Log.Debug("NUI", "Passed: DownFocusedView = " + tmpView.Name);
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Failed: DownFocusedView = " + tmpView.Name);
+            }
+
+            Window.Instance.Remove(leftView);
+            tmpView = view.LeftFocusableView;
+            if (!tmpView)
+            {
+                Tizen.Log.Debug("NUI", "Passed: NULL LeftFocusedView");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Failed: LeftFocusedView = " + tmpView.Name);
+            }
+        }
+
+        public void OperatorTests()
+        {
+            View view = new View();
+            View differentView = new View();
+            View viewSame = view;
+            View nullView = null;
+
+            // test the true operator
+            if ( view )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator true (view) : test passed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator true (view): test failed ");
+            }
+
+            View parent = view.Parent;
+
+            if ( parent )
+            {
+                Tizen.Log.Debug("NUI", "Handle with Empty body  :failed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Valid with Empty body  :passed ");
+            }
+
+            view.Add( differentView );
+
+            // here we test two different C# objects, which on the native side have the same body/ ref-object
+            if ( view == differentView.Parent )
+            {
+                Tizen.Log.Debug("NUI", "view == differentView.GetParent() :passed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "view == differentView.GetParent() :failed ");
+            }
+
+            if ( differentView == differentView.Parent )
+            {
+                Tizen.Log.Debug("NUI", "differentView == differentView.GetParent() :failed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "differentView == differentView.GetParent() :passed ");
+            }
+
+            if ( nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator true (nullView) : test failed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator true (nullView): test passed ");
+            }
+
+            // ! operator
+            if ( !view )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator !(view) : test failed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator !(view): test passed ");
+            }
+
+            if ( !nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator !(nullView) : test passed ");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator !(nullView): test failed ");
+            }
+
+            // Note: operator false only used inside & operator
+            // test equality operator ==
+            if ( view == viewSame )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator  (view == viewSame) : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator  (view == viewSame) : test failed");
+            }
+
+            if ( view == differentView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view == differentView) : test failed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view == differentView) : test passed");
+            }
+
+            if ( view == nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view == nullView) : test failed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view == nullView) : test passed");
+            }
+
+            if ( nullView == nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView == nullView) : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView == nullView) : test failed");
+            }
+
+            // test || operator
+            if ( view || viewSame )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view || viewSame) : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view || viewSame) : test failed");
+            }
+
+            if ( view || nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view || nullView) : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view || nullView) : test failed");
+            }
+
+            if ( nullView || nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView || nullView) : test failed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView || nullView) : test passed");
+            }
+
+            // test && operator
+            if ( view && viewSame )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view && viewSame) : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view && viewSame) : test failed");
+            }
+
+            if ( view && nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view && nullView) : test failed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (view && nullView) : test passed");
+            }
+
+            if ( nullView && nullView )
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView && nullView) : test failed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "BaseHandle Operator (nullView && nullView) : test passed");
+            }
+        }
+
+
+        private TextLabel label;
+        public void VisibilityChangeTest()
+        {
+            label = new TextLabel();
+            label.Text = "Visibility";
+            label.TextColor = Color.Red;
+            label.PointSize = 30.0f;
+            label.ParentOrigin = ParentOrigin.TopLeft;
+            label.PivotPoint = PivotPoint.TopLeft;
+            label.Position = new Position(0.0f, 50.0f, 0.0f);
+            Window.Instance.Add(label);
+            label.VisibilityChanged += (sender, e) =>
+            {
+                if (e.Visibility)
+                    Tizen.Log.Debug("NUI", "VisibilityChanged, label show.");
+                else
+                    Tizen.Log.Debug("NUI", "VisibilityChanged, label hide.");
+            };
+
+            PushButton button = new PushButton();
+            button.LabelText = "Change Visibility";
+            button.ParentOrigin = ParentOrigin.TopLeft;
+            button.PivotPoint = PivotPoint.TopLeft;
+            Window.Instance.Add(button);
+            button.Clicked += (sender, e) =>
+            {
+                if (label.Visible)
+                {
+                    label.Hide();
+                }
+                else
+                {
+                    label.Show();
+                }
+
+                return true;
+            };
+        }
+
+        public void ResourceReadyTest()
+        {
+            ImageView image = new ImageView();
+            image.ResourceUrl = _resPath + "/images/dog-anim.gif";
+            image.Size2D = new Size2D(150, 150);
+            image.ParentOrigin = ParentOrigin.TopLeft;
+            image.PivotPoint = PivotPoint.TopLeft;
+            image.Position = new Position(0.0f, 150.0f, 0.0f);
+            image.ResourceReady += (sender, e) =>
+            {
+                Tizen.Log.Debug("NUI", "Resource is ready!");
+            };
+            Window.Instance.Add(image);
+        }
+
+        public void ViewFocusTest()
+        {
+            View view1 = new View();
+            view1.BackgroundColor = Color.Red;
+            view1.Size2D = new Size2D(80, 50);
+            view1.ParentOrigin = ParentOrigin.CenterLeft;
+            view1.PivotPoint = PivotPoint.CenterLeft;
+            view1.Position = new Position(10.0f, 50.0f, 0.0f);
+            view1.Focusable = true;
+            View view2 = new View();
+            view2.BackgroundColor = Color.Cyan;
+            view2.Size2D = new Size2D(80, 50);
+            view2.ParentOrigin = ParentOrigin.CenterLeft;
+            view2.PivotPoint = PivotPoint.CenterLeft;
+            view2.Position = new Position(100.0f, 50.0f, 0.0f);
+            view2.Focusable = true;
+            view1.RightFocusableView = view2;
+            view2.LeftFocusableView = view1;
+            Window.Instance.Add(view1);
+            Window.Instance.Add(view2);
+            FocusManager.Instance.SetCurrentFocusView(view1);
+
+            PushButton button = new PushButton();
+            button.LabelText = "Focus Back";
+            button.Size2D = new Size2D(150, 50);
+            button.ParentOrigin = ParentOrigin.CenterLeft;
+            button.PivotPoint = PivotPoint.CenterLeft;
+            button.Position = new Position(190.0f, 50.0f, 0.0f);
+
+            button.Focusable = true;
+            view2.RightFocusableView = button;
+            button.Pressed += (obj, e) =>
+            {
+                FocusManager.Instance.MoveFocusBackward();
+                return true;
+            };
+            Window.Instance.Add(button);
+        }
+
+        public void WindowDevelPropertyTest()
+        {
+            Window window = Window.Instance;
+            uint count = window.GetSupportedAuxiliaryHintCount();
+            if (count > 0)
+            {
+                window.BackgroundColor = Color.Blue;
+            }
+            uint id = window.AddAuxiliaryHint("wm.policy.win.effect.disable", "1");
+            window.RemoveAuxiliaryHint(id);
+            window.RemoveAuxiliaryHint(2);
+
+            id = window.AddAuxiliaryHint("wm.policy.win.effect.disable", "1");
+            window.SetAuxiliaryHintValue(id, "0");
+            string value = window.GetAuxiliaryHintValue(id);
+            if(value.Length > 0)
+            {
+                window.BackgroundColor = Color.Red;
+            }
+
+            window.SetInputRegion(new Rectangle(0, 0, 0, 0));
+            WindowType type = window.Type;
+            Tizen.Log.Debug("NUI", "window type is "+type);
+            window.Type = WindowType.Notification;
+
+            NotificationLevel level = window.GetNotificationLevel();
+            window.SetNotificationLevel(NotificationLevel.High);
+            level = window.GetNotificationLevel();
+            Tizen.Log.Debug("NUI", "window notification level is " + level);
+
+            window.SetOpaqueState(true);
+            Tizen.Log.Debug("NUI", "window is opaque? " + window.IsOpaqueState());
+
+            window.SetScreenOffMode(ScreenOffMode.Never);
+            ScreenOffMode screenMode = window.GetScreenOffMode();
+            Tizen.Log.Debug("NUI", "window screen mode is " + screenMode);
+
+            bool ret = window.SetBrightness(50);
+            int brightness = window.GetBrightness();
+            Tizen.Log.Debug("NUI", "window brightness is " + brightness, ", return "+ret);
+        }
+
+        public void CustomViewPropertyTest()
+        {
+            // Create a Spin control
+            Spin spin = new Spin();
+
+            // Background property
+            PropertyMap background = new PropertyMap();
+            background.Add( Visual.Property.Type, new PropertyValue((int)Visual.Type.Color) )
+                      .Add( ColorVisualProperty.MixColor, new PropertyValue(Color.Red) );
+            spin.Background = background;
+
+            background = spin.Background;
+            Color backgroundColor = new Color();
+            background.Find(ColorVisualProperty.MixColor, "mixColor")?.Get(backgroundColor);
+            if( backgroundColor == Color.Red )
+            {
+                Tizen.Log.Debug("NUI", "Custom View Background property : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Custom View Background property : test failed");
+            }
+
+            // BackgroundColor property
+            spin.BackgroundColor = Color.Yellow;
+            if(spin.BackgroundColor == Color.Yellow)
+            {
+                Tizen.Log.Debug("NUI", "Custom View BackgroundColor property : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Custom View BackgroundColor property : test failed");
+            }
+
+            // BackgroundImage property
+            spin.BackgroundImage = "background-image.jpg";
+            if(spin.BackgroundImage == "background-image.jpg")
+            {
+                Tizen.Log.Debug("NUI", "Custom View BackgroundImage property : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Custom View BackgroundImage property : test failed");
+            }
+
+            // StyleName property
+            spin.StyleName = "MyCustomStyle";
+            if(spin.StyleName == "MyCustomStyle")
+            {
+                Tizen.Log.Debug("NUI", "Custom View StyleName property : test passed");
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "Custom View StyleName property : test failed");
+            }
+        }
+
+        public void ViewDownCastTest()
+        {
+          View container = new View();
+          container.Position = new Position(-800.0f, -800.0f, 0.0f);
+          Window.Instance.Add(container);
+          Tizen.Log.Debug("NUI", "winow layer count is "+Window.Instance.LayerCount);
+          Tizen.Log.Debug("NUI", "winow default layer child at 0 is "+Window.Instance.GetDefaultLayer().GetChildAt(0));
+          // Test downcast for native control
+          TextLabel myLabel = new TextLabel();
+          myLabel.Name = "MyLabelName";
+          myLabel.Text = "MyText";
+
+          Tizen.Log.Debug("NUI", "myLabel.Name = " + myLabel.Name + ", Text = " + myLabel.Text);
+
+          container.Add(myLabel);
+
+          View myLabelView  = container.FindChildByName("MyLabelName");
+          if(myLabelView)
+          {
+            TextLabel newLabel = myLabelView as TextLabel;
+            if(newLabel)
+            {
+              Tizen.Log.Debug("NUI", "Downcast to TextLabel successful: newLabel Name = " + newLabel.Name + ", Text = " + newLabel.Text);
+            }
+            else
+            {
+              Tizen.Log.Debug("NUI", "Downcast to TextLabel failed!");
+            }
+          }
+
+          // Test downcast for class directly inherited from View
+          MyView myView = new MyView();
+          myView.Name = "MyViewName";
+          myView.MyOwnName = "MyOwnViewName";
+          myView._myCurrentValue = 5;
+
+          Tizen.Log.Debug("NUI", "myView.Name = " + myView.Name + ", MyOwnName = " + myView.MyOwnName + ", myCurrentValue = " + myView._myCurrentValue);
+
+          container.Add(myView);
+
+          View myViewView  = container.FindChildByName("MyViewName");
+          if(myViewView)
+          {
+            MyView newView = myViewView as MyView;
+            if(newView)
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MyView successful: newView Name = " + newView.Name + ", MyOwnName = " + newView.MyOwnName + ", myCurrentValue = " + newView._myCurrentValue);
+            }
+            else
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MyView failed!");
+            }
+          }
+
+          // Test downcast for class directly inherited from native control
+          MyButton myButton = new MyButton();
+          myButton.Name = "MyButtonName";
+          myButton.MyOwnName = "MyOwnViewName";
+          myButton.LabelText = "MyLabelText";
+          myButton._myCurrentValue = 5;
+
+          Tizen.Log.Debug("NUI", "myButton.Name = " + myButton.Name + ", MyOwnName = " + myButton.MyOwnName + ", LabelText = " + myButton.LabelText + ", myCurrentValue = " + myButton._myCurrentValue);
+
+          container.Add(myButton);
+
+          View myButtonView  = container.FindChildByName("MyButtonName");
+          if(myButtonView)
+          {
+            MyButton newButton = myButtonView as MyButton;
+            if(newButton)
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MyButton successful: newButton Name = " + newButton.Name + ", MyOwnName = " + newButton.MyOwnName + ", LabelText = " + myButton.LabelText + ", myCurrentValue = " + newButton._myCurrentValue);
+            }
+            else
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MyButton failed!");
+            }
+          }
+
+          // Test downcast for a CustomView
+          Spin spin = new Spin();
+          spin.Name = "SpinName";
+          spin.MaxValue = 8888;
+
+          Tizen.Log.Debug("NUI", "spin.Name = " + spin.Name + ", MaxValue = " + spin.MaxValue);
+
+          container.Add(spin);
+
+          View spinView  = container.FindChildByName("SpinName");
+          if(spinView)
+          {
+            Spin newSpin = spinView as Spin;
+            if(newSpin)
+            {
+              Tizen.Log.Debug("NUI", "Downcast to Spin successful: newSpin Name = " + newSpin.Name + ", MaxValue = " + newSpin.MaxValue);
+            }
+            else
+            {
+              Tizen.Log.Debug("NUI", "Downcast to Spin failed!");
+            }
+          }
+
+          // Test downcast for class inherited from a CustomView
+          MySpin mySpin = new MySpin();
+          mySpin.Name = "MySpinName";
+          mySpin.MyOwnName = "MyOwnSpinName";
+          mySpin.MaxValue = 8888;
+          mySpin._myCurrentValue = 5;
+
+          Tizen.Log.Debug("NUI", "mySpin.Name = " + mySpin.Name + ", MyOwnName = " + mySpin.MyOwnName + ", MaxValue = " + mySpin.MaxValue + ", currentValue = " + mySpin._myCurrentValue);
+
+          container.Add(mySpin);
+
+          View mySpinView  = container.FindChildByName("MySpinName");
+          if(mySpinView)
+          {
+            MySpin newSpin = mySpinView as MySpin;
+            if(newSpin)
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MySpin successful: newSpin Name = " + newSpin.Name + ", MyOwnName = " + newSpin.MyOwnName + ", MaxValue = " + newSpin.MaxValue + ", currentValue = " + newSpin._myCurrentValue);
+            }
+            else
+            {
+              Tizen.Log.Debug("NUI", "Downcast to MySpin failed!");
+            }
+          }
+        }
+
+
+
+        public void DowncastTest()
+        {
+            //Create a View as a child of parent View, get it use parent.GetChildAt(i), then DownCast to View handle, but call BackgroundColor property will crash.
+            View parent = new View();
+            View[] childs = new View[5];
+
+            for (int i = 0; i < 5; i++)
+            {
+                childs[i] = new View();
+                childs[i].Name = "child_view_" + i;
+                childs[i].BackgroundColor = Color.Red;
+                parent.Add(childs[i]);
+            }
+
+            for (uint i = 0; i < parent.ChildCount; i++)
+            {
+                View childView = parent.GetChildAt(i);
+                if (childView)
+                {
+                    Tizen.Log.Debug("NUI", "Type[" + childView.GetTypeName() + "] BGColor[" + childView.BackgroundColor.R + "]" + " Name[" + childView.Name + "]");
+                }
+            }
+
+            PushButton button = new PushButton();
+            button.LabelText = "ButtonTest!";
+            button.BackgroundColor = Color.White;
+            View parentView = new View();
+            parentView.Add(button);
+            PushButton view = parentView.GetChildAt(0) as PushButton;
+            if (view)
+            {
+                Tizen.Log.Debug("NUI", "NUI view GetTypeName= " + view.GetTypeName());
+                Tizen.Log.Debug("NUI", "NUI view LabelText= " + view.LabelText);
+                Tizen.Log.Debug("NUI", "NUI view color= " +  view.BackgroundColor.R);
+            }
+        }
+
+
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Tizen.Log.Debug("NUI", "Hello Mono World");
+
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/date-picker-using-json/ViewRegistryHelper.cs b/test/NUITestSample/NUITestSample/examples/date-picker-using-json/ViewRegistryHelper.cs
new file mode 100755 (executable)
index 0000000..95a86d8
--- /dev/null
@@ -0,0 +1,16 @@
+using System;
+using Tizen.NUI;
+
+
+namespace DatePickerUsingJson
+{
+  public class ViewRegistryHelper
+  {
+    static public void Initialize()
+    {
+       // Register all views with the type registry
+       System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (typeof(Spin).TypeHandle);
+    }
+  }
+}
+
diff --git a/test/NUITestSample/NUITestSample/examples/date-picker-using-json/date-picker-using-json.cs b/test/NUITestSample/NUITestSample/examples/date-picker-using-json/date-picker-using-json.cs
new file mode 100755 (executable)
index 0000000..56e7ab9
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace DatePickerUsingJson
+{
+    // A spin control (for continously changing values when users can easily predict a set of values)
+
+    class Example : NUIApplication
+    {
+        private Spin _spinYear;  // spin control for year
+        private Spin _spinMonth; // spin control for month
+        private Spin _spinDay;   // spin control for day
+        //private Builder _builder; // DALi Builder
+
+        //private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private const string _resPath = "./res";  //for ubuntu
+
+        public Example() : base()
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            //This is required for the Application which uses JSON theme and style of Dali builder
+            ViewRegistryHelper.Initialize();
+            /*
+            // load date JSON template...
+            _builder = new Builder ();
+
+            // Optional constant to see logging information coming out
+            // of DALi JSON parser (builder)
+            PropertyMap constants = new  PropertyMap();
+            constants.Insert( "CONFIG_SCRIPT_LOG_LEVEL",  new PropertyValue( "Verbose") );
+            _builder.AddConstants( constants );
+
+            _builder.LoadFromFile(_resPath + "/json/date-picker-template.json" );
+
+            // create the date-picker from the template in the json file
+            View actorTree =  _builder.Create( "date-picker");
+
+            window.Add( actorTree );
+
+            View year  = actorTree.FindChildByName("Year");
+            View month  =  actorTree.FindChildByName("Month" );
+            View day  = actorTree.FindChildByName("Day");
+
+            // need to get the actual C# Spin object associated with the actor,
+            _spinYear = year as Spin;
+            _spinMonth = month as Spin;
+            _spinDay = day as Spin;
+
+            _spinYear.Value = 2099;
+            _spinMonth.Value = 5;
+            _spinDay.Value = 23;
+
+            _spinYear.Focusable = (true);
+            _spinMonth.Focusable = (true);
+            _spinDay.Focusable = (true);
+
+            FocusManager keyboardFocusManager = FocusManager.Instance;
+            keyboardFocusManager.PreFocusChange += OnKeyboardPreFocusChange;
+            //keyboardFocusManager.FocusedViewActivated += OnFocusedViewActivated;
+
+            StyleManager.Get().ApplyTheme(_resPath + "/json/date-picker-theme.json");
+            */
+        }
+
+        private View OnKeyboardPreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            View nextFocusView = e.ProposedView;
+
+            // When nothing has been focused initially, focus the text field in the first spin
+            if (!e.CurrentView && !e.ProposedView)
+            {
+                nextFocusView = _spinYear.SpinText;
+            }
+            else if(e.Direction == View.FocusDirection.Left)
+            {
+                // Move the focus to the spin in the left of the current focused spin
+                if(e.CurrentView == _spinMonth.SpinText)
+                {
+                    nextFocusView = _spinYear.SpinText;
+                }
+                else if(e.CurrentView == _spinDay.SpinText)
+                {
+                    nextFocusView = _spinMonth.SpinText;
+                }
+            }
+            else if(e.Direction == View.FocusDirection.Right)
+            {
+                // Move the focus to the spin in the right of the current focused spin
+                if(e.CurrentView == _spinYear.SpinText)
+                {
+                    nextFocusView = _spinMonth.SpinText;
+                }
+                else if(e.CurrentView == _spinMonth.SpinText)
+                {
+                    nextFocusView = _spinDay.SpinText;
+                }
+            }
+
+            return nextFocusView;
+        }
+        /*
+        private void OnFocusedViewActivated(object source, FocusManager.FocusedViewActivatedEventArgs e)
+        {
+            // Make the text field in the current focused spin to take the key input
+            KeyInputFocusManager manager = KeyInputFocusManager.Get();
+
+            if (e.View == _spinYear.SpinText)
+            {
+                if (manager.GetCurrentFocusControl() != _spinYear.SpinText)
+                {
+                    manager.SetFocus(_spinYear.SpinText);
+                }
+            }
+            else if (e.View == _spinMonth.SpinText)
+            {
+                if (manager.GetCurrentFocusControl() != _spinMonth.SpinText)
+                {
+                    manager.SetFocus(_spinMonth.SpinText);
+                }
+            }
+            else if (e.View == _spinDay.SpinText)
+            {
+                if (manager.GetCurrentFocusControl() != _spinDay.SpinText)
+                {
+                    manager.SetFocus(_spinDay.SpinText);
+                }
+            }
+        }
+        */
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/date-picker.cs b/test/NUITestSample/NUITestSample/examples/date-picker.cs
new file mode 100755 (executable)
index 0000000..1163ee4
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+
+namespace DatePickerTest
+{
+    // A spin control (for continously changing values when users can easily predict a set of values)
+
+    class Example : NUIApplication
+    {
+        private FlexContainer _container;   // Flex container to hold spin controls
+        private Spin _spinYear;  // spin control for year
+        private Spin _spinMonth; // spin control for month
+        private Spin _spinDay;   // spin control for day
+
+        public Example() : base()
+        {
+
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            // Create a container for the spins
+            _container = new FlexContainer();
+
+            _container.FlexDirection = FlexContainer.FlexDirectionType.Row;
+            _container.Size2D = new Size2D(480, 150);
+
+            window.Add(_container);
+
+            // Create a Spin control for year
+            _spinYear = new Spin();
+            _spinYear.Flex = 0.3f;
+            _spinYear.FlexMargin = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
+            _container.Add(_spinYear);
+
+            _spinYear.MinValue = 1900;
+            _spinYear.MaxValue = 2100;
+            _spinYear.Value = 2016;
+            _spinYear.Step = 1;
+            _spinYear.MaxTextLength = 4;
+            _spinYear.TextPointSize = 15;
+            _spinYear.TextColor = Color.Red;
+            _spinYear.Focusable = (true);
+            _spinYear.Name = "_spinYear";
+
+            // Create a Spin control for month
+            _spinMonth = new Spin();
+            _spinMonth.Flex = 0.3f;
+            _spinMonth.FlexMargin = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
+            _container.Add(_spinMonth);
+
+            _spinMonth.MinValue = 1;
+            _spinMonth.MaxValue = 12;
+            _spinMonth.Value = 10;
+            _spinMonth.Step = 1;
+            _spinMonth.MaxTextLength = 2;
+            _spinMonth.TextPointSize = 15;
+            _spinMonth.TextColor = Color.Green;
+            _spinMonth.Focusable = (true);
+            _spinMonth.Name = "_spinMonth";
+
+            // Create a Spin control for day
+            _spinDay = new Spin();
+            _spinDay.Flex = 0.3f;
+            _spinDay.FlexMargin = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
+            _container.Add(_spinDay);
+
+            _spinDay.MinValue = 1;
+            _spinDay.MaxValue = 31;
+            _spinDay.Value = 26;
+            _spinDay.Step = 1;
+            _spinDay.MaxTextLength = 2;
+            _spinDay.TextPointSize = 15;
+            _spinDay.TextColor = Color.Blue;
+            _spinDay.Focusable = (true);
+            _spinDay.Name = "_spinDay";
+
+            FocusManager keyboardFocusManager = FocusManager.Instance;
+            keyboardFocusManager.PreFocusChange += OnKeyboardPreFocusChange;
+            keyboardFocusManager.FocusedViewActivated += OnFocusedViewActivated;
+        }
+
+        private View OnKeyboardPreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            View nextFocusView = e.ProposedView;
+
+            // When nothing has been focused initially, focus the text field in the first spin
+            if (!e.CurrentView && !e.ProposedView)
+            {
+                nextFocusView = _spinYear.SpinText;
+            }
+            else if(e.Direction == View.FocusDirection.Left)
+            {
+                // Move the focus to the spin in the left of the current focused spin
+                if(e.CurrentView == _spinMonth.SpinText)
+                {
+                    nextFocusView = _spinYear.SpinText;
+                }
+                else if(e.CurrentView == _spinDay.SpinText)
+                {
+                    nextFocusView = _spinMonth.SpinText;
+                }
+            }
+            else if(e.Direction == View.FocusDirection.Right)
+            {
+                // Move the focus to the spin in the right of the current focused spin
+                if(e.CurrentView == _spinYear.SpinText)
+                {
+                    nextFocusView = _spinMonth.SpinText;
+                }
+                else if(e.CurrentView == _spinMonth.SpinText)
+                {
+                    nextFocusView = _spinDay.SpinText;
+                }
+            }
+
+            return nextFocusView;
+        }
+
+        private void OnFocusedViewActivated(object source, FocusManager.FocusedViewActivatedEventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/dispose-test.cs b/test/NUITestSample/NUITestSample/examples/dispose-test.cs
new file mode 100755 (executable)
index 0000000..fbce645
--- /dev/null
@@ -0,0 +1,485 @@
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+namespace DisposeTest
+{
+    class Example : NUIApplication
+    {
+        private static string resourcePath = Tizen.Applications.Application.Current.DirectoryInfo.Resource;
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            ImageDisposeTest();
+            AddButtons();
+            TimerDisposeTest();
+            GcTest();
+        }
+        private ImageView image;
+        private Timer timer;
+        private bool flag;
+        private Animation ani;
+        private void ImageDisposeTest()
+        {
+            Layer layer = new Layer();
+            layer.RaiseToTop();
+            Window.Instance.AddLayer(layer);
+
+            image = new ImageView();
+            image.ResourceUrl = resourcePath + "/images/application-icon-0.png";
+            image.Size2D = new Size2D(333, 333);
+            image.ParentOrigin = ParentOrigin.Center;
+            image.PivotPoint = PivotPoint.Center;
+            image.PositionUsesPivotPoint = true;
+            image.Position = new Position(0, 0, 0);
+            layer.Add(image);
+
+            timer = new Timer(1000);
+            timer.Tick += Timer_Tick;
+            timer.Start();
+
+            ani = new Animation();
+            ani.AnimateTo(image, "Scale", new Size(2.0f, 2.0f, 2.0f), 0, 3000);
+            ani.AnimateTo(image, "Scale", new Size(1.0f, 1.0f, 1.0f), 3000, 6000);
+            ani.Finished += Ani_Finished;
+            ani.Play();
+        }
+
+        private void Ani_Finished(object sender, EventArgs e)
+        {
+            ////NUILog.Debug("scale animation finished! start again in Finshied callback!");
+            ani.Play();
+        }
+
+        private bool Timer_Tick(object source, Timer.TickEventArgs e)
+        {
+            if (flag)
+            {
+                image.ResourceUrl = resourcePath + "/images/gallery-2.jpg";
+                PropertyMap map = new PropertyMap();
+                map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.SVG));
+                string url = $"{resourcePath}/images/gallery-2.jpg";
+                //string url = $"{resourcePath}/3.svg";
+                map.Add(ImageVisualProperty.URL, new PropertyValue(url));
+                map.Add((int)Visual.Property.MixColor, new PropertyValue(new Color(0.7f, 0.0f, 0.0f, 1.0f)));
+                //image.ImageMap = map;
+
+                flag = false;
+                ////NUILog.Debug("flag = false!");
+            }
+            else
+            {
+                image.ResourceUrl = resourcePath + "/images/test-image.png";
+                flag = true;
+                ////NUILog.Debug("flag = true!");
+            }
+            return true;
+        }
+
+        private Window window;
+        private Layer layer;
+        PushButton pushButton1, pushButton2;
+        public void AddButtons()
+        {
+            //NUILog.Debug("Customized Application Initialize event handler");
+            window = Window.Instance;
+            window.BackgroundColor = Color.Magenta;
+            window.TouchEvent += OnWindowTouched;
+            window.WheelEvent += OnWindowWheelMoved;
+            window.KeyEvent += OnWindowKeyPressed;
+            //window.EventProcessingFinished += OnWindowEventProcessingFinished;
+
+            layer = window.GetDefaultLayer();
+
+            pushButton1 = new PushButton();
+            pushButton1.ParentOrigin = ParentOrigin.BottomLeft;
+            pushButton1.PivotPoint = PivotPoint.BottomLeft;
+            pushButton1.PositionUsesPivotPoint = true;
+            pushButton1.LabelText = "start animation";
+            pushButton1.Position = new Vector3(0.0f, window.Size.Height * 0.1f, 0.0f);
+            pushButton1.Clicked += OnPushButtonClicked1;
+            window.Add(pushButton1);
+
+            pushButton2 = new PushButton();
+            pushButton2.ParentOrigin = ParentOrigin.BottomLeft;
+            pushButton2.PivotPoint = PivotPoint.BottomLeft;
+            pushButton2.PositionUsesPivotPoint = true;
+            pushButton2.LabelText = "reload image with same URL";
+            pushButton2.Position = new Vector3(0.0f, window.Size.Height * 0.2f, 0.0f);
+            pushButton2.Clicked += OnPushButtonClicked2;
+            window.Add(pushButton2);
+        }
+
+        public bool OnPushButtonClicked1(object sender, EventArgs e)
+        {
+            //NUILog.Debug("### push button 1 clicked!");
+            return true;
+        }
+
+        public bool OnPushButtonClicked2(object sender, EventArgs e)
+        {
+            //NUILog.Debug("### push button 2 clicked!");
+            return true;
+        }
+
+        public void OnWindowEventProcessingFinished(object sender, EventArgs e)
+        {
+            //NUILog.Debug("OnWindowEventProcessingFinished()!");
+            if (e != null)
+            {
+                //NUILog.Debug("e != null !");
+            }
+        }
+
+        public void OnWindowKeyPressed(object sender, Window.KeyEventArgs e)
+        {
+            //NUILog.Debug("OnWindowKeyEventOccured()!");
+            //NUILog.Debug("keyPressedName=" + e.Key.KeyPressedName);
+            //NUILog.Debug("state=" + e.Key.State);
+        }
+
+        public void OnWindowWheelMoved(object sender, Window.WheelEventArgs e)
+        {
+            //NUILog.Debug("OnWindowWheelEventOccured()!");
+            //NUILog.Debug("direction=" + e.Wheel.Direction);
+            //NUILog.Debug("type=" + e.Wheel.Type);
+        }
+
+        // Callback for window touched signal handling
+        public void OnWindowTouched(object sender, Window.TouchEventArgs e)
+        {
+            //NUILog.Debug("OnWindowTouched()! e.TouchData.GetState(0)=" + e.Touch.GetState(0));
+
+            distest(null, null);
+            //NUILog.Debug("### 3 timers are disposed!");
+        }
+
+
+        List<Timer> timerList;
+        void TimerDisposeTest()
+        {
+            timerList = new List<Timer>();
+            //NUILog.Debug("TimerDisposeTest()!");
+
+            for (int i = 0; i < 3; i++)
+            {
+                Timer timer = new Timer(100);
+                if (0 == i) timer.Tick += Timer_Tick0;
+                if (1 == i) timer.Tick += Timer_Tick1;
+                if (2 == i) timer.Tick += Timer_Tick2;
+                timerList.Add(timer);
+            }
+            ////NUILog.Debug($"TimerDisposeTest() dp1 timerlist cnt={timerList.Count}");
+
+            foreach (Timer timer in timerList)
+            {
+                timer.Start();
+            }
+
+            distest = new DisposeTest(Timer_Tick0);
+        }
+
+        private delegate bool DisposeTest(object source, Timer.TickEventArgs e);
+        DisposeTest distest;
+
+        private bool Timer_Tick0(object source, Timer.TickEventArgs e)
+        {
+            foreach (Timer timer in timerList)
+            {
+                timer?.Dispose();
+            }
+            timerList.Clear();
+            ////NUILog.Debug("### Timer_Tick0=> 3 timers are disposed!");
+
+            for (int i = 0; i < 100; i++)
+            {
+                Timer timer = new Timer(100);
+                if (0 == i%3) timer.Tick += Timer_Tick0;
+                if (1 == i%3) timer.Tick += Timer_Tick1;
+                if (2 == i%3) timer.Tick += Timer_Tick2;
+                timerList.Add(timer);
+            }
+
+            ////NUILog.Debug($"Timer_Tick0=> timerlist cnt={timerList.Count}");
+            foreach (Timer timer in timerList)
+            {
+                timer.Start();
+            }
+            return true;
+        }
+
+        private bool Timer_Tick1(object source, Timer.TickEventArgs e)
+        {
+            foreach (Timer timer in timerList)
+            {
+                timer?.Dispose();
+            }
+            timerList.Clear();
+            ////NUILog.Debug("### Timer_Tick1=> 3 timers are disposed!");
+
+            for (int i = 0; i < 100; i++)
+            {
+                Timer timer = new Timer(100);
+                if (0 == i % 3) timer.Tick += Timer_Tick0;
+                if (1 == i % 3) timer.Tick += Timer_Tick1;
+                if (2 == i % 3) timer.Tick += Timer_Tick2;
+                timerList.Add(timer);
+            }
+
+            ////NUILog.Debug($"Timer_Tick1=> timerlist cnt={timerList.Count}");
+            foreach (Timer timer in timerList)
+            {
+                timer.Start();
+            }
+            return true;
+        }
+
+        private bool Timer_Tick2(object source, Timer.TickEventArgs e)
+        {
+            foreach (Timer timer in timerList)
+            {
+                timer?.Dispose();
+            }
+            timerList.Clear();
+            //NUILog.Debug("### Timer_Tick2=> 3 timers are disposed!");
+
+            for (int i = 0; i < 100; i++)
+            {
+                Timer timer = new Timer(100);
+                if (0 == i % 3) timer.Tick += Timer_Tick0;
+                if (1 == i % 3) timer.Tick += Timer_Tick1;
+                if (2 == i % 3) timer.Tick += Timer_Tick2;
+                timerList.Add(timer);
+            }
+
+            //NUILog.Debug($"Timer_Tick2=> timerlist cnt={timerList.Count}");
+            foreach (Timer timer in timerList)
+            {
+                timer.Start();
+            }
+            return true;
+        }
+
+        private Timer myTimer;
+        private List<View> myViewList;
+        private const int numberOfObjects = 999;
+        private Random myRandom;
+
+        void GcTest()
+        {
+            myViewList = new List<View>();
+            myRandom = new Random();
+            for (int i = 0; i < numberOfObjects; i++)
+            {
+                View v = new View();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            myTimer = new Timer(1000);
+
+            myTimer.Tick += MyTimer_Tick;
+
+            myTimer.Start();
+        }
+
+        private bool MyTimer_Tick(object source, System.EventArgs e)
+        {
+            //Remove current Scene,
+            foreach (View v in myViewList)
+            {
+                Window.Instance.GetDefaultLayer().Remove(v);
+            }
+
+            myViewList.Clear();
+
+            ////Add View
+
+            GC.Collect();
+            GC.WaitForPendingFinalizers();
+
+            for (int i = 0; i < 50; i++)
+            {
+                TextLabel v = new TextLabel();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "label " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 50; i < 100; i++)
+            {
+                PushButton v = new PushButton();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.LabelText = "button " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 100; i < 150; i++)
+            {
+                ImageView v = new ImageView();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.ResourceUrl = resourcePath + "/images/gallery-3.jpg";
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 150; i < 200; i++)
+            {
+                //TextEditor v = new TextEditor();
+                TextLabel v = new TextLabel("2");
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "editor" + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 200; i < 250; i++)
+            {
+                //TextField v = new TextField();
+                TextLabel v = new TextLabel("1");
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "field " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 250; i < 300; i++)
+            {
+                CheckBoxButton v = new CheckBoxButton();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.LabelText = "check " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 300; i < 350; i++)
+            {
+                ScrollBar v = new ScrollBar();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 350; i < 400; i++)
+            {
+                Slider v = new Slider();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 400; i < 450; i++)
+            {
+                TableView v = new TableView(1, 1);
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 450; i < numberOfObjects; i++)
+            {
+                View v = new View();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            return true;
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            ////NUILog.Debug("Main() called!");
+
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/feedkey-test.cs b/test/NUITestSample/NUITestSample/examples/feedkey-test.cs
new file mode 100755 (executable)
index 0000000..0138376
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace FeedKeyTest
+{
+    class Example : NUIApplication
+    {
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            View view1 = new View()
+            {
+                Position2D = new Position2D(10, 10),
+                BackgroundColor = Color.Magenta,
+                Size2D = new Size2D(200, 200),
+                Focusable = true
+            };
+
+            View view2 = new View()
+            {
+                Position2D = new Position2D(10, 240),
+                BackgroundColor = Color.Red,
+                Size2D = new Size2D(200, 200),
+                Focusable = true
+            };
+
+            window.Add(view1);
+            window.Add(view2);
+
+            FocusManager.Instance.SetCurrentFocusView(view1);
+            view2.UpFocusableView = view1;
+            view1.DownFocusableView = view2;
+
+            view1.KeyEvent += (obj, e) =>
+            {
+                if (e.Key.State != Key.StateType.Down)
+                {
+                    return false;
+                }
+                Tizen.Log.Debug("NUI", "View1 KeyPressedName: " + e.Key.KeyPressedName);
+                Window.FeedKeyEvent(e.Key);
+                return false;
+            };
+
+            view2.KeyEvent += (obj, e) =>
+            {
+                if (e.Key.State != Key.StateType.Down)
+                {
+                    // Tizen.Log.Debug("NUI", "View2 key state != Down");
+                    return false;
+                }
+
+                // Tizen.Log.Debug("NUI", "View2 KeyPressedName: " + e.Key.KeyPressedName);
+                View v = obj as View;
+                if(v == view1)
+                {
+                    Tizen.Log.Debug("NUI", "View2 received view1 feed event: " + e.Key.KeyPressedName);
+                }
+                if (v == view2)
+                {
+                    Tizen.Log.Debug("NUI", "View2 received event: " + e.Key.KeyPressedName);
+                }
+                return false;
+            };
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/flex-container.cs b/test/NUITestSample/NUITestSample/examples/flex-container.cs
new file mode 100755 (executable)
index 0000000..f753255
--- /dev/null
@@ -0,0 +1,196 @@
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+
+namespace FlexContainerTest
+{
+    public class SampleMain : NUIApplication
+    {
+        public readonly static string[] samples = new string[]
+        {
+            "AnimationSample",
+            "BasicElement",
+            "TextSample",
+            "ImageViewSample",
+            "EventSample",
+            "FlexContainer",
+            "FrameAnimationSample"
+        };
+
+        TextLabel[] label;
+        FlexContainer container;
+        View focusIndicator;
+        int numOfSamples;
+        PushButton pushButton1, pushButton2;
+        private int _cnt;
+        private Animation _ani;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            Window.Instance.BackgroundColor = new Color(0.1f, 0.8f, 0.1f, 1.0f);
+
+            container = new FlexContainer();
+            container.Size2D = new Size2D(Window.Instance.Size.Width, Window.Instance.Size.Height);
+            container.PivotPoint = PivotPoint.TopLeft;
+            container.Padding = new Vector4(100, 100, 100, 100);
+
+            container.FlexWrap = FlexContainer.WrapType.Wrap;
+            container.FlexDirection = FlexContainer.FlexDirectionType.Column;
+
+            Window.Instance.Add(container);
+
+            numOfSamples = samples.GetLength(0);
+            Tizen.Log.Debug("NUI", "NUM = " + numOfSamples);
+            label = new TextLabel[numOfSamples];
+            for (int i = 0; i < numOfSamples; i++)
+            {
+                label[i] = new TextLabel();
+                label[i].Focusable = true;
+                label[i].BackgroundColor = Color.Red;
+                //label[i].Size = new Size(100, 50, 0);
+                label[i].Text = samples[i];
+                label[i].FlexMargin = new Vector4(20, 20, 20, 20);
+                label[i].PointSize = 10;
+                label[i].Name = "label" + i.ToString();
+                container.Add(label[i]);
+            }
+
+            //label[3].SetKeyInputFocus();  //removed
+            FocusManager.Instance.SetCurrentFocusView(label[3]);
+
+            FocusManager.Instance.PreFocusChange += Instance_PreFocusChange;
+            //added
+            FocusManager.Instance.FocusChanged += (sender, e) =>
+            {
+                if(e.CurrentView) Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.CurrentView.Name=" + e.CurrentView.Name);
+                else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.CurrentView is null!");
+                if (e.NextView) Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.NextView.Name=" + e.NextView.Name);
+                else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.NextView is null!");
+            };
+            //added
+            FocusManager.Instance.FocusedViewActivated += (sender, e) =>
+            {
+                if (e.View) Tizen.Log.Debug("NUI", "FocusManager FocusedViewEnterKeyPressed signal callback! e.View.Name=" + e.View.Name);
+                else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.View is null!");
+            };
+
+            //added
+            Window.Instance.TouchEvent += (sender, e) =>
+            {
+                Tizen.Log.Debug("NUI", "Window Touch signal callback! To avoid crash, when losing key focus, set here again unless the NextView is null");
+                FocusManager.Instance.SetCurrentFocusView(label[3]);
+            };
+
+            //added
+            pushButton1 = new PushButton();
+            pushButton1.MinimumSize = new Size2D(400, 200);
+            pushButton1.LabelText = "+PreFocusChange";
+            pushButton1.ParentOrigin = ParentOrigin.TopLeft;
+            pushButton1.PivotPoint = PivotPoint.TopLeft;
+            pushButton1.Position2D = new Position2D(200, 800);
+            pushButton1.Clicked += (sender, e) =>
+            {
+                Tizen.Log.Debug("NUI", "pushbutton1 clicked! add handler!");
+                _cnt++;
+                FocusManager.Instance.PreFocusChange += Instance_PreFocusChange;
+                _ani.Finished += _ani_Finished;
+                pushButton1.LabelText = "Add Handler" + _cnt;
+                pushButton2.LabelText = "Remove Handler" + _cnt;
+                return true;
+            };
+            Window.Instance.Add(pushButton1);
+
+            pushButton2 = new PushButton();
+            pushButton2.MinimumSize = new Size2D(400, 200);
+            pushButton2.LabelText = "-PreFocusChange";
+            pushButton2.ParentOrigin = ParentOrigin.TopLeft;
+            pushButton2.PivotPoint = PivotPoint.TopLeft;
+            pushButton2.Position2D = new Position2D(800, 800);
+            pushButton2.Clicked += (sender, e) =>
+            {
+                Tizen.Log.Debug("NUI", "pushbutton2 clicked! remove handler!");
+                _cnt--;
+                FocusManager.Instance.PreFocusChange -= Instance_PreFocusChange;
+                _ani.Finished -= _ani_Finished;
+                pushButton1.LabelText = "Add Handler" + _cnt;
+                pushButton2.LabelText = "Remove Handler" + _cnt;
+                return true;
+            };
+            Window.Instance.Add(pushButton2);
+
+            //added
+            _ani = new Animation(2000);
+            _ani.AnimateTo(pushButton1, "Opacity", 0.0f);
+            _ani.AnimateTo(pushButton2, "Opacity", 0.0f);
+            _ani.EndAction = Animation.EndActions.Discard;
+            _ani.Finished += _ani_Finished;
+
+        }
+
+        private void _ani_Finished(object sender, EventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "_ani finished! _cnt=" + _cnt);
+        }
+
+        private View Instance_PreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            View nextView;
+            Tizen.Log.Debug("NUI", "Instance_PreFocusChange = " + e.Direction.ToString());
+
+            //added
+            if (e.CurrentView == null) e.CurrentView = label[0];
+            if (e.ProposedView == null) e.ProposedView = label[0];
+
+            int index = Array.FindIndex(label, x => x == e.CurrentView);
+
+            Tizen.Log.Debug("NUI", "index = " + index);
+
+            switch (e.Direction)
+            {
+                case View.FocusDirection.Up:
+                    index = (index + numOfSamples - 2) % numOfSamples;  //changed
+                    _ani.Play();
+                    break;
+                case View.FocusDirection.Down:
+                    index = (index + 2) % numOfSamples; //changed
+                    Tizen.Log.Debug("NUI", "pushbutton1 Visible=" + pushButton1.Visible + "  pushbutton2 Visible=" + pushButton2.Visible); //added
+                    break;
+                case View.FocusDirection.Left:
+                    //added
+                    pushButton1.Show();
+                    pushButton2.Show();
+                    break;
+                case View.FocusDirection.Right:
+                    //added
+                    pushButton1.Hide();
+                    pushButton2.Hide();
+                    break;
+                default:
+                    break;
+            }
+
+            Tizen.Log.Debug("NUI", "next index = " + index);
+            nextView = label[index];
+
+            if (e.CurrentView.HasFocus())
+            {
+                //currentView?.ClearKeyInputFocus();  //removed
+            }
+            //nextView?.SetKeyInputFocus();  //removed
+
+            return nextView;
+        }
+
+        static void _Main(string[] args)
+        {
+
+            SampleMain sample = new SampleMain();
+            sample.Run(args);
+        }
+    }
+}
+
diff --git a/test/NUITestSample/NUITestSample/examples/gc-test.cs b/test/NUITestSample/NUITestSample/examples/gc-test.cs
new file mode 100755 (executable)
index 0000000..04c9b29
--- /dev/null
@@ -0,0 +1,261 @@
+
+using System.Collections.Generic;
+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace TizenVDUIApplication19
+{
+    using Tizen.NUI;
+
+    internal class Program : NUIApplication
+    {
+        private Timer myTimer;
+        private List<View> myViewList;
+        private const int numberOfObjects = 500;
+        private Random myRandom;
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            Window.Instance.BackgroundColor = Color.White;
+
+            myViewList = new List<View>();
+
+            myRandom = new Random();
+
+            for (int i = 0; i < numberOfObjects; i++)
+            {
+                View v = new View();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            myTimer = new Timer(1000);
+
+            myTimer.Tick += MyTimer_Tick;
+
+            myTimer.Start();
+        }
+
+        private bool MyTimer_Tick(object source, System.EventArgs e)
+        {
+            //Remove current Scene,
+            foreach (View v in myViewList)
+            {
+                Window.Instance.GetDefaultLayer().Remove(v);
+            }
+
+            myViewList.Clear();
+
+            ////Add View
+
+            GC.Collect();
+            GC.WaitForPendingFinalizers();
+
+            for (int i = 0; i < 50; i++)
+            {
+                TextLabel v = new TextLabel();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "label " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 50; i < 100; i++)
+            {
+                PushButton v = new PushButton();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.LabelText = "button " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 100; i < 150; i++)
+            {
+                ImageView v = new ImageView();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.ResourceUrl = resources + "/images/gallery-3.jpg";
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 150; i < 200; i++)
+            {
+                TextEditor v = new TextEditor();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "editor" + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 200; i < 250; i++)
+            {
+                TextField v = new TextField();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.Text = "field " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 250; i < 300; i++)
+            {
+                CheckBoxButton v = new CheckBoxButton();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+                v.LabelText = "check " + i;
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 300; i < 350; i++)
+            {
+                ScrollBar v = new ScrollBar();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 350; i < 400; i++)
+            {
+                Slider v = new Slider();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 400; i < 450; i++)
+            {
+                TableView v = new TableView(1, 1);
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            for (int i = 450; i < numberOfObjects; i++)
+            {
+                View v = new View();
+
+                float intensity = myRandom.Next(0, 255) / 255.0f;
+                v.BackgroundColor = new Color(intensity, intensity, intensity, 1);
+                v.Position = new Position(myRandom.Next(0, 1820), myRandom.Next(0, 980), 0);
+                v.PivotPoint = PivotPoint.TopLeft;
+                v.Size2D = new Size2D(100, 100);
+
+                myViewList.Add(v);
+
+                Window.Instance.GetDefaultLayer().Add(v);
+            }
+
+            return true;
+        }
+
+        protected override void OnPause()
+        {
+            //This function is called when the window's visibility is changed from visible to invisible.
+            base.OnPause();
+        }
+
+        protected override void OnResume()
+        {
+            //This function is called when the window's visibility is changed from invisible to visible.
+            base.OnResume();
+        }
+
+        protected override void OnTerminate()
+        {
+            //This function is called when the app exit normally.
+            base.OnTerminate();
+        }
+        /*
+        protected override void OnLowMemory(LowMemoryEventArgs e)
+        {
+            //This function is called when the system is low on memory.
+            base.OnLowMemory(e);
+        }
+        protected override void OnLocaleChanged(LocaleChangedEventArgs e)
+        {
+            //This function is called when the language is changed.
+            base.OnLocaleChanged(e);
+        }
+        */
+        private static void _Main(string[] args)
+        {
+            //Create an Application
+            Program myProgram = new Program();
+            myProgram.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/hello-test.cs b/test/NUITestSample/NUITestSample/examples/hello-test.cs
new file mode 100755 (executable)
index 0000000..e67995f
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+//using Tizen.Applications;
+
+//------------------------------------------------------------------------------
+// <manual-generated />
+//
+// This file can only run on Tizen target. You should compile it with DaliApplication.cs, and
+// add tizen c# application related library as reference.
+//------------------------------------------------------------------------------
+namespace HelloTest
+{
+    class Example : NUIApplication
+    {
+        private Animation _animation;
+        private TextLabel _text;
+        private Window _window;
+
+        public Example():base()
+        {
+        }
+
+        public Example(string stylesheet):base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode):base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private void Initialize()
+        {
+            // Connect the signal callback for window touched signal
+            _window = Window.Instance;
+            _window.TouchEvent += OnWindowTouched;
+
+            // Add a _text label to the window
+            _text = new TextLabel("Hello Mono World");
+            _text.ParentOrigin = ParentOrigin.Center;
+            _text.PivotPoint = PivotPoint.Center;
+            _text.HorizontalAlignment = HorizontalAlignment.Center;
+            _text.PointSize = 32.0f;
+
+            _window.Add(_text);
+        }
+
+        // Callback for _animation finished signal handling
+        private void AnimationFinished(object sender, EventArgs e)
+        {
+            if (_animation)
+            {
+                Tizen.Log.Debug("NUI", "Duration= " + _animation.Duration);
+                Tizen.Log.Debug("NUI", "EndAction= " + _animation.EndAction);
+            }
+        }
+
+        // Callback for window touched signal handling
+        private void OnWindowTouched(object sender, Window.TouchEventArgs e)
+        {
+            // Only animate the _text label when touch down happens
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                // Create a new _animation
+                if (_animation)
+                {
+                    _animation.Reset();
+                }
+
+                _animation = new Animation(1000); // 1 second of duration
+
+                _animation.AnimateTo(_text, "Orientation", new Rotation(new Radian(new Degree(180.0f)), Vector3.XAxis), 0, 500);
+                _animation.AnimateTo(_text, "Orientation", new Rotation(new Radian(new Degree(0.0f)), Vector3.XAxis), 500, 1000);
+                _animation.EndAction = Animation.EndActions.Discard;
+
+                // Connect the signal callback for animaiton finished signal
+                _animation.Finished += AnimationFinished;
+
+                // Play the _animation
+                _animation.Play();
+            }
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Tizen.Log.Debug("NUI", "Hello mono world.");
+            //Example example = new Example();
+            //Example example = new Example("stylesheet");
+            Example example = new Example("stylesheet", WindowMode.Transparent);
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/hello-world.cs b/test/NUITestSample/NUITestSample/examples/hello-world.cs
new file mode 100755 (executable)
index 0000000..8609a96
--- /dev/null
@@ -0,0 +1,335 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Threading.Tasks;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace HelloWorldTest
+{
+    class Example : NUIApplication
+    {
+        private Animation _animation;
+        private TextLabel _text;
+        private int cnt;
+        private View _view;
+        TextField textFieldPlaceholderTest;
+        TextLabel keySubclassTest;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        TextLabel pixelLabel;
+        TextLabel pointLabel;
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+            window.TouchEvent += OnWindowTouched;
+            window.KeyEvent += OnWindowKeyEvent;
+            window.Resized += (obj, e) =>
+            {
+                Tizen.Log.Fatal("NUI", "Height: " + e.WindowSize.Height);
+                Tizen.Log.Fatal("NUI", "Width: " + e.WindowSize.Width);
+            };
+
+            pixelLabel = new TextLabel("Test Pixel Size 32.0f");
+            pixelLabel.Position2D = new Position2D(10, 10);
+            pixelLabel.PixelSize = 32.0f;
+            window.Add(pixelLabel);
+
+            pointLabel = new TextLabel("Test Point Size 32.0f");
+            pointLabel.Position2D = new Position2D(10, 70);
+            pointLabel.PointSize = 32.0f;
+            window.Add(pointLabel);
+
+            Task.Factory.StartNew(() =>
+            {
+                try
+                {
+            TextLabel ellipsis = new TextLabel("Ellipsis of TextLabel is enabled.");
+            ellipsis.Size2D = new Size2D(100, 100);
+            ellipsis.Position2D = new Position2D(10, 250);
+            ellipsis.PointSize = 20.0f;
+            ellipsis.Ellipsis = true;
+            window.Add(ellipsis);
+                }
+                catch (Exception e)
+                {
+                    Tizen.Log.Fatal("NUI", $"exception caught! e={e}");
+                }
+            }).Wait();
+
+            TextField textFieldEllipsisTest = new TextField();
+            textFieldEllipsisTest.Text = "TextField Ellipsis Test, ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+            textFieldEllipsisTest.Size2D = new Size2D(200, 100);
+            textFieldEllipsisTest.Position2D = new Position2D(10, 150);
+            textFieldEllipsisTest.PointSize = 30.0f;
+            textFieldEllipsisTest.Ellipsis = false;
+            window.Add(textFieldEllipsisTest);
+
+            TextField textFieldEllipsisTest2 = new TextField();
+            textFieldEllipsisTest2.Text = "TextField Ellipsis Test, ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+            textFieldEllipsisTest2.Size2D = new Size2D(200, 100);
+            textFieldEllipsisTest2.Position2D = new Position2D(300, 150);
+            textFieldEllipsisTest2.PointSize = 30.0f;
+            textFieldEllipsisTest2.Ellipsis = true;
+            window.Add(textFieldEllipsisTest2);
+
+
+            textFieldPlaceholderTest = new TextField();
+
+            PropertyMap propertyMap = new PropertyMap();
+            propertyMap.Add("placeholderText", new PropertyValue("TextField Placeholder Test"));
+            propertyMap.Add("placeholderTextFocused", new PropertyValue("Placeholder Text Focused"));
+            propertyMap.Add("placeholderColor", new PropertyValue(Color.Blue));
+            propertyMap.Add("placeholderPointSize", new PropertyValue(20.0f));
+
+            PropertyMap fontStyleMap = new PropertyMap();
+            fontStyleMap.Add("weight", new PropertyValue("bold"));
+            fontStyleMap.Add("width", new PropertyValue("condensed"));
+            fontStyleMap.Add("slant", new PropertyValue("italic"));
+            propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));
+
+            textFieldPlaceholderTest.Size2D = new Size2D(300, 50);
+            textFieldPlaceholderTest.Position2D = new Position2D(10, 230);
+            textFieldPlaceholderTest.BackgroundColor = Color.Magenta;
+            textFieldPlaceholderTest.Placeholder = propertyMap;
+            textFieldPlaceholderTest.Focusable = true;
+            window.Add(textFieldPlaceholderTest);
+
+            keySubclassTest = new TextLabel();
+            keySubclassTest.Text = "Key Subclass Test!";
+            keySubclassTest.Size2D = new Size2D(900, 50);
+            keySubclassTest.Position2D = new Position2D(10, 300);
+            keySubclassTest.BackgroundColor = Color.Cyan;
+            keySubclassTest.PointSize = 20;
+            keySubclassTest.Focusable = true;
+            window.Add(keySubclassTest);
+
+
+            TextLabel autoScrollStopMode = new TextLabel("AutoScrollStopMode is finish-loop. PointSize=30");
+            autoScrollStopMode.Size2D = new Size2D(400, 100);
+            autoScrollStopMode.Position2D = new Position2D(10, 500);
+            autoScrollStopMode.PointSize = 30.0f;
+            autoScrollStopMode.AutoScrollStopMode = AutoScrollStopMode.Immediate;
+            autoScrollStopMode.AutoScrollLoopDelay = 3.0f;
+            autoScrollStopMode.EnableAutoScroll = true;
+            autoScrollStopMode.AutoScrollLoopCount = 0;
+            window.Add(autoScrollStopMode);
+
+            _text = new TextLabel("Hello NUI World");
+            _text.Position2D = new Position2D(10, 500);
+            _text.HorizontalAlignment = HorizontalAlignment.Center;
+            _text.PointSize = 20.0f;
+            _text.TextColor = Color.Magenta;
+            window.Add(_text);
+
+            _view = new View();
+            _view.Size2D = new Size2D(100, 100);
+            _view.SizeWidth = 50;
+            Tizen.Log.Fatal("NUI", "[1]_view SizeWidth=" + _view.SizeWidth);
+
+            _animation = new Animation
+            {
+                Duration = 2000
+            };
+            _animation.AnimateTo(_text, "Orientation", new Rotation(new Radian(new Degree(180.0f)), PositionAxis.X), 0, 500);
+            _animation.AnimateTo(_text, "Orientation", new Rotation(new Radian(new Degree(0.0f)), PositionAxis.X), 500, 1000);
+            _animation.AnimateBy(_text, "ScaleX", 3, 1000, 1500);
+            _animation.AnimateBy(_text, "ScaleY", 4.0f, 1500, 2000);
+            _animation.EndAction = Animation.EndActions.Discard;
+            _animation.Finished += AnimationFinished;
+
+            _view.SizeWidth = 50;
+            Tizen.Log.Fatal("NUI", "[2]_view SizeWidth=" + _view.SizeWidth);
+
+            TextLabelLineWrapModeTest();
+            ViewLayoutDirectionTest();
+
+            textFieldPlaceholderTest.DownFocusableView = keySubclassTest;
+            keySubclassTest.UpFocusableView = textFieldPlaceholderTest;
+            FocusManager.Instance.SetCurrentFocusView(keySubclassTest);
+        }
+
+
+        private View view1, view11, view12, view111, view121;
+        public void ViewLayoutDirectionTest()
+        {
+            view1 = new View();
+            view1.Name = "view 1";
+            view1.LayoutDirection = ViewLayoutDirectionType.RTL;
+            Window.Instance.GetDefaultLayer().Add(view1);
+            view1.LayoutDirectionChanged += View1_LayoutDirectionChanged;
+
+            view11 = new View();
+            view11.Name = "view 11";
+            view11.InheritLayoutDirection = true;
+            view1.Add(view11);
+
+            view12 = new View();
+            view12.Name = "view 12";
+            view12.LayoutDirection = ViewLayoutDirectionType.LTR;
+            view1.Add(view12);
+
+            view111 = new View();
+            view111.Name = "view 111";
+            view111.InheritLayoutDirection = true;
+            view11.Add(view111);
+
+            view121 = new View();
+            view121.Name = "view 121";
+            view121.InheritLayoutDirection = true;
+            view12.Add(view121);
+        }
+
+        private void View1_LayoutDirectionChanged(object sender, View.LayoutDirectionChangedEventArgs e)
+        {
+            Tizen.Log.Error("NUI", "View1_LayoutDirectionChanged()! e.Type=" + e.Type);
+        }
+
+        public void AnimationFinished(object sender, EventArgs e)
+        {
+            Tizen.Log.Fatal("NUI", "AnimationFinished()! cnt=" + (cnt));
+            if (_animation)
+            {
+                Tizen.Log.Fatal("NUI", "Duration= " + _animation.Duration + "EndAction= " + _animation.EndAction);
+            }
+            _view.SizeWidth = 50;
+            Tizen.Log.Fatal("NUI", "[3]_view SizeWidth=" + _view.SizeWidth);
+        }
+
+        int win_test;
+        public void OnWindowKeyEvent(object sender, Window.KeyEventArgs e)
+        {
+            Tizen.Log.Fatal("NUI", "e.Key.KeyPressedName=" + e.Key.KeyPressedName);
+
+            if (e.Key.State == Key.StateType.Down)
+            {
+                keySubclassTest.Text = $"DeviceSubClass={e.Key.DeviceSubClass}, DeviceClass={e.Key.DeviceClass}, DeviceName={e.Key.DeviceName}, KeyCode={e.Key.KeyCode}";
+
+                if (e.Key.KeyPressedName == "Up")
+                {
+                    if (_animation)
+                    {
+                        _animation.Finished += AnimationFinished;
+                        cnt++;
+                        Tizen.Log.Fatal("NUI", "AnimationFinished added!");
+                    }
+                    //pointLabel.TextColorAnimatable = Color.Blue;
+                    //pixelLabel.TextColorAnimatable = Color.Blue;
+
+                    Tizen.Log.Fatal("NUI", $"LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
+                }
+                else if (e.Key.KeyPressedName == "Down")
+                {
+                    if (_animation)
+                    {
+                        _animation.Finished -= AnimationFinished;
+                        cnt--;
+                        Tizen.Log.Fatal("NUI", "AnimationFinished removed!");
+                    }
+                    //pointLabel.TextColorAnimatable = Color.Red;
+                    //pixelLabel.TextColorAnimatable = Color.Red;
+
+                    Window.Instance.SetClass($"Window.SetClass() Test #{win_test++}", "");
+                    Tizen.Log.Fatal("NUI", $"Check with enlightenment_info -topwins ! Window.SetClass() Test #{win_test}");
+                }
+                else if (e.Key.KeyPressedName == "Return")
+                {
+                    _animation.Play();
+                    Tizen.Log.Fatal("NUI", "_animation play here!");
+                }
+            }
+        }
+
+        public void OnWindowTouched(object sender, Window.TouchEventArgs e)
+        {
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                _animation.Play();
+            }
+        }
+
+        private TextLabel myTextLabel;
+        private TextLabel myTextLabel2;
+        private TextEditor myTextEditor;
+        private TextEditor myTextEditor2;
+        public void TextLabelLineWrapModeTest()
+        {
+            Tizen.Log.Fatal("NUI", "WrapModeTest START!");
+            myTextLabel = new TextLabel();
+            myTextLabel.Position2D = new Position2D(10, 600);
+            myTextLabel.Size2D = new Size2D(400, 90);
+            myTextLabel.BackgroundColor = Color.Blue;
+            myTextLabel.PointSize = 20;
+            myTextLabel.TextColor = Color.White;
+            myTextLabel.MultiLine = true;
+            myTextLabel.LineWrapMode = LineWrapMode.Character;
+            myTextLabel.Text = $"[TextLabel LineWrapMode.Character] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
+            Window.Instance.GetDefaultLayer().Add(myTextLabel);
+
+            myTextLabel2 = new TextLabel();
+            myTextLabel2.Position2D = new Position2D(450, 600);
+            myTextLabel2.Size2D = new Size2D(400, 90);
+            myTextLabel2.BackgroundColor = Color.Blue;
+            myTextLabel2.PointSize = 20;
+            myTextLabel2.TextColor = Color.White;
+            myTextLabel2.MultiLine = true;
+            myTextLabel2.LineWrapMode = LineWrapMode.Word;
+            myTextLabel2.Text = $"[TextLabel LineWrapMode.Word] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
+            Window.Instance.GetDefaultLayer().Add(myTextLabel2);
+
+            Tizen.Log.Fatal("NUI", $"TextLabel LineWrapMode 1st={ myTextLabel?.LineWrapMode} 2nd={ myTextLabel2?.LineWrapMode}");
+
+            myTextEditor = new TextEditor();
+            myTextEditor.Position2D = new Position2D(10, 700);
+            myTextEditor.Size2D = new Size2D(400, 90);
+            myTextEditor.BackgroundColor = Color.Red;
+            myTextEditor.PointSize = 20;
+            myTextEditor.TextColor = Color.White;
+            //myTextEditor.MultiLine = true;
+            myTextEditor.LineWrapMode = LineWrapMode.Character;
+            myTextEditor.Text = $"[TextEditor LineWrapMode.Character] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
+            Window.Instance.GetDefaultLayer().Add(myTextEditor);
+
+            myTextEditor2 = new TextEditor();
+            myTextEditor2.Position2D = new Position2D(450, 700);
+            myTextEditor2.Size2D = new Size2D(400, 90);
+            myTextEditor2.BackgroundColor = Color.Red;
+            myTextEditor2.PointSize = 20;
+            myTextEditor2.TextColor = Color.White;
+            //myTextEditor2.MultiLine = true;
+            myTextEditor2.LineWrapMode = LineWrapMode.Word;
+            myTextEditor2.Text = $"[TextEditor LineWrapMode.Word] hello ABCDEFGHI is my name, it is very very long beautiful hansome awesome name.";
+            Window.Instance.GetDefaultLayer().Add(myTextEditor2);
+
+            Tizen.Log.Fatal("NUI", $"TextEditor LineWrapMode 1st={ myTextEditor?.LineWrapMode} 2nd={ myTextEditor2?.LineWrapMode}");
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/image-orientation-correct-test.cs b/test/NUITestSample/NUITestSample/examples/image-orientation-correct-test.cs
new file mode 100755 (executable)
index 0000000..2425ca3
--- /dev/null
@@ -0,0 +1,147 @@
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace ImageViewOrientationCorrectionTest
+{
+    class Program : NUIApplication
+    {
+        //private static string resourcePath = Tizen.Applications.Application.Current.DirectoryInfo.Resource;
+        string testUrl0 = "/home/owner/apps_rw/org.tizen.example.NUITestSample/res/images/test-image.png";
+        string testUrl1 = "/home/owner/apps_rw/org.tizen.example.NUITestSample/res/images/test-image2.png";
+        string testUrl3 = "/home/owner/apps_rw/org.tizen.example.NUITestSample/res/images/test-image3.jpg";
+        string testUrl4 = "/home/owner/apps_rw/org.tizen.example.NUITestSample/res/images/test-image4.jpg";
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        TextField[] textField = new TextField[5];
+        ImageView[] imageView = new ImageView[5];
+        int resol = 1;
+        int iPointSize = 20;
+
+        void Initialize()
+        {
+            //NUILog.Debug($"ImageViewOrientationCorrectionTest => Initialize()");
+
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+            Vector2 dpi = new Vector2();
+            dpi = window.Dpi;
+            //NUILog.Debug($"Window.Dpi X={dpi.X}, Y={dpi.Y}");
+
+            textField[0] = new TextField();
+            textField[0].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[0].Position2D = new Position2D(10 * resol, 600 * resol);
+            textField[0].PivotPoint = PivotPoint.TopLeft;
+            textField[0].BackgroundColor = Color.White;
+            textField[0].PointSize = iPointSize * resol;
+            textField[0].Text = "png file, orientation correct=false";
+            textField[0].TextColor = Color.Red;
+
+            textField[1] = new TextField();
+            textField[1].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[1].Position2D = new Position2D(400 * resol, 600 * resol);
+            textField[1].PivotPoint = PivotPoint.TopLeft;
+            textField[1].BackgroundColor = Color.White;
+            textField[1].PointSize = iPointSize * resol;
+            textField[1].Text = "png file, orientation correct=true";
+            textField[1].TextColor = Color.Red;
+
+            textField[2] = new TextField();
+            textField[2].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[2].Position2D = new Position2D(750 * resol, 600 * resol);
+            textField[2].PivotPoint = PivotPoint.TopLeft;
+            textField[2].BackgroundColor = Color.White;
+            textField[2].PointSize = iPointSize * resol;
+            textField[2].Text = "jpg file, orientation correct=false";
+            textField[2].TextColor = Color.Red;
+
+            textField[3] = new TextField();
+            textField[3].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[3].Position2D = new Position2D(1100 * resol, 600 * resol);
+            textField[3].PivotPoint = PivotPoint.TopLeft;
+            textField[3].BackgroundColor = Color.White;
+            textField[3].PointSize = iPointSize * resol;
+            textField[3].Text = "jpg file, orientation correct=true";
+            textField[3].TextColor = Color.Red;
+
+            window.Add(textField[0]);
+            window.Add(textField[1]);
+            window.Add(textField[2]);
+            window.Add(textField[3]);
+
+            //PropertyMap map0 = new PropertyMap();
+            //map0.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            //map0.Add(ImageVisualProperty.URL, new PropertyValue(testUrl0));
+            //map0.Add(ImageVisualProperty.CropToMask + 3, new PropertyValue(false));
+            //imageView[0] = new ImageView();
+            //imageView[0].Image = map0;
+            imageView[0] = new ImageView();
+            imageView[0].ResourceUrl = testUrl0;
+            //imageView[0].OrientationCorrection = false;
+            imageView[0].Size2D = new Size2D(300 * resol, 400 * resol);
+            imageView[0].Position2D = new Position2D(10 * resol, 20 * resol);
+            imageView[0].PivotPoint = PivotPoint.TopLeft;
+            imageView[0].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[0].BackgroundColor = Color.Black;
+            window.Add(imageView[0]);
+
+            //PropertyMap map1 = new PropertyMap();
+            //map1.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            //map1.Add(ImageVisualProperty.URL, new PropertyValue(testUrl1));
+            //map1.Add(ImageVisualProperty.CropToMask + 3, new PropertyValue(true));
+            //imageView[1] = new ImageView();
+            //imageView[1].Image = map1;
+            imageView[1] = new ImageView();
+            imageView[1].ResourceUrl = testUrl1;
+            //imageView[1].OrientationCorrection = true;
+            imageView[1].Size2D = new Size2D(300 * resol, 400 * resol);
+            imageView[1].Position2D = new Position2D(400 * resol, 20 * resol);
+            imageView[1].PivotPoint = PivotPoint.TopLeft;
+            imageView[1].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[1].BackgroundColor = Color.Black;
+            window.Add(imageView[1]);
+
+            //PropertyMap map2 = new PropertyMap();
+            //map2.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            //map2.Add(ImageVisualProperty.URL, new PropertyValue(testUrl3));
+            //map2.Add(ImageVisualProperty.CropToMask + 3, new PropertyValue(false));
+            //imageView[2] = new ImageView();
+            //imageView[2].Image = map2;
+            imageView[2] = new ImageView();
+            imageView[2].ResourceUrl = testUrl3;
+            //imageView[2].OrientationCorrection = false;
+            imageView[2].Size2D = new Size2D(300 * resol, 400 * resol);
+            imageView[2].Position2D = new Position2D(750 * resol, 20 * resol);
+            imageView[2].PivotPoint = PivotPoint.TopLeft;
+            imageView[2].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[2].BackgroundColor = Color.Black;
+            window.Add(imageView[2]);
+
+            //PropertyMap map3 = new PropertyMap();
+            //map3.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            //map3.Add(ImageVisualProperty.URL, new PropertyValue(testUrl4));
+            //map3.Add(ImageVisualProperty.CropToMask + 3, new PropertyValue(true));
+            //imageView[3] = new ImageView();
+            //imageView[3].Image = map3;
+            imageView[3] = new ImageView();
+            imageView[3].ResourceUrl = testUrl4;
+            //imageView[3].OrientationCorrection = true;
+            imageView[3].Size2D = new Size2D(300 * resol, 400 * resol);
+            imageView[3].Position2D = new Position2D(1100 * resol, 20 * resol);
+            imageView[3].PivotPoint = PivotPoint.TopLeft;
+            imageView[3].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[3].BackgroundColor = Color.Black;
+            window.Add(imageView[3]);
+        }
+
+        static void _Main(string[] args)
+        {
+            var app = new Program();
+            app.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/image-view.cs b/test/NUITestSample/NUITestSample/examples/image-view.cs
new file mode 100755 (executable)
index 0000000..f073f5f
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+
+namespace ImageViewTest
+{
+    class Example : NUIApplication
+    {
+        private static string resourcePath = Tizen.Applications.Application.Current.DirectoryInfo.Resource;
+        private Animation _animation;
+        private ImageView _imageView;
+        private bool _isAniFinised = true;
+        private Layer layer, _layer1, _layer2;
+        private PushButton _pushButton1, _pushButton2;
+        private Window window;
+        private bool urlNullTest = false;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+            ImageUrlTest();
+        }
+
+        private ImageView image;
+        private Timer timer;
+        private bool flag;
+        private void ImageUrlTest()
+        {
+            image = new ImageView();
+            image.ResourceUrl = resourcePath + "/images/application-icon-0.png";
+            image.Size2D = new Size2D(333, 333);
+            image.ParentOrigin = ParentOrigin.Center;
+            image.PivotPoint = PivotPoint.Center;
+            image.PositionUsesPivotPoint = true;
+            Window.Instance.Add(image);
+
+            timer = new Timer(1000);
+            timer.Tick += Timer_Tick;
+            timer.Start();
+        }
+
+        private bool Timer_Tick(object source, Timer.TickEventArgs e)
+        {
+            if (flag)
+            {
+                image.ResourceUrl = resourcePath + "/images/application-icon-0.png";
+                flag = false;
+                //////NUILog.Debug("flag = false!");
+            }
+            else
+            {
+                if (urlNullTest)
+                {
+                    image.ResourceUrl = "";
+                }
+                else
+                {
+                    image.ResourceUrl = resourcePath + "/images/image-1.jpg";
+                }
+                flag = true;
+                ////NUILog.Debug("flag = true!");
+            }
+            return true;
+        }
+
+        public void Initialize()
+        {
+            //////NUILog.Debug("Customized Application Initialize event handler");
+            window = Window.Instance;
+            window.BackgroundColor = Color.Cyan;
+            window.TouchEvent += OnWindowTouched;
+            window.WheelEvent += OnWindowWheelMoved;
+            window.KeyEvent += OnWindowKeyPressed;
+            //window.EventProcessingFinished += OnWindowEventProcessingFinished;
+
+            layer = window.GetDefaultLayer();
+            _layer1 = new Layer();
+            _layer2 = new Layer();
+            window.AddLayer(_layer1);
+            window.AddLayer(_layer2);
+            //////NUILog.Debug("_layer1.Behavior =" + _layer1.Behavior);
+            if (_layer1.Behavior == Layer.LayerBehavior.LayerUI)
+            {
+                _layer1.Behavior = Layer.LayerBehavior.Layer2D;
+                ////NUILog.Debug("again _layer1.Behavior =" + _layer1.Behavior);
+            }
+            // Add a ImageView to the window
+            // PropertyMap map = new PropertyMap();
+            // map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch));
+            // map.Add(NpatchImageVisualProperty.URL, new PropertyValue(resourcePath+"/images/00_popup_bg.9.png"));
+            // map.Add(NpatchImageVisualProperty.Border, new PropertyValue(new Rectangle(100, 100, 100, 100)));
+            _imageView = new ImageView();
+            //_imageView.ImageMap = map;
+            _imageView.ResourceUrl = resourcePath + "/images/gallery-0.jpg";
+            //_imageView.Border = new Rectangle(100, 100, 100, 100);
+            _imageView.ParentOrigin = ParentOrigin.TopLeft;
+            _imageView.PivotPoint = PivotPoint.TopLeft;
+            _imageView.Position = new Position(5.0f, 5.0f, 0.0f);
+            _imageView.PixelArea = new Vector4(0.0f, 0.0f, 0.5f, 0.5f);
+            _imageView.Size2D = new Size2D(200, 80);
+            //_imageView.SetResizePolicy(ResizePolicyType.USE_NATURAL_SIZE, DimensionType.ALL_DIMENSIONS);
+            layer.Add(_imageView);
+
+            _pushButton1 = new PushButton();
+            _pushButton1.ParentOrigin = ParentOrigin.BottomLeft;
+            _pushButton1.PivotPoint = PivotPoint.BottomLeft;
+            _pushButton1.LabelText = "start animation";
+            _pushButton1.Position = new Vector3(0.0f, window.Size.Height * 0.1f, 0.0f);
+            _pushButton1.Clicked += OnPushButtonClicked1;
+            _layer1.Add(_pushButton1);
+
+            _pushButton2 = new PushButton();
+            _pushButton2.ParentOrigin = ParentOrigin.BottomLeft;
+            _pushButton2.PivotPoint = PivotPoint.BottomLeft;
+            _pushButton2.LabelText = "reload image with same URL";
+            _pushButton2.Position = new Vector3(0.0f, window.Size.Height * 0.2f, 0.0f);
+            _pushButton2.Clicked += OnPushButtonClicked2;
+            _layer2.Add(_pushButton2);
+
+            ImageView syncImage = new ImageView();
+            syncImage.ParentOrigin = ParentOrigin.CenterLeft;
+            syncImage.PivotPoint = PivotPoint.CenterLeft;
+            syncImage.PositionUsesPivotPoint = true;
+            syncImage.Size2D = new Size2D(150, 150);
+            syncImage.ResourceUrl = resourcePath + "/images/gallery-3.jpg";
+            syncImage.SynchronosLoading = true;
+            layer.Add(syncImage);
+
+            PropertyMap _map = new PropertyMap();
+            _map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch));
+            _map.Add(NpatchImageVisualProperty.URL, new PropertyValue(resourcePath + "/images/gallery-4.jpg"));
+            _map.Add(NpatchImageVisualProperty.SynchronousLoading, new PropertyValue(true));
+            ImageView nPatchImage = new ImageView();
+            nPatchImage.ParentOrigin = ParentOrigin.BottomLeft;
+            nPatchImage.PivotPoint = PivotPoint.BottomLeft;
+            nPatchImage.PositionUsesPivotPoint = true;
+            nPatchImage.Size2D = new Size2D(300, 100);
+            nPatchImage.ImageMap = _map;
+            layer.Add(nPatchImage);
+
+            ImageView syncNineImage = new ImageView();
+            syncNineImage.ParentOrigin = ParentOrigin.CenterLeft;
+            syncNineImage.PivotPoint = PivotPoint.CenterLeft;
+            syncNineImage.Position2D = new Position2D(0, 200);
+            syncNineImage.PositionUsesPivotPoint = true;
+            syncNineImage.Size2D = new Size2D(150, 150);
+            syncNineImage.ResourceUrl = resourcePath + "/images/gallery-5.jpg";
+            syncNineImage.SynchronosLoading = true;
+            syncNineImage.Border = new Rectangle(0, 0, 0, 0);
+            layer.Add(syncNineImage);
+        }
+
+        public bool OnPushButtonClicked2(object sender, EventArgs e)
+        {
+            if (_imageView)
+            {
+                //////NUILog.Debug("OnPushButtonClicked2()!");
+                layer.Remove(_imageView);
+                _imageView = new ImageView();
+                _imageView.ResourceUrl = resourcePath + "/images/gallery-3.jpg";
+                _imageView.ParentOrigin = ParentOrigin.Center;
+                _imageView.PivotPoint = PivotPoint.Center;
+                _imageView.PixelArea = new Vector4(0.0f, 0.0f, 0.5f, 0.5f);
+                //_imageView.SetResizePolicy(ResizePolicyType.USE_NATURAL_SIZE, DimensionType.ALL_DIMENSIONS);
+                layer.Add(_imageView);
+            }
+
+            return true;
+        }
+
+        public bool OnPushButtonClicked1(object sender, EventArgs e)
+        {
+            if (_isAniFinised == true)
+            {
+                _isAniFinised = false;
+                ////NUILog.Debug("OnPushButtonClicked1()!");
+
+                // Create a new _animation
+                if (_animation)
+                {
+                    //_animation.Stop(Tizen.NUI.Constants.Animation.EndAction.Stop);
+                    _animation.Reset();
+                }
+
+                _animation = new Animation();
+                _animation.AnimateTo(_imageView, "PixelArea", new Vector4(0.5f, 0.0f, 0.5f, 0.5f), 0, 1000);
+                _animation.AnimateTo(_imageView, "PixelArea", new Vector4(0.5f, 0.5f, 0.5f, 0.5f), 1000, 2000);
+                _animation.AnimateTo(_imageView, "PixelArea", new Vector4(0.0f, 0.0f, 1.0f, 1.0f), 2000, 3000);
+                _animation.AnimateTo(_imageView, "PixelArea", new Vector4(0.5f, 0.5f, 0.5f, 0.5f), 3000, 4000);
+
+                KeyFrames _keyFrames = new KeyFrames();
+                _keyFrames.Add(0.0f, new Size(0.0f, 0.0f, 0.0f));
+                _keyFrames.Add(0.3f, new Size(window.Size.Width * 0.7f, window.Size.Height * 0.7f, 0.0f));
+                _keyFrames.Add(1.0f, new Size(window.Size));
+                _animation.AnimateBetween(_imageView, "Size", _keyFrames, 4000, 6000, Animation.Interpolation.Linear);
+
+                _animation.EndAction = Animation.EndActions.Discard;
+
+                // Connect the signal callback for animaiton finished signal
+                _animation.Finished += AnimationFinished;
+                _animation.Finished += AnimationFinished2;
+
+                // Play the _animation
+                _animation.Play();
+            }
+
+            return true;
+        }
+
+        // Callback for _animation finished signal handling
+        public void AnimationFinished(object sender, EventArgs e)
+        {
+            ////NUILog.Debug("AnimationFinished()!");
+        }
+
+        // Callback for second _animation finished signal handling
+        public void AnimationFinished2(object sender, EventArgs e)
+        {
+            ////NUILog.Debug("AnimationFinished2()!");
+            if (_animation)
+            {
+                ////NUILog.Debug("Duration= " + _animation.Duration);
+                ////NUILog.Debug("EndAction= " + _animation.EndAction);
+                _isAniFinised = true;
+            }
+        }
+
+        public void OnWindowEventProcessingFinished(object sender, EventArgs e)
+        {
+            ////NUILog.Debug("OnWindowEventProcessingFinished()!");
+            if (e != null)
+            {
+                //////NUILog.Debug("e != null !");
+            }
+        }
+
+        public void OnWindowKeyPressed(object sender, Window.KeyEventArgs e)
+        {
+            ////NUILog.Debug("OnWindowKeyEventOccured()!");
+            ////NUILog.Debug("keyPressedName=" + e.Key.KeyPressedName);
+            ////NUILog.Debug("state=" + e.Key.State);
+        }
+
+        public void OnWindowWheelMoved(object sender, Window.WheelEventArgs e)
+        {
+            ////NUILog.Debug("OnWindowWheelEventOccured()!");
+            ////NUILog.Debug("direction=" + e.Wheel.Direction);
+            ////NUILog.Debug("type=" + e.Wheel.Type);
+        }
+
+        // Callback for window touched signal handling
+        public void OnWindowTouched(object sender, Window.TouchEventArgs e)
+        {
+            ////NUILog.Debug("OnWindowTouched()! e.TouchData.GetState(0)=" + e.Touch.GetState(0));
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            ////NUILog.Debug("Main() called!");
+
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/positionUsesPivotPoint-test.cs b/test/NUITestSample/NUITestSample/examples/positionUsesPivotPoint-test.cs
new file mode 100755 (executable)
index 0000000..d2088a2
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+//using Tizen.Applications;
+
+//------------------------------------------------------------------------------
+// <manual-generated />
+//
+// This file can only run on Tizen target. You should compile it with DaliApplication.cs, and
+// add tizen c# application related library as reference.
+//------------------------------------------------------------------------------
+namespace PositionUsesPivotPointTest
+{
+    class Example : NUIApplication
+    {
+        private TextLabel _text1;
+        private TextLabel _text2;
+        private Window _window;
+
+        public Example():base()
+        {
+        }
+
+        public Example(string stylesheet):base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode):base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private void Initialize()
+        {
+            // Connect the signal callback for window touched signal
+            _window = Window.Instance;
+            _text1 = new TextLabel("PositionUsesPivotPoint");
+            _text1.ParentOrigin = ParentOrigin.Center;
+            _text1.PivotPoint = PivotPoint.Center;
+            _text1.Position = new Position(0, 0, 0);
+            _text1.PositionUsesPivotPoint = true;
+            _text1.HorizontalAlignment = HorizontalAlignment.Center;
+            _text1.Size2D = new Size2D(200, 100);
+            _text1.PointSize = 10.0f;
+            _text1.BackgroundColor = Color.Blue;
+            _window.Add(_text1);
+
+            _text2 = new TextLabel("PositionNotUsesPivotPoint");
+            _text2.ParentOrigin = ParentOrigin.Center;
+            _text2.PivotPoint = PivotPoint.Center;
+            _text2.Position = new Position(0, 0, 0);
+            _text2.PositionUsesPivotPoint = false;
+            _text2.HorizontalAlignment = HorizontalAlignment.Center;
+            _text2.Size2D = new Size2D(200, 100);
+            _text2.PointSize = 10.0f;
+            _text2.BackgroundColor = Color.Red;
+            _window.Add(_text2);
+        }
+
+
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Tizen.Log.Debug("NUI", "Hello mono world.");
+            Example example = new Example("stylesheet", WindowMode.Transparent);
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/relative-vector.cs b/test/NUITestSample/NUITestSample/examples/relative-vector.cs
new file mode 100755 (executable)
index 0000000..eb27855
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+//using Tizen.Applications;
+
+//------------------------------------------------------------------------------
+// <manual-generated />
+//
+// This file can only run on Tizen target. You should compile it with DaliApplication.cs, and
+// add tizen c# application related library as reference.
+//------------------------------------------------------------------------------
+namespace RelativeVectorTest
+{
+    class Example : NUIApplication
+    {
+        private Animation _animation;
+        private ImageView _imageView;
+        private Window _window;
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+        public Example():base()
+        {
+        }
+
+        public Example(string stylesheet):base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode):base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private void Initialize()
+        {
+            _window = Window.Instance;
+            _window.TouchEvent += OnWindowTouched;
+
+            _imageView = new ImageView();
+            _imageView.ResourceUrl = resources+"/images/gallery-3.jpg";
+            _imageView.ParentOrigin = ParentOrigin.Center;
+            _imageView.PivotPoint = PivotPoint.Center;
+            _imageView.PixelArea = new RelativeVector4(0.0f, 0.0f, 0.0f, 0.0f);
+
+            _window.Add(_imageView);
+        }
+
+        // Callback for window touched signal handling
+        private void OnWindowTouched(object sender, Window.TouchEventArgs e)
+        {
+            // Only animate the _text label when touch down happens
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                // Create a new _animation
+                if (_animation)
+                {
+                    _animation.Reset();
+                }
+
+                _animation = new Animation(1000); // 1 second of duration
+                 _animation.AnimateTo(_imageView, "PixelArea", new RelativeVector4(0.0f, 0.0f, 1.0f, 1.0f), 0, 1000);
+                _animation.EndAction = Animation.EndActions.Discard;
+                _animation.PlayRange = new RelativeVector2(0.2f, 0.8f);
+
+                // Play the _animation
+                _animation.Play();
+            }
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Tizen.Log.Debug("NUI", "Hello mono world.");
+            Example example = new Example("stylesheet", WindowMode.Transparent);
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/scroll-view.cs b/test/NUITestSample/NUITestSample/examples/scroll-view.cs
new file mode 100755 (executable)
index 0000000..15eab91
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace ScrollViewTest
+{
+  class Example : NUIApplication
+  {
+    private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+    [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+    delegate void CallbackDelegate(IntPtr data);
+
+    [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+    delegate void ActorCallbackDelegate(IntPtr data);
+
+    private ScrollView _scrollView;
+    private ScrollBar _scrollBar;
+    private Animation _animation;
+    private TextLabel _text;
+
+    public Example() : base()
+    {
+    }
+
+    public Example(string stylesheet) : base(stylesheet)
+    {
+    }
+
+    public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+    {
+    }
+
+    protected override void OnCreate()
+    {
+        base.OnCreate();
+        Initialize();
+    }
+
+    public void Initialize()
+    {
+      CreateScrollView();
+    }
+
+    private void CreateScrollView()
+    {
+      Window window = Window.Instance;
+      window.BackgroundColor = Color.White;
+
+      // Create a scroll view
+      _scrollView = new ScrollView();
+      Size windowSize = new Size(window.Size.Width, window.Size.Height, 0.0f);
+      _scrollView.Size2D = new Size2D((int)windowSize.Width, (int)windowSize.Height);
+      _scrollView.ParentOrigin = ParentOrigin.Center;
+      _scrollView.PivotPoint = PivotPoint.Center;
+      window.Add(_scrollView);
+
+      // Add actors to a scroll view with 3 pages
+      int pageRows = 1;
+      int pageColumns = 3;
+      for(int pageRow = 0; pageRow < pageRows; pageRow++)
+      {
+        for(int pageColumn = 0; pageColumn < pageColumns; pageColumn++)
+        {
+          View pageActor = new View();
+          pageActor.WidthResizePolicy = ResizePolicyType.FillToParent;
+          pageActor.HeightResizePolicy = ResizePolicyType.FillToParent;
+          pageActor.ParentOrigin = ParentOrigin.Center;
+          pageActor.PivotPoint = PivotPoint.Center;
+          pageActor.Position = new Position(pageColumn * windowSize.Width, pageRow * windowSize.Height, 0.0f);
+
+          // Add images in a 3x4 grid layout for each page
+          int imageRows = 4;
+          int imageColumns = 3;
+          float margin = 10.0f;
+          Position imageSize = new Position((windowSize.Width / imageColumns) - margin, (windowSize.Height / imageRows) - margin, 0.0f);
+
+          for(int row = 0; row < imageRows; row++)
+          {
+            for(int column = 0; column < imageColumns;column++)
+            {
+              int imageId = (row * imageColumns + column) % 2 + 1;
+              ImageView imageView = new ImageView(resources+"/images/image-" + imageId + ".jpg");
+              imageView.ParentOrigin = ParentOrigin.Center;
+              imageView.PivotPoint = PivotPoint.Center;
+              imageView.Size2D = new Size2D((int)imageSize.X, (int)imageSize.Y);
+              imageView.Position = new Position( margin * 0.5f + (imageSize.X + margin) * column - windowSize.Width * 0.5f + imageSize.X * 0.5f,
+                  margin * 0.5f + (imageSize.Y + margin) * row - windowSize.Height * 0.5f + imageSize.Y * 0.5f, 0.0f );
+              pageActor.Add(imageView);
+            }
+          }
+
+          _scrollView.Add(pageActor);
+        }
+      }
+
+      _scrollView.SetAxisAutoLock(true);
+
+      // Set scroll view to have 3 pages in X axis and allow page snapping,
+      // and also disable scrolling in Y axis.
+       PropertyMap rulerMap = new PropertyMap();
+       rulerMap.Add((int)ScrollModeType.XAxisScrollEnabled, new PropertyValue(true));
+       rulerMap.Add((int)ScrollModeType.XAxisSnapToInterval, new PropertyValue(windowSize.Width));
+       rulerMap.Add((int)ScrollModeType.XAxisScrollBoundary, new PropertyValue(windowSize.Width * pageColumns ) );
+       rulerMap.Add((int)ScrollModeType.YAxisScrollEnabled, new PropertyValue( false ) );
+       _scrollView.ScrollMode = rulerMap;
+
+      // Create a horizontal scroll bar in the bottom of scroll view (which is optional)
+      _scrollBar = new ScrollBar(ScrollBar.Direction.Horizontal);
+      _scrollBar.ParentOrigin = ParentOrigin.BottomLeft;
+      _scrollBar.PivotPoint = PivotPoint.TopLeft;
+      _scrollBar.WidthResizePolicy = ResizePolicyType.FitToChildren;
+      _scrollBar.HeightResizePolicy = ResizePolicyType.FillToParent;
+      _scrollBar.Orientation = new Rotation( new Radian( new Degree( 270.0f ) ), Vector3.ZAxis );
+      _scrollView.Add(_scrollBar);
+
+      // Connect to the OnRelayout signal
+      _scrollView.Relayout += OnScrollViewRelayout;
+      //_scrollView.Touched += OnTouch;
+      _scrollView.WheelEvent += Onwheel;
+      _scrollView.FocusGained += OnKey;
+      _text = new TextLabel("View Touch Event Handler Test");
+      _text.ParentOrigin = ParentOrigin.Center;
+      _text.PivotPoint = PivotPoint.Center;
+      _text.HorizontalAlignment = HorizontalAlignment.Center;
+            _text.PointSize = 20.0f;
+
+      _scrollView.Add(_text);
+    }
+
+    // Callback for _animation finished signal handling
+    public void AnimationFinished(object sender, EventArgs e)
+    {
+      Tizen.Log.Debug("NUI", "Customized Animation Finished Event handler");
+    }
+    private void OnKey(object source, EventArgs e)
+    {
+      Tizen.Log.Debug("NUI", "View Keyevent EVENT callback....");
+    }
+
+    private bool Onwheel(object source, View.WheelEventArgs e)
+    {
+      Tizen.Log.Debug("NUI", "View Wheel EVENT callback....");
+      return true;
+    }
+
+    private bool OnTouch(object source, View.TouchEventArgs e)
+    {
+      Tizen.Log.Debug("NUI", "View TOUCH EVENT callback....");
+
+      // Only animate the _text label when touch down happens
+      if( e.Touch.GetState(0) == PointStateType.Down )
+      {
+        Tizen.Log.Debug("NUI", "Customized Window Touch event handler");
+        // Create a new _animation
+        if( _animation )
+        {
+          _animation.Reset();
+        }
+
+        _animation = new Animation(1); // 1 second of duration
+
+        _animation.AnimateTo(_text, "Orientation", new Rotation( new Radian( new Degree( 180.0f ) ), Vector3.XAxis ), 0, 500);
+        _animation.AnimateTo(_text, "Orientation", new Rotation( new Radian( new Degree( 0.0f ) ), Vector3.XAxis ), 500, 1000);
+
+        // Connect the signal callback for animaiton finished signal
+        _animation.Finished += AnimationFinished;
+
+        // Play the _animation
+        _animation.Play();
+      }
+      return true;
+    }
+
+    private void OnScrollViewRelayout(object source, EventArgs e)
+    {
+      Tizen.Log.Debug("NUI", "View OnRelayoutEventArgs EVENT callback....");
+
+      // Set the correct scroll bar size after size negotiation of scroll view is done
+      _scrollBar.Size2D = new Size2D(0, (int)_scrollView.GetRelayoutSize(DimensionType.Width));
+    }
+
+    /// <summary>
+    /// The main entry point for the application.
+    /// </summary>
+    [STAThread]
+      static void _Main(string[] args)
+      {
+        Example example = new Example();
+        example.Run(args);
+      }
+  }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/sibling-order-test.cs b/test/NUITestSample/NUITestSample/examples/sibling-order-test.cs
new file mode 100755 (executable)
index 0000000..eaf9f69
--- /dev/null
@@ -0,0 +1,195 @@
+// Copyright (c) 2017 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+
+// 1) sibling order test
+namespace SiblingOrderTest
+{
+    class Example : NUIApplication
+    {
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        Window _window;
+
+        public void Initialize()
+        {
+            _window = Window.Instance;
+            _window.BackgroundColor = Color.White;
+
+            // sibling order test
+            // By default, the SiblingOrder is 0.
+            SiblingTest1();
+
+            // sibling order test
+            // Set the SiblingOrder 0 -> 9
+            SiblingTest2();
+
+            // sibling order test
+            // Set the SiblingOrder 10 -> 1
+            SiblingTest3();
+
+            // sibling order test
+            // Set the SiblingOrder 5 -> 1 & 0 -> 4
+            SiblingTest4();
+
+            // sibling order test
+            // Set the SiblingOrder 0 -> 4 & 5 -> 1
+            SiblingTest5();
+        }
+
+        public void SiblingTest1()
+        {
+            Position2D _myPos = new Position2D(100, 30);
+
+            for (int i = 0; i < 10; i++)
+            {
+                PushButton _view = new PushButton();
+
+                _view.Name = "sibling" + i;
+                _view.LabelText = "view" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+
+                _window.Add(_view);
+            }
+        }
+
+        public void SiblingTest2()
+        {
+            Position2D _myPos = new Position2D(100, 180);
+
+            for (int i = 0; i < 10; i++)
+            {
+                PushButton _view = new PushButton();
+
+                _view.Name = "sibling" + i;
+                _view.LabelText = "view" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+
+                _window.Add(_view);
+                _view.SiblingOrder = i;
+            }
+        }
+
+        public void SiblingTest3()
+        {
+            Position2D _myPos = new Position2D(100, 330);
+
+            for (int i = 0; i < 10; i++)
+            {
+                PushButton _view = new PushButton();
+
+                _view.Name = "sibling" + i;
+                _view.LabelText = "view" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+
+                _window.Add(_view);
+                _view.SiblingOrder = 10-i;
+            }
+        }
+
+        public void SiblingTest4()
+        {
+            Position2D _myPos = new Position2D(100, 480);
+
+            for (int i = 0; i < 10; i++)
+            {
+                PushButton _view = new PushButton();
+
+                _view.Name = "sibling" + i;
+                _view.LabelText = "view" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+
+                _window.Add(_view);
+
+                if (i<5)
+                {
+                    _view.SiblingOrder = 5-i;
+                }
+                else
+                {
+                    _view.SiblingOrder = i-5;
+                }
+            }
+        }
+
+        public void SiblingTest5()
+        {
+            Position2D _myPos = new Position2D(100, 630);
+
+            for (int i = 0; i < 10; i++)
+            {
+                PushButton _view = new PushButton();
+
+                _view.Name = "sibling" + i;
+                _view.LabelText = "view" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+
+                _window.Add(_view);
+
+                if (i<5)
+                {
+                    _view.SiblingOrder = i;
+                }
+                else
+                {
+                    _view.SiblingOrder = 10-i;
+                }
+            }
+        }
+
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/svg-test.cs b/test/NUITestSample/NUITestSample/examples/svg-test.cs
new file mode 100755 (executable)
index 0000000..80da1bd
--- /dev/null
@@ -0,0 +1,142 @@
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace SvgTest
+{
+    class Program : NUIApplication
+    {
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        string test_url = "/home/owner/apps_rw/org.tizen.example.NUITemplate3/res/3.svg";
+
+        TextField[] textField = new TextField[5];
+        ImageView[] imageView = new ImageView[10];
+        int iSVGimage = 50, iSynchronous = 0, iTextColor = 0, iPointSize = 20, iPointSize2 = 20, mImageCombinationIndex = 0;
+        int resol = 1;
+
+        void Initialize()
+        {
+            //NUILog.Debug("### SvgTest => OnCreate()!");
+
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+            //NUILog.Debug($"### window.Dpi={window.Dpi}");
+
+            Vector2 dpi = new Vector2();
+            dpi = window.Dpi;
+            //NUILog.Debug($"### window.Dpi x={dpi.X}, y={dpi.Y}");
+
+            textField[0] = new TextField();
+            textField[0].Size2D = new Size2D(300 * resol, 64 * resol);
+            textField[0].Position2D = new Position2D(10 * resol, 600 * resol);
+            textField[0].PivotPoint = PivotPoint.TopLeft;
+            textField[0].BackgroundColor = Color.White;
+            textField[0].PointSize = iPointSize * resol;
+            textField[0].PlaceholderText = "imageview setsize X";
+            textField[0].TextColor = Color.Red;
+
+            textField[1] = new TextField();
+            textField[1].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[1].Position2D = new Position2D(400 * resol, 600 * resol);
+            textField[1].PivotPoint = PivotPoint.TopLeft;
+            textField[1].BackgroundColor = Color.White;
+            textField[1].PointSize = iPointSize * resol;
+            textField[1].PlaceholderText = "imageview setsize 200,400";
+            textField[1].TextColor = Color.Red;
+
+            textField[2] = new TextField();
+            textField[2].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[2].Position2D = new Position2D(750 * resol, 600 * resol);
+            textField[2].PivotPoint = PivotPoint.TopLeft;
+            textField[2].BackgroundColor = Color.White;
+            textField[2].PointSize = iPointSize * resol;
+            textField[2].PlaceholderText = "imageview setsize 300,300";
+            textField[2].TextColor = Color.Red;
+
+            textField[3] = new TextField();
+            textField[3].Size2D = new Size2D(350 * resol, 64 * resol);
+            textField[3].Position2D = new Position2D(1100 * resol, 600 * resol);
+            textField[3].PivotPoint = PivotPoint.TopLeft;
+            textField[3].BackgroundColor = Color.White;
+            textField[3].PointSize = iPointSize * resol;
+            textField[3].PlaceholderText = "imageview setsize 500,500";
+            textField[3].TextColor = Color.Red;
+
+            window.Add(textField[0]);
+            window.Add(textField[1]);
+            window.Add(textField[2]);
+            window.Add(textField[3]);
+
+            PropertyMap map0 = new PropertyMap();
+            map0.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            string test_url0 = "/home/owner/apps_rw/org.tizen.example.NUITemplate3/res/images/test-image.png";
+            map0.Add(ImageVisualProperty.URL, new PropertyValue(test_url0));
+            map0.Add(ImageVisualProperty.CropToMask + 3, new PropertyValue(true));
+            imageView[0] = new ImageView();
+            imageView[0].Position2D = new Position2D(10 * resol, 20 * resol);
+            imageView[0].PivotPoint = PivotPoint.TopLeft;
+            imageView[0].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[0].ImageMap = map0;
+            imageView[0].BackgroundColor = Color.Black;
+            window.Add(imageView[0]);
+
+            return;
+
+            PropertyMap map1 = new PropertyMap();
+            map1.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.SVG));
+            //map1.Add(ImageVisualProperty.URL, new PropertyValue(IMAGE_PATH[iSVGimage]));
+            map1.Add(ImageVisualProperty.URL, new PropertyValue(test_url));
+            map1.Add((int)Visual.Property.MixColor, new PropertyValue(new Color(0.7f, 0.0f, 0.0f, 1.0f)));
+            imageView[1] = new ImageView();
+            imageView[1].Size2D = new Size2D(200 * resol, 400 * resol);
+            imageView[1].Position2D = new Position2D(400 * resol, 20 * resol);
+            imageView[1].PivotPoint = PivotPoint.TopLeft;
+            imageView[1].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[1].Image = map1;
+            imageView[1].BackgroundColor = Color.Black;
+            //            ConnectSignal(imageView[1]);
+
+            PropertyMap map2 = new PropertyMap();
+            map2.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.SVG));
+            //map2.Add(ImageVisualProperty.URL, new PropertyValue(IMAGE_PATH[iSVGimage]));
+            map2.Add(ImageVisualProperty.URL, new PropertyValue(test_url));
+            imageView[2] = new ImageView();
+            imageView[2].Size2D = new Size2D(300 * resol, 300 * resol);
+            imageView[2].Position2D = new Position2D(700 * resol, 20 * resol);
+            imageView[2].PivotPoint = PivotPoint.TopLeft;
+            imageView[2].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[2].Image = map2;
+            imageView[2].BackgroundColor = Color.Black;
+            //            ConnectSignal(imageView[2]);
+
+            PropertyMap map3 = new PropertyMap();
+            map3.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.SVG));
+            //map3.Add(ImageVisualProperty.URL, new PropertyValue(IMAGE_PATH[iSVGimage]));
+            map3.Add(ImageVisualProperty.URL, new PropertyValue(test_url));
+            imageView[3] = new ImageView();
+            imageView[3].Size2D = new Size2D(500 * resol, 500 * resol);
+            imageView[3].Position2D = new Position2D(1100 * resol, 20 * resol);
+            imageView[3].PivotPoint = PivotPoint.TopLeft;
+            imageView[3].ParentOrigin = ParentOrigin.TopLeft;
+            imageView[3].Image = map3;
+            imageView[3].BackgroundColor = Color.Black;
+            //            ConnectSignal(imageView[3]);
+
+
+
+            window.Add(imageView[1]);
+            window.Add(imageView[2]);
+            window.Add(imageView[3]);
+        }
+
+        static void _Main(string[] args)
+        {
+            var app = new Program();
+            app.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/test1.cs b/test/NUITestSample/NUITestSample/examples/test1.cs
new file mode 100755 (executable)
index 0000000..583784d
--- /dev/null
@@ -0,0 +1,317 @@
+// Copyright (c) 2017 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+
+// 1) sibling order test
+namespace Test1
+{
+    class Example : NUIApplication
+    {
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        Window _window;
+        StyleManager _style;
+
+        public void Initialize()
+        {
+            _window = Window.Instance;
+            _window.BackgroundColor = Color.White;
+
+            // 1) sibling order test
+            SiblingTest();
+            // 2) text visual test
+            dali_VisualBase_Creation_test();
+
+            // 3) visual creation test
+            VisualTest2();
+
+            _style = StyleManager.Get();
+            //_style.StyleChanged += _style_StyleChanged;
+            _style.StyleChanged += (obj, e) =>
+            {
+                Tizen.Log.Debug("NUI", "in stylechanged.. C#side..\n");
+                //flag = true;
+            };
+
+            _style.ApplyTheme("/home/owner/apps_rw/NUISamples.TizenTV/res/json/date-picker-theme.json");
+            Tizen.Log.Debug("NUI", "#### 1) first change!");
+
+
+            AnimatePath_1();
+        }
+
+        private void _style_StyleChanged(object sender, StyleManager.StyleChangedEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "style changed event handler comes");
+        }
+
+        public void SiblingTest()
+        {
+            View _prev = null;
+            Position2D _myPos = new Position2D(100, 100);
+            List<View> list_view = new List<View>();
+            TextLabel _txt = new TextLabel();
+
+            for (int i = 0; i < 10; i++)
+            {
+                View _view0 = new PushButton();
+                PushButton _view = _view0 as PushButton;
+
+                _view.Name = "sibling" + i;
+                _view.MinimumSize = new Size2D(100, 50);
+                _view.LabelText = "sibling" + i;
+                _view.ParentOrigin = ParentOrigin.TopLeft;
+                _view.PivotPoint = PivotPoint.TopLeft;
+                _view.Position2D = _myPos + new Position2D(20 * i, 10 * i);
+                _view.Clicked += (sender, ee) =>
+                {
+                    View curr = sender as View;
+                    Tizen.Log.Debug("NUI", "clicked curr view name=" + curr.Name + "  sibling=" + curr.SiblingOrder);
+                    curr.RaiseToTop();
+                    if (_prev)
+                    {
+                        _prev.LowerToBottom();
+                        Tizen.Log.Debug("NUI", "raise on top is called!curr sibling=" + curr.SiblingOrder + " prev name=" + _prev.Name + " sibling=" + _prev.SiblingOrder);
+                    }
+                    _prev = curr;
+                    _txt.Text = "on top: " + curr.Name + ", sibling order=" + curr.SiblingOrder;
+
+                    _style.ApplyTheme("/home/owner/apps_rw/NUISamples.TizenTV/res/json/style-example-theme-one.json");
+                    Tizen.Log.Debug("NUI", "#### 2) second change!");
+
+                    return true;
+                };
+                list_view.Add(_view);
+            }
+
+            for (int i = 0; i < 10; i++)
+            {
+                _window.Add(list_view[i]);
+                Tizen.Log.Debug("NUI", list_view[i].Name + "'s sibling order=" + list_view[i].SiblingOrder);
+            }
+
+            _txt.ParentOrigin = ParentOrigin.TopLeft;
+            _txt.PivotPoint = PivotPoint.TopLeft;
+            _txt.Text = "on top: sibling#, sibling order=?";
+            _txt.Position2D = _myPos + new Position2D(-50, 200);
+            _txt.TextColor = Color.Blue;
+            _window.Add(_txt);
+
+        }
+
+        public class VisualTest : CustomView
+        {
+            private int TextVisualPropertyIndex = -1;
+            private VisualBase _textVisual;
+            private string _string;
+
+            public VisualTest() : base(typeof(VisualTest).Name, CustomViewBehaviour.RequiresKeyboardNavigationSupport)
+            {
+            }
+            public string TextVisual
+            {
+                get
+                {
+                    return _string;
+                }
+                set
+                {
+                    _string = value;
+
+                    TextVisualPropertyIndex = RegisterProperty("textvisualtest", new PropertyValue("textvisualtest"), PropertyAccessMode.ReadWrite);
+
+                    PropertyMap textVisual = new PropertyMap();
+                    textVisual.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Text))
+                        .Add(TextVisualProperty.Text, new PropertyValue(_string))
+                        .Add(TextVisualProperty.TextColor, new PropertyValue(Color.Blue))
+                        .Add(TextVisualProperty.PointSize, new PropertyValue(10))
+                        .Add(TextVisualProperty.HorizontalAlignment, new PropertyValue("CENTER"))
+                        .Add(TextVisualProperty.VerticalAlignment, new PropertyValue("CENTER"));
+                    _textVisual = VisualFactory.Instance.CreateVisual(textVisual);
+                    RegisterVisual(TextVisualPropertyIndex, _textVisual);
+                    _textVisual.DepthIndex = TextVisualPropertyIndex;
+                }
+            }
+        }
+
+        //when use belowing testcase, Time is out and this case is BLOCK
+        public void dali_VisualBase_Creation_test()
+        {
+            try
+            {
+                Tizen.Log.Debug("NUI", "##### start! ######");
+
+                VisualTest _visualTest = new VisualTest();
+                _visualTest.TextVisual = "Hello NUI Text Visual!";
+                _visualTest.ParentOrigin = ParentOrigin.TopLeft;
+                _visualTest.PivotPoint = PivotPoint.TopLeft;
+                _visualTest.Size2D = new Size2D(600, 200);
+                _visualTest.Position2D = new Position2D(50, 400);
+                _visualTest.BackgroundColor = Color.Yellow;
+                _window.Add(_visualTest);
+            }
+            catch (Exception e)
+            {
+                Tizen.Log.Error("NUI", "##### Caught Exception" + e.ToString());
+                throw new System.InvalidOperationException("visual test error!!!");
+            }
+        }
+
+        public void VisualTest2()
+        {
+            try
+            {
+                Tizen.Log.Debug("NUI", "##### VisualTest2() start! ######");
+
+                VisualFactory visualfactory = VisualFactory.Instance;
+                PropertyMap textMap1 = new PropertyMap();
+                textMap1.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Text));
+                textMap1.Insert(TextVisualProperty.Text, new PropertyValue("Hello"));
+                textMap1.Insert(TextVisualProperty.PointSize, new PropertyValue(10.0f));
+
+                PropertyMap textMap2 = new PropertyMap();
+                VisualBase textVisual1 = visualfactory.CreateVisual(textMap1);
+                textVisual1.Creation = textMap2;
+            }
+            catch (Exception e)
+            {
+                Tizen.Log.Error("NUI", "Caught Exception" + e.ToString());
+                throw new System.InvalidOperationException("visual test2 error!!!");
+                //LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());
+                //Assert.IsTrue(e is ArgumentException, "Argument Exception Not Recieved");
+            }
+        }
+
+        //[Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+        public void AnimatePath_1()
+        {
+            Tizen.Log.Debug("NUI", "#### 1) animate path test !");
+            /* TEST CODE */
+            View view = new View();
+            view.ParentOrigin = ParentOrigin.TopLeft;
+            view.PivotPoint = PivotPoint.TopLeft;
+            view.MinimumSize = new Size2D(100, 100);
+            view.BackgroundColor = Color.Red;
+            _window.Add(view);
+
+            Position position0 = new Position(200.0f, 200.0f, 0.0f);
+            Position position1 = new Position(300.0f, 300.0f, 0.0f);
+            Position position2 = new Position(400.0f, 400.0f, 0.0f);
+
+            Path path = new Path();
+            path.AddPoint(position0);
+            path.AddPoint(position1);
+            path.AddPoint(position2);
+            //Control points for first segment
+            path.AddControlPoint(new Vector3(39.0f, 90.0f, 0.0f));
+            path.AddControlPoint(new Vector3(56.0f, 119.0f, 0.0f));
+            //Control points for second segment
+            path.AddControlPoint(new Vector3(78.0f, 120.0f, 0.0f));
+            path.AddControlPoint(new Vector3(93.0f, 104.0f, 0.0f));
+
+            Animation animation = new Animation();
+            animation.AnimatePath(view, path, Vector3.XAxis, 0, 5000, new AlphaFunction(AlphaFunction.BuiltinFunctions.Linear));
+            animation.Play();
+            Vector3 position = new Vector3();
+            Vector3 tangent = new Vector3();
+
+            path.Sample(0.0f, position, tangent);
+            Rotation rotation = new Rotation(new Radian(new Degree(0.0f)), tangent);
+            Tizen.Log.Debug("NUI", "################  progress = 0! ");
+            Tizen.Log.Debug("NUI", "position=(" + position.X + "," + position.Y + "," + position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.Position.X + "," + view.Position.Y + "," + view.Position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.PositionX + "," + view.PositionY + "," + view.PositionZ + ")");
+            Tizen.Log.Debug("NUI", "view cur position=(" + view.CurrentPosition.X + "," + view.CurrentPosition.Y + "," + view.CurrentPosition.Z + ")");
+            Tizen.Log.Debug("NUI", "tangent=(" + tangent.X + "," + tangent.Y + "," + tangent.Z + ")");
+            Tizen.Log.Debug("NUI", "angle between=" + Rotation.AngleBetween(view.Orientation, rotation) + "  view orientation length=" + view.Orientation.Length() + "  rotation length=" + rotation.Length());
+            //Assert.AreEqual(position.X, view.PositionX, "The actor's PositionX of is not correct");
+            //Assert.AreEqual(position.Y, actor.PositionY, "The actor's PositionY of is not correct");
+            //Assert.AreEqual(position.Z, actor.PositionZ, "The actor's PositionZ of is not correct");
+            //Assert.IsTrue(rotation.Equals(actor.Orientation));
+            //await Task.Delay(250);
+            path.Sample(0.25f, position, tangent);
+            rotation = new Rotation(new Radian(new Degree(0.0f)), tangent);
+            Tizen.Log.Debug("NUI", "################  progress = 0.25! ");
+            Tizen.Log.Debug("NUI", "position=(" + position.X + "," + position.Y + "," + position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.Position.X + "," + view.Position.Y + "," + view.Position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.PositionX + "," + view.PositionY + "," + view.PositionZ + ")");
+            Tizen.Log.Debug("NUI", "view cur position=(" + view.CurrentPosition.X + "," + view.CurrentPosition.Y + "," + view.CurrentPosition.Z + ")");
+            Tizen.Log.Debug("NUI", "tangent=(" + tangent.X + "," + tangent.Y + "," + tangent.Z + ")");
+            Tizen.Log.Debug("NUI", "angle between=" + Rotation.AngleBetween(view.Orientation, rotation) + "  view orientation length=" + view.Orientation.Length() + "  rotation length=" + rotation.Length());
+            //Assert.AreEqual(position.X, actor.PositionX, "The PositionX of actor is not correct");
+            //Assert.AreEqual(position.Y, actor.PositionY, "The PositionY of actor is not correct");
+            //Assert.AreEqual(position.Z, actor.PositionZ, "The PositionZ of actor is not correct");
+            //Assert.IsTrue(rotation.Equals(actor.Orientation));
+            //await Task.Delay(500);
+            path.Sample(0.75f, position, tangent);
+            rotation = new Rotation(new Radian(new Degree(0.0f)), tangent);
+            Tizen.Log.Debug("NUI", "################  progress = 0.75! ");
+            Tizen.Log.Debug("NUI", "position=(" + position.X + "," + position.Y + "," + position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.Position.X + "," + view.Position.Y + "," + view.Position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.PositionX + "," + view.PositionY + "," + view.PositionZ + ")");
+            Tizen.Log.Debug("NUI", "view cur position=(" + view.CurrentPosition.X + "," + view.CurrentPosition.Y + "," + view.CurrentPosition.Z + ")");
+            Tizen.Log.Debug("NUI", "tangent=(" + tangent.X + "," + tangent.Y + "," + tangent.Z + ")");
+            Tizen.Log.Debug("NUI", "angle between=" + Rotation.AngleBetween(view.Orientation, rotation) + "  view orientation length=" + view.Orientation.Length() + "  rotation length=" + rotation.Length());
+            //Assert.AreEqual(position.X, actor.PositionX, "The PositionX of actor is not correct here");
+            //Assert.AreEqual(position.Y, actor.PositionY, "The PositionY of actor is not correct here");
+            //Assert.AreEqual(position.Z, actor.PositionZ, "The PositionZ of actor is not correct here");
+            //Assert.IsTrue(rotation.Equals(actor.Orientation));
+
+            path.Sample(1.0f, position, tangent);
+            rotation = new Rotation(new Radian(new Degree(0.0f)), tangent);
+            Tizen.Log.Debug("NUI", "################  progress = 1.0! ");
+            Tizen.Log.Debug("NUI", "position=(" + position.X + "," + position.Y + "," + position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.Position.X + "," + view.Position.Y + "," + view.Position.Z + ")");
+            Tizen.Log.Debug("NUI", "view position=(" + view.PositionX + "," + view.PositionY + "," + view.PositionZ + ")");
+            Tizen.Log.Debug("NUI", "view cur position=(" + view.CurrentPosition.X + "," + view.CurrentPosition.Y + "," + view.CurrentPosition.Z + ")");
+            Tizen.Log.Debug("NUI", "tangent=(" + tangent.X + "," + tangent.Y + "," + tangent.Z + ")");
+            Tizen.Log.Debug("NUI", "angle between=" + Rotation.AngleBetween(view.Orientation, rotation) + "  view orientation length=" + view.Orientation.Length() + "  rotation length=" + rotation.Length());
+
+
+            Tizen.Log.Debug("NUI", "#### 2) animate path test end!");
+        }
+
+
+
+
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/text-test.cs b/test/NUITestSample/NUITestSample/examples/text-test.cs
new file mode 100755 (executable)
index 0000000..11bc56a
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace TextTest
+{
+    class Example : NUIApplication
+    {
+        TextLabel _pointLabel;
+        Boolean _colorToggle;
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private bool LabelTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                Animation textColorAnimation = new Animation(1000);
+                if (_colorToggle)
+                {
+                    textColorAnimation.AnimateTo(_pointLabel, "TextColorAnimatable", Color.Blue );
+                    _colorToggle = false;
+                }
+                else
+                {
+                     textColorAnimation.AnimateTo(_pointLabel, "TextColorAnimatable", Color.Green );
+                    _colorToggle = true;
+                }
+                textColorAnimation.Play();
+            }
+            return true;
+        }
+
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TextLabel pixelLabel = new TextLabel("Test Pixel Size 32.0f");
+            pixelLabel.Position2D = new Position2D(10, 10);
+            pixelLabel.PixelSize = 32.0f;
+            pixelLabel.BackgroundColor = Color.Magenta;
+            window.Add(pixelLabel);
+
+            _pointLabel = new TextLabel("Test Point Size 32.0f");
+            _pointLabel.Position2D = new Position2D(10, 100);
+            _pointLabel.PointSize = 32.0f;
+            _pointLabel.BackgroundColor = Color.Red;
+            //_pointLabel.TextColorAnimatable = Color.Green; // Set initial text color using animatable property
+            _pointLabel.TouchEvent += LabelTouched;
+            _colorToggle = true;
+
+            window.Add(_pointLabel);
+
+
+            TextLabel ellipsis = new TextLabel("Ellipsis of TextLabel is enabled.");
+            ellipsis.Size2D = new Size2D(100, 80);
+            ellipsis.Position2D = new Position2D(10, 200);
+            ellipsis.PointSize = 20.0f;
+            ellipsis.Ellipsis = true;
+            ellipsis.BackgroundColor = Color.Cyan;
+            window.Add(ellipsis);
+
+            TextLabel autoScrollStopMode = new TextLabel("AutoScrollStopMode is finish-loop.");
+            autoScrollStopMode.Size2D = new Size2D(400, 50);
+            autoScrollStopMode.Position2D = new Position2D(10, 300);
+            autoScrollStopMode.PointSize = 15.0f;
+            autoScrollStopMode.BackgroundColor = Color.Green;
+            autoScrollStopMode.AutoScrollStopMode = AutoScrollStopMode.FinishLoop;
+            autoScrollStopMode.EnableAutoScroll = true;
+            window.Add(autoScrollStopMode);
+
+            TextField field = new TextField();
+            field.Size2D = new Size2D(400, 100);
+            field.Position2D = new Position2D(10, 400);
+            field.BackgroundColor = Color.Cyan;
+            field.PlaceholderText = "input someth...";
+            field.PlaceholderTextFocused = "input someth... focused";
+            field.Focusable = true;
+            PropertyMap hiddenMap = new PropertyMap();
+            hiddenMap.Add(HiddenInputProperty.Mode, new PropertyValue((int)HiddenInputModeType.ShowLastCharacter));
+            hiddenMap.Add(HiddenInputProperty.ShowLastCharacterDuration, new PropertyValue(2));
+            hiddenMap.Add(HiddenInputProperty.SubstituteCount, new PropertyValue(4));
+            hiddenMap.Add(HiddenInputProperty.SubstituteCharacter, new PropertyValue(0x23));
+            field.HiddenInputSettings = hiddenMap;
+            field.EnableSelection = true;
+            window.Add(field);
+
+            InputMethod inputMethod = new InputMethod();
+            inputMethod.PanelLayout = InputMethod.PanelLayoutType.Number;
+            inputMethod.ActionButton = InputMethod.ActionButtonTitleType.Go;
+            inputMethod.AutoCapital = InputMethod.AutoCapitalType.Word;
+            inputMethod.Variation = 1;
+
+            field.InputMethodSettings = inputMethod.OutputMap;
+
+            PropertyMap propertyMap = new PropertyMap();
+            propertyMap.Add("placeholderText", new PropertyValue("Placeholder Text"));
+            propertyMap.Add("placeholderTextFocused", new PropertyValue("Placeholder Text Focused"));
+            propertyMap.Add("placeholderColor", new PropertyValue(Color.Red));
+            propertyMap.Add("placeholderPointSize", new PropertyValue(15.0f));
+
+            PropertyMap fontStyleMap = new PropertyMap();
+            fontStyleMap.Add("weight", new PropertyValue("bold"));
+            fontStyleMap.Add("width", new PropertyValue("condensed"));
+            fontStyleMap.Add("slant", new PropertyValue("italic"));
+            propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));
+
+            TextEditor editor = new TextEditor();
+            editor.Size2D = new Size2D(400, 100);
+            editor.Position2D = new Position2D(10, 550);
+            editor.BackgroundColor = Color.Magenta;
+            editor.EnableScrollBar = true;
+            editor.EnableSelection = true;
+            editor.Focusable = true;
+            editor.Placeholder = propertyMap;
+            window.Add(editor);
+            editor.TextChanged += (obj, e) => {
+                Tizen.Log.Debug("NUI", "editor line count: " + e.TextEditor.LineCount);
+            };
+
+            editor.ScrollStateChanged += (obj, e)=> {
+                Tizen.Log.Debug("NUI", "editor scroll state:" + e.ScrollState);
+            };
+
+            Tizen.Log.Debug("NUI",  "editor id: " + editor.ID);
+
+            FocusManager.Instance.SetCurrentFocusView(editor);
+            editor.UpFocusableView = field;
+            field.DownFocusableView = editor;
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/text-test2.cs b/test/NUITestSample/NUITestSample/examples/text-test2.cs
new file mode 100755 (executable)
index 0000000..75d43fe
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace TextTest2
+{
+    class Example : NUIApplication
+    {
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private PushButton button;
+        private TextEditor editor;
+        private ImfManager imfManager;
+
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            PropertyMap propertyMap = new PropertyMap();
+            propertyMap.Add("placeholderText", new PropertyValue("TextEditor Placeholder Text"));
+            propertyMap.Add("placeholderColor", new PropertyValue(Color.Red));
+            propertyMap.Add("placeholderPointSize", new PropertyValue(12.0f));
+
+            PropertyMap fontStyleMap = new PropertyMap();
+            fontStyleMap.Add("weight", new PropertyValue("bold"));
+            fontStyleMap.Add("width", new PropertyValue("condensed"));
+            fontStyleMap.Add("slant", new PropertyValue("italic"));
+            propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));
+
+
+            editor = new TextEditor()
+            {
+                Size2D = new Size2D(500, 300),
+                Position2D = new Position2D(10, 550),
+                BackgroundColor = Color.Magenta,
+                Focusable = true,
+                Placeholder = propertyMap
+            };
+
+            window.Add(editor);
+
+            editor.TextChanged += (obj, e) => {
+                Tizen.Log.Fatal("NUI", "editor line count: " + e.TextEditor.LineCount);
+            };
+
+            editor.ScrollStateChanged += (obj, e) => {
+                Tizen.Log.Fatal("NUI", "editor scroll state:" + e.ScrollState);
+            };
+
+            editor.KeyEvent += OnKeyEvent;
+
+
+            Tizen.Log.Debug("NUI", "editor id: " + editor.ID);
+
+            imfManager = ImfManager.Get();
+            imfManager.AutoEnableInputPanel(false);
+            imfManager.SetInputPanelUserData("layouttype = 1 & entrylimit = 255 & action = clearall_for_voice_commit & caller = org.volt.search - all");
+
+
+            // send privatecommand event
+            ImfManager.ImfEventData imfevent = new ImfManager.ImfEventData(ImfManager.ImfEvent.PrivateCommand, "", 0, 0);
+            imfManager.EventReceived += ImfManager_ImfManagerEventReceived;
+
+            imfManager.LanguageChanged += ImfManager_LanguageChanged;
+
+            imfManager.Activated += (obj, e) => {
+                Tizen.Log.Debug("NUI", "ImfManager Activated !!!!!");
+            };
+            imfManager.StatusChanged += (obj, e) => {
+                Tizen.Log.Debug("NUI", "ImfManager StatusChanged: !!!!!" + e.StatusChanged);
+            };
+            imfManager.Resized += (obj, e) =>
+            {
+                Tizen.Log.Debug("NUI", "ImfManager Resized !!!!!");
+            };
+            imfManager.KeyboardTypeChanged += (obj, e) => {
+                Tizen.Log.Debug("NUI", "ImfManager KeyboardTypeChanged: !!!!!" + e.KeyboardType);
+            };
+
+            button = new PushButton()
+            {
+                LabelText = "Button",
+                Size2D = new Size2D(400, 200),
+                Position2D = new Position2D(10, -10),
+                ParentOrigin = ParentOrigin.BottomLeft,
+                PivotPoint = PivotPoint.BottomLeft,
+                PositionUsesPivotPoint = true,
+                Focusable = true
+            };
+
+            window.Add(button);
+
+            button.UpFocusableView = editor;
+            editor.DownFocusableView = button;
+
+            FocusManager.Instance.SetCurrentFocusView(button);
+        }
+
+        private bool OnKeyEvent(object source, View.KeyEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "KeyEvent called !!!!!");
+            if (e.Key.State != Key.StateType.Down || editor.Focusable == false)
+            {
+                Tizen.Log.Debug("NUI", "KeyEvent ignored !!!!!");
+                return false;
+            }
+            switch (e.Key.KeyPressedName)
+            {
+                case "Return":
+                    Tizen.Log.Debug("NUI", "KeyPressedName: Return !!!!!");
+                    ShowImf();
+                    return true;
+                case "Select":
+                    Tizen.Log.Debug("NUI", "KeyPressedName: Select !!!!!");
+                    HideImf();
+                    return true;
+                case "Cancel":
+                    Tizen.Log.Debug("NUI", "KeyPressedName: Cancel !!!!!");
+                    HideImf();
+                    return true;
+                case "Down":
+                    Tizen.Log.Debug("NUI", "KeyPressedName: Down !!!!!");
+                    HideImf();
+                    return MoveFocusTo(button);
+            }
+            return false;
+        }
+
+        private void ShowImf()
+        {
+            imfManager.Activate();
+            imfManager.ShowInputPanel();
+            Tizen.Log.Debug("NUI", "IME showed !!!!!");
+        }
+
+        private bool MoveFocusTo(View view)
+        {
+            if (view == null) return false;
+            return FocusManager.Instance.SetCurrentFocusView(view);
+        }
+
+        private void HideImf()
+        {
+            imfManager.Deactivate();
+            imfManager.HideInputPanel();
+            Tizen.Log.Debug("NUI", "IME hided !!!!!");
+        }
+
+        public ImfManager.ImfCallbackData ImfManager_ImfManagerEventReceived(object sender, ImfManager.EventReceivedEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "ImfManager_ImfManagerEventReceived()!");
+
+            Tizen.Log.Debug("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.PredictiveString);
+            Tizen.Log.Debug("NUI", "e.ImfEventData.CursorOffset= " + e?.ImfEventData?.CursorOffset);
+            Tizen.Log.Debug("NUI", "e.ImfEventData.EventName= " + e?.ImfEventData?.EventName);
+            Tizen.Log.Debug("NUI", "e.ImfEventData.NumberOfChars= " + e?.ImfEventData?.NumberOfChars);
+
+            //Be able to compare VD specific private command with ImfEventData.predictiveString
+            if (e.ImfEventData.PredictiveString == "IME_F31")
+            {
+                ImfManager.Get().Deactivate();
+                ImfManager.Get().HideInputPanel();
+                // Do Something the user wants
+                Tizen.Log.Debug("NUI", "ImfManager ImfEventData.PredictiveString: IME_F31!!!");
+            }
+            ImfManager.ImfCallbackData callbackData = new ImfManager.ImfCallbackData(true, 0, e.ImfEventData.PredictiveString, false);
+            Tizen.Log.Debug("NUI", "ImfManager return callbackData!!!");
+            return callbackData;
+        }
+
+        public void ImfManager_LanguageChanged(object sender, EventArgs args)
+        {
+            Tizen.Log.Debug("NUI", "ImfManager LanguageChanged!!!");
+            return;
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/timer-test.cs b/test/NUITestSample/NUITestSample/examples/timer-test.cs
new file mode 100755 (executable)
index 0000000..6b408e7
--- /dev/null
@@ -0,0 +1,112 @@
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.Constants;
+
+namespace TimerTest
+{
+    // An example of Visual View control.
+    class Example : NUIApplication
+    {
+        private static int i = 0;
+
+        public Example() : base()
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TextLabel label = new TextLabel()
+            {
+                Text = "Steps: 0",
+                Size2D = new Size2D(460, 80),
+                Position2D = new Position2D(10, 10)
+            };
+
+            RadioButton radio1 = new RadioButton()
+            {
+                LabelText = "Set interval 500",
+                Size2D = new Size2D(300, 50),
+                Position2D = new Position2D(10, 100),
+            };
+            RadioButton radio2 = new RadioButton()
+            {
+                LabelText = "Set interval 1000",
+                Size2D = new Size2D(300, 50),
+                Position2D = new Position2D(10, 160),
+                Selected = true
+            };
+            RadioButton radio3 = new RadioButton()
+            {
+                LabelText = "Set interval 3000",
+                Size2D = new Size2D(300, 50),
+                Position2D = new Position2D(10, 220),
+            };
+
+            PushButton button1 = new PushButton()
+            {
+                LabelText = "Start",
+                Size2D = new Size2D(100, 50),
+                Position2D = new Position2D(10, 300),
+                Focusable = true
+            };
+
+            PushButton button2 = new PushButton()
+            {
+                LabelText = "Stop",
+                Size2D = new Size2D(100, 50),
+                Position2D = new Position2D(140, 300),
+                Focusable = true
+            };
+
+            window.Add(label);
+            window.Add(radio1);
+            window.Add(radio2);
+            window.Add(radio3);
+            window.Add(button1);
+            window.Add(button2);
+
+            FocusManager.Instance.SetCurrentFocusView(button1);
+            button1.LeftFocusableView = button1.RightFocusableView = button2;
+            button2.RightFocusableView = button2.LeftFocusableView = button1;
+            button1.UpFocusableView = button2.UpFocusableView = radio3;
+            radio3.UpFocusableView = radio2;
+            radio2.UpFocusableView = radio1;
+            radio1.DownFocusableView = radio2;
+            radio2.DownFocusableView = radio3;
+            radio3.DownFocusableView = button1;
+
+            Timer timer = new Timer(1000);
+            timer.Tick += (obj, e) =>
+            {
+                Tizen.Log.Fatal("NUI", "NUI Timer tick called!");
+                label.Text = "Steps: " + (i++);
+                return true;
+            };
+
+            button1.Clicked += (obj, e) =>
+            {
+                if (radio1.Selected == true) timer.Interval = 500;
+                if (radio2.Selected == true) timer.Interval = 1000;
+                if (radio3.Selected == true) timer.Interval = 3000;
+                timer.Start();
+                return true;
+            };
+            button2.Clicked += (obj, e) =>
+            {
+                timer.Stop();
+                return true;
+            };
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/ttsplayer-test.cs b/test/NUITestSample/NUITestSample/examples/ttsplayer-test.cs
new file mode 100755 (executable)
index 0000000..e0807ce
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using Tizen.NUI;
+
+namespace TTSPlayerTest
+{
+    class Example : NUIApplication
+    {
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TTSPlayer ttsPlayer = TTSPlayer.Get(TTSPlayer.TTSMode.Default);
+            ttsPlayer.Play("tts player test");
+
+            ttsPlayer.StateChanged += (s, e) =>
+            {
+                Tizen.Log.Debug("NUI", "TTS state changed!!!");
+            };
+            ttsPlayer.Pause();
+            ttsPlayer.Resume();
+            ttsPlayer.Stop();
+            Tizen.Log.Debug("NUI", "TTS state: " + ttsPlayer.GetState());
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/user-alphafunction.cs b/test/NUITestSample/NUITestSample/examples/user-alphafunction.cs
new file mode 100755 (executable)
index 0000000..f805af0
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace UserAlphaFunctionTest
+{
+    class Example : NUIApplication
+    {
+        private Animation _animation;
+        private TextLabel _text;
+        private View _view1, _view2, _view3;
+        private UserAlphaFunctionDelegate _user_alpha_func;
+        private int myCount;
+
+        public static void Log(string str)
+        {
+            Tizen.Log.Debug("NUI", "[DALI C# SAMPLE] " + str);
+        }
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        // Declare user alpha function delegate
+        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+        delegate float UserAlphaFunctionDelegate(float progress);
+
+        public void Initialize()
+        {
+            Log("Initialize() is called!");
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+            window.TouchEvent += OnWindowTouched;
+            window.TouchEvent += OnWindowTouched2;
+            //window.EventProcessingFinished += OnEventProcessingFinished;
+            window.WheelEvent += OnWindowWheelEvent;
+
+            // Add a _text label to the window
+            _text = new TextLabel("Hello Mono World");
+            _text.ParentOrigin = ParentOrigin.BottomCenter;
+            _text.PivotPoint = PivotPoint.BottomCenter;
+            _text.HorizontalAlignment = HorizontalAlignment.Center;
+            _text.PointSize = 32.0f;
+            window.Add(_text);
+
+            _view1 = new View();
+            _view1.Size2D = new Size2D(200, 200);
+            _view1.BackgroundColor = Color.Green;
+            _view1.ParentOrigin = ParentOrigin.Center;
+            _view1.PivotPoint = PivotPoint.Center;
+            _view1.WidthResizePolicy = ResizePolicyType.Fixed;
+            _view1.HeightResizePolicy = ResizePolicyType.Fixed;
+            _view1.AddedToWindow += OnWindow;
+            window.Add(_view1);
+
+            _view2 = new View();
+            _view2.BackgroundColor = Color.Red;
+            _view2.Size2D = new Size2D(50, 50);
+            _view2.ParentOrigin = ParentOrigin.TopLeft;
+            _view2.PivotPoint = PivotPoint.TopLeft;
+            _view2.WidthResizePolicy = ResizePolicyType.Fixed;
+            _view2.HeightResizePolicy = ResizePolicyType.Fixed;
+            _view1.Add(_view2);
+
+            _view3 = new View();
+            _view3.BackgroundColor = Color.Blue;
+            _view3.Size2D = new Size2D(50, 50);
+            _view3.ParentOrigin = ParentOrigin.TopLeft;
+            _view3.PivotPoint = PivotPoint.TopLeft;
+            _view3.WidthResizePolicy = ResizePolicyType.Fixed;
+            _view3.HeightResizePolicy = ResizePolicyType.Fixed;
+            _view1.Add(_view3);
+
+            _user_alpha_func = new UserAlphaFunctionDelegate(body);
+
+            MyAnimating();
+        }
+
+        // User defines alpha function as custom alpha function
+        // Important Notification : when this custom alpha-function is implemented,
+        // the other function call nor other data excess is prevented.
+        // this method must be implemented to calculate the values of input and output purely.
+        // unless, this will cause application crash.
+        float body(float progress)
+        {
+            if (progress > 0.2f && progress < 0.7f)
+            {
+                return progress + 0.8f;
+            }
+            return progress;
+        }
+
+        // Callback for _animation finished signal handling
+        public void AnimationFinished(object sender, EventArgs e)
+        {
+            Log("AnimationFinished() is called!");
+            myCount = 0;
+        }
+
+        public void MyAnimating()
+        {
+            // Create a new _animation
+            if (_animation)
+            {
+                _animation.Clear();
+                _animation.Reset();
+            }
+
+            _animation = new Animation(10000); // 10000 milli-second of duration
+            _animation.AnimateTo(_view2, "Position", new Vector3(150.0f, 150.0f, 0.0f), 5000, 10000, new AlphaFunction(_user_alpha_func));
+            // Connect the signal callback for animaiton finished signal
+            _animation.Finished += AnimationFinished;
+            _animation.EndAction = Animation.EndActions.Discard;
+            // Play the _animation
+            _animation.Play();
+        }
+
+        // Callback for window touched signal handling
+        public void OnWindowTouched(object source, Window.TouchEventArgs e)
+        {
+            // Only animate the _text label when touch down happens
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+                Log("OnWindowTouched() is called! PointStateType.DOWN came!");
+                myCount++;
+                if (myCount > 1)
+                {
+                    _animation.Stop();
+                    Log("_animation.Stop() is called!");
+                }
+            }
+        }
+
+        // Callback for window touched signal handling
+        public void OnWindowTouched2(object source, Window.TouchEventArgs e)
+        {
+            Log("OnWindowTouched2() is called!state=" + e.Touch.GetState(0));
+        }
+
+        public void OnEventProcessingFinished(object source)
+        {
+            Log("OnEventProcessingFinished() is called!");
+        }
+
+        public void OnWindowWheelEvent(object source, Window.WheelEventArgs e)
+        {
+            Log("OnWindowWheelEvent() is called!");
+            //Log("OnWindowWheelEvent() is called!direction="+ e.WheelEvent.direction + " timeStamp=" + e.WheelEvent.timeStamp );
+        }
+
+
+        public void OnWindow(object source, EventArgs e)
+        {
+            Log("OnWindow() is called!");
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Log("Main() is called!");
+
+            Example example = new Example();
+            example.Run(args);
+
+            Log("After MainLoop()");
+        }
+    }
+}
+
diff --git a/test/NUITestSample/NUITestSample/examples/view-navi-property.cs b/test/NUITestSample/NUITestSample/examples/view-navi-property.cs
new file mode 100755 (executable)
index 0000000..ce68ed0
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+
+namespace MyCSharpExample
+{
+    class Example : NUIApplication
+    {
+        const int num = 2;
+        View[] view;
+
+        View lastFocusedView;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            view = new View[2];
+
+            for (int i = 0; i < num; i++)
+            {
+                view[i] = new View();
+                view[i].Size2D = new Size2D(200, 200);
+                view[i].BackgroundColor = Color.Blue;
+                view[i].Position = new Position(300 + i * 300, 300, 0);
+                view[i].Name = "MyView" + i;
+                view[i].Focusable = true;
+                Window.Instance.Add(view[i]);
+                view[i].FocusGained += FocusNavigationSample_FocusGained;
+                view[i].FocusLost += FocusNavigationSample_FocusLost;
+                view[i].KeyEvent += FocusNavigationSample_KeyEvent;
+            }
+
+            view[0].RightFocusableView = view[1];
+            view[0].LeftFocusableView = view[1];
+            view[1].RightFocusableView = view[0];
+            view[1].LeftFocusableView = view[0];
+
+            FocusManager.Instance.SetCurrentFocusView(view[0]);
+            FocusManager.Instance.PreFocusChange += Instance_PreFocusChange;
+
+            Window.Instance.TouchEvent += Instance_Touch;
+        }
+
+        private void Instance_Touch(object sender, Window.TouchEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "window touched! set key focus as view[0]!");
+            FocusManager.Instance.SetCurrentFocusView(view[0]);
+        }
+
+        private bool FocusNavigationSample_KeyEvent(object source, View.KeyEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "...");
+            View view = source as View;
+
+            Tizen.Log.Debug("NUI", "NUI-1 " + "View-" + view.Name + ", Pressed-" + e.Key.KeyPressedName + e.Key.State.ToString());
+
+            return false;
+        }
+
+        private void FocusNavigationSample_FocusLost(object sender, EventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "...");
+            View view = sender as View;
+            view.BackgroundColor = Color.Blue;
+            view.Scale = new Vector3(1.0f, 1.0f, 1.0f);
+
+            Tizen.Log.Debug("NUI", "NUI-2 " + "FocusLost-" + view.Name);
+        }
+
+        private void FocusNavigationSample_FocusGained(object sender, EventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "...");
+            View view = sender as View;
+            view.BackgroundColor = Color.Red;
+            view.Scale = new Vector3(1.2f, 1.2f, 1.0f);
+
+            Tizen.Log.Debug("NUI", "NUI-3 " + "FocusGained-" + view.Name);
+        }
+
+        private View Instance_PreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            Tizen.Log.Debug("NUI", "...");
+            View currentView = (e.CurrentView) ?? lastFocusedView;
+            View nextView = null;
+
+            Tizen.Log.Debug("NUI", "NUI-4 " + "PreFocusChange-" + e.Direction);
+
+            if (currentView != null && currentView.HasBody())
+                Tizen.Log.Debug("NUI", "NUI-5 " + " Current-" + currentView.Name);
+
+            if (currentView)
+            {
+                switch (e.Direction)
+                {
+                    case View.FocusDirection.Left:
+                        nextView = currentView.LeftFocusableView;
+                        if (nextView == null)
+                            Tizen.Log.Debug("NUI", "NUI-6 " + "LeftFocusableView is NULL!!!!");
+                        else
+                            Tizen.Log.Debug("NUI", "NUI-7 " + currentView.Name + ".LeftFocusableView =" + nextView.Name);
+                        break;
+                    case View.FocusDirection.Right:
+                        nextView = currentView.RightFocusableView;
+                        if (nextView == null)
+                            Tizen.Log.Debug("NUI", "NUI-8 " + "RightFocusableView is NULL!!!!");
+                        else
+                            Tizen.Log.Debug("NUI", "NUI-9 " + currentView.Name + ".RightFocusableView =" + nextView.Name);
+                        break;
+                    case View.FocusDirection.Up:
+                        nextView = currentView.UpFocusableView;
+                        if (nextView == null)
+                            Tizen.Log.Debug("NUI", "NUI-10 " + "UpFocusableView is NULL!!!!");
+                        else
+                            Tizen.Log.Debug("NUI", "NUI-11 " + currentView.Name + ".UpFocusableView =" + nextView.Name);
+                        break;
+                    case View.FocusDirection.Down:
+                        nextView = currentView.DownFocusableView;
+                        if (nextView == null)
+                            Tizen.Log.Debug("NUI", "NUI-12 " + "DownFocusableView is NULL!!!!");
+                        else
+                            Tizen.Log.Debug("NUI", "NUI-13 " + currentView.Name + ".DownFocusableView =" + nextView.Name);
+                        break;
+                    default:
+                        nextView = null;  //added
+                        break;
+                }
+            }
+
+            if (e.ProposedView == null)
+            {
+                Tizen.Log.Debug("NUI", "NUI-14 " + "ProposedView in NULL!!");
+            }
+            else if (e.ProposedView.HasBody())
+            {
+                Tizen.Log.Debug("NUI", "NUI-15 " + "ProposedView-" + e.ProposedView.Name);
+            }
+            else
+            {
+                Tizen.Log.Debug("NUI", "NUI-16 " + "ProposedView does NOT have body!!!" + e.ProposedView);
+            }
+
+            nextView = nextView ?? (e.ProposedView) ?? currentView;
+            lastFocusedView = nextView;
+
+            if (nextView != null && nextView.HasBody())
+                Tizen.Log.Debug("NUI", "NUI-17 " + "Next-" + nextView.Name);
+
+            return nextView;
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/visual-animation-test.cs b/test/NUITestSample/NUITestSample/examples/visual-animation-test.cs
new file mode 100755 (executable)
index 0000000..39ea8f4
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace VisaulAnimationExample
+{
+    class Example : NUIApplication
+    {
+        private VisualView _contentView;
+        private TextLabel _title;
+        private PushButton _shadowButton;
+        private bool _active = false;
+        private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";  //for tizen
+        //private const string _resPath = "./res";  //for ubuntu
+
+        private Animation _animation1;
+        private bool _transitionInProgress = false;
+        private int cnt1, cnt2;
+
+        private SVGVisual svgVisual;
+        private AnimatedImageVisual gifVisual;
+        private ImageVisual _icon;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TableView titleLayout = new TableView(2, 1);
+            titleLayout.Name = ("TitleLayout");
+            titleLayout.PivotPoint = PivotPoint.TopLeft;
+            titleLayout.Position2D = new Position2D(10, 10);
+            titleLayout.Size2D = new Size2D((int)(window.Size.Width * 0.9f), (int)(window.Size.Height * 0.9f));
+            titleLayout.SetCellPadding(new Size2D(10, 10));
+            titleLayout.BackgroundColor = Color.Cyan;
+            window.Add(titleLayout);
+
+            _title = new TextLabel("Visual Transition / SVG / AGIF Example");
+            _title.Name = ("Title");
+            _title.SetStyleName("Title");
+            _title.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _title.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            _title.HorizontalAlignment = HorizontalAlignment.Center;
+            titleLayout.AddChild(_title, new TableView.CellPosition(0, 0));
+            titleLayout.SetFitHeight(0);
+
+            TableView contentLayout = new TableView(3, 2);
+            contentLayout.Name = ("ContentLayout");
+            contentLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.PivotPoint = PivotPoint.TopLeft;
+            contentLayout.SetCellPadding(new Size2D(10, 10));
+            contentLayout.BackgroundColor = Color.Magenta;
+            titleLayout.AddChild(contentLayout, new TableView.CellPosition(1, 0));
+
+            //////////////////////////////////////////////////////////////////////
+            // Create a conttent view
+            _contentView = new VisualView();
+            _contentView.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentView.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //_contentView.Size2D = new Size2D(250, 250);
+            _contentView.BackgroundImage = _resPath + "/images/background-blocks.jpg";
+
+            _icon = new ImageVisual();
+            _icon.URL = _resPath + "/images/application-icon-0.png";
+            _icon.DepthIndex = 1;
+            _icon.Size = new Size2D(50, 50);
+            _icon.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon.Position = new Position2D(5, 5);
+            _icon.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon.Origin = Visual.AlignType.TopBegin;
+            _icon.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon.Opacity = 0.5f;
+            _contentView.AddVisual("icon_visual1", _icon);
+
+            contentLayout.AddChild(_contentView, new TableView.CellPosition(0, 0));
+
+            _shadowButton = new PushButton();
+            _shadowButton.LabelText = "Toggle Transition";
+            _shadowButton.Name = ("ToggleTransition");
+            _shadowButton.ParentOrigin = ParentOrigin.Center;
+            _shadowButton.PivotPoint = PivotPoint.Center;
+            _shadowButton.Clicked += (obj, ev) =>
+            {
+                _active = !_active;
+                StartTransition(_active);
+                return true;
+            };
+            _shadowButton.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _shadowButton.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.AddChild(_shadowButton, new TableView.CellPosition(0, 1));
+
+            //////////////////////////////////////////////////////////////////////
+            // make NPatch visual test
+            NPatchVisual npatch1 = new NPatchVisual();
+            npatch1.URL = _resPath + "/images/gallery-2.jpg";
+            npatch1.Size = new Size2D(400, 400);
+            npatch1.SizePolicy = VisualTransformPolicyType.Absolute;
+            npatch1.Position = new Position2D(400, 0);
+            npatch1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            npatch1.Origin = Visual.AlignType.TopBegin;
+            npatch1.AnchorPoint = Visual.AlignType.TopBegin;
+            npatch1.Border = new Rectangle(100, 100, 100, 100);
+            npatch1.DepthIndex = 2;
+            npatch1.MixColor = new Color(1, 0, 0, 1);
+            npatch1.Opacity = 0.5f;
+            _contentView.AddVisual("npatchImageVisual1", npatch1);
+
+            //////////////////////////////////////////////////////////////////////
+            // make SVG visual test
+            VisualView VisualView1 = new VisualView();
+            VisualView1.WidthResizePolicy = ResizePolicyType.FillToParent;
+            VisualView1.HeightResizePolicy = ResizePolicyType.FillToParent;
+            VisualView1.BackgroundColor = Color.Black;
+            contentLayout.AddChild(VisualView1, new TableView.CellPosition(1, 0));
+
+            svgVisual = new SVGVisual();
+            svgVisual.URL = _resPath + "/images/Kid1.svg";
+            svgVisual.Size = new Size2D(300, 300);
+            svgVisual.SizePolicy = VisualTransformPolicyType.Absolute;
+            svgVisual.Position = new Position2D(0, 0);
+            svgVisual.PositionPolicy = VisualTransformPolicyType.Absolute;
+            svgVisual.Origin = Visual.AlignType.TopBegin;
+            svgVisual.AnchorPoint = Visual.AlignType.TopBegin;
+            VisualView1.AddVisual("svg_visual1", svgVisual);
+
+            PushButton svgButton = new PushButton();
+            svgButton.LabelText = "SVG Visual Test";
+            svgButton.Name = ("svg_visual_test");
+            svgButton.PivotPoint = PivotPoint.Center;
+            svgButton.WidthResizePolicy = ResizePolicyType.FillToParent;
+            svgButton.HeightResizePolicy = ResizePolicyType.FillToParent;
+            svgButton.Clicked += (obj, ev) =>
+            {
+                cnt1++;
+                if (cnt1 % 2 == 0)
+                {
+                    svgVisual.URL = _resPath + "/images/World.svg";
+                }
+                else
+                {
+                    svgVisual.URL = _resPath + "/images/Mail.svg";
+                }
+                Tizen.Log.Debug("NUI", "svg button clicked!");
+                return true;
+            };
+            contentLayout.AddChild(svgButton, new TableView.CellPosition(1, 1));
+
+            //////////////////////////////////////////////////////////////////////
+            // make AnimatedImage visual test
+            VisualView VisualView2 = new VisualView();
+            VisualView2.WidthResizePolicy = ResizePolicyType.FillToParent;
+            VisualView2.HeightResizePolicy = ResizePolicyType.FillToParent;
+            VisualView2.BackgroundColor = Color.Blue;
+            contentLayout.AddChild(VisualView2, new TableView.CellPosition(2, 0));
+
+            gifVisual = new AnimatedImageVisual();
+            gifVisual.URL = _resPath + "/images/dog-anim.gif";
+            gifVisual.Size = new Size2D(200, 200);
+            gifVisual.SizePolicy = VisualTransformPolicyType.Absolute;
+            gifVisual.Position = new Position2D(0, 0);
+            gifVisual.PositionPolicy = VisualTransformPolicyType.Absolute;
+            gifVisual.Origin = Visual.AlignType.TopBegin;
+            gifVisual.AnchorPoint = Visual.AlignType.TopBegin;
+            VisualView2.AddVisual("gif_visual", gifVisual);
+
+            PushButton gifButton = new PushButton();
+            gifButton.LabelText = "AnimatedImage Visual Test";
+            gifButton.Name = ("gif_visual_test");
+            gifButton.PivotPoint = PivotPoint.Center;
+            gifButton.WidthResizePolicy = ResizePolicyType.FillToParent;
+            gifButton.HeightResizePolicy = ResizePolicyType.FillToParent;
+            gifButton.Clicked += (obj, ev) =>
+            {
+                Tizen.Log.Debug("NUI", "gif button clicked!");
+                cnt2++;
+                int gifNum = cnt2 % 15;
+                gifVisual.URL = _resPath + "/images/anim-gif/" + gifNum + ".gif";
+                gifButton.LabelText = "file:" + gifNum + ".gif";
+                return true;
+            };
+            contentLayout.AddChild(gifButton, new TableView.CellPosition(2, 1));
+        }
+
+        private void StartTransition(bool activate)
+        {
+            if (_animation1)
+            {
+                _animation1.Stop();
+                _animation1.Finished += OnTransitionFinished1;
+            }
+
+            if (activate)
+            {
+                _contentView.AnimateVisualAdd(_icon, "Size", new Size2D(150, 150), 0, 1000, AlphaFunction.BuiltinFunctions.Linear);
+                _contentView.AnimateVisualAdd(_icon, "Position", new Position2D(40, 40), 0, 1000);
+                _animation1 = _contentView.AnimateVisualAddFinish();
+            }
+            else
+            {
+                _contentView.AnimateVisualAdd(_icon, "Size", new Position2D(50, 50), 0, 1000, AlphaFunction.BuiltinFunctions.Linear);
+                _contentView.AnimateVisualAdd(_icon, "Position", new Position2D(5, 5), 0, 1000);
+                _animation1 = _contentView.AnimateVisualAddFinish();
+            }
+
+            if (_animation1)
+            {
+                _animation1.Finished += OnTransitionFinished1;
+                _transitionInProgress = true;
+                _animation1.Play();
+            }
+        }
+        private void OnTransitionFinished1(object sender, EventArgs e)
+        {
+            _transitionInProgress = false;
+            if (_animation1)
+            {
+                _animation1.Finished += OnTransitionFinished1;
+                _animation1.Reset();
+            }
+        }
+
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+
+
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visual-animation-test2.cs b/test/NUITestSample/NUITestSample/examples/visual-animation-test2.cs
new file mode 100755 (executable)
index 0000000..92528c0
--- /dev/null
@@ -0,0 +1,278 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace VisaulAnimationExample
+{
+    class Example2 : NUIApplication
+    {
+        private VisualView _contentView1;
+        private VisualView _contentView2;
+        private VisualView _contentView3;
+        private TextLabel _title;
+        private PushButton _shadowButton1;
+        private PushButton _shadowButton2;
+        private PushButton _shadowButton3;
+        private bool _active1 = false;
+        private bool _active2 = false;
+        private bool _active3 = false;
+        private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+        private Animation _animation;
+        private bool _transitionInProgress = false;
+
+        public Example2() : base()
+        {
+        }
+
+        public Example2(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example2(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TableView titleLayout = new TableView(2, 1);
+            titleLayout.Name = ("TitleLayout");
+            titleLayout.PivotPoint = PivotPoint.TopLeft;
+            titleLayout.Position2D = new Position2D(10, 10);
+            titleLayout.Size2D = new Size2D((int)(window.Size.Width * 0.9f), (int)(window.Size.Height * 0.9f));
+            titleLayout.SetCellPadding(new Size2D(10, 10));
+            titleLayout.BackgroundColor = Color.Cyan;
+            window.Add(titleLayout);
+
+            _title = new TextLabel("Visual Transition Example");
+            _title.Name = ("Title");
+            _title.SetStyleName("Title");
+            _title.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _title.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            _title.HorizontalAlignment = HorizontalAlignment.Center;
+            titleLayout.AddChild(_title, new TableView.CellPosition(0, 0));
+            titleLayout.SetFitHeight(0);
+
+            TableView contentLayout = new TableView(3, 2);
+            contentLayout.Name = ("ContentLayout");
+            contentLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.PivotPoint = PivotPoint.TopLeft;
+            contentLayout.SetCellPadding(new Size2D(10, 10));
+            contentLayout.BackgroundColor = Color.Magenta;
+            titleLayout.AddChild(contentLayout, new TableView.CellPosition(1, 0));
+
+            //////////////////////////////////////////////////////////////////////
+            // make visual position animation
+            _contentView1 = new VisualView();
+            _contentView1.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentView1.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //_contentView.Size2D = new Size2D(250, 250);
+            _contentView1.BackgroundImage = _resPath + "/images/background-blocks.jpg";
+
+            ImageVisual _icon = new ImageVisual();
+            _icon.URL = _resPath + "/images/application-icon-0.png";
+            _icon.DepthIndex = 1;
+            _icon.Size = new Size2D(50, 50);
+            _icon.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon.Position = new Position2D(5, 5);
+            _icon.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon.Origin = Visual.AlignType.TopBegin;
+            _icon.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon.Opacity = 0.5f;
+            _contentView1.AddVisual("icon_visual1", _icon);
+
+            contentLayout.AddChild(_contentView1, new TableView.CellPosition(0, 0));
+
+            _shadowButton1 = new PushButton();
+            _shadowButton1.LabelText = "Toggle Transition Position";
+            _shadowButton1.Name = ("ToggleTransition");
+            _shadowButton1.ParentOrigin = ParentOrigin.Center;
+            _shadowButton1.PivotPoint = PivotPoint.Center;
+            _shadowButton1.Clicked += (obj, ev) =>
+            {
+                _active1 = !_active1;
+                StartTransition(_contentView1, _icon, "Position", _active1);
+                return true;
+            };
+            _shadowButton1.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _shadowButton1.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.AddChild(_shadowButton1, new TableView.CellPosition(0, 1));
+
+            //////////////////////////////////////////////////////////////////////
+            // make visual opacity animation
+            _contentView2 = new VisualView();
+            _contentView2.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentView2.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //_contentView.Size2D = new Size2D(250, 250);
+            _contentView2.BackgroundImage = _resPath + "/images/background-blocks.jpg";
+
+            ImageVisual _icon2 = new ImageVisual();
+            _icon2.URL = _resPath + "/images/application-icon-0.png";
+            _icon2.DepthIndex = 1;
+            _icon2.Size = new Size2D(50, 50);
+            _icon2.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon2.Position = new Position2D(5, 5);
+            _icon2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon2.Origin = Visual.AlignType.TopBegin;
+            _icon2.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon2.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon2.Opacity = 0.5f;
+            _contentView2.AddVisual("icon_visual2", _icon2);
+
+            contentLayout.AddChild(_contentView2, new TableView.CellPosition(1, 0));
+
+            _shadowButton2 = new PushButton();
+            _shadowButton2.LabelText = "Toggle Transition Opacity";
+            _shadowButton2.Name = ("ToggleTransition");
+            _shadowButton2.ParentOrigin = ParentOrigin.Center;
+            _shadowButton2.PivotPoint = PivotPoint.Center;
+            _shadowButton2.Clicked += (obj, ev) =>
+            {
+                _active2 = !_active2;
+                StartTransition(_contentView2, _icon2, "Opacity", _active2);
+                return true;
+            };
+            _shadowButton2.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _shadowButton2.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.AddChild(_shadowButton2, new TableView.CellPosition(1, 1));
+
+            //////////////////////////////////////////////////////////////////////
+            // make AnimatedImage visual test
+            _contentView3 = new VisualView();
+            _contentView3.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentView3.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //_contentView.Size2D = new Size2D(250, 250);
+            _contentView3.BackgroundImage = _resPath + "/images/background-blocks.jpg";
+
+            ImageVisual _icon3 = new ImageVisual();
+            _icon3.URL = _resPath + "/images/application-icon-0.png";
+            _icon3.DepthIndex = 1;
+            _icon3.Size = new Size2D(50, 50);
+            _icon3.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon3.Position = new Position2D(5, 5);
+            _icon3.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon3.Origin = Visual.AlignType.TopBegin;
+            _icon3.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon3.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon3.Opacity = 0.5f;
+            _contentView3.AddVisual("icon_visual3", _icon3);
+
+            contentLayout.AddChild(_contentView3, new TableView.CellPosition(2, 0));
+
+            _shadowButton3 = new PushButton();
+            _shadowButton3.LabelText = "Toggle Transition MixColor";
+            _shadowButton3.Name = ("ToggleTransition");
+            _shadowButton3.ParentOrigin = ParentOrigin.Center;
+            _shadowButton3.PivotPoint = PivotPoint.Center;
+            _shadowButton3.Clicked += (obj, ev) =>
+            {
+                _active3 = !_active3;
+                StartTransition(_contentView3, _icon3, "MixColor", _active3);
+                return true;
+            };
+            _shadowButton3.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _shadowButton3.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.AddChild(_shadowButton3, new TableView.CellPosition(2, 1));
+        }
+
+        private void StartTransition(VisualView view, VisualMap target, string property, bool activate)
+        {
+            if (_animation)
+            {
+                _animation.Stop();
+                _animation.Finished += OnTransitionFinished;
+            }
+
+            if (activate)
+            {
+                if (property == "Position")
+                {
+                    _animation = view.AnimateVisual(target, property, new Position2D(20, 20), 0, 1000, AlphaFunction.BuiltinFunctions.Linear, new Position2D(40, 40));
+                }
+                else if (property == "Opacity")
+                {
+                    _animation = view.AnimateVisual(target, property, 0.0f, 0, 1000, AlphaFunction.BuiltinFunctions.Linear);
+                }
+                else if (property == "MixColor")
+                {
+                    _animation = view.AnimateVisual(target, property, Color.Green, 0, 1000, AlphaFunction.BuiltinFunctions.Linear);
+                }
+            }
+            else
+            {
+                if (property == "Position")
+                {
+                    _animation = view.AnimateVisual(target, property, new Position2D(5, 5), 0, 1000);
+                }
+                else if (property == "Opacity")
+                {
+                    _animation = view.AnimateVisual(target, property, 1.0f, 0, 1000);
+                }
+                else if (property == "MixColor")
+                {
+                    _animation = view.AnimateVisual(target, property, Color.Red, 0, 1000);
+                }
+            }
+
+            if (_animation)
+            {
+                _animation.Finished += OnTransitionFinished;
+                _transitionInProgress = true;
+                _animation.Play();
+            }
+        }
+        private void OnTransitionFinished(object sender, EventArgs e)
+        {
+            _transitionInProgress = false;
+            if (_animation)
+            {
+                _animation.Finished += OnTransitionFinished;
+                _animation.Reset();
+            }
+        }
+
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+
+
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visual-animation-test3.cs b/test/NUITestSample/NUITestSample/examples/visual-animation-test3.cs
new file mode 100755 (executable)
index 0000000..f356c54
--- /dev/null
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace VisaulAnimationExample
+{
+    class Example3 : NUIApplication
+    {
+        private VisualView _contentView1;
+        private VisualView _contentView2;
+        private VisualView _contentView3;
+        private TextLabel _title;
+        private PushButton _shadowButton1;
+        private PushButton _shadowButton2;
+        private PushButton _shadowButton3;
+        private bool _active1 = false;
+        private bool _active2 = false;
+        private bool _active3 = false;
+        //private const string _resPath = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private const string _resPath = "./res";  //for ubuntu
+
+        private Animation _animation;
+        private ImageVisual _icon;
+        private ImageVisual _icon2;
+        private ImageVisual _icon3;
+        private ImageVisual _icon4;
+        private bool _transitionInProgress = false;
+
+        public Example3() : base()
+        {
+        }
+
+        public Example3(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example3(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TableView titleLayout = new TableView(2, 1);
+            titleLayout.Name = ("TitleLayout");
+            titleLayout.PivotPoint = PivotPoint.TopLeft;
+            titleLayout.Position2D = new Position2D(10, 10);
+            titleLayout.Size2D = new Size2D((int)(window.Size.Width * 0.9f), (int)(window.Size.Height * 0.9f));
+            titleLayout.SetCellPadding(new Size2D(10, 10));
+            titleLayout.BackgroundColor = Color.Cyan;
+            window.Add(titleLayout);
+
+            _title = new TextLabel("Visual Transition Example");
+            _title.Name = ("Title");
+            _title.SetStyleName("Title");
+            _title.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _title.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            _title.HorizontalAlignment = HorizontalAlignment.Center;
+            titleLayout.AddChild(_title, new TableView.CellPosition(0, 0));
+            titleLayout.SetFitHeight(0);
+
+            TableView contentLayout = new TableView(2, 1);
+            contentLayout.Name = ("ContentLayout");
+            contentLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.PivotPoint = PivotPoint.TopLeft;
+            contentLayout.SetCellPadding(new Size2D(10, 10));
+            contentLayout.BackgroundColor = Color.Magenta;
+            titleLayout.AddChild(contentLayout, new TableView.CellPosition(1, 0));
+
+            // make visual position animation
+            _contentView1 = new VisualView();
+            _contentView1.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _contentView1.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //_contentView.Size2D = new Size2D(250, 250);
+            _contentView1.BackgroundImage = _resPath + "/images/background-blocks.jpg";
+
+            _icon = new ImageVisual();
+            _icon.URL = _resPath + "/images/application-icon-0.png";
+            _icon.DepthIndex = 1;
+            _icon.Size = new Size2D(50, 50);
+            _icon.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon.Position = new Position2D(5, 5);
+            _icon.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon.Origin = Visual.AlignType.TopBegin;
+            _icon.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon.Opacity = 0.5f;
+            _contentView1.AddVisual("icon_visual1", _icon);
+
+            _icon2 = new ImageVisual();
+            _icon2.URL = _resPath + "/images/application-icon-0.png";
+            _icon2.DepthIndex = 1;
+            _icon2.Size = new Size2D(50, 50);
+            _icon2.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon2.Position = new Position2D(200, 5);
+            _icon2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon2.Origin = Visual.AlignType.TopBegin;
+            _icon2.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon2.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon2.Opacity = 0.5f;
+            _contentView1.AddVisual("icon_visual2", _icon2);
+
+            _icon3 = new ImageVisual();
+            _icon3.URL = _resPath + "/images/application-icon-0.png";
+            _icon3.DepthIndex = 1;
+            _icon3.Size = new Size2D(50, 50);
+            _icon3.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon3.Position = new Position2D(5, 200);
+            _icon3.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon3.Origin = Visual.AlignType.TopBegin;
+            _icon3.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon3.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon3.Opacity = 0.5f;
+            _contentView1.AddVisual("icon_visual3", _icon3);
+
+            _icon4 = new ImageVisual();
+            _icon4.URL = _resPath + "/images/application-icon-0.png";
+            _icon4.DepthIndex = 1;
+            _icon4.Size = new Size2D(50, 50);
+            _icon4.SizePolicy = VisualTransformPolicyType.Absolute;
+            _icon4.Position = new Position2D(200, 200);
+            _icon4.PositionPolicy = VisualTransformPolicyType.Absolute;
+            _icon4.Origin = Visual.AlignType.TopBegin;
+            _icon4.AnchorPoint = Visual.AlignType.TopBegin;
+            _icon4.MixColor = new Color(0, 1, 0, 0.5f);
+            _icon4.Opacity = 0.5f;
+            _contentView1.AddVisual("icon_visual4", _icon4);
+
+            contentLayout.AddChild(_contentView1, new TableView.CellPosition(0, 0));
+
+            _shadowButton1 = new PushButton();
+            _shadowButton1.LabelText = "Toggle Transition Position";
+            _shadowButton1.Name = ("ToggleTransition");
+            _shadowButton1.ParentOrigin = ParentOrigin.Center;
+            _shadowButton1.PivotPoint = PivotPoint.Center;
+            _shadowButton1.Clicked += (obj, ev) =>
+            {
+                _active1 = !_active1;
+                StartTransition(_contentView1, _active1);
+                return true;
+            };
+            _shadowButton1.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _shadowButton1.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            contentLayout.AddChild(_shadowButton1, new TableView.CellPosition(1, 0));
+            contentLayout.SetFitHeight(1);
+        }
+
+        private void StartTransition(VisualView view, bool activate)
+        {
+            if (_animation)
+            {
+                _animation.Stop();
+                _animation.Finished += OnTransitionFinished;
+            }
+
+            if (activate)
+            {
+                view.AnimateVisualAdd(_icon, "Position", new Position2D(80, 80), 0, 2000, AlphaFunction.BuiltinFunctions.Linear, new Position2D(5, 5));
+                view.AnimateVisualAdd(_icon2, "Opacity", 0.0f, 0, 2000, AlphaFunction.BuiltinFunctions.Linear);
+                view.AnimateVisualAdd(_icon3, "MixColor", Color.Green, 0, 2000, AlphaFunction.BuiltinFunctions.Linear);
+                view.AnimateVisualAdd(_icon4, "Size", new Size2D(150, 150), 0, 2000, AlphaFunction.BuiltinFunctions.Linear);
+                _animation = view.AnimateVisualAddFinish();
+            }
+            else
+            {
+                view.AnimateVisualAdd(_icon, "Position", new Position2D(5, 5), 0, 2000, AlphaFunction.BuiltinFunctions.Linear, new Position2D(80, 80));
+                view.AnimateVisualAdd(_icon2, "Opacity", 1.0f, 0, 2000);
+                view.AnimateVisualAdd(_icon3, "MixColor", Color.Red, 0, 2000);
+                view.AnimateVisualAdd(_icon4, "Size", new Size2D(50, 50), 0, 2000, AlphaFunction.BuiltinFunctions.Linear);
+                _animation = view.AnimateVisualAddFinish();
+            }
+
+            if (_animation)
+            {
+                _animation.Finished += OnTransitionFinished;
+                _animation.EndAction = Animation.EndActions.StopFinal;
+                _transitionInProgress = true;
+                _animation.Play();
+            }
+        }
+
+        private void OnTransitionFinished(object sender, EventArgs e)
+        {
+            _transitionInProgress = false;
+            if (_animation)
+            {
+                _animation.Finished += OnTransitionFinished;
+                _animation.Reset();
+            }
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example3 example = new Example3();
+            example.Run(args);
+        }
+
+
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visual-view-test.cs b/test/NUITestSample/NUITestSample/examples/visual-view-test.cs
new file mode 100755 (executable)
index 0000000..6c199d3
--- /dev/null
@@ -0,0 +1,297 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace VisualViewTest
+{
+    // An example of Visual View control.
+    class Example : NUIApplication
+    {
+        private VisualView _visualView = null;
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private Window _window;
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private ImageVisual imageVisualMap1;
+        private TextVisual textVisualMap1;
+        private NPatchVisual npatchImageVisualMap1;
+        private BorderVisual borderVisualMap1;
+        private int cnt;
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+
+            /* Create a visual view. */
+            _visualView = new VisualView();
+            _visualView.ParentOrigin = ParentOrigin.TopLeft;
+            _visualView.PivotPoint = PivotPoint.TopLeft;
+            _visualView.Size2D = new Size2D((int)window.Size.Width, (int)window.Size.Height);
+
+            /* color visual */
+            ColorVisual colorVisualMap1 = new ColorVisual();
+            colorVisualMap1.Color = Color.Green;
+            _visualView.Background = colorVisualMap1.OutputVisualMap;
+
+            window.Add(_visualView);
+
+            /* image visual 1. */
+            imageVisualMap1 = new ImageVisual();
+            imageVisualMap1.URL = resources + "/images/image-1.jpg";
+            imageVisualMap1.Size = new Vector2(200.0f, 200.0f);
+            imageVisualMap1.Position = new Vector2(10.0f, 10.0f);
+            imageVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            Console.WriteLine("PositionPolicy:{0}",imageVisualMap1.PositionPolicy);
+            imageVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            Console.WriteLine("SizePolicy:{0}",imageVisualMap1.SizePolicy);
+            imageVisualMap1.Origin = Visual.AlignType.TopBegin;
+            imageVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("imageVisual1", imageVisualMap1);
+            imageVisualMap1.URL = resources + "/images/image-3.jpg";
+
+            /* image visual 2. */
+            ImageVisual imageVisualMap2 = new ImageVisual();
+            imageVisualMap2.URL = resources + "/images/image-2.jpg";
+            imageVisualMap2.Size = new Vector2(250.0f, 200.0f);
+            imageVisualMap2.Position = new Vector2(220.0f, 10.0f);
+            imageVisualMap2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            imageVisualMap2.SizePolicy = VisualTransformPolicyType.Absolute;
+            imageVisualMap2.Origin = Visual.AlignType.TopBegin;
+            imageVisualMap2.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("imageVisual2", imageVisualMap2);
+
+            /* text visual. */
+            textVisualMap1 = new TextVisual();
+            textVisualMap1.Text = "Hello Goodbye";
+            textVisualMap1.PointSize = 20.0f;
+
+            textVisualMap1.Size = new Vector2(900.0f, 250.0f);
+            textVisualMap1.Position = new Vector2(10.0f, 220.0f);
+            textVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            textVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            textVisualMap1.Origin = Visual.AlignType.TopBegin;
+            textVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("textVisual1", textVisualMap1);
+
+            /* border visual */
+            borderVisualMap1 = new BorderVisual();
+            borderVisualMap1.Color = Color.Red;
+            borderVisualMap1.BorderSize = 5.0f;
+
+            borderVisualMap1.Size = new Vector2(100.0f, 100.0f);
+            borderVisualMap1.Position = new Vector2(10.0f, 380.0f);
+            borderVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            borderVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            borderVisualMap1.Origin = Visual.AlignType.TopBegin;
+            borderVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("borderVisual1", borderVisualMap1);
+
+            /* gradient visual */
+            GradientVisual gradientVisualMap1 = new GradientVisual();
+            PropertyArray stopPosition = new PropertyArray();
+            stopPosition.Add(new PropertyValue(0.0f));
+            stopPosition.Add(new PropertyValue(0.3f));
+            stopPosition.Add(new PropertyValue(0.6f));
+            stopPosition.Add(new PropertyValue(0.8f));
+            stopPosition.Add(new PropertyValue(1.0f));
+            gradientVisualMap1.StopOffset = stopPosition;
+            PropertyArray stopColor = new PropertyArray();
+            stopColor.Add(new PropertyValue(new Vector4(129.0f, 198.0f, 193.0f, 255.0f) / 255.0f));
+            stopColor.Add(new PropertyValue(new Vector4(196.0f, 198.0f, 71.0f, 122.0f) / 255.0f));
+            stopColor.Add(new PropertyValue(new Vector4(214.0f, 37.0f, 139.0f, 191.0f) / 255.0f));
+            stopColor.Add(new PropertyValue(new Vector4(129.0f, 198.0f, 193.0f, 150.0f) / 255.0f));
+            stopColor.Add(new PropertyValue(Color.Yellow));
+            gradientVisualMap1.StopColor = stopColor;
+            gradientVisualMap1.StartPosition = new Vector2(0.5f, 0.5f);
+            gradientVisualMap1.EndPosition = new Vector2(-0.5f, -0.5f);
+            gradientVisualMap1.Center = new Vector2(0.5f, 0.5f);
+            gradientVisualMap1.Radius = 1.414f;
+
+            gradientVisualMap1.Size = new Vector2(100.0f, 100.0f);
+            gradientVisualMap1.Position = new Vector2(120.0f, 380.0f);
+            gradientVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            gradientVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            gradientVisualMap1.Origin = Visual.AlignType.TopBegin;
+            gradientVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("gradientVisual1", gradientVisualMap1);
+
+            /* primitive visual: Cone */
+            PrimitiveVisual primitiveVisualMap1 = new PrimitiveVisual();
+            primitiveVisualMap1.Shape = PrimitiveVisualShapeType.Cone;
+            primitiveVisualMap1.BevelPercentage = 0.3f;
+            primitiveVisualMap1.BevelSmoothness = 0.0f;
+            primitiveVisualMap1.ScaleDimensions = new Vector3(1.0f, 1.0f, 0.3f);
+            primitiveVisualMap1.MixColor = new Vector4((245.0f / 255.0f), (188.0f / 255.0f), (73.0f / 255.0f), 1.0f);
+
+            primitiveVisualMap1.Size = new Vector2(100.0f, 100.0f);
+            primitiveVisualMap1.Position = new Vector2(230.0f, 380.0f);
+            primitiveVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap1.Origin = Visual.AlignType.TopBegin;
+            primitiveVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("primitiveVisual1", primitiveVisualMap1);
+
+            /* primitive visual: Sphere */
+            PrimitiveVisual primitiveVisualMap2 = new PrimitiveVisual();
+            primitiveVisualMap2.Shape = PrimitiveVisualShapeType.Sphere;
+            primitiveVisualMap2.BevelPercentage = 0.3f;
+            primitiveVisualMap2.BevelSmoothness = 0.0f;
+            primitiveVisualMap2.ScaleDimensions = new Vector3(1.0f, 1.0f, 0.3f);
+            primitiveVisualMap2.MixColor = new Vector4((245.0f / 255.0f), (188.0f / 255.0f), (73.0f / 255.0f), 1.0f);
+
+            primitiveVisualMap2.Size = new Vector2(100.0f, 100.0f);
+            primitiveVisualMap2.Position = new Vector2(340.0f, 380.0f);
+            primitiveVisualMap2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap2.SizePolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap2.Origin = Visual.AlignType.TopBegin;
+            primitiveVisualMap2.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("primitiveVisual2", primitiveVisualMap2);
+
+            /* primitive visual: Cylinder */
+            PrimitiveVisual primitiveVisualMap3 = new PrimitiveVisual();
+            primitiveVisualMap3.Shape = PrimitiveVisualShapeType.Cylinder;
+            primitiveVisualMap3.BevelPercentage = 0.3f;
+            primitiveVisualMap3.BevelSmoothness = 0.0f;
+            primitiveVisualMap3.ScaleDimensions = new Vector3(1.0f, 1.0f, 0.3f);
+            primitiveVisualMap3.MixColor = new Vector4((245.0f / 255.0f), (188.0f / 255.0f), (73.0f / 255.0f), 1.0f);
+
+            primitiveVisualMap3.Size = new Vector2(100.0f, 100.0f);
+            primitiveVisualMap3.Position = new Vector2(10.0f, 490.0f);
+            primitiveVisualMap3.PositionPolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap3.SizePolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap3.Origin = Visual.AlignType.TopBegin;
+            primitiveVisualMap3.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("primitiveVisual3", primitiveVisualMap3);
+
+            /* primitive visual: ConicalFrustrum */
+            PrimitiveVisual primitiveVisualMap4 = new PrimitiveVisual();
+            primitiveVisualMap4.Shape = PrimitiveVisualShapeType.ConicalFrustrum;
+            primitiveVisualMap4.BevelPercentage = 0.3f;
+            primitiveVisualMap4.BevelSmoothness = 0.0f;
+            primitiveVisualMap4.ScaleDimensions = new Vector3(1.0f, 1.0f, 0.3f);
+            primitiveVisualMap4.MixColor = new Vector4((245.0f / 255.0f), (188.0f / 255.0f), (73.0f / 255.0f), 1.0f);
+
+            primitiveVisualMap4.Size = new Vector2(100.0f, 100.0f);
+            primitiveVisualMap4.Position = new Vector2(120.0f, 490.0f);
+            primitiveVisualMap4.PositionPolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap4.SizePolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap4.Origin = Visual.AlignType.TopBegin;
+            primitiveVisualMap4.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("primitiveVisual4", primitiveVisualMap4);
+
+            /* primitive visual: Cube */
+            PrimitiveVisual primitiveVisualMap5 = new PrimitiveVisual();
+            primitiveVisualMap5.Shape = PrimitiveVisualShapeType.Cube;
+            primitiveVisualMap5.BevelPercentage = 0.3f;
+            primitiveVisualMap5.BevelSmoothness = 0.0f;
+            primitiveVisualMap5.ScaleDimensions = new Vector3(1.0f, 1.0f, 0.3f);
+            primitiveVisualMap5.MixColor = new Vector4((245.0f / 255.0f), (188.0f / 255.0f), (73.0f / 255.0f), 1.0f);
+
+            primitiveVisualMap5.Size = new Vector2(100.0f, 100.0f);
+            primitiveVisualMap5.Position = new Vector2(230.0f, 490.0f);
+            primitiveVisualMap5.PositionPolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap5.SizePolicy = VisualTransformPolicyType.Absolute;
+            primitiveVisualMap5.Origin = Visual.AlignType.TopBegin;
+            primitiveVisualMap5.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("primitiveVisual5", primitiveVisualMap5);
+
+            /* mesh visual nothing show. */
+            MeshVisual meshVisualMap1 = new MeshVisual();
+            meshVisualMap1.ObjectURL = resources + "/models/Dino.obj";
+            meshVisualMap1.MaterialtURL = resources + "/models/Dino.mtl";
+            meshVisualMap1.TexturesPath = resources + "/images/";
+            meshVisualMap1.ShadingMode = MeshVisualShadingModeValue.TexturedWithSpecularLighting;
+
+            meshVisualMap1.Size = new Size2D(400, 400);
+            meshVisualMap1.Position = new Position2D(-50, 600);
+            meshVisualMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            meshVisualMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            meshVisualMap1.Origin = Visual.AlignType.TopBegin;
+            meshVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            _visualView.AddVisual("meshVisual1", meshVisualMap1);
+
+            /* n-patch image visual 1. */
+            npatchImageVisualMap1 = new NPatchVisual();
+            npatchImageVisualMap1.URL = resources + "/images/gallery-4.jpg";
+            npatchImageVisualMap1.Size = new Size2D(400, 400);
+            npatchImageVisualMap1.Position = new Position2D(300, 600);
+            npatchImageVisualMap1.PositionPolicyX = VisualTransformPolicyType.Absolute;
+            npatchImageVisualMap1.PositionPolicyY = VisualTransformPolicyType.Absolute;
+            npatchImageVisualMap1.SizePolicyWidth = VisualTransformPolicyType.Absolute;
+            npatchImageVisualMap1.SizePolicyHeight = VisualTransformPolicyType.Absolute;
+            npatchImageVisualMap1.Origin = Visual.AlignType.TopBegin;
+            npatchImageVisualMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            npatchImageVisualMap1.Border = new Rectangle(100, 100, 100, 100);
+            _visualView.AddVisual("npatchImageVisual1", npatchImageVisualMap1);
+
+            _window = Window.Instance;
+            _window.FocusChanged += (sender, ee) =>
+            {
+                cnt++;
+                Tizen.Log.Debug("NUI", "[WindowFocusTest] WindowFocusChanged event comes! focus gained=" + ee.FocusGained);
+                imageVisualMap1.Size += new Size2D(50, 50);
+                imageVisualMap1.Position += new Vector2(20.0f, 20.0f);
+
+                textVisualMap1.Text = "Hello Goodbye" + cnt;
+                textVisualMap1.PointSize = 10.0f + (float)(cnt);
+
+                npatchImageVisualMap1.URL = resources + "/images/gallery-" + (cnt % 5) + ".jpg";
+
+                borderVisualMap1.BorderSize = 1.0f + (float)cnt;
+            };
+
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+            _window.SetAcceptFocus(false);
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] set focus acceptable=false!!!");
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+            _window.SetAcceptFocus(true);
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] set focus acceptable=true!!!");
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+
+
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/visual-view-test2.cs b/test/NUITestSample/NUITestSample/examples/visual-view-test2.cs
new file mode 100755 (executable)
index 0000000..659e9ba
--- /dev/null
@@ -0,0 +1,289 @@
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+
+namespace VisualViewTest2
+{
+    public class VisualSample : NUIApplication
+    {
+        const int num = 2;
+        VisualView[] view;
+
+        TextLabel guide;
+        ImageVisual imageMap;
+        ImageVisual imageMap2;
+
+        ImageVisual highlightImageMap;
+        ImageVisual dimImageMap;
+
+        TextVisual textMap1;
+        TextVisual textMap2;
+
+        Window _window;
+
+        int imgIndex;
+
+        readonly string resourcePath = "/home/owner/apps_rw/NUISamples.TizenTV/res/images/";
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            view = new VisualView[2];
+
+            for (int i = 0; i < num; i++)
+            {
+                view[i] = new VisualView();
+                view[i].Size2D = new Size2D(600, 600);
+                view[i].BackgroundColor = Color.Blue;
+                view[i].Position = new Position(400 + i * 800, 600, 0);
+                view[i].Focusable = true;
+                view[i].Name = "MyView" + i;
+                Window.Instance.Add(view[i]);
+                view[i].FocusGained += VisualSample_FocusGained;
+                view[i].FocusLost += VisualSample_FocusLost;
+                view[i].KeyEvent += VisualSample_KeyEvent;
+            }
+
+            view[0].RightFocusableView = view[1];
+            view[1].LeftFocusableView = view[0];
+
+            imageMap = new ImageVisual();
+            imageMap.URL = resourcePath + "gallery-" + imgIndex++ + ".jpg";
+            imageMap.AnchorPoint = Visual.AlignType.TopBegin;
+            imageMap.Origin = Visual.AlignType.TopBegin;
+            imageMap.Position = new Vector2(0, 0);
+            imageMap.PositionPolicy = VisualTransformPolicyType.Absolute;
+            imageMap.Size = new Size2D(500, 500);
+            imageMap.SizePolicy = VisualTransformPolicyType.Absolute;
+            imageMap.DepthIndex = 0;
+            view[0].AddVisual("bgVisual", imageMap);
+
+
+            highlightImageMap = new ImageVisual();
+            highlightImageMap.URL = resourcePath + "star-highlight.png";
+            highlightImageMap.AnchorPoint = Visual.AlignType.TopBegin;
+            highlightImageMap.Origin = Visual.AlignType.TopBegin;
+            highlightImageMap.Size = new Vector2(40, 40);
+            highlightImageMap.SizePolicy = VisualTransformPolicyType.Absolute;
+            highlightImageMap.Position = new Vector2(10, 10);
+            highlightImageMap.PositionPolicy = VisualTransformPolicyType.Absolute;
+            highlightImageMap.DepthIndex = 1;
+            view[0].AddVisual("iconVisual", highlightImageMap);
+
+
+            textMap1 = new TextVisual();
+            textMap1.Text = "Hello";
+            textMap1.AnchorPoint = Visual.AlignType.TopBegin;
+            textMap1.Origin = Visual.AlignType.TopBegin;
+            textMap1.PointSize = 20;
+            textMap1.Position = new Vector2(60, 210);
+            textMap1.PositionPolicy = VisualTransformPolicyType.Absolute;
+            textMap1.Size = new Vector2(600, 200);
+            textMap1.SizePolicy = VisualTransformPolicyType.Absolute;
+            textMap1.TextColor = Color.Red;
+            textMap1.DepthIndex = 5;
+            view[0].AddVisual("textVisual", textMap1);
+
+
+
+            imageMap2 = new ImageVisual();
+            imageMap2.URL = resourcePath + "gallery-" + imgIndex + ".jpg";
+            imageMap2.AnchorPoint = Visual.AlignType.TopBegin;
+            imageMap2.Origin = Visual.AlignType.TopBegin;
+            imageMap2.Position = new Vector2(0, 0);
+            imageMap2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            imageMap2.Size = new Vector2(500, 500);
+            imageMap2.SizePolicy = VisualTransformPolicyType.Absolute;
+            imageMap2.DepthIndex = 0;
+            view[1].AddVisual("bgVisual", imageMap2);
+
+            dimImageMap = new ImageVisual();
+            dimImageMap.URL = resourcePath + "star-dim.png";
+            dimImageMap.Size = new Vector2(40, 40);
+            dimImageMap.SizePolicy = VisualTransformPolicyType.Absolute;
+            dimImageMap.AnchorPoint = Visual.AlignType.TopBegin;
+            dimImageMap.Origin = Visual.AlignType.TopBegin;
+            dimImageMap.Position = new Vector2(10, 10);
+            dimImageMap.PositionPolicy = VisualTransformPolicyType.Absolute;
+            dimImageMap.DepthIndex = 1;
+            view[1].AddVisual("iconVisual", dimImageMap);
+
+            textMap2 = new TextVisual();
+            textMap2.Text = "I'm";
+            textMap2.PointSize = 20;
+            textMap2.AnchorPoint = Visual.AlignType.TopBegin;
+            textMap2.Origin = Visual.AlignType.TopBegin;
+            textMap2.Position = new Vector2(60, 210);
+            textMap2.PositionPolicy = VisualTransformPolicyType.Absolute;
+            textMap2.Size = new Vector2(600, 200);
+            textMap2.SizePolicy = VisualTransformPolicyType.Absolute;
+            textMap2.TextColor = Color.Black;
+            textMap2.DepthIndex = 5;
+            view[1].AddVisual("textVisual", textMap2);
+
+
+            guide = new TextLabel();
+            guide.PivotPoint = PivotPoint.TopLeft;
+            guide.Size2D = new Size2D(800, 200);
+            guide.Padding = new Vector4(50, 50, 50, 50);
+            guide.MultiLine = true;
+            guide.BackgroundColor = Color.Magenta;
+            guide.PointSize = 10;
+            guide.TextColor = Color.Black;
+            guide.Text = "Left/Right - Move focus\n" +
+                "Up/Down - Change Text\n" +
+                "Enter - Change BG image\n";
+            Window.Instance.Add(guide);
+
+            Window.Instance.KeyEvent += Instance_Key;
+            FocusManager.Instance.SetCurrentFocusView(view[0]);
+            Window.Instance.TouchEvent += Instance_Touch;
+            _window = Window.Instance;
+            _window.FocusChanged += _window_WindowFocusChanged;
+
+        }
+
+        private void _window_WindowFocusChanged(object sender, Window.FocusChangedEventArgs e)
+        {
+            Tizen.Log.Fatal("NUI", "window focus changed!() focus gained=" + e.FocusGained);
+        }
+
+        private void Instance_Touch(object sender, Window.TouchEventArgs e)
+        {
+            FocusManager.Instance.SetCurrentFocusView(view[0]);
+        }
+
+        private bool VisualSample_KeyEvent(object source, View.KeyEventArgs e)
+        {
+            Tizen.Log.Fatal("NUI", "View_KeyEvent" + e.Key.State.ToString() + ", Pressed-" + e.Key.KeyPressedName);
+
+            if (e.Key.State == Key.StateType.Down)
+            {
+                if (source.Equals(view[0]))
+                {
+                    if (e.Key.KeyPressedName == "Up")
+                    {
+                        textMap1.PointSize = 14;
+                        textMap1.TextColor = Color.Red;
+                        textMap1.Text = "Hello NY!";
+                        //this.VersionCheckTest();
+                        /*
+                           DALI_KEY_VOLUME_UP      = 200,      ///< Volume up key @SINCE_1_0.0
+                           DALI_KEY_VOLUME_DOWN    = 201,       ///< Volume down key @SINCE_1_0.0
+                        */
+                        try
+                        {
+                            Tizen.Log.Fatal("NUI", "GrabKeyTopmost (200==vol up) ret=" + _window.GrabKeyTopmost(200));
+                        }
+                        catch (Exception except)
+                        {
+                            Tizen.Log.Fatal("NUI", "Exception!!! GrabKeyTopmost (200==vol up) msg=" + except.Message);
+                        }
+
+                    }
+                    else if (e.Key.KeyPressedName == "Down")
+                    {
+                        textMap1.PointSize = 17;
+                        textMap1.TextColor = Color.Blue;
+                        textMap1.Text = "Goodbye NY.";
+
+                        Tizen.Log.Fatal("NUI", "UngrabKeyTopmost (200==vol up) ret=" + _window.UngrabKeyTopmost(200));
+
+                    }
+                    else if (e.Key.KeyPressedName == "Return")
+                    {
+                        imgIndex = (imgIndex + 1) % 6;
+                        imageMap.URL = resourcePath + "gallery-" + imgIndex + ".jpg";
+                        //Tizen.Log.Fatal("NUI", "get native ecore wayland hander=" + _window.GetNativeWindowHandler());
+                    }
+
+                }
+                else
+                {
+                    if (e.Key.KeyPressedName == "Up")
+                    {
+                        textMap2.PointSize = 14;
+                        textMap2.TextColor = Color.Red;
+                        textMap2.Text = "I'm happy!";
+                        Tizen.Log.Fatal("NUI", "grab key (201==vol down) ret=" + _window.GrabKey(201, Window.KeyGrabMode.Topmost));
+                    }
+
+                    if (e.Key.KeyPressedName == "Down")
+                    {
+                        textMap2.PointSize = 17;
+                        textMap2.TextColor = Color.Blue;
+                        textMap2.Text = "I'm unhappy";
+                        Tizen.Log.Fatal("NUI", "ungrab key (201==vol down) ret=" + _window.UngrabKey(201));
+                    }
+                    else if (e.Key.KeyPressedName == "Return")
+                    {
+                        imgIndex = (imgIndex + 1) % 6;
+                        imageMap2.URL = resourcePath + "gallery-" + imgIndex + ".jpg";
+                        //Tizen.Log.Fatal("NUI", "get native ecore wayland hander=" + _window.GetNativeWindowHandler());
+                    }
+                }
+            }
+            return false;
+        }
+
+        private void Instance_Key(object sender, Window.KeyEventArgs e)
+        {
+            View currentFocusView = FocusManager.Instance.GetCurrentFocusView();
+
+            Tizen.Log.Fatal("NUI", "Window_KeyEvent" + e.Key.State.ToString() + ", Pressed-" + e.Key.KeyPressedName);
+            //Tizen.Log.Fatal("NUI", " CurrentFocusView : " + currentFocusView.HasBody() + currentFocusView?.Name);
+        }
+
+        private void VisualSample_FocusLost(object sender, EventArgs e)
+        {
+            VisualView view = sender as VisualView;
+            view.BackgroundColor = Color.Green;
+            view.Scale = new Vector3(1.0f, 1.0f, 1.0f);
+
+            view.AddVisual("iconVisual", dimImageMap);
+
+            if (view.Name == "MyView1")
+            {
+                imageMap2.MixColor = new Color(1, 0, 0, 0.5f);
+                imageMap2.Opacity = 0.5f;
+            }
+            else if (view.Name == "MyView0")
+            {
+                imageMap.MixColor = new Color(1, 0, 0, 0.5f);
+                imageMap.Opacity = 0.5f;
+            }
+
+            Tizen.Log.Fatal("NUI", "FocusLost-" + view.Name);
+        }
+
+        private void VisualSample_FocusGained(object sender, EventArgs e)
+        {
+            VisualView view = sender as VisualView;
+            view.BackgroundColor = Color.Yellow;
+            view.Scale = new Vector3(1.2f, 1.2f, 1.0f);
+
+            view.AddVisual("iconVisual", highlightImageMap);
+
+            if (view.Name == "MyView1")
+            {
+                imageMap2.MixColor = new Color(1, 1, 1, 1);
+                imageMap2.Opacity = 1.0f;
+            }
+            else if (view.Name == "MyView0")
+            {
+                imageMap.MixColor = new Color(1, 1, 1, 1);
+                imageMap.Opacity = 1.0f;
+            }
+
+            Tizen.Log.Fatal("NUI", "FocusGained-" + view.Name);
+        }
+
+        static void _Main(string[] args)
+        {
+            VisualSample sample = new VisualSample();
+            sample.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/examples/visual-view-test3.cs b/test/NUITestSample/NUITestSample/examples/visual-view-test3.cs
new file mode 100755 (executable)
index 0000000..ea9205a
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using Tizen.NUI.BaseComponents;
+
+namespace VisualViewTest3
+{
+    // An example of Visual View control.
+    class Example : NUIApplication
+    {
+        private VisualView _visualView = null;
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+        private Window _window;
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private ImageVisual imageVisualMap1;
+        private ImageVisual imageVisualMap2;
+        private int cnt;
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+
+            /* Create a visual view. */
+            _visualView = new VisualView();
+            _visualView.ParentOrigin = ParentOrigin.TopLeft;
+            _visualView.PivotPoint = PivotPoint.TopLeft;
+            _visualView.Size2D = new Size2D(window.Size.Width, window.Size.Height);
+
+            /* color visual */
+            ColorVisual colorVisualMap1 = new ColorVisual();
+            colorVisualMap1.Color = Color.Green;
+            _visualView.Background = colorVisualMap1.OutputVisualMap;
+
+            window.Add(_visualView);
+
+            /* image visual 1. No transform setting case. */
+            imageVisualMap1 = new ImageVisual();
+            imageVisualMap1.URL = resources + "/images/image-1.jpg";
+            imageVisualMap1.DepthIndex = 1;
+            //_visualView.AddVisual("imageVisual1", imageVisualMap1);
+
+            /* image visual 2. Using RelativePosition and SizePolicyWidth setting case. */
+            imageVisualMap2 = new ImageVisual();
+            imageVisualMap2.URL = resources + "/images/image-2.jpg";
+            /* Using Size, you can set SizePolicyWidth and SizePolicyHeight separately, default by relative. */
+            imageVisualMap2.Size = new Vector2(400.0f, 0.3f);
+            /* Using RelativePosition, then PositionPolicyX and PositionPolicyY will be relative. */
+            imageVisualMap2.RelativePosition = new Vector2(0.1f, 0.1f);
+            imageVisualMap2.SizePolicyWidth = VisualTransformPolicyType.Absolute;
+            imageVisualMap2.Origin = Visual.AlignType.TopBegin;
+            imageVisualMap2.AnchorPoint = Visual.AlignType.TopBegin;
+            /* Ensure imageVisual show  */
+            imageVisualMap2.DepthIndex = 9;
+            _visualView.AddVisual("imageVisual2", imageVisualMap2);
+            /* If imageVisual2 added first, the it will be covered by imageVisual1.
+               so, we need to set their depth index to ensure they all can be showed.
+             */
+            _visualView.AddVisual("imageVisual1", imageVisualMap1);
+
+            _window = Window.Instance;
+            _window.FocusChanged += (sender, ee) =>
+            {
+                cnt++;
+                Tizen.Log.Debug("NUI", "[WindowFocusTest] WindowFocusChanged event comes! focus gained=" + ee.FocusGained);
+            };
+
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+            _window.SetAcceptFocus(false);
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] set focus acceptable=false!!!");
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+            _window.SetAcceptFocus(true);
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] set focus acceptable=true!!!");
+            Tizen.Log.Debug("NUI", "[WindowFocusTest] is focus acceptable=" + _window.IsFocusAcceptable());
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visuals-example.cs b/test/NUITestSample/NUITestSample/examples/visuals-example.cs
new file mode 100755 (executable)
index 0000000..8c0a724
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using Tizen.NUI.BaseComponents;
+
+namespace VisualsExampleTest
+{
+    class Example : NUIApplication
+    {
+        private TextLabel _title;
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
+        public Example() : base()
+        {
+        }
+
+        public Example(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TableView contentLayout = new TableView(4, 1);
+            contentLayout.Name = ("ContentLayout");
+            contentLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+            contentLayout.SetCellPadding(new Size2D(0, 5));
+            contentLayout.BackgroundColor = Color.Red;//new Color(0.949f, 0.949f, 0.949f, 1.0f);
+
+            window.Add(contentLayout);
+
+            _title = new TextLabel("Visuals Example");
+            _title.Name = "Title";
+            _title.StyleName = "Title";
+            _title.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _title.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            _title.HorizontalAlignment = HorizontalAlignment.Center;
+            _title.BackgroundColor = Color.Yellow;
+            contentLayout.Add(_title);
+            contentLayout.SetFitHeight(0);
+
+            // Color Visual example
+            ImageView colorView = new ImageView();
+            //colorView.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            //colorView.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            // PropertyMap colorVisual = new PropertyMap();
+            // colorVisual.Add( Visual.Property.Type, new PropertyValue( (int)Visual.Type.Color ))
+            //            .Add( ColorVisualProperty.MixColor, new PropertyValue( Color.Green ));
+            //colorView.Background = colorVisual;
+            colorView.Size2D = new Size2D(500, 200);
+            colorView.ResourceUrl = resources+"/images/00_popup_bg.9.png";
+            colorView.Border = new Rectangle(100, 100, 100, 100);
+           // colorView.
+            // PropertyMap _map = new PropertyMap();
+            // _map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch));
+            // _map.Add(NpatchImageVisualProperty.URL, new PropertyValue(resources+"/images/00_popup_bg.9.png"));
+            // _map.Add(NpatchImageVisualProperty.Border, new PropertyValue(new Rectangle(100, 100, 100, 100)));
+             //_map.Add(NpatchImageVisualProperty.BorderOnly, new PropertyValue(true));
+            //colorView.Background = _map;
+            contentLayout.Add(colorView);
+
+            // Image Visual example
+            View imageView = new View();
+            imageView.WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+            imageView.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            PropertyMap imageVisual = new PropertyMap();
+            imageVisual.Add( Visual.Property.Type, new PropertyValue( (int)Visual.Type.Image ));
+            imageVisual.Add(ImageVisualProperty.URL,  new PropertyValue( resources + "/images/gallery-0.jpg" ));
+            imageView.Background = imageVisual;
+            contentLayout.SetCellAlignment(new TableView.CellPosition(2, 0), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);
+            contentLayout.Add(imageView);
+            for(int i =1; i<=5; i++)
+            {
+                PropertyMap imageVisual1 = new PropertyMap();
+                imageVisual1.Add( Visual.Property.Type, new PropertyValue( (int)Visual.Type.Image ));
+                imageVisual1.Add(ImageVisualProperty.URL,  new PropertyValue( resources + "/images/gallery-"+i+".jpg" ));
+                imageView.Background = imageVisual1;
+            }
+
+            // Primitive Visual example
+            View primitiveView = new View();
+            primitiveView.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            primitiveView.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            PropertyMap primitiveVisual = new PropertyMap();
+            primitiveVisual.Add( Visual.Property.Type, new PropertyValue( (int)Visual.Type.Primitive ))
+                           .Add( PrimitiveVisualProperty.Shape, new PropertyValue((int)PrimitiveVisualShapeType.BevelledCube))
+                           .Add( PrimitiveVisualProperty.BevelPercentage, new PropertyValue(0.3f))
+                           .Add( PrimitiveVisualProperty.BevelSmoothness, new PropertyValue(0.0f))
+                           .Add( PrimitiveVisualProperty.ScaleDimensions, new PropertyValue(new Vector3(1.0f,1.0f,0.3f)))
+                           .Add( PrimitiveVisualProperty.MixColor, new PropertyValue(new Vector4(0.7f, 0.5f, 0.05f, 1.0f)));
+            primitiveView.Background = primitiveVisual;
+            Radian rad = new Radian(new Degree(45.0f));
+            primitiveView.Orientation = new Rotation(rad, Vector3.YAxis);
+            contentLayout.Add(primitiveView);
+
+            // Text Visual example
+            View textView = new View();
+            textView.WidthResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            textView.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            PropertyMap textVisual = new PropertyMap();
+            textVisual.Add( Visual.Property.Type, new PropertyValue( (int)Visual.Type.Text ))
+                      .Add( TextVisualProperty.Text, new PropertyValue("I am text visual"))
+                      .Add( TextVisualProperty.TextColor, new PropertyValue(Color.Blue))
+                      .Add( TextVisualProperty.PointSize, new PropertyValue(20));
+            textView.Background = textVisual;
+            contentLayout.Add(textView);
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example( resources + "/json/style-example-theme-one.json");
+            example.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactData.cs b/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactData.cs
new file mode 100755 (executable)
index 0000000..9a3b9a8
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+
+namespace VisualsUsingCustomView
+{
+    // The collection of contacts
+    static class ContactsList
+    {
+        private const string resources = "/home/SERILOCAL/david.steele/Git/Tizen/nui/NUISamples/NUISamples/NUISamples.TizenTV/res";
+
+        public static readonly ContactItem[] s_contactData = new ContactItem[]
+        {
+            new ContactItem ("Emmett Yates", resources + "/images/gallery-small-43.jpg",
+                             resources + "/images/mask.png",
+                             new Color((73.0f/255.0f),(182.0f/255.0f), (245.0f/255.0f), 1.0f),
+                             (int)PrimitiveVisualShapeType.Cone),
+            new ContactItem ("Leslie Wong", resources+ "/images/gallery-2.jpg",
+                             resources + "/images/mask.png",
+                             new Color((51.0f/255.0f), (51.0f/255.0f), (102.0f/255.0f), 1.0f),
+                             (int)PrimitiveVisualShapeType.Sphere),
+            new ContactItem ("Walter Jensen", resources+ "/images/gallery-0.jpg",
+                             resources + "/images/mask.png",
+                             new Color((151.0f/255.0f), (214.0f/255.0f), (240.0f/255.0f), 1.0f),
+                             (int)PrimitiveVisualShapeType.Cylinder),
+            new ContactItem ("Dan Haynes", resources+"/images/gallery-1.jpg",
+                             resources + "/images/mask.png",
+                             new Color((102.0f/255.0f), (251.0f/255.0f), (102.0f/255.0f), 1.0f),
+                             (int)PrimitiveVisualShapeType.ConicalFrustrum),
+            new ContactItem ("Mable Hodges", resources+"/images/gallery-3.jpg",
+                             resources + "/images/mask.png",
+                             new Color((255.0f/255.0f), (102.0f/255.0f), (102.0f/255.0f), 1.0f),
+                             (int)PrimitiveVisualShapeType.Cube)
+        };
+    }
+
+    // The information for an individual contact
+    class ContactItem
+    {
+        private string _name;
+        private string _imageURL;
+        private Color _color;
+        private int _shape;
+        private string _maskURL;
+
+        public ContactItem(string name, string imageURL, string maskURL, Color color, int shape)
+        {
+            _name = name;
+            _imageURL = imageURL;
+            _maskURL = maskURL;
+            _color = color;
+            _shape = shape;
+        }
+
+        public string ImageURL
+        {
+            get
+            {
+                return _imageURL;
+            }
+            set
+            {
+                _imageURL = value;
+            }
+        }
+        public string MaskURL
+        {
+            get
+            {
+                return _maskURL;
+            }
+            set
+            {
+                _maskURL = value;
+            }
+        }
+
+        public string Name
+        {
+            get
+            {
+                return _name;
+            }
+            set
+            {
+                _name = value;
+            }
+        }
+
+        public Color Color
+        {
+            get
+            {
+                return _color;
+            }
+            set
+            {
+                _color = value;
+            }
+        }
+
+        public int Shape
+        {
+            get
+            {
+                return _shape;
+            }
+            set
+            {
+                _shape = value;
+            }
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactView.cs b/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/ContactView.cs
new file mode 100755 (executable)
index 0000000..52995a7
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using Tizen.NUI.BaseComponents;
+
+// A ContactView is a Custom View which consists of four visuals (Image, Primitive, Text and Color).
+// All of these visuals can be configured via properties - ImageURL (Image), Shape (Primitive), Name (Text) and Color.
+// Tap gesture is also enabled on the ContactView which changes the color visual to some random color when ContactView is tapped.
+
+namespace VisualsUsingCustomView
+{
+    public class ContactView : CustomView
+    {
+        private VisualBase _imageVisual;
+        private VisualBase _primitiveVisual;
+        private VisualBase _textVisual;
+        private int _shape;
+        private string _imageURL;
+        private string _maskURL;
+        private string _name;
+        private Color _color;
+
+        static CustomView CreateInstance()
+        {
+            return new ContactView();
+        }
+
+        static ContactView()
+        {
+            CustomViewRegistry.Instance.Register( CreateInstance, typeof(ContactView));
+        }
+
+        public ContactView() : base( typeof(ContactView).FullName, CustomViewBehaviour.RequiresKeyboardNavigationSupport)
+        {
+        }
+
+        public string MaskURL
+        {
+            get { return _maskURL; }
+            set { _maskURL=value; }
+        }
+
+        [ScriptableProperty()]
+        public string ImageURL
+        {
+            get
+            {
+                return _imageURL;
+            }
+            set
+            {
+                _imageURL = value;
+
+                ImageVisual imageVisual = new ImageVisual();
+                imageVisual.URL = value;
+                imageVisual.AlphaMaskURL = _maskURL;
+                //imageVisual.MaskContentScale = 1.6f;
+                //imageVisual.CropToMask = true;
+                ImageVisual = imageVisual.OutputVisualMap;
+            }
+        }
+
+        [ScriptableProperty()]
+        public PropertyMap ImageVisual
+        {
+            //get
+            //{
+            //    return _imageVisual.Creation;
+            //}
+            set
+            {
+                _imageVisual =  VisualFactory.Instance.CreateVisual( value );
+                RegisterVisual( GetPropertyIndex("ImageVisual"), _imageVisual );
+
+                // Set the depth index for Image visual
+                _imageVisual.DepthIndex = 30;
+            }
+        }
+
+        [ScriptableProperty()]
+        public string NameField
+        {
+            get
+            {
+                return _name;
+            }
+            set
+            {
+                _name = value;
+
+                // Create and Register Text Visual
+                TextVisual textVisual = new TextVisual();
+                textVisual.Text = _name;
+                textVisual.TextColor = Color.Black;
+                textVisual.PointSize = 12;
+                textVisual.HorizontalAlignment = HorizontalAlignment.Center;
+                textVisual.VerticalAlignment = VerticalAlignment.Center;
+                NameVisual = textVisual.OutputVisualMap;
+            }
+        }
+
+        [ScriptableProperty()]
+        public PropertyMap NameVisual
+        {
+            //get
+            //{
+            //    return _textVisual.Creation;
+            //}
+            set
+            {
+                _textVisual =  VisualFactory.Instance.CreateVisual( value );
+                RegisterVisual( GetPropertyIndex("NameVisual"), _textVisual );
+
+                // Set the depth index for Text visual
+                _textVisual.DepthIndex = 30;
+            }
+        }
+
+        [ScriptableProperty()]
+        public Color Color
+        {
+            get
+            {
+                return _color;
+            }
+            set
+            {
+                _color = value;
+                BackgroundColor = value;
+            }
+        }
+
+        [ScriptableProperty()]
+        public int Shape
+        {
+            get
+            {
+                return _shape;
+            }
+            set
+            {
+                _shape = value;
+
+                // Create and Register Primitive Visual
+                var primitiveVisual = new PrimitiveVisual();
+                primitiveVisual.Shape = (PrimitiveVisualShapeType)_shape;
+                primitiveVisual.BevelPercentage = 0.3f;
+                primitiveVisual.BevelSmoothness = 0.0f;
+                primitiveVisual.ScaleDimensions = new Vector3( 1.0f, 1.0f, 0.3f );
+                primitiveVisual.MixColor = new Vector4( (245.0f/255.0f), (188.0f/255.0f), (73.0f/255.0f), 1.0f);
+
+                ShapeVisual = primitiveVisual.OutputVisualMap;
+            }
+        }
+
+        [ScriptableProperty()]
+        public PropertyMap ShapeVisual
+        {
+            //get
+            //{
+            //    return _primitiveVisual.Creation;
+            //}
+            set
+            {
+                _primitiveVisual =  VisualFactory.Instance.CreateVisual( value );
+                RegisterVisual( GetPropertyIndex("ShapeVisual"), _primitiveVisual );
+
+                // Set the depth index for Primitive visual
+                _primitiveVisual.DepthIndex = 30;
+            }
+        }
+
+        public override void OnInitialize()
+        {
+            // Enable Tap gesture on ContactView
+            EnableGestureDetection(Gesture.GestureType.Tap);
+        }
+
+        public override void OnTap(TapGesture tap)
+        {
+            // Change the Color visual of ContactView with some random color
+            Random random = new Random();
+            float nextRed   = (random.Next(0, 256) / 255.0f);
+            float nextGreen = (random.Next(0, 256) / 255.0f);
+            float nextBlue  = (random.Next(0, 256) / 255.0f);
+            Animation anim = AnimateBackgroundColor( new Color( nextRed, nextGreen, nextBlue, 1.0f), 0, 2000 );
+            if( anim )
+                anim.Play();
+        }
+
+        public override void OnRelayout(Vector2 size, RelayoutContainer container)
+        {
+            // Configure the transform and size of Image visual.
+            PropertyMap imageVisualTransform = new PropertyMap();
+            imageVisualTransform.Add((int)VisualTransformPropertyType.Offset, new PropertyValue(new Vector2(10.0f, 0.0f)))
+                .Add((int)VisualTransformPropertyType.OffsetPolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute)))
+                .Add((int)VisualTransformPropertyType.SizePolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute)))
+                .Add((int)VisualTransformPropertyType.Size, new PropertyValue(new Vector2(40.0f, 40.0f)))
+                .Add((int)VisualTransformPropertyType.Origin, new PropertyValue((int)Visual.AlignType.CenterBegin))
+                .Add((int)VisualTransformPropertyType.AnchorPoint, new PropertyValue((int)Visual.AlignType.CenterBegin));
+            _imageVisual.SetTransformAndSize(imageVisualTransform, size);
+
+            // Configure the transform and size of Text visual.
+            PropertyMap textVisualTransform = new PropertyMap();
+            textVisualTransform.Add((int)VisualTransformPropertyType.Offset, new PropertyValue(new Vector2(0.0f, 0.0f)))
+                .Add((int)VisualTransformPropertyType.OffsetPolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Relative, (int)VisualTransformPolicyType.Relative)))
+                .Add((int)VisualTransformPropertyType.SizePolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute)))
+                .Add((int)VisualTransformPropertyType.Size, new PropertyValue(new Vector2(size.X - 100.0f, 50.0f)))
+                .Add((int)VisualTransformPropertyType.Origin, new PropertyValue((int)Visual.AlignType.Center))
+                .Add((int)VisualTransformPropertyType.AnchorPoint, new PropertyValue((int)Visual.AlignType.Center));
+            _textVisual.SetTransformAndSize(textVisualTransform, size);
+
+            // Configure the transform and size of Primitive visual.
+            PropertyMap primitiveVisualTransform = new PropertyMap();
+            primitiveVisualTransform.Add((int)VisualTransformPropertyType.Offset, new PropertyValue(new Vector2(size.X - 60.0f, 0.0f)))
+                .Add((int)VisualTransformPropertyType.OffsetPolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute)))
+                .Add((int)VisualTransformPropertyType.SizePolicy, new PropertyValue(new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute)))
+                .Add((int)VisualTransformPropertyType.Size, new PropertyValue(new Vector2(40.0f, 40.0f)))
+                .Add((int)VisualTransformPropertyType.Origin, new PropertyValue((int)Visual.AlignType.CenterBegin))
+                .Add((int)VisualTransformPropertyType.AnchorPoint, new PropertyValue((int)Visual.AlignType.CenterBegin));
+            _primitiveVisual.SetTransformAndSize(primitiveVisualTransform, size);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/visuals-using-custom-view.cs b/test/NUITestSample/NUITestSample/examples/visuals-using-custom-view/visuals-using-custom-view.cs
new file mode 100755 (executable)
index 0000000..be327fe
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+namespace VisualsUsingCustomView
+{
+    class VisualsExample : NUIApplication
+    {
+        public VisualsExample() : base()
+        {
+        }
+
+        public VisualsExample(string stylesheet) : base(stylesheet)
+        {
+        }
+
+        public VisualsExample(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
+        {
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            TableView contentLayout = new TableView(14, 1);
+            contentLayout.Name = "ContentLayout";
+            //contentLayout.WidthResizePolicy = ResizePolicyType.FillToParent;
+            //contentLayout.HeightResizePolicy = ResizePolicyType.FillToParent;
+            contentLayout.PivotPoint = PivotPoint.TopLeft;
+            contentLayout.ParentOrigin = ParentOrigin.TopLeft;
+            contentLayout.Size2D = new Vector2(window.Size.Width, window.Size.Height);
+            contentLayout.SetCellPadding(new Size2D(5, 5));
+            contentLayout.BackgroundColor = new Color(0.949f, 0.949f, 0.949f, 1.0f);
+
+            window.Add(contentLayout);
+
+            TextLabel title = new TextLabel("Contacts List with Visuals");
+            title.Name = "Title";
+            title.StyleName = "Title";
+            title.WidthResizePolicy = ResizePolicyType.FillToParent;
+            title.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            title.HorizontalAlignment = HorizontalAlignment.Center;
+            contentLayout.Add(title);
+            contentLayout.SetFitHeight(0);
+
+            // Create ContactView(s) from ContactItem(s) in ContactsList and add them to TableView
+            ContactView contactView;
+            foreach (ContactItem contact in ContactsList.s_contactData)
+            {
+                contactView = new ContactView();
+                contactView.WidthResizePolicy = ResizePolicyType.FillToParent;
+                contactView.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+                // Configure visuals of ContactView via properties
+                contactView.NameField = contact.Name;
+                contactView.MaskURL = contact.MaskURL;
+                contactView.ImageURL = contact.ImageURL;
+                contactView.Color = contact.Color;
+                contactView.Shape = contact.Shape;
+                contentLayout.Add(contactView);
+            }
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            VisualsExample visualsExample = new VisualsExample();
+            visualsExample.Run(args);
+        }
+    }
+}
diff --git a/test/NUITestSample/NUITestSample/examples/widget-view-test.cs b/test/NUITestSample/NUITestSample/examples/widget-view-test.cs
new file mode 100755 (executable)
index 0000000..521e376
--- /dev/null
@@ -0,0 +1,105 @@
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+
+namespace WidgetViewTest
+{
+    class Example : NUIApplication
+    {
+        private PushButton _widgetButton;
+        private PushButton _deletedButton;
+        private WidgetView _widgetView;
+        private WidgetViewManager _widgetViewManager;
+        private View _container;
+        private string _instanceID;
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        protected override void OnTerminate()
+        {
+            //This function is called when the app exit normally.
+            base.OnTerminate();
+        }
+
+        public void Initialize()
+        {
+            Window window = Window.Instance;
+            window.BackgroundColor = Color.White;
+
+            Tizen.Log.Debug("NUI", "### DP1");
+            Layer layer = new Layer();
+            layer.Behavior = Layer.LayerBehavior.Layer3D;
+            window.AddLayer(layer);
+            Tizen.Log.Debug("NUI", "### DP2");
+            _container = new View();
+            _container.ParentOrigin = ParentOrigin.Center;
+            _container.PivotPoint = PivotPoint.Center;
+            _container.Size2D = new Size2D(400, 400);
+            Tizen.Log.Debug("NUI", "### DP3");
+            _widgetButton = new PushButton();
+            _widgetButton.LabelText = "Widget";
+            _widgetButton.ParentOrigin = ParentOrigin.BottomLeft;
+            _widgetButton.PivotPoint = PivotPoint.BottomLeft;
+            _widgetButton.PositionUsesAnchorPoint = true;
+            _widgetButton.Size2D = new Size2D(200, 100);
+            window.Add(_widgetButton);
+            _widgetButton.Clicked += (obj, e) =>
+            {
+                _widgetView = _widgetViewManager.AddWidget("widget-efl.example", "", 450, 700, -1);
+                //_widgetView.PositionUsesPivotPoint = true;
+                //_widgetView.ParentOrigin = ParentOrigin.Center;
+                _widgetView.PivotPoint = PivotPoint.TopLeft;
+                _widgetView.PositionUsesAnchorPoint = true;
+                _widgetView.BackgroundColor = Color.Yellow;
+                _widgetView.WidgetAdded += (sender, eargs) =>
+                {
+                    _widgetButton.LabelText = "Quit";
+                    window.Add(_widgetView);
+                };
+                _widgetView.WidgetDeleted += (sender, eargs) =>
+                {
+                    window.Remove(_widgetView);
+                    _widgetButton.LabelText = "Button";
+                };
+                _instanceID = _widgetView.InstanceID;
+                return false;
+            };
+
+            _deletedButton = new PushButton();
+            _deletedButton.LabelText = "Buton";
+            _deletedButton.ParentOrigin = ParentOrigin.BottomRight;
+            _deletedButton.PivotPoint = PivotPoint.BottomRight;
+            _deletedButton.PositionUsesAnchorPoint = true;
+            _deletedButton.Size2D = new Size2D(200, 100);
+            window.Add(_deletedButton);
+            _deletedButton.Clicked += (obj, e) =>
+            {
+                OnTerminate();
+                return true;
+            };
+
+            layer.Add(_container);
+            Tizen.Log.Debug("NUI", "### widget view manager create start");
+            _widgetViewManager = new WidgetViewManager(this, "org.tizen.example.NUISamples.TizenTV");
+            if (!_widgetViewManager)
+            {
+                Tizen.Log.Fatal("NUI", "### Widget is not enabled!");
+            }
+
+            Tizen.Log.Debug("NUI", "### widget view manager create sucess");
+        }
+
+        [STAThread]
+        static void _Main(string[] args)
+        {
+            Example example = new Example();
+            example.Run(args);
+        }
+    }
+}
+
diff --git a/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_color.png b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_color.png
new file mode 100755 (executable)
index 0000000..3930181
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_color.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_gloss.png b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_gloss.png
new file mode 100755 (executable)
index 0000000..0e6c958
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_gloss.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_nmap.png b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_nmap.png
new file mode 100755 (executable)
index 0000000..c2d4bf4
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/Dino-Painted_lambert2SG_nmap.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_color.png b/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_color.png
new file mode 100755 (executable)
index 0000000..5ee5d2c
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_color.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_nmap.png b/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_nmap.png
new file mode 100755 (executable)
index 0000000..361603c
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/Dino2_lambert2SG_nmap.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/Kid1.svg b/test/NUITestSample/NUITestSample/res/images/Kid1.svg
new file mode 100755 (executable)
index 0000000..b7d5476
--- /dev/null
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 306.90988 416.79828"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="Kid1.svg"><metadata
+     id="metadata185"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs183" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview181"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.28032166"
+     inkscape:cx="152.20465"
+     inkscape:cy="184.87264"
+     inkscape:window-x="75"
+     inkscape:window-y="34"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 192.28065,343.14765 c 0,0 -4.5,75.5 37.5,71 42,-4.5 11.5,-75.5 11.5,-75.5 l -49,4.5 z"
+     id="path3"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 229.78065,414.14765 c 24.024,-2.574 24.325,-26.903 20.184,-47.259 l -56.117,5.805 c 3.172,20.614 12.003,44.018 35.933,41.454 z"
+     id="path5"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 113.60765,343.14765 c 0,0 -23.087995,69 14,73 37.088,4 48,-73 48,-73 h -62 z"
+     id="path7"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 169.15465,370.76265 -60.625,-7.118 c -3.745,20.685 -4.689,49.94 19.078,52.503 21.993,2.372 34.78,-23.738 41.547,-45.385 z"
+     id="path9"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 117.10565,371.73465 39.895,2.68 c 0,0 -7.065,27.803 -23.798,24.788 -16.733,-3.015 -16.097,-27.468 -16.097,-27.468 z"
+     id="path11"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 206.27865,381.65765 35.399,-5.164 c 0,0 2.531,26.234 -10.49,26.241 -18.543,0.011 -24.909,-21.077 -24.909,-21.077 z"
+     id="path13"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 121.49165,210.92765 c -24.560995,5.263 -52.631995,5.263 -52.631995,5.263 l 5.354,60.772 25.859995,-5.032 c 0,0 64.328,-18.197 62.574,-34.16 -2.104,-19.138 -16.595,-32.106 -41.156,-26.843 z"
+     id="path15"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#c1272d;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 231.14065,228.64765 c -10.143,-34.251 -65.789,-51.053 -65.789,-51.053 0,0 -19.298,28.07 -43.86,33.333 -1.209,0.259 -2.428,0.502 -3.65,0.736 l -20.035995,60.709 2.267995,-0.441 -16.300995,80.54 184.714995,-4.731 c 0,10e-4 -25.566,-79.313 -37.347,-119.093 z"
+     id="path17"
+     inkscape:connector-curvature="0" /><line
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="110.72466"
+     y1="311.29565"
+     x2="104.40065"
+     y2="352.30963"
+     id="line19" /><polygon
+     style="fill:#666666;stroke:#000000;stroke-miterlimit:10"
+     points="390.823,464.081 392.798,470.374 237.225,476.667 237.225,468.729 "
+     id="polygon21"
+     transform="translate(-145.43535,-189.01935)" /><linearGradient
+     id="SVGID_1_"
+     gradientUnits="userSpaceOnUse"
+     x1="317.35651"
+     y1="383.66669"
+     x2="317.35651"
+     y2="199.5519"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0"
+       style="stop-color:#402A04"
+       id="stop24" /><stop
+       offset="1"
+       style="stop-color:#7F5100"
+       id="stop26" /></linearGradient><path
+     style="fill:url(#SVGID_1_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="M 172.97165,196.01565 H 63.267655 c 0,0 -54.6040005,-192.1050008 109.704995,-188.5960008 164.309,3.5089998 106.414,188.5960008 106.414,188.5960008 h -106.415 z"
+     id="path28"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_2_"
+     gradientUnits="userSpaceOnUse"
+     x1="317.6879"
+     y1="298.16669"
+     x2="317.6879"
+     y2="399.66791"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop31" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop33" /></linearGradient><path
+     style="fill:url(#SVGID_2_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 93.798655,65.647649 c 0,0 -48.605,145.281001 77.692995,145.281001 126.298,0 80.202,-145.281001 80.202,-145.281001 H 93.798655 z"
+     id="path35"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_3_"
+     gradientUnits="userSpaceOnUse"
+     x1="316.33801"
+     y1="383.66669"
+     x2="316.33801"
+     y2="199.5519"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0"
+       style="stop-color:#402A04"
+       id="stop38" /><stop
+       offset="1"
+       style="stop-color:#7F5100"
+       id="stop40" /></linearGradient><path
+     style="fill:url(#SVGID_3_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 108.82665,29.573649 c 0,0 -37.535995,22.859 -34.316995,82.359001 h 62.920995 c 0,0 7.255,-35.965001 7.255,-31.786001 0,4.179 3.509,31.786001 3.509,31.786001 h 48.246 V 87.833649 l 8.772,24.099001 h 62.281 c 0,0 0,-53.553001 -28.63,-82.359001 -28.072,0.877 -130.037,0 -130.037,0 z"
+     id="path42"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_4_"
+     gradientUnits="userSpaceOnUse"
+     x1="195.0862"
+     y1="372.3811"
+     x2="217.894"
+     y2="516.99213"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0"
+       style="stop-color:#006178"
+       id="stop45" /><stop
+       offset="1"
+       style="stop-color:#00495C"
+       id="stop47" /></linearGradient><path
+     style="fill:url(#SVGID_4_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 111.64765,331.69965 -70.387995,13.196 c -6.487,1.216 -12.79,-3.096 -14.006,-9.583 L 1.8536545,199.83065 c -1.21599995,-6.487 3.096,-12.79 9.5830005,-14.006 l 70.388,-13.196 c 6.487,-1.216 12.79,3.096 14.006,9.583 l 25.399995,135.482 c 1.217,6.487 -3.096,12.79 -9.583,14.006 z"
+     id="path49"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_5_"
+     gradientUnits="userSpaceOnUse"
+     x1="197.17931"
+     y1="393.6586"
+     x2="218.5313"
+     y2="505.75641"><stop
+       offset="0"
+       style="stop-color:#6BBBD0"
+       id="stop52" /><stop
+       offset="1"
+       style="stop-color:#ACCCD4"
+       id="stop54" /></linearGradient><polygon
+     style="fill:url(#SVGID_5_);stroke:#000000;stroke-miterlimit:10"
+     points="179.836,514.167 159.336,399.948 236.336,387.667 254.336,498.167 "
+     id="polygon56"
+     transform="translate(-145.43535,-189.01935)" /><linearGradient
+     id="SVGID_6_"
+     gradientUnits="userSpaceOnUse"
+     x1="207.9456"
+     y1="466.41"
+     x2="201.4173"
+     y2="399.4946"><stop
+       offset="0"
+       style="stop-color:#FBCA51"
+       id="stop59" /><stop
+       offset="1"
+       style="stop-color:#FFECBF"
+       id="stop61" /></linearGradient><ellipse
+     style="fill:url(#SVGID_6_);stroke:#000000;stroke-miterlimit:10"
+     cx="205.43201"
+     cy="440.64801"
+     rx="28.959"
+     ry="28.080999"
+     id="ellipse63"
+     sodipodi:cx="205.43201"
+     sodipodi:cy="440.64801"
+     sodipodi:rx="28.959"
+     sodipodi:ry="28.080999"
+     transform="translate(-145.43535,-189.01935)" /><linearGradient
+     id="SVGID_7_"
+     gradientUnits="userSpaceOnUse"
+     x1="190.9269"
+     y1="427.96649"
+     x2="192.52139"
+     y2="436.33749"><stop
+       offset="0"
+       style="stop-color:#6BBBD0"
+       id="stop66" /><stop
+       offset="1"
+       style="stop-color:#ACCCD4"
+       id="stop68" /></linearGradient><line
+     style="fill:url(#SVGID_7_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="44.983662"
+     y1="238.97565"
+     x2="47.595661"
+     y2="247.29865"
+     id="line70" /><linearGradient
+     id="SVGID_8_"
+     gradientUnits="userSpaceOnUse"
+     x1="211.39799"
+     y1="423.5397"
+     x2="213.01559"
+     y2="432.0325"><stop
+       offset="0"
+       style="stop-color:#6BBBD0"
+       id="stop73" /><stop
+       offset="1"
+       style="stop-color:#ACCCD4"
+       id="stop75" /></linearGradient><line
+     style="fill:url(#SVGID_8_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="66.200653"
+     y1="234.40564"
+     x2="67.343658"
+     y2="243.13666"
+     id="line77" /><path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 47.595655,260.51865 c 0,0 0.653,13.22 15.831,9.14 15.178,-4.08 11.229,-15.994 11.229,-15.994"
+     id="path79"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_9_"
+     gradientUnits="userSpaceOnUse"
+     x1="247.2587"
+     y1="416.16669"
+     x2="247.2587"
+     y2="464.19009"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop82" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop84" /></linearGradient><path
+     style="fill:url(#SVGID_9_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 125.03565,225.81865 c 0,0 -54.844995,-4.046 -54.589995,5.391 0.255,9.437 21.359,3.668 20.849,8.259 -0.51,4.591 -10.173,3.424 -8.763,9.166 1.335,5.436 9.891,0.337 10.485,4.399 0.594,4.062 -7.944,4.738 -7.2,9.587 0.744,4.849 9.437,1.275 9.947,4.081 0.51,2.806 -5.959,4.099 -3.664,7.415 2.296,3.316 25.481995,4.532 36.820995,-0.784 11.531,-5.406 -3.885,-47.514 -3.885,-47.514 z"
+     id="path86"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 108.82665,147.75265 c 0,0 0.464,-21.64 21.464,-21.14 21,0.5 22,21.14 22,21.14"
+     id="path88"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 194.78965,147.75265 c 0,0 5.5,-23.64 25,-23.64 19.5,0 21.571,21 21.571,21"
+     id="path90"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="M 154.28965,177.59465"
+     id="path92"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 154.28965,177.59465 c 0,0 0.715,18.789 16.607,18.421 15.893,-0.368 12.893,-18.421 12.893,-18.421"
+     id="path94"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 228.94765,254.13365 c -2.38,6.629 -9.604,20.319 -44.933,26.513 -37.922,6.649 -56.122,-3.11 -56.122,-3.11 l -10.787,-59.329 c 0,0 37.312,5.696 53.792,4.439 16.48,-1.257 33.346,-5.764 33.346,-5.764 0,0 18.324,-4.366 23.904,8.074 5.579,12.439 3.538,21.552 0.8,29.177 z"
+     id="path96"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_10_"
+     gradientUnits="userSpaceOnUse"
+     x1="316.32571"
+     y1="383.66669"
+     x2="316.32571"
+     y2="199.5519"><stop
+       offset="0"
+       style="stop-color:#402A04"
+       id="stop99" /><stop
+       offset="1"
+       style="stop-color:#7F5100"
+       id="stop101" /></linearGradient><polygon
+     style="fill:url(#SVGID_10_)"
+     points="408.426,250.667 394.198,218.593 358.725,207.167 262.541,210.167 237.725,225.136 224.225,247.667 "
+     id="polygon103"
+     transform="translate(-145.43535,-189.01935)" /><polygon
+     style="fill:#c1272d;stroke:#000000;stroke-miterlimit:10"
+     points="399.167,290.713 428.616,269.855 394.694,225.136 365.225,225.136 354.191,247.667 404.225,254.667 "
+     id="polygon105"
+     transform="translate(-145.43535,-189.01935)" /><path
+     style="fill:#c1272d;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 245.96865,0.64764917 c -6.811,-2.50199997 -41.178,27.49999983 -36.678,36.49999983 4.5,9 39,21.5 39,21.5 l 13.209,-17.558 c -10e-4,0 -4.031,-36.2179998 -15.531,-40.44199983 z"
+     id="path107"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#c1272d;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 272.19765,55.502649 -13.408,15.144 c 0,0 9,36.500001 17.5,35.500001 8.5,-1 32,-21.720001 30,-31.408001 -2,-9.688 -34.092,-19.236 -34.092,-19.236 z"
+     id="path109"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#c1272d;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 243.78965,58.647649 c 0,0 13.418,-23.5 17.709,-22.5 4.291,1 15.093,16.043 15.791,19.356 0.698,3.313 -13,20.644 -18.5,19.144 -5.5,-1.5 -12.5,-10 -15,-16 z"
+     id="path111"
+     inkscape:connector-curvature="0" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="215.78966"
+     y1="36.11665"
+     x2="245.96864"
+     y2="54.967648"
+     id="line113" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="262.99066"
+     y1="73.483643"
+     x2="277.31567"
+     y2="96.647644"
+     id="line115" /><circle
+     style="opacity:0.2;fill:#d86d44"
+     cx="262.54099"
+     cy="357.16699"
+     r="19.249001"
+     id="circle117"
+     sodipodi:cx="262.54099"
+     sodipodi:cy="357.16699"
+     sodipodi:rx="19.249001"
+     sodipodi:ry="19.249001"
+     transform="translate(-145.43535,-189.01935)" /><circle
+     style="opacity:0.2;fill:#d86d44"
+     cx="372.72501"
+     cy="357.16699"
+     r="19.249001"
+     id="circle119"
+     sodipodi:cx="372.72501"
+     sodipodi:cy="357.16699"
+     sodipodi:rx="19.249001"
+     sodipodi:ry="19.249001"
+     transform="translate(-145.43535,-189.01935)" /><path
+     style="fill:#c1272d;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="M 231.14065,228.64765"
+     id="path121"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_11_"
+     gradientUnits="userSpaceOnUse"
+     x1="218.8582"
+     y1="511.4505"
+     x2="220.60651"
+     y2="520.62927"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0"
+       style="stop-color:#006178"
+       id="stop124" /><stop
+       offset="1"
+       style="stop-color:#00495C"
+       id="stop126" /></linearGradient><path
+     style="fill:url(#SVGID_11_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 61.249655,330.25265 c 0.7,3.23 4.623,2.704 4.623,2.704 0,0 14.196,-2.268 16.856,-2.704 2.66,-0.436 5.413,-2.183 4.802,-5.501 -0.611,-3.318 -2.578,-4.334 -4.977,-4.104 -2.143,0.206 -17.811,4.016 -17.811,4.016 0,0 -4.628,0.35 -3.493,5.589 z"
+     id="path128"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_12_"
+     gradientUnits="userSpaceOnUse"
+     x1="196.34351"
+     y1="377.0275"
+     x2="197.17529"
+     y2="381.39441"><stop
+       offset="0"
+       style="stop-color:#006178"
+       id="stop131" /><stop
+       offset="1"
+       style="stop-color:#00495C"
+       id="stop133" /></linearGradient><polygon
+     style="fill:url(#SVGID_12_);stroke:#000000;stroke-miterlimit:10"
+     points="186.437,382.911 186.437,379.506 206.978,374.966 207.302,379.506 "
+     id="polygon135"
+     transform="translate(-145.43535,-189.01935)" /><linearGradient
+     id="SVGID_13_"
+     gradientUnits="userSpaceOnUse"
+     x1="152.85809"
+     y1="432.1676"
+     x2="155.30721"
+     y2="445.02539"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop138" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop140" /></linearGradient><path
+     style="fill:url(#SVGID_13_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 2.5626545,251.52265 c 0.949,7.344 13.9770005,5.843 12.4400005,-2.53 -1.537,-8.373 -13.8540005,-8.404 -12.4400005,2.53 z"
+     id="path142"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_14_"
+     gradientUnits="userSpaceOnUse"
+     x1="150.90849"
+     y1="418.1373"
+     x2="153.3576"
+     y2="430.99509"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop145" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop147" /></linearGradient><path
+     style="fill:url(#SVGID_14_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 0.61265455,237.49265 c 0.94899995,7.344 13.97700045,5.843 12.44000045,-2.53 -1.537,-8.373 -13.85300045,-8.404 -12.44000045,2.53 z"
+     id="path149"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_15_"
+     gradientUnits="userSpaceOnUse"
+     x1="155.52521"
+     y1="446.19681"
+     x2="157.7338"
+     y2="457.79221"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop152" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop154" /></linearGradient><path
+     style="fill:url(#SVGID_15_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 5.7066545,264.72965 c 0.856,6.623 12.6050005,5.269 11.2180005,-2.281 -1.387,-7.55 -12.4920005,-7.58 -11.2180005,2.281 z"
+     id="path156"
+     inkscape:connector-curvature="0" /><linearGradient
+     id="SVGID_16_"
+     gradientUnits="userSpaceOnUse"
+     x1="153.2876"
+     y1="459.8923"
+     x2="155.15581"
+     y2="469.70059"
+     gradientTransform="translate(-145.43535,-189.01935)"><stop
+       offset="0.0019"
+       style="stop-color:#FFCA94"
+       id="stop159" /><stop
+       offset="1"
+       style="stop-color:#E2A380"
+       id="stop161" /></linearGradient><path
+     style="fill:url(#SVGID_16_);stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     d="m 14.738655,269.81365 c 0,0 -14.45200045,0.644 -13.0900005,6.785 1.362,6.141 15.1240005,2.806 15.1240005,2.806 l -2.034,-9.591 z"
+     id="path163"
+     inkscape:connector-curvature="0" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="103.19666"
+     y1="134.52966"
+     x2="111.07164"
+     y2="138.28766"
+     id="line165" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="116.44066"
+     y1="121.91666"
+     x2="119.95366"
+     y2="128.63864"
+     id="line167" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="231.53465"
+     y1="117.39664"
+     x2="227.96065"
+     y2="125.27765"
+     id="line169" /><line
+     style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="249.61266"
+     y1="127.38266"
+     x2="237.84065"
+     y2="134.52966"
+     id="line171" /><line
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="243.72664"
+     y1="311.64764"
+     x2="251.97566"
+     y2="348.16364"
+     id="line173" /><line
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="184.01564"
+     y1="310.31366"
+     x2="184.01564"
+     y2="349.90466"
+     id="line175" /><line
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="146.45665"
+     y1="311.64764"
+     x2="143.12267"
+     y2="350.95166"
+     id="line177" /><line
+     style="fill:#666666;stroke:#000000;stroke-width:1;stroke-miterlimit:10"
+     x1="218.07564"
+     y1="311.29565"
+     x2="222.05864"
+     y2="348.93066"
+     id="line179" /></svg>
diff --git a/test/NUITestSample/NUITestSample/res/images/Mail.svg b/test/NUITestSample/NUITestSample/res/images/Mail.svg
new file mode 100755 (executable)
index 0000000..63fdd1f
--- /dev/null
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 195.689 195.688"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="Mail.svg"><metadata
+     id="metadata68"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs66" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1508"
+     inkscape:window-height="982"
+     id="namedview64"
+     showgrid="false"
+     inkscape:zoom="8.970293"
+     inkscape:cx="97.257987"
+     inkscape:cy="98.235009"
+     inkscape:window-x="75"
+     inkscape:window-y="34"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><g
+     id="g3"
+     transform="translate(-200.38201,-323.492)"><linearGradient
+       id="SVGID_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="298.22559"
+       y1="324.43469"
+       x2="298.22559"
+       y2="518.20068"><stop
+         offset="0"
+         style="stop-color:#FFFFFF;stop-opacity:0.7"
+         id="stop6" /><stop
+         offset="0.9987"
+         style="stop-color:#D8D9D8;stop-opacity:0.7"
+         id="stop8" /></linearGradient><path
+       style="fill:url(#SVGID_1_);fill-rule:evenodd"
+       d="m 210.005,518.68 c -5.031,0 -9.124,-4.093 -9.124,-9.123 v -176.44 c 0,-5.031 4.093,-9.124 9.124,-9.124 h 176.441 c 5.03,0 9.123,4.093 9.123,9.124 v 176.44 c 0,5.03 -4.093,9.123 -9.123,9.123 H 210.005 z"
+       id="path10"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#d8d8d7"
+       d="m 386.446,324.492 c 4.755,0 8.624,3.868 8.624,8.624 v 176.441 c 0,4.755 -3.868,8.623 -8.624,8.623 h -176.44 c -4.755,0 -8.624,-3.868 -8.624,-8.623 V 333.116 c 0,-4.755 3.868,-8.624 8.624,-8.624 h 176.44 m 0,-1 h -176.44 c -5.315,0 -9.624,4.309 -9.624,9.624 v 176.441 c 0,5.315 4.309,9.623 9.624,9.623 h 176.441 c 5.315,0 9.624,-4.308 9.624,-9.623 V 333.116 c -0.001,-5.315 -4.31,-9.624 -9.625,-9.624 l 0,0 z"
+       id="path12"
+       inkscape:connector-curvature="0" /></g><path
+     style="fill:#e1dfe2;fill-rule:evenodd"
+     d="M 43.775991,58.85 H 148.48299 c 3.322,0 6.015,2.693 6.015,6.015 v 81.128 c 0,3.322 -2.693,6.015 -6.015,6.015 H 43.775991 c -3.322,0 -6.015,-2.693 -6.015,-6.015 V 64.865 c 0,-3.323 2.693,-6.015 6.015,-6.015 z"
+     id="path14"
+     inkscape:connector-curvature="0" /><g
+     id="g16"
+     transform="translate(-200.38201,-323.492)"><linearGradient
+       id="SVGID_2_"
+       gradientUnits="userSpaceOnUse"
+       x1="296.51169"
+       y1="381.51559"
+       x2="296.51169"
+       y2="474.0015"><stop
+         offset="0.0032"
+         style="stop-color:#E6C71E"
+         id="stop19" /><stop
+         offset="1"
+         style="stop-color:#E1BB23"
+         id="stop21" /></linearGradient><path
+       style="fill:url(#SVGID_2_);fill-rule:evenodd"
+       d="m 244.158,474.999 c -3.041,0 -5.515,-2.474 -5.515,-5.515 v -82.699 c 0,-3.041 2.474,-5.515 5.515,-5.515 h 104.707 c 3.041,0 5.515,2.474 5.515,5.515 v 82.699 c 0,3.041 -2.474,5.515 -5.515,5.515 H 244.158 z"
+       id="path23"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#d6b429"
+       d="m 348.865,381.771 c 2.765,0 5.015,2.25 5.015,5.015 v 82.699 c 0,2.765 -2.25,5.015 -5.015,5.015 H 244.158 c -2.765,0 -5.015,-2.25 -5.015,-5.015 v -82.699 c 0,-2.765 2.25,-5.015 5.015,-5.015 h 104.707 m 0,-1 H 244.158 c -3.322,0 -6.015,2.693 -6.015,6.015 v 82.699 c 0,3.322 2.693,6.015 6.015,6.015 h 104.707 c 3.322,0 6.015,-2.693 6.015,-6.015 v -82.699 c 0,-3.322 -2.693,-6.015 -6.015,-6.015 l 0,0 z"
+       id="path25"
+       inkscape:connector-curvature="0" /></g><path
+     style="fill:#c9af2d;fill-rule:evenodd"
+     d="m 39.744991,60.112 -1.026,1.112 58.106,56.862 v -2.652 l -57.08,-55.322 z"
+     id="path27"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#9e8831;fill-rule:evenodd"
+     d="m 39.867991,60.294 0.589,-0.666 56.368,55.16 v 0.646 l -56.957,-55.14 z"
+     id="path29"
+     inkscape:connector-curvature="0" /><polygon
+     style="fill:#eecf32;fill-rule:evenodd"
+     points="239.625,471.413 240.152,471.976 296.94,421.926 296.94,420.907 "
+     id="polygon31"
+     transform="translate(-200.38201,-323.492)" /><path
+     style="fill:#c9af2d;fill-rule:evenodd"
+     d="m 97.159431,118.6434 56.403999,-56.915 -1.09844,-1.5594 -55.638999,55.265 0,2.652 z"
+     id="path33"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccccc" /><path
+     style="fill:#968330;fill-rule:evenodd"
+     d="m 96.824991,114.788 55.097999,-55.103 0.542,0.485 -55.638999,55.265 v -0.647 z"
+     id="path35"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#9e8831;fill-rule:evenodd"
+     d="m 148.48299,57.119 -104.706999,0 c -4.82917,1.06976 -6.015,3.82683 -6.015,7.746 0,-3.322 2.693,-6.015 6.015,-6.015 l 104.706999,0 c 3.322,0 6.015,2.693 6.015,6.015 l 0,-1.731 c 0,-3.322 -2.693,-6.015 -6.015,-6.015 z"
+     id="path37"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="sccsscss" /><path
+     style="fill:#bba330;fill-rule:evenodd"
+     d="m 38.470991,146.961 c 0,0 0.246,0.5 0.772,0.959 l 57.316,-50.505 0.02,-1.375 -58.108,50.921 z"
+     id="path39"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#bba330;fill-rule:evenodd"
+     d="m 96.557991,95.891 v 1.524 l 55.750999,51.174 c 0.466,-0.33 0.768,-0.716 0.768,-0.716 L 96.557991,95.891 z"
+     id="path41"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#eecf32;fill-rule:evenodd"
+     d="M 152.30999,148.589 96.558991,97.415 v 0.761 l 55.114999,50.925 c 0.32,-0.151 0.213,-0.212 0.636,-0.512 z"
+     id="path43"
+     inkscape:connector-curvature="0" /><path
+     style="fill:#ac9431;fill-rule:evenodd"
+     d="m 88.629991,88.999 c -3.192,1.17 -4.69,6.312 -6.235,7.829 -1.544,1.517 -4.703,1.544 -6.273,5.029 -1.57,3.485 1.75,4.183 1.675,7.319 -0.076,3.136 -2.91,3.923 -2.368,7.185 0.541,3.262 3.454,2.5 4.846,4.564 1.391,2.064 -0.81,5.496 2.281,6.831 3.091,1.335 5.185,-0.25 8.327,0.084 3.142,0.334 2.986,4.66 7.796,4.18 5.496999,-0.548 4.266999,-4.183 7.267999,-5.811 3.001,-1.628 6.925,1.166 8.397,-2.402 1.472,-3.568 -0.258,-5.944 0.469,-9.521 0.727,-3.577 4.949,-4.005 4.769,-7.767 -0.18,-3.762 -4.779,-6.555 -7.659,-7.681 -1.814,-0.709 -0.625,-7.017 -4.299,-8.084 -3.673,-1.067 -5.597,0.229 -10.023999,0.635 -4.428,0.407 -3.247,-4.488 -8.97,-2.39 z"
+     id="path45"
+     inkscape:connector-curvature="0" /><g
+     id="g47"
+     transform="translate(-200.38201,-323.492)"><linearGradient
+       id="SVGID_3_"
+       gradientUnits="userSpaceOnUse"
+       x1="297.85461"
+       y1="413.6799"
+       x2="297.85461"
+       y2="452.90948"><stop
+         offset="0"
+         style="stop-color:#F9F3D9"
+         id="stop50" /><stop
+         offset="1"
+         style="stop-color:#EAE3CA"
+         id="stop52" /></linearGradient><path
+       style="fill:url(#SVGID_3_);fill-rule:evenodd"
+       d="m 298.342,453.3 c -2.136,0 -3.101,-1.126 -4.034,-2.215 -0.778,-0.908 -1.583,-1.848 -3.018,-2.001 -0.322,-0.034 -0.633,-0.049 -0.936,-0.049 -0.919,0 -1.754,0.136 -2.561,0.267 -0.764,0.124 -1.484,0.241 -2.238,0.241 -0.892,0 -1.693,-0.166 -2.52,-0.523 -1.686,-0.729 -1.654,-2.082 -1.617,-3.649 0.025,-1.077 0.051,-2.191 -0.556,-3.092 -0.607,-0.901 -1.469,-1.292 -2.303,-1.669 -1.183,-0.535 -2.205,-0.997 -2.503,-2.797 -0.275,-1.657 0.375,-2.643 1.063,-3.687 0.625,-0.949 1.272,-1.931 1.309,-3.452 0.034,-1.415 -0.597,-2.379 -1.154,-3.229 -0.744,-1.137 -1.387,-2.118 -0.542,-3.992 0.985,-2.186 2.632,-2.966 4.084,-3.653 0.806,-0.382 1.567,-0.742 2.136,-1.301 0.559,-0.549 1.086,-1.504 1.698,-2.61 1.089,-1.973 2.445,-4.427 4.448,-5.162 0.936,-0.343 1.715,-0.51 2.382,-0.51 1.299,0 1.967,0.656 2.675,1.35 0.759,0.745 1.619,1.589 3.318,1.589 0.167,0 0.344,-0.008 0.53,-0.025 1.51,-0.139 2.74,-0.381 3.824,-0.596 1.225,-0.242 2.282,-0.451 3.415,-0.451 0.894,0 1.749,0.127 2.693,0.402 2.02,0.587 2.468,2.9 2.862,4.941 0.291,1.5 0.542,2.794 1.414,3.136 2.703,1.057 7.325,3.818 7.5,7.46 0.092,1.901 -1.027,2.912 -2.212,3.982 -1.081,0.977 -2.199,1.986 -2.552,3.724 -0.326,1.603 -0.171,2.965 -0.021,4.281 0.189,1.669 0.369,3.246 -0.435,5.193 -0.609,1.478 -1.646,1.78 -3.018,1.78 -0.382,0 -0.779,-0.023 -1.184,-0.047 -0.431,-0.024 -0.869,-0.05 -1.309,-0.05 -1.16,0 -2.017,0.184 -2.774,0.595 -1.227,0.665 -1.782,1.648 -2.319,2.599 -0.832,1.471 -1.617,2.86 -4.854,3.183 -0.242,0.025 -0.472,0.037 -0.691,0.037 z"
+       id="path54"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#fffcf3"
+       d="m 291.481,410.466 c 1.197,0 1.8,0.593 2.499,1.279 0.793,0.778 1.692,1.661 3.493,1.661 0.175,0 0.359,-0.008 0.553,-0.026 1.523,-0.14 2.759,-0.384 3.849,-0.599 1.212,-0.239 2.258,-0.446 3.366,-0.446 0.869,0 1.703,0.125 2.623,0.392 1.873,0.544 2.306,2.778 2.688,4.749 0.305,1.572 0.568,2.93 1.568,3.321 2.647,1.035 7.173,3.725 7.341,7.24 0.085,1.784 -0.941,2.711 -2.13,3.785 -1.059,0.957 -2.26,2.041 -2.629,3.859 -0.334,1.642 -0.176,3.023 -0.024,4.36 0.186,1.636 0.362,3.181 -0.417,5.07 -0.558,1.354 -1.48,1.626 -2.787,1.626 -0.373,0 -0.76,-0.022 -1.17,-0.046 -0.43,-0.025 -0.874,-0.051 -1.323,-0.051 -1.204,0 -2.096,0.193 -2.893,0.625 -1.29,0.7 -1.863,1.714 -2.418,2.695 -0.833,1.474 -1.553,2.748 -4.661,3.058 -0.23,0.023 -0.455,0.035 -0.667,0.035 -2.022,0 -2.907,-1.033 -3.845,-2.128 -0.81,-0.946 -1.648,-1.923 -3.181,-2.087 -0.318,-0.034 -0.633,-0.05 -0.962,-0.05 -0.94,0 -1.784,0.137 -2.601,0.27 -0.753,0.122 -1.464,0.238 -2.198,0.238 -0.857,0 -1.626,-0.16 -2.421,-0.503 -1.457,-0.629 -1.507,-1.707 -1.466,-3.414 0.026,-1.116 0.053,-2.271 -0.598,-3.238 -0.647,-0.96 -1.582,-1.383 -2.408,-1.757 -1.164,-0.527 -2.083,-0.943 -2.359,-2.61 -0.259,-1.561 0.336,-2.463 1.025,-3.508 0.615,-0.933 1.312,-1.99 1.35,-3.584 0.036,-1.493 -0.618,-2.491 -1.195,-3.373 -0.733,-1.12 -1.312,-2.004 -0.524,-3.753 0.947,-2.102 2.48,-2.828 3.963,-3.53 0.826,-0.391 1.606,-0.76 2.205,-1.348 0.585,-0.575 1.121,-1.545 1.741,-2.668 1.069,-1.936 2.4,-4.346 4.315,-5.048 0.909,-0.334 1.66,-0.496 2.298,-0.496 m 0,-0.5 c -0.651,0 -1.451,0.152 -2.468,0.525 -3.192,1.17 -4.69,6.312 -6.235,7.829 -1.544,1.517 -4.703,1.544 -6.273,5.029 -1.57,3.485 1.75,4.183 1.675,7.319 -0.076,3.136 -2.91,3.923 -2.368,7.185 0.541,3.262 3.454,2.5 4.846,4.564 1.391,2.064 -0.81,5.496 2.281,6.831 0.947,0.409 1.801,0.544 2.619,0.544 1.587,0 3.044,-0.507 4.799,-0.507 0.294,0 0.597,0.014 0.91,0.048 2.977,0.317 2.994,4.217 7.079,4.217 0.226,0 0.465,-0.012 0.717,-0.037 5.497,-0.548 4.267,-4.183 7.268,-5.811 0.837,-0.454 1.747,-0.564 2.655,-0.564 0.853,0 1.704,0.097 2.493,0.097 1.382,0 2.574,-0.298 3.249,-1.935 1.472,-3.568 -0.258,-5.944 0.469,-9.521 0.727,-3.577 4.949,-4.005 4.769,-7.767 -0.18,-3.762 -4.779,-6.555 -7.659,-7.681 -1.814,-0.709 -0.625,-7.017 -4.299,-8.084 -1.027,-0.298 -1.917,-0.412 -2.763,-0.412 -2.181,0 -4.071,0.755 -7.261,1.047 -0.178,0.016 -0.347,0.024 -0.507,0.024 -3.128,0 -3.132,-2.939 -5.996,-2.94 l 0,0 z"
+       id="path56"
+       inkscape:connector-curvature="0" /></g><g
+     id="g58"
+     transform="translate(-200.38201,-323.492)"><path
+       style="fill:#2c2c2c"
+       d="m 295.754,427.07 c -0.707,0.492 -1.312,1.11 -1.816,1.854 -0.506,0.744 -0.9,1.554 -1.189,2.43 -0.287,0.876 -0.432,1.71 -0.432,2.502 0,1.008 0.289,1.842 0.863,2.502 0.576,0.66 1.32,0.99 2.232,0.99 0.793,0 1.523,-0.258 2.197,-0.774 0.67,-0.516 1.26,-1.163 1.764,-1.943 0.504,-0.78 0.9,-1.614 1.188,-2.502 0.288,-0.888 0.432,-1.704 0.432,-2.448 0,-0.433 -0.078,-0.852 -0.234,-1.26 -0.156,-0.408 -0.371,-0.762 -0.646,-1.062 -0.277,-0.3 -0.59,-0.546 -0.938,-0.738 -0.348,-0.191 -0.713,-0.288 -1.098,-0.288 -0.84,-0.001 -1.614,0.246 -2.323,0.737 z m 6.157,8.676 c -0.084,0.324 -0.125,0.618 -0.125,0.883 0,0.744 0.287,1.115 0.863,1.115 0.553,0 1.121,-0.252 1.711,-0.756 0.588,-0.504 1.121,-1.151 1.602,-1.943 0.479,-0.792 0.875,-1.68 1.188,-2.664 0.313,-0.984 0.469,-1.956 0.469,-2.916 0,-1.416 -0.271,-2.7 -0.811,-3.853 -0.541,-1.151 -1.266,-2.13 -2.178,-2.934 -0.912,-0.804 -1.951,-1.422 -3.115,-1.854 -1.164,-0.432 -2.381,-0.647 -3.652,-0.647 -1.537,0 -2.971,0.306 -4.303,0.918 -1.332,0.611 -2.49,1.446 -3.475,2.502 -0.984,1.057 -1.758,2.28 -2.322,3.672 -0.562,1.393 -0.846,2.88 -0.846,4.464 0,1.608 0.295,3.108 0.883,4.5 0.588,1.393 1.391,2.599 2.412,3.618 1.02,1.021 2.201,1.824 3.545,2.412 1.344,0.588 2.773,0.882 4.285,0.882 1.727,0 3.389,-0.396 4.986,-1.188 1.596,-0.792 2.908,-1.848 3.941,-3.168 h 2.268 c -0.576,1.009 -1.271,1.902 -2.088,2.683 -0.817,0.781 -1.709,1.439 -2.682,1.98 -0.973,0.54 -2.01,0.948 -3.115,1.225 -1.104,0.275 -2.23,0.414 -3.383,0.414 -1.896,0 -3.666,-0.349 -5.311,-1.044 -1.645,-0.696 -3.072,-1.65 -4.283,-2.862 -1.213,-1.212 -2.166,-2.64 -2.863,-4.284 -0.695,-1.644 -1.043,-3.426 -1.043,-5.346 0,-1.848 0.354,-3.582 1.062,-5.202 0.707,-1.62 1.668,-3.036 2.879,-4.248 1.213,-1.212 2.629,-2.166 4.248,-2.862 1.621,-0.695 3.342,-1.044 5.166,-1.044 1.656,0 3.229,0.276 4.717,0.828 1.488,0.553 2.789,1.314 3.906,2.286 1.115,0.972 1.998,2.137 2.645,3.492 0.648,1.355 0.973,2.85 0.973,4.481 0,1.561 -0.283,2.982 -0.846,4.267 -0.564,1.284 -1.266,2.382 -2.105,3.294 -0.842,0.912 -1.754,1.62 -2.736,2.124 -0.984,0.504 -1.896,0.756 -2.736,0.756 -0.625,0 -1.152,-0.192 -1.584,-0.576 -0.432,-0.384 -0.672,-0.972 -0.721,-1.764 h -0.107 c -0.553,0.624 -1.213,1.182 -1.98,1.674 -0.767,0.492 -1.596,0.738 -2.484,0.738 -0.768,0 -1.469,-0.15 -2.105,-0.45 -0.636,-0.3 -1.176,-0.702 -1.619,-1.206 -0.445,-0.504 -0.793,-1.104 -1.045,-1.8 -0.252,-0.696 -0.377,-1.44 -0.377,-2.232 0,-1.248 0.203,-2.484 0.611,-3.708 0.408,-1.224 0.979,-2.315 1.711,-3.276 0.73,-0.959 1.619,-1.739 2.662,-2.34 1.045,-0.6 2.203,-0.899 3.475,-0.899 0.84,0 1.621,0.222 2.34,0.666 0.721,0.444 1.283,1.206 1.693,2.286 l 0.826,-2.269 h 2.27 l -3.025,10.224 c -0.099,0.309 -0.188,0.628 -0.272,0.951 z"
+       id="path60"
+       inkscape:connector-curvature="0" /></g><path
+     style="fill:#e1dfe2;fill-rule:evenodd"
+     d="M 148.48299,149.755 H 43.775991 c -3.322,0 -6.015,-2.693 -6.015,-6.015 v 2.253 c 0,3.322 2.693,6.015 6.015,6.015 H 148.48299 c 3.322,0 6.015,-2.693 6.015,-6.015 v -2.253 c 0,3.322 -2.693,6.015 -6.015,6.015 z"
+     id="path62"
+     inkscape:connector-curvature="0" /></svg>
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/res/images/World.svg b/test/NUITestSample/NUITestSample/res/images/World.svg
new file mode 100755 (executable)
index 0000000..91aef13
--- /dev/null
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 195.687 195.688"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="World.svg"><metadata
+     id="metadata129"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs127" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1199"
+     inkscape:window-height="896"
+     id="namedview125"
+     showgrid="false"
+     inkscape:zoom="6.342955"
+     inkscape:cx="97.837987"
+     inkscape:cy="98.236009"
+     inkscape:window-x="75"
+     inkscape:window-y="34"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><g
+     id="g3"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="297.64529"
+       y1="324.43469"
+       x2="297.64529"
+       y2="518.20172"><stop
+         offset="0"
+         style="stop-color:#FFFFFF;stop-opacity:0.7"
+         id="stop6" /><stop
+         offset="0.9987"
+         style="stop-color:#D8D9D8;stop-opacity:0.7"
+         id="stop8" /></linearGradient><path
+       style="fill:url(#SVGID_1_);fill-rule:evenodd"
+       d="m 209.425,518.681 c -5.031,0 -9.124,-4.093 -9.124,-9.124 v -176.44 c 0,-5.031 4.093,-9.124 9.124,-9.124 h 176.44 c 5.031,0 9.124,4.093 9.124,9.124 v 176.44 c 0,5.031 -4.093,9.124 -9.124,9.124 h -176.44 z"
+       id="path10"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#d8d8d7"
+       d="m 385.865,324.493 c 4.755,0 8.623,3.868 8.623,8.624 v 176.441 c 0,4.755 -3.868,8.623 -8.623,8.623 h -176.44 c -4.755,0 -8.623,-3.868 -8.623,-8.623 V 333.116 c 0,-4.755 3.868,-8.624 8.623,-8.624 h 176.44 m 0,-0.999 h -176.44 c -5.315,0 -9.623,4.309 -9.623,9.624 v 176.441 c 0,5.315 4.309,9.623 9.623,9.623 h 176.441 c 5.315,0 9.623,-4.309 9.623,-9.623 V 333.116 c 0,-5.315 -4.309,-9.623 -9.624,-9.623 l 0,0 z"
+       id="path12"
+       inkscape:connector-curvature="0" /></g><g
+     id="g14"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_2_"
+       gradientUnits="userSpaceOnUse"
+       x1="295.34409"
+       y1="366.51251"
+       x2="295.34409"
+       y2="477.05319"><stop
+         offset="0"
+         style="stop-color:#537FAF"
+         id="stop17" /><stop
+         offset="1"
+         style="stop-color:#436997"
+         id="stop19" /></linearGradient><path
+       style="fill:url(#SVGID_2_);fill-rule:evenodd"
+       d="m 295.344,365.432 c 30.647,0 55.492,24.845 55.492,55.492 0,30.647 -24.845,55.492 -55.492,55.492 -30.647,0 -55.492,-24.845 -55.492,-55.492 0,-30.647 24.845,-55.492 55.492,-55.492 z"
+       id="path21"
+       inkscape:connector-curvature="0" /></g><g
+     id="g23"
+     transform="translate(-199.80201,-323.493)"><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 336.697,448.9 c -1.4466,-17.74544 -6.79574,8.99663 -17.693,-19.639 -0.105,-0.613 -0.158,-1.2 -0.187,-1.775 -0.053,0.99 -0.003,2.033 0.187,3.145 8.478,23.495 15.228,8.439 17.693,18.269 z"
+       id="path25"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" /><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 322.35931,469.75845 c 11.4669,-11.09759 23.42214,-27.18821 22.63386,-47.49545 -0.009,-0.23982 5.82483,-0.446 5.82183,-0.686 0.33349,21.63904 -14.73709,38.28161 -28.45569,48.18145 z"
+       id="path27"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cscc" /></g><path
+     style="fill:#3d5e86;fill-rule:evenodd"
+     d="m 142.99999,70.832 c -0.788,3.617 -1.577,7.235 -2.365,10.852 -4.961,-1.349 -8.753,1.731 -13.289,3.095 -0.653,-2.785 -1.305,-5.572 -1.958,-8.357 -0.113,-0.024 -0.223,-0.043 -0.338,-0.074 0.765,3.266 1.531,6.534 2.296,9.801 4.537,-1.363 8.328,-4.444 13.289,-3.095 0.788,-3.617 1.577,-7.235 2.365,-10.852 0.387,-0.052 0.774,-0.104 1.161,-0.156 -0.238,-0.431 -0.502,-0.844 -0.75,-1.268 -0.137,0.017 -0.274,0.035 -0.411,0.054 z"
+     id="path29"
+     inkscape:connector-curvature="0" /><g
+     id="g31"
+     transform="translate(-199.80201,-323.493)"><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 329.068,380.749 c -0.243,-1.017 -0.486,-2.033 -0.729,-3.05 -0.135,-0.1 -0.264,-0.207 -0.4,-0.306 0.303,1.267 0.606,2.535 0.909,3.802 0.072,-0.148 0.146,-0.297 0.22,-0.446 z"
+       id="path33"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 327.22,389.512 c -0.489,-0.227 -0.978,-0.455 -1.468,-0.682 -0.183,0.371 -0.367,0.742 -0.55,1.114 0.673,0.313 1.345,0.625 2.018,0.938 3.634,-0.915 5.053,-5.373 4.871,-9.558 -0.155,3.741 -1.633,7.372 -4.871,8.188 z"
+       id="path35"
+       inkscape:connector-curvature="0" /></g><path
+     style="fill:#3d5e86;fill-rule:evenodd"
+     d="m 123.30399,61.978 c -0.543,-0.236 -1.087,-0.471 -1.63,-0.707 -0.179,0.379 -0.358,0.758 -0.537,1.136 0.722,0.313 1.445,0.627 2.167,0.94 0.365,-1.137 0.73,-2.275 1.095,-3.413 -0.129,-0.055 -0.257,-0.111 -0.386,-0.166 -0.236,0.737 -0.473,1.474 -0.709,2.21 z"
+     id="path37"
+     inkscape:connector-curvature="0" /><g
+     id="g39"
+     transform="translate(-199.80201,-323.493)"><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 272.087,393.816 c 0.93,-5.339 1.861,-10.68 2.792,-16.019 -0.025,-0.167 -0.072,-0.388 -0.129,-0.63 -0.93,5.334 -1.859,10.669 -2.789,16.003 0.037,0.217 0.085,0.431 0.126,0.646 z"
+       id="path41"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 260.998,417.547 c 0,0.424 0.044,0.842 0.117,1.256 0.455,-0.442 0.911,-0.885 1.366,-1.327 1.956,0 13.993,0.484 15.897,1.198 0,-0.465 -0.021,-0.926 -0.05,-1.385 -2.041,-0.705 -13.906,-1.182 -15.847,-1.182 -0.495,0.479 -0.989,0.96 -1.483,1.44 z"
+       id="path43"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 271.142,443.257 c -0.062,0.322 -0.109,0.664 -0.134,1.038 5.203,13.429 12.196,14.9 12.423,28.805 0.219,-15.067 -6.933,-16.306 -12.289,-29.843 z"
+       id="path45"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#3d5e86;fill-rule:evenodd"
+       d="m 276.572,434.507 c -0.064,-0.093 -8.841,-3.054 -12.462,-5.359 -7.139,-4.544 -14.035,-13.956 -20.542,-26.81 -0.1,0.258 -0.211,0.51 -0.306,0.77 6.597,13.166 13.598,22.794 20.849,27.409 3.571,2.273 12.138,5.178 12.438,5.348 0.136,-0.364 0.169,-0.795 0.023,-1.358 z"
+       id="path49"
+       inkscape:connector-curvature="0" /></g><g
+     id="g51"
+     transform="translate(-217.32904,-322.54707)"><linearGradient
+       id="SVGID_3_"
+       gradientUnits="userSpaceOnUse"
+       x1="334.81161"
+       y1="368.34589"
+       x2="334.81161"
+       y2="475.01251"
+       gradientTransform="translate(17.527034,-0.89641334)"><stop
+         offset="0"
+         style="stop-color:#D1DBE8"
+         id="stop54" /><stop
+         offset="1"
+         style="stop-color:#C4CDDC"
+         id="stop56" /></linearGradient><path
+       style="fill:url(#SVGID_3_);fill-rule:evenodd"
+       d="m 368.20538,422.0761 c 0,-4.224 -0.33035,-10.38051 -1.22335,-14.33451 -9.023,1.521 -33.199,4.524 -30.451,20.622 8.53,23.641 15.312,8.248 17.739,18.45 0.38,4.725 -6.01,12.864 -10.126,19.052 14.62,-9.993 24.06135,-24.74349 24.06135,-43.78949 z"
+       id="path58"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sccccs" /></g><g
+     id="g60"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_4_"
+       gradientUnits="userSpaceOnUse"
+       x1="334.4075"
+       y1="368.34589"
+       x2="334.4075"
+       y2="475.01251"><stop
+         offset="0"
+         style="stop-color:#D1DBE8"
+         id="stop63" /><stop
+         offset="1"
+         style="stop-color:#C4CDDC"
+         id="stop65" /></linearGradient><path
+       style="fill:url(#SVGID_4_);fill-rule:evenodd"
+       d="m 340.438,405.177 c 0.788,-3.617 1.577,-7.235 2.365,-10.852 0.387,-0.052 0.774,-0.104 1.161,-0.156 -2.168,-3.931 -4.798,-7.569 -7.818,-10.845 -1.648,5.677 -4.173,17.083 -11.293,15.147 0.765,3.266 1.531,6.534 2.296,9.801 4.536,-1.364 8.327,-4.444 13.289,-3.095 z"
+       id="path67"
+       inkscape:connector-curvature="0" /></g><g
+     id="g69"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_5_"
+       gradientUnits="userSpaceOnUse"
+       x1="328.65619"
+       y1="368.34589"
+       x2="328.65619"
+       y2="475.01251"><stop
+         offset="0"
+         style="stop-color:#D1DBE8"
+         id="stop72" /><stop
+         offset="1"
+         style="stop-color:#C4CDDC"
+         id="stop74" /></linearGradient><path
+       style="fill:url(#SVGID_5_);fill-rule:evenodd"
+       d="m 329.068,380.749 c -1.288,2.608 -2.577,5.217 -3.865,7.824 0.673,0.313 1.345,0.625 2.018,0.938 3.816,-0.96 5.194,-5.829 4.836,-10.184 -1.319,-1.165 -2.692,-2.267 -4.118,-3.304 0.376,1.576 0.752,3.151 1.129,4.726 z"
+       id="path76"
+       inkscape:connector-curvature="0" /></g><linearGradient
+     id="SVGID_6_"
+     gradientUnits="userSpaceOnUse"
+     x1="322.56961"
+     y1="368.34589"
+     x2="322.56961"
+     y2="475.01251"
+     gradientTransform="translate(-199.80201,-323.493)"><stop
+       offset="0"
+       style="stop-color:#D1DBE8"
+       id="stop79" /><stop
+       offset="1"
+       style="stop-color:#C4CDDC"
+       id="stop81" /></linearGradient><path
+     style="fill:url(#SVGID_6_);fill-rule:evenodd"
+     d="m 122.55399,58.04 c -0.472,1 -0.945,1.999 -1.417,2.999 0.722,0.313 1.445,0.627 2.168,0.94 0.365,-1.137 0.73,-2.275 1.095,-3.413 -0.603,-0.26 -1.206,-0.52 -1.809,-0.78 -0.013,0.084 -0.025,0.169 -0.037,0.254 z"
+     id="path83"
+     inkscape:connector-curvature="0" /><g
+     id="g85"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_7_"
+       gradientUnits="userSpaceOnUse"
+       x1="272.83749"
+       y1="368.69739"
+       x2="272.83749"
+       y2="474.75171"><stop
+         offset="0"
+         style="stop-color:#D1DBE8"
+         id="stop88" /><stop
+         offset="1"
+         style="stop-color:#C4CDDC"
+         id="stop90" /></linearGradient><path
+       style="fill:url(#SVGID_7_);fill-rule:evenodd"
+       d="m 289.565,475.865 c -1.934,-0.202 -3.929,-0.524 -5.938,-0.96 0.533,-10.776 -2.327,-14.988 -5.941,-20.313 -2.057,-3.029 -4.387,-6.462 -6.424,-11.704 0.232,-3.271 1.997,-4.275 3.555,-5.163 1.275,-0.727 2.479,-1.413 1.998,-3.28 -0.096,-0.164 -0.096,-0.164 -1.222,-0.578 -2.546,-0.935 -8.511,-3.123 -11.348,-4.93 -6.877,-4.377 -13.845,-13.534 -20.711,-27.213 5.141,-13.864 15.829,-25.245 29.361,-31.274 0.786,2.477 1.591,5.021 1.737,6.015 l -1.458,8.292 -1.458,8.372 c 0.583,3.561 1.838,6.961 3.052,10.25 1.614,4.371 3.281,8.887 3.357,13.59 -2.776,-0.693 -14.013,-1.111 -15.644,-1.111 h -0.102 l -1.631,1.585 v 0.105 c 0,6.491 8.881,11.957 14.996,12.867 0.383,0.058 0.781,0.086 1.182,0.086 1.528,0 3.001,-0.416 4.425,-0.817 1.436,-0.405 2.92,-0.824 4.474,-0.824 0.413,0 0.824,0.03 1.22,0.089 13.326,1.986 15.562,6.703 15.026,14.712 -2.567,9.616 -8.209,22.441 -11.942,30.928 l -0.564,1.276 z"
+       id="path92"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#f5fbfd"
+       d="m 272.741,370.792 c 0.736,2.319 1.466,4.644 1.632,5.632 l -2.904,16.661 -0.015,0.084 0.014,0.084 c 0.587,3.499 1.847,6.911 3.065,10.21 1.57,4.253 3.191,8.644 3.335,13.193 -3.276,-0.657 -13.81,-1.05 -15.387,-1.05 h -0.203 l -0.146,0.141 -0.837,0.813 -0.646,0.627 -0.152,0.147 v 0.211 c 0,4.531 5.786,11.712 15.208,13.115 0.395,0.059 0.806,0.089 1.22,0.089 1.563,0 3.053,-0.42 4.493,-0.827 1.419,-0.4 2.886,-0.814 4.405,-0.814 0.401,0 0.799,0.029 1.183,0.086 6.37,0.949 10.356,2.524 12.543,4.956 1.889,2.101 2.57,4.926 2.274,9.443 -2.575,9.637 -8.198,22.421 -11.921,30.884 l -0.492,1.119 c -1.796,-0.194 -3.65,-0.493 -5.523,-0.892 0.49,-10.702 -2.377,-14.926 -5.995,-20.255 -2.042,-3.008 -4.355,-6.415 -6.378,-11.602 0.24,-3.093 1.931,-4.057 3.425,-4.908 1.301,-0.741 2.646,-1.507 2.116,-3.56 l -0.022,-0.087 -0.051,-0.074 c -0.104,-0.149 -0.104,-0.149 -1.306,-0.59 -2.321,-0.852 -8.485,-3.114 -11.299,-4.905 -6.822,-4.343 -13.743,-13.431 -20.573,-27.018 5.101,-13.665 15.618,-24.897 28.937,-30.913 m 0.307,-0.685 c -13.74,6.037 -24.57,17.472 -29.787,31.631 6.597,13.166 13.598,22.794 20.849,27.409 3.621,2.305 12.398,5.266 12.462,5.359 0.955,3.699 -5.15,2.093 -5.564,8.419 5.597,14.445 13.27,15.045 12.359,32.179 2.078,0.457 4.195,0.811 6.354,1.028 3.832,-8.726 9.872,-22.225 12.598,-32.457 0.557,-8.315 -1.871,-12.984 -15.239,-14.975 -0.427,-0.064 -0.846,-0.092 -1.257,-0.092 -3.144,0 -5.88,1.641 -8.898,1.641 -0.377,0 -0.759,-0.026 -1.146,-0.083 -6.077,-0.905 -14.782,-6.232 -14.782,-12.62 0.494,-0.48 0.989,-0.96 1.483,-1.44 1.956,0 13.993,0.484 15.897,1.198 0,-8.417 -5.042,-15.941 -6.416,-24.133 0.972,-5.58 1.945,-11.162 2.918,-16.743 -0.154,-1.05 -1.001,-3.704 -1.831,-6.321 l 0,0 z"
+       id="path94"
+       inkscape:connector-curvature="0" /></g><g
+     id="g96"
+     transform="translate(-199.80201,-323.493)"><linearGradient
+       id="SVGID_8_"
+       gradientUnits="userSpaceOnUse"
+       x1="272.82639"
+       y1="368.33749"
+       x2="272.82639"
+       y2="475.51071"><stop
+         offset="0"
+         style="stop-color:#D1DBE8"
+         id="stop99" /><stop
+         offset="1"
+         style="stop-color:#C4CDDC"
+         id="stop101" /></linearGradient><path
+       style="fill:url(#SVGID_8_);fill-rule:evenodd"
+       d="m 287.081,428.701 c -4.097,-0.61 -7.409,2.046 -11.301,1.466 -6.077,-0.905 -14.782,-6.232 -14.782,-12.62 0.494,-0.48 0.989,-0.96 1.483,-1.44 1.956,0 13.993,0.484 15.897,1.198 0,-8.417 -5.042,-15.941 -6.416,-24.133 0.972,-5.58 1.945,-11.162 2.918,-16.743 -0.154,-1.05 -1.001,-3.704 -1.831,-6.321 -13.74,6.037 -24.57,17.472 -29.787,31.631 6.597,13.166 13.598,22.794 20.849,27.409 3.621,2.305 12.398,5.266 12.462,5.359 0.955,3.699 -5.15,2.093 -5.564,8.419 5.597,14.445 13.187,15.646 12.276,32.78 2.078,0.457 4.047,0.713 6.206,0.93 2.76103,-10.7429 8.89487,-23.77947 12.829,-32.96 0.556,-8.315 -1.871,-12.984 -15.239,-14.975 z"
+       id="path103"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccc" /></g><path
+     style="fill:none;stroke:#436997;stroke-width:1;stroke-miterlimit:10"
+     d="m 143.92999,71.247 c -2.151,-3.9 -5.028,-7.893 -8.025,-11.143"
+     id="path105"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#436997;stroke-width:1;stroke-miterlimit:10"
+     d="m 132.77899,56.97 c -1.308,-1.156 -3.383,-3.07 -4.992,-4.109"
+     id="path107"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#436997;stroke-width:1;stroke-miterlimit:10"
+     d="m 73.432991,46.99 c -14.161,6.084 -24.626,17.909 -29.827,32.251"
+     id="path109"
+     inkscape:connector-curvature="0" /><g
+     id="g111"
+     transform="translate(-199.80201,-323.493)"><path
+       style="fill:#e1dfe2;fill-rule:evenodd"
+       d="m 295.344,476.415 c -30.44,0 -55.144,-24.514 -55.476,-54.876 -0.002,0.206 -0.016,0.409 -0.016,0.616 0,30.647 24.844,55.492 55.492,55.492 30.647,0 57.06855,-24.52869 55.492,-55.492 -0.0105,-0.2067 -0.013,-0.41 -0.016,-0.616 -0.48966,30.20434 -25.035,54.876 -55.476,54.876 z"
+       id="path113"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="scssscs" /></g><path
+     style="fill:none;stroke:#436997;stroke-width:1;stroke-miterlimit:10"
+     d="M 90.267991,152.213"
+     id="path115"
+     inkscape:connector-curvature="0" /><path
+     style="fill:none;stroke:#436997;stroke-width:1;stroke-miterlimit:10"
+     d="M 83.481991,151.099"
+     id="path117"
+     inkscape:connector-curvature="0" /><g
+     id="g121"
+     transform="translate(-199.80201,-323.493)"><path
+       style="fill:#37577e;fill-rule:evenodd"
+       d="m 295.344,366.659 c 30.441,0 54.98834,24.98797 55.476,54.878 0.002,-0.205 0.0107,-0.40807 0.016,-0.614 0.78828,-30.647 -24.845,-55.492 -55.492,-55.492 -30.647,0 -55.492,24.845 -55.492,55.492 0,0.206 0.013,0.408 0.016,0.614 0.331,-30.363 25.035,-54.878 55.476,-54.878 z"
+       id="path123"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="scssscs" /></g></svg>
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/res/images/application-icon-0.png b/test/NUITestSample/NUITestSample/res/images/application-icon-0.png
new file mode 100755 (executable)
index 0000000..339b19c
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/application-icon-0.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/arrow.png b/test/NUITestSample/NUITestSample/res/images/arrow.png
new file mode 100755 (executable)
index 0000000..87abefd
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/arrow.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/background-blocks.jpg b/test/NUITestSample/NUITestSample/res/images/background-blocks.jpg
new file mode 100755 (executable)
index 0000000..d8fed65
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/background-blocks.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/dali-logo-anim.gif b/test/NUITestSample/NUITestSample/res/images/dali-logo-anim.gif
new file mode 100755 (executable)
index 0000000..9a085ba
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/dali-logo-anim.gif differ
diff --git a/test/NUITestSample/NUITestSample/res/images/dog-anim.gif b/test/NUITestSample/NUITestSample/res/images/dog-anim.gif
new file mode 100755 (executable)
index 0000000..ddc3312
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/dog-anim.gif differ
diff --git a/test/NUITestSample/NUITestSample/res/images/echo.gif b/test/NUITestSample/NUITestSample/res/images/echo.gif
new file mode 100755 (executable)
index 0000000..31b8040
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/echo.gif differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-0.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-0.jpg
new file mode 100755 (executable)
index 0000000..e42dba7
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-0.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-1.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-1.jpg
new file mode 100755 (executable)
index 0000000..6a427ad
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-1.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-2.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-2.jpg
new file mode 100755 (executable)
index 0000000..30b1a51
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-2.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-3.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-3.jpg
new file mode 100755 (executable)
index 0000000..2da2ceb
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-3.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-4.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-4.jpg
new file mode 100755 (executable)
index 0000000..902b711
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-4.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-5.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-5.jpg
new file mode 100755 (executable)
index 0000000..490fb56
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-5.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/gallery-small-43.jpg b/test/NUITestSample/NUITestSample/res/images/gallery-small-43.jpg
new file mode 100755 (executable)
index 0000000..c59b841
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/gallery-small-43.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/image-1.jpg b/test/NUITestSample/NUITestSample/res/images/image-1.jpg
new file mode 100755 (executable)
index 0000000..155ab30
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/image-1.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/image-2.jpg b/test/NUITestSample/NUITestSample/res/images/image-2.jpg
new file mode 100755 (executable)
index 0000000..e855ecf
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/image-2.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/image-3.jpg b/test/NUITestSample/NUITestSample/res/images/image-3.jpg
new file mode 100755 (executable)
index 0000000..8dee462
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/image-3.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/images/mask.png b/test/NUITestSample/NUITestSample/res/images/mask.png
new file mode 100755 (executable)
index 0000000..b3e423c
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/mask.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/not_yet_sign.png b/test/NUITestSample/NUITestSample/res/images/not_yet_sign.png
new file mode 100755 (executable)
index 0000000..12b48c1
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/not_yet_sign.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/star-dim.png b/test/NUITestSample/NUITestSample/res/images/star-dim.png
new file mode 100755 (executable)
index 0000000..38cc674
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/star-dim.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/star-highlight.png b/test/NUITestSample/NUITestSample/res/images/star-highlight.png
new file mode 100755 (executable)
index 0000000..f99ee25
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/star-highlight.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/star-mod.png b/test/NUITestSample/NUITestSample/res/images/star-mod.png
new file mode 100755 (executable)
index 0000000..2e3212e
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/star-mod.png differ
diff --git a/test/NUITestSample/NUITestSample/res/images/test-image.jpg b/test/NUITestSample/NUITestSample/res/images/test-image.jpg
new file mode 100755 (executable)
index 0000000..13a6086
Binary files /dev/null and b/test/NUITestSample/NUITestSample/res/images/test-image.jpg differ
diff --git a/test/NUITestSample/NUITestSample/res/json/control-dashboard.json b/test/NUITestSample/NUITestSample/res/json/control-dashboard.json
new file mode 100755 (executable)
index 0000000..c2609c4
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * This file is part of Dali Toolkit
+ *
+ * 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.
+ */
+
+{
+  "styles":
+  {
+    "ProgressBar":
+    {
+    }
+  }
+}
diff --git a/test/NUITestSample/NUITestSample/res/json/date-picker-template.json b/test/NUITestSample/NUITestSample/res/json/date-picker-template.json
new file mode 100755 (executable)
index 0000000..79ab9a2
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+{
+  // Data picker loaded directly on to the stage
+  //
+  "templates": {
+    "date-picker":
+    {
+      "type":"FlexContainer",
+      "name":"exampleDatePicker",
+      "flexDirection":"ROW",
+      "size":[480.0, 150, 0 ],
+      "actors": [
+      {
+
+        "type": "Spin",
+        "name": "Year",
+        "Value":2017,
+        "MinValue":1900,
+        "MaxValue":2100,
+        "Step":1,
+        "TextColor":[0.0,0.0,1.0,1.0],
+        "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+      },
+      {
+
+        "type": "Spin",
+        "name": "Month",
+        "Value":10,
+        "Step":1,
+        "MinValue":1,
+        "MaxValue":12,
+        "TextColor":[1.0,1.0,1.0,1.0],
+        "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+
+      },
+      {
+
+        "type": "Spin",
+        "name": "Day",
+        "Value":1,
+        "MinValue":1,
+        "MaxValue":31,
+        "TextColor":[1.0,0.0,0.0,1.0],
+         "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+      }]
+
+    }
+}
+
+}
+
diff --git a/test/NUITestSample/NUITestSample/res/json/date-picker-theme.json b/test/NUITestSample/NUITestSample/res/json/date-picker-theme.json
new file mode 100755 (executable)
index 0000000..6424a38
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * This file is part of Dali Toolkit
+ *
+ * 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.
+ */
+
+{
+  "styles": {
+    "Spin": {
+      "MinValue": 0,
+      "MaxValue": 100,
+      "Value": 50,
+      "Step": 1,
+      "TextColor": [ 1.0, 0.0, 0.0, 1.0 ]
+    }
+  }
+}
diff --git a/test/NUITestSample/NUITestSample/res/json/date-picker.json b/test/NUITestSample/NUITestSample/res/json/date-picker.json
new file mode 100755 (executable)
index 0000000..3126aa3
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+{
+  // Data picker loaded directly on to the stage
+  //
+  "stage": [{
+
+      "type":"FlexContainer",
+      "name":"exampleDatePicker",
+      "parentOrigin": "CENTER",
+      "anchorPoint": "CENTER",
+      "flexDirection":"ROW",
+      "size":[480.0, 150, 0 ],
+      "actors": [
+      {
+
+        "type": "Spin",
+        "name": "Year",
+        "parentOrigin": "CENTER",
+        "anchorPoint": "CENTER",
+        "MinValue":1900,
+        "MaxValue":2100,
+        "Value":2017,
+        "Step":1,
+        "TextColor":[0.0,0.0,1.0,1.0],
+        "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+      },
+      {
+
+        "type": "Spin",
+        "name": "Month",
+        "parentOrigin": "CENTER",
+        "anchorPoint": "CENTER",
+        "parentOrigin": "CENTER",
+        "Step":1,
+        "MinValue":1,
+        "MaxValue":12,
+        "Value":10,
+        "TextColor":[1.0,1.0,1.0,1.0],
+        "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+
+      },
+      {
+
+        "type": "Spin",
+        "name": "Day",
+        "parentOrigin": "CENTER",
+        "anchorPoint": "CENTER",
+        "MinValue":1,
+        "MaxValue":31,
+        "Value":1,
+        "TextColor":[1.0,0.0,0.0,1.0],
+         "properties": { // properties registered dynamically
+            "flex":0.3,
+            "flexMargin": [5.0,0.0,5.0,0.0]
+        }
+      }]
+
+}]
+
+}
+
diff --git a/test/NUITestSample/NUITestSample/res/json/spin.json b/test/NUITestSample/NUITestSample/res/json/spin.json
new file mode 100755 (executable)
index 0000000..df9b10c
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+{
+  // a tree of actors
+  "stage": [
+    // You can add an array of  Actors / Views here
+    // Lets add a spin to the stage
+    {
+      "type":"Spin",
+      "parentOrigin":"CENTER",
+      "size":[120,120,0]
+      // now lets use the C# app json-loader.exe to load it
+    }
+
+  ]
+}
diff --git a/test/NUITestSample/NUITestSample/res/json/style-example-theme-one.json b/test/NUITestSample/NUITestSample/res/json/style-example-theme-one.json
new file mode 100755 (executable)
index 0000000..5f0ef94
--- /dev/null
@@ -0,0 +1,407 @@
+{
+  "constants": {
+    "STYLE_DIR": "{APPLICATION_RESOURCE_PATH}/style"
+  },
+  "styles": {
+    "Title": {
+      "textColor": "#0000ff",
+      "background": {
+        "visualType": "COLOR",
+        "mixColor": [ 1.0, 1.0, 1.0, 1.0 ]
+      }
+    },
+    "TableView": {
+      "background": {
+        "visualType": "COLOR",
+        "mixColor": [ 1.0, 1.0, 1.0, 0.03 ]
+      }
+    },
+    "FlexContainer": {
+      "background": {
+        "visualType": "COLOR",
+        "mixColor": [ 1.0, 1.0, 1.0, 0.1 ]
+      }
+    },
+    "RadioButton": {
+      "label": {
+        "textColor": [ 1, 1, 1, 1 ]
+      }
+    },
+    "CheckBoxButton": {
+      "label": {
+        "textColor": [ 1, 1, 1, 1 ]
+      }
+    },
+    "ColorLabel1": {
+      "textColor": [ 1, 0, 0, 1 ]
+    },
+    "ColorLabel2": {
+      "textColor": [ 0, 1, 0, 1 ]
+    },
+    "ColorLabel3": {
+      "textColor": [ 0.3, 0.3, 1, 1 ]
+    },
+    "ThemeLabel": {
+      "textColor": [ 0, 1, 1, 1 ]
+    },
+    "PopupTitle": {
+      "textColor": [ 1, 1, 1, 1 ]
+    },
+    "PopupBody": {
+      "textColor": [ 1, 1, 0, 1 ]
+    },
+    "TextLabel": {
+      "textColor": [ 0, 0, 0, 1 ]
+    },
+    "ColorSlider1": {
+      "styles": [ "Slider" ]
+    },
+    "ColorSlider2": {
+      "styles": [ "slider" ]
+    },
+    "ColorSlider3": {
+      "styles": [ "slider" ]
+    },
+    "ImageChannelControl": {
+      "enableVisibilityTransition": [
+        {
+          "target": "imageVisual",
+          "property": "opacity",
+          "initialValue": 0,
+          "targetValue": 1,
+          "animator": {
+            "alphaFunction": "EASE_IN_OUT",
+            "timePeriod": {
+              "duration": 0.25,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "imageVisual",
+          "property": "size",
+          "targetValue": [ 1, 1 ]
+        }
+      ],
+      "disableVisibilityTransition": [
+        {
+          "target": "imageVisual",
+          "property": "opacity",
+          "targetValue": 0,
+          "animator": {
+            "alphaFunction": "EASE_IN_OUT",
+            "timePeriod": {
+              "duration": 0.25,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "imageVisual",
+          "property": "size",
+          "targetValue": [ 1, 1, 1 ]
+        }
+      ]
+    },
+    "ShadowButton": {
+      "backgroundVisual": {
+        "visualType": "IMAGE",
+        "url": "{STYLE_DIR}/images/shadowButtonBg.9.png",
+        "mixColor": [ 1, 1, 1, 0 ]
+      },
+      "checkboxBgVisual": {
+        "visualType": "IMAGE",
+        "url": "{STYLE_DIR}/images/CheckBg.png",
+        "transform": {
+          "size": [ 0.09, 0.28 ],
+          "offset": [ 30, 0 ],
+          "offsetSizeMode": [ 1, 1, 0, 0 ],
+          "origin": "CENTER_BEGIN",
+          "anchorPoint": "CENTER_BEGIN"
+        }
+      },
+      "checkboxFgVisual": {
+        "visualType": "IMAGE",
+        "url": "{STYLE_DIR}/images/Tick.png",
+        "transform": {
+          "size": [ 0.09, 0.28 ],
+          "offset": [ 30, 0 ],
+          "offsetSizeMode": [ 1, 1, 0, 0 ],
+          "origin": "CENTER_BEGIN",
+          "anchorPoint": "CENTER_BEGIN"
+        }
+      },
+      "labelVisual": {
+        "visualType": "TEXT",
+        "text": "Don't show again",
+        "pointSize": 20,
+        "horizontalAlignment": "END",
+        "verticalAlignment": "CENTER",
+        "textColor": [ 1, 1, 1, 1 ],
+        "mixColor": [ 0.3, 0.3, 0.3, 1 ],
+        "transform": {
+          "size": [ 0.9, 0.9 ],
+          "offset": [ -30, 0 ],
+          "offsetSizeMode": [ 1, 1, 0, 0 ],
+          "origin": "CENTER_END",
+          "anchorPoint": "CENTER_END"
+        }
+      },
+      "activeTransition": [
+        {
+          "target": "checkboxBgVisual",
+          "property": "size",
+          "initialValue": [ 0.09, 0.28 ],
+          "targetValue": [ 0.12, 0.37 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "backgroundVisual",
+          "property": "mixColor",
+          "initialValue": [ 1, 1, 1, 0 ],
+          "targetValue": [ 1, 1, 1, 1 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "backgroundVisual",
+          "property": "size",
+          "initialValue": [ 0.9, 0.9 ],
+          "targetValue": [ 1, 1 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "checkboxFgVisual",
+          "property": "size",
+          "initialValue": [ 0.09, 0.28 ],
+          "targetValue": [ 0.12, 0.37 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "labelVisual",
+          "property": "mixColor",
+          "initialValue": [ 0.2, 0.2, 0.2, 1.0 ],
+          "targetValue": [ 0, 0, 0, 1 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        }
+      ],
+      "inactiveTransition": [
+        {
+          "target": "checkboxBgVisual",
+          "property": "size",
+          "initialValue": [ 0.12, 0.37 ],
+          "targetValue": [ 0.09, 0.28 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "backgroundVisual",
+          "property": "mixColor",
+          "targetValue": [ 1, 1, 1, 0 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "checkboxFgVisual",
+          "property": "size",
+          "initialValue": [ 0.12, 0.37 ],
+          "targetValue": [ 0.09, 0.28 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "labelVisual",
+          "property": "mixColor",
+          "targetValue": [ 0.4, 0.4, 0.4, 1.0 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "backgroundVisual",
+          "property": "size",
+          "targetValue": [ 0.9, 0.9 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT_BACK",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        }
+      ],
+      "checkTransition": [
+        {
+          "target": "checkboxFgVisual",
+          "property": "pixelArea",
+          "initialValue": [ 0.0, 0.0, 0.0, 1.0 ],
+          "targetValue": [ 0.0, 0.0, 1.0, 1.0 ],
+          "animator": {
+            "alphaFunction": "EASE_IN",
+            "timePeriod": {
+              "duration": 0.4,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "checkboxFgVisual",
+          "property": "size",
+          "initialValue": [ 0.0, 0.37 ],
+          "targetValue": [ 0.12, 0.37 ],
+          "animator": {
+            "alphaFunction": "EASE_IN",
+            "timePeriod": {
+              "duration": 0.4,
+              "delay": 0
+            }
+          }
+        }
+      ],
+      "uncheckTransition": [
+        {
+          "target": "checkboxFgVisual",
+          "property": "pixelArea",
+          "initialValue": [ 0.0, 0.0, 1.0, 1.0 ],
+          "targetValue": [ 0.0, 0.0, 0.0, 1.0 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT",
+            "timePeriod": {
+              "duration": 0.4,
+              "delay": 0
+            }
+          }
+        },
+        {
+          "target": "checkboxFgVisual",
+          "property": "size",
+          "targetValue": [ 0.0, 0.37 ],
+          "animator": {
+            "alphaFunction": "EASE_OUT",
+            "timePeriod": {
+              "duration": 0.4,
+              "delay": 0
+            }
+          }
+        }
+      ]
+    },
+    "BeatControl": {
+      "beatVisual": {
+        "visualType": "IMAGE",
+        "url": "{APPLICATION_RESOURCE_PATH}/images/Logo-for-demo.png"
+      },
+
+      "bounceTransition": [
+        {
+          "target": "beatVisual",
+          "property": "size",
+          "initialValue": [ 0.5, 0.5 ],
+          "targetValue": [ 0.75, 0.75 ],
+          "animator": {
+            "alphaFunction": "BOUNCE",
+            "timePeriod": {
+              "duration": 0.5,
+              "delay": 0
+            }
+          }
+        }
+      ],
+
+      "leftTransition": [
+        {
+          "target": "beatVisual",
+          "property": "offset",
+          "initialValue": [ 0, 0 ],
+          "targetValue": [ 0.25, 0 ],
+          "animator": {
+            "alphaFunction": "BOUNCE",
+            "timePeriod": {
+              "duration": 0.5,
+              "delay": 0
+            }
+          }
+        }
+      ],
+
+      "upTransition": [
+        {
+          "target": "beatVisual",
+          "property": "offset",
+          "initialValue": [ 0, 0 ],
+          "targetValue": [ 0, 0.25 ],
+          "animator": {
+            "alphaFunction": "BOUNCE",
+            "timePeriod": {
+              "duration": 0.5,
+              "delay": 0
+            }
+          }
+        }
+      ],
+
+      "fadeTransition": [
+        {
+          "target": "beatVisual",
+          "property": "opacity",
+          "targetValue": 0,
+          "animator": {
+            "alphaFunction": "BOUNCE",
+            "timePeriod": {
+              "duration": 0.8,
+              "delay": 0
+            }
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/test/NUITestSample/NUITestSample/res/models/Dino.mtl b/test/NUITestSample/NUITestSample/res/models/Dino.mtl
new file mode 100755 (executable)
index 0000000..049595a
--- /dev/null
@@ -0,0 +1,11 @@
+newmtl lambert2SG
+illum 4
+Kd 0.00 0.00 0.00
+Ka 0.00 0.00 0.00
+Tf 1.00 1.00 1.00
+map_Kd Dino-Painted_lambert2SG_color.png
+bump Dino-Painted_lambert2SG_nmap.png -bm 0.05
+Ni 1.00
+Ks 0.00 0.00 0.00
+map_Ks Dino-Painted_lambert2SG_gloss.png
+Ns 100.00
diff --git a/test/NUITestSample/NUITestSample/shared/res/NUITestSample.png b/test/NUITestSample/NUITestSample/shared/res/NUITestSample.png
new file mode 100755 (executable)
index 0000000..9f3cb98
Binary files /dev/null and b/test/NUITestSample/NUITestSample/shared/res/NUITestSample.png differ
diff --git a/test/NUITestSample/NUITestSample/tizen-manifest.xml b/test/NUITestSample/NUITestSample/tizen-manifest.xml
new file mode 100755 (executable)
index 0000000..50a20a9
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="4" package="org.tizen.example.NUITestSample" version="1.0.0">
+  <profile name="common" />
+  <ui-application appid="org.tizen.example.NUITestSample"
+                                       exec="NUITestSample.dll"
+                                       type="dotnet"
+                                       multiple="false"
+                                       taskmanage="true"
+                                       nodisplay="false"
+                                       launch_mode="single">
+    <label>NUITestSample</label>
+    <icon>NUITestSample.png</icon>
+    <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
+  </ui-application>
+</manifest>