From 0d1b2ab7a8079bbf5026871f24ccd526b14bb835 Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 7 Apr 2016 16:14:29 +0530 Subject: [PATCH] [system-settings] Interface design Change-Id: I03e9f50952010156dfdad7685d270549a4bde2af Signed-off-by: Aditya --- .gitattributes | 63 + .gitignore | 212 +++ Tizen.System.SystemSettings.sln | 28 + .../Interop/Interop.Settings.cs | 47 + .../Properties/AssemblyInfo.cs | 36 + Tizen.System.SystemSettings/SystemSettings.cs | 1768 ++++++++++++++++++++ Tizen.System.SystemSettings/SystemSettingsEnums.cs | 171 ++ .../SystemSettingsEventArgs.cs | 917 ++++++++++ .../SystemSettingsExceptionFactory.cs | 44 + .../Tizen.System.SystemSettings.csproj | 77 + .../Tizen.System.SystemSettings.snk | Bin 0 -> 596 bytes packaging/csapi-systemsettings.manifest | 5 + packaging/csapi-systemsettings.pc.in | 5 + packaging/csapi-systemsettings.spec | 84 + tct-system-settings-tizen-tests/Makefile | 48 + tct-system-settings-tizen-tests/ReadMe.md | 12 + tct-system-settings-tizen-tests/TCTCert.p12 | Bin 0 -> 2429 bytes .../lib/TestFramework.dll | Bin 0 -> 39936 bytes .../lib/Tizen.Applications.dll | Bin 0 -> 66560 bytes .../lib/Tizen.Internals.dll | Bin 0 -> 8192 bytes .../lib/Tizen.System.SystemSettings.dll | Bin 0 -> 45568 bytes tct-system-settings-tizen-tests/lib/Tizen.dll | Bin 0 -> 7168 bytes tct-system-settings-tizen-tests/res/ReadMe.md | 11 + .../res/Result/style/application.js | 194 +++ .../res/Result/style/back_top.png | Bin 0 -> 1122 bytes .../res/Result/style/blue.jpg | Bin 0 -> 954 bytes .../res/Result/style/gray.jpg | Bin 0 -> 866 bytes .../res/Result/style/jquery.min.js | 4 + .../res/Result/style/orange.jpg | Bin 0 -> 934 bytes .../res/Result/style/popup.js | 1215 ++++++++++++++ .../res/Result/style/red.jpg | Bin 0 -> 937 bytes .../res/Result/style/summary.xsl | 358 ++++ .../res/Result/style/tests.css | 195 +++ tct-system-settings-tizen-tests/res/install.sh | 2 + tct-system-settings-tizen-tests/res/pull.sh | 5 + tct-system-settings-tizen-tests/res/push.sh | 2 + tct-system-settings-tizen-tests/res/run.sh | 2 + tct-system-settings-tizen-tests/share/res/icon.png | Bin 0 -> 57662 bytes tct-system-settings-tizen-tests/src/Program.cs | 37 + .../src/Testcase/TSSystemSettings.cs | 1193 +++++++++++++ tct-system-settings-tizen-tests/tizen-manifest.xml | 10 + 41 files changed, 6745 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Tizen.System.SystemSettings.sln create mode 100644 Tizen.System.SystemSettings/Interop/Interop.Settings.cs create mode 100644 Tizen.System.SystemSettings/Properties/AssemblyInfo.cs create mode 100644 Tizen.System.SystemSettings/SystemSettings.cs create mode 100644 Tizen.System.SystemSettings/SystemSettingsEnums.cs create mode 100644 Tizen.System.SystemSettings/SystemSettingsEventArgs.cs create mode 100644 Tizen.System.SystemSettings/SystemSettingsExceptionFactory.cs create mode 100644 Tizen.System.SystemSettings/Tizen.System.SystemSettings.csproj create mode 100644 Tizen.System.SystemSettings/Tizen.System.SystemSettings.snk create mode 100644 packaging/csapi-systemsettings.manifest create mode 100644 packaging/csapi-systemsettings.pc.in create mode 100644 packaging/csapi-systemsettings.spec create mode 100644 tct-system-settings-tizen-tests/Makefile create mode 100644 tct-system-settings-tizen-tests/ReadMe.md create mode 100644 tct-system-settings-tizen-tests/TCTCert.p12 create mode 100644 tct-system-settings-tizen-tests/lib/TestFramework.dll create mode 100644 tct-system-settings-tizen-tests/lib/Tizen.Applications.dll create mode 100644 tct-system-settings-tizen-tests/lib/Tizen.Internals.dll create mode 100644 tct-system-settings-tizen-tests/lib/Tizen.System.SystemSettings.dll create mode 100644 tct-system-settings-tizen-tests/lib/Tizen.dll create mode 100644 tct-system-settings-tizen-tests/res/ReadMe.md create mode 100644 tct-system-settings-tizen-tests/res/Result/style/application.js create mode 100644 tct-system-settings-tizen-tests/res/Result/style/back_top.png create mode 100644 tct-system-settings-tizen-tests/res/Result/style/blue.jpg create mode 100644 tct-system-settings-tizen-tests/res/Result/style/gray.jpg create mode 100644 tct-system-settings-tizen-tests/res/Result/style/jquery.min.js create mode 100644 tct-system-settings-tizen-tests/res/Result/style/orange.jpg create mode 100644 tct-system-settings-tizen-tests/res/Result/style/popup.js create mode 100644 tct-system-settings-tizen-tests/res/Result/style/red.jpg create mode 100644 tct-system-settings-tizen-tests/res/Result/style/summary.xsl create mode 100644 tct-system-settings-tizen-tests/res/Result/style/tests.css create mode 100644 tct-system-settings-tizen-tests/res/install.sh create mode 100755 tct-system-settings-tizen-tests/res/pull.sh create mode 100755 tct-system-settings-tizen-tests/res/push.sh create mode 100644 tct-system-settings-tizen-tests/res/run.sh create mode 100644 tct-system-settings-tizen-tests/share/res/icon.png create mode 100644 tct-system-settings-tizen-tests/src/Program.cs create mode 100644 tct-system-settings-tizen-tests/src/Testcase/TSSystemSettings.cs create mode 100644 tct-system-settings-tizen-tests/tizen-manifest.xml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5896c16 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b06e864 --- /dev/null +++ b/.gitignore @@ -0,0 +1,212 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +#*.pubxml + +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml diff --git a/Tizen.System.SystemSettings.sln b/Tizen.System.SystemSettings.sln new file mode 100644 index 0000000..6287465 --- /dev/null +++ b/Tizen.System.SystemSettings.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.System.SystemSettings", "Tizen.System.SystemSettings\Tizen.System.SystemSettings.csproj", "{09D03C33-2FCE-4C18-BEC8-F585A865A4B4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tct-system-settings-tizen-tests", "tct-system-settings-tizen-tests\tct-system-settings-tizen-tests.csproj", "{8C1E183D-1AC2-4301-BDD6-A026BE81D095}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {09D03C33-2FCE-4C18-BEC8-F585A865A4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09D03C33-2FCE-4C18-BEC8-F585A865A4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09D03C33-2FCE-4C18-BEC8-F585A865A4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09D03C33-2FCE-4C18-BEC8-F585A865A4B4}.Release|Any CPU.Build.0 = Release|Any CPU + {8C1E183D-1AC2-4301-BDD6-A026BE81D095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C1E183D-1AC2-4301-BDD6-A026BE81D095}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C1E183D-1AC2-4301-BDD6-A026BE81D095}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C1E183D-1AC2-4301-BDD6-A026BE81D095}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Tizen.System.SystemSettings/Interop/Interop.Settings.cs b/Tizen.System.SystemSettings/Interop/Interop.Settings.cs new file mode 100644 index 0000000..482bbf4 --- /dev/null +++ b/Tizen.System.SystemSettings/Interop/Interop.Settings.cs @@ -0,0 +1,47 @@ +/// 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; + +namespace Tizen.System.SystemSettings +{ + internal static class Interop + { + internal static partial class Settings + { + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_set_value_int", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsSetValueInt(SystemSettingsKeys key, int value); + + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_set_value_bool", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsSetValueBool(SystemSettingsKeys key, bool value); + + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_set_value_string", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsSetValueString(SystemSettingsKeys key, string value); + + + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_get_value_int", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsGetValueInt(SystemSettingsKeys key, out int value); + + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_get_value_bool", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsGetValueBool(SystemSettingsKeys key, out bool value); + + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_get_value_string", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsGetValueString(SystemSettingsKeys key, out string value); + + // Callback + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate void SystemSettingsChangedCallback(SystemSettingsKeys key, IntPtr data); + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_set_changed_cb", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsSetCallback(SystemSettingsKeys systemSettingsKey, SystemSettingsChangedCallback cb, IntPtr data); + [DllImport("capi-system-system-settings.so.0", EntryPoint = "system_settings_unset_changed_cb", CallingConvention = CallingConvention.Cdecl)] + internal static extern int SystemSettingsRemoveCallback(SystemSettingsKeys systemSettingsKey); + } + } +} \ No newline at end of file diff --git a/Tizen.System.SystemSettings/Properties/AssemblyInfo.cs b/Tizen.System.SystemSettings/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1aa9e6d --- /dev/null +++ b/Tizen.System.SystemSettings/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tizen.System.SystemSettings")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tizen.System.SystemSettings")] +[assembly: AssemblyCopyright("Copyright \u00A9 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("09d03c33-2fce-4c18-bec8-f585a865a4b4")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tizen.System.SystemSettings/SystemSettings.cs b/Tizen.System.SystemSettings/SystemSettings.cs new file mode 100644 index 0000000..362a5a0 --- /dev/null +++ b/Tizen.System.SystemSettings/SystemSettings.cs @@ -0,0 +1,1768 @@ +using System; + +namespace Tizen.System.SystemSettings +{ + /// + /// The System Settings API provides APIs for sharing configuration over a system + /// + /// + /// System Settings API provides functions for getting the system configuration related to user preferences. + /// The main features of the System Settings API include accessing system-wide configurations, such as ringtones, wallpapers, and etc + /// + public static class SystemSettings + { + /// + /// The file path of the current ringtone + /// + public static string IncomingCallRingtone + { + get + { + string filePath; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.IncomingCallRingtone, out filePath); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get IncomingCallRingtone system setting value."); + } + return filePath; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.IncomingCallRingtone, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set IncomingCallRingtone system setting."); + } + } + } + + /// + /// The file path of the current home screen wallpaper + /// + public static string WallpaperHomeScreen + { + get + { + string filePath; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.WallpaperHomeScreen, out filePath); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get WallpaperHomeScreen system setting value."); + } + return filePath; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.WallpaperHomeScreen, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set WallpaperHomeScreen system setting."); + } + } + } + + /// + /// The file path of the current lock screen wallpaper + /// + public static string WallpaperLockScreen + { + get + { + string filePath; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.WallpaperLockScreen, out filePath); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get WallpaperLockScreen system setting value."); + } + return filePath; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.WallpaperLockScreen, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set WallpaperLockScreen system setting."); + } + } + } + + /// + /// The current system font size + /// + public static SystemSettingsFontSize FontSize + { + get + { + int fontSize; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.FontSize, out fontSize); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get FontSize system setting value."); + } + return (SystemSettingsFontSize)fontSize; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueInt(SystemSettingsKeys.FontSize, (int)value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set FontSize system setting."); + } + } + } + + /// + /// The current system font type + /// + public static string FontType + { + get + { + string fontType; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.FontType, out fontType); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get FontType system setting value."); + } + return fontType; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.FontType, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set FontType system setting."); + } + } + } + + /// + /// Indicates whether the motion service is activated + /// + public static bool MotionActivation + { + get + { + bool isMotionServiceActivated; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.MotionActivation, out isMotionServiceActivated); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get MotionActivation system setting value."); + } + return isMotionServiceActivated; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.MotionActivation, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set MotionActivation system setting."); + } + } + } + + /// + /// The file path of the current email alert ringtone + /// + public static string EmailAlertRingtone + { + get + { + string filePath; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.EmailAlertRingtone, out filePath); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get EmailAlertRingtone system setting value."); + } + return filePath; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.EmailAlertRingtone, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set EmailAlertRingtone system setting."); + } + } + } + /// + /// Indicates whether the USB debugging is enabled (Since 2.4) + /// + public static bool UsbDebuggingEnabled + { + get + { + bool isusbDebuggingEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.UsbDebuggingEnabled, out isusbDebuggingEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get UsbDebuggingEnabled system setting value."); + } + return isusbDebuggingEnabled; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.UsbDebuggingEnabled, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set UsbDebuggingEnabled system setting."); + } + } + } + + /// + /// Indicates whether the 3G data network is enabled (Since 2.4) + /// + public static bool Data3GNetworkEnabled + { + get + { + bool is3GDataEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.Data3GNetworkEnabled, out is3GDataEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get Data3GNetworkEnabled system setting value."); + } + return is3GDataEnabled; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.Data3GNetworkEnabled, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set Data3GNetworkEnabled system setting."); + } + } + } + + /// + /// Indicates lockscreen app pkg name + /// + public static string LockscreenApp + { + get + { + string pkgName; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.LockscreenApp, out pkgName); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LockscreenApp system setting value."); + } + return pkgName; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.LockscreenApp, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LockscreenApp system setting."); + } + } + } + + /// + /// The current system default font type (only support Get) + /// + public static string DefaultFontType + { + get + { + string defaultFontType; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.DefaultFontType, out defaultFontType); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get DefaultFontType system setting value."); + } + return defaultFontType; + } + } + + /// + /// Indicates the current country setting in the _ syntax. + /// The country setting is in the ISO 639-2 format, + /// and the region setting is in the ISO 3166-1 alpha-2 format + /// + public static string LocaleCountry + { + get + { + string countrySetting; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.LocaleCountry, out countrySetting); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LocaleCountry system setting value."); + } + return countrySetting; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.LocaleCountry, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LocaleCountry system setting."); + } + } + } + + /// + /// Indicates the current language setting in the _ syntax. + /// The language setting is in the ISO 639-2 format + /// and the region setting is in the ISO 3166-1 alpha-2 format. + /// + public static string LocaleLanguage + { + get + { + string languageSetting; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.LocaleLanguage, out languageSetting); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LocaleLanguage system setting value."); + } + return languageSetting; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.LocaleLanguage, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LocaleLanguage system setting."); + } + } + } + + /// + /// Indicates whether the 24-hour clock is used. + /// If the value is false, the 12-hour clock is used. + /// + public static bool LocaleTimeformat24Hour + { + get + { + bool is24HrFormat; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.LocaleTimeformat24Hour, out is24HrFormat); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LocaleTimeformat24Hour system setting value."); + } + return is24HrFormat; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.LocaleTimeformat24Hour, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LocaleTimeformat24Hour system setting."); + } + } + } + + /// + /// Indicates the current time zone. + /// + public static string LocaleTimezone + { + get + { + string timeZone; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.LocaleTimezone, out timeZone); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LocaleTimezone system setting value."); + } + return timeZone; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.LocaleTimezone, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LocaleTimezone system setting."); + } + } + } + /// + /// Indicates whether the screen lock sound is enabled on the device. ex) LCD on/off sound + /// + public static bool SoundLock + { + get + { + bool isSoundLockEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundLock, out isSoundLockEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get SoundLock system setting value."); + } + return isSoundLockEnabled; + } + } + + /// + /// Indicates whether the device is in the silent mode. + /// + public static bool SoundSilentMode + { + get + { + bool isSilent; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundSilentMode, out isSilent); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get SoundSilentMode system setting value."); + } + return isSilent; + } + } + + /// + /// Indicates whether the screen touch sound is enabled on the device. + /// + public static bool SoundTouch + { + get + { + bool isTouchSoundEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundTouch, out isTouchSoundEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get SoundTouch system setting value."); + } + return isTouchSoundEnabled; + } + } + + /// + /// Indicates whether rotation control is automatic. + /// + public static bool DisplayScreenRotationAuto + { + get + { + bool isRotationAutomatic; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.DisplayScreenRotationAuto, out isRotationAutomatic); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get DisplayScreenRotationAuto system setting value."); + } + return isRotationAutomatic; + } + } + + /// + /// Indicates device name. + /// + public static string DeviceName + { + get + { + string deviceName; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.DeviceName, out deviceName); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get DeviceName system setting value."); + } + return deviceName; + } + } + /// + /// Indicates whether the device user has enabled motion feature. + /// + public static bool MotionEnabled + { + get + { + bool isMotionEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.MotionEnabled, out isMotionEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get MotionEnabled system setting value."); + } + return isMotionEnabled; + } + } + + /// + /// Indicates whether Wi-Fi-related notifications are enabled on the device. + /// + public static bool NetworkWifiNotification + { + get + { + bool isWifiNotificationEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.NetworkWifiNotification, out isWifiNotificationEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get NetworkWifiNotification system setting value."); + } + return isWifiNotificationEnabled; + } + } + + /// + /// Indicates whether the device is in the flight mode. + /// + public static bool NetworkFlightMode + { + get + { + bool isFlightModeEnabled; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.NetworkFlightMode, out isFlightModeEnabled); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get NetworkFlightMode system setting value."); + } + return isFlightModeEnabled; + } + } + + /// + /// Indicates the backlight time (in seconds). The following values can be used: 15, 30, 60, 120, 300, and 600. + /// + public static int ScreenBacklightTime + { + get + { + int backlightTime; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.ScreenBacklightTime, out backlightTime); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get ScreenBacklightTime system setting value."); + } + return backlightTime; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueInt(SystemSettingsKeys.ScreenBacklightTime, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set ScreenBacklightTime system setting."); + } + } + } + + /// + /// Indicates the file path of the current notification tone set by the user. + /// + public static string SoundNotification + { + get + { + string filePath; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.SoundNotification, out filePath); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get SoundNotification system setting value."); + } + return filePath; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.SoundNotification, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set SoundNotification system setting."); + } + } + } + + /// + /// Indicates the time period for notification repetitions. + /// + public static int SoundNotificationRepetitionPeriod + { + get + { + int notificationRepetitionPeriod; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.SoundNotificationRepetitionPeriod, out notificationRepetitionPeriod); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get SoundNotificationRepetitionPeriod system setting value."); + } + return notificationRepetitionPeriod; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueInt(SystemSettingsKeys.SoundNotificationRepetitionPeriod, value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set SoundNotificationRepetitionPeriod system setting."); + } + } + } + + /// + /// Indicates the current lock state + /// + public static SystemSettingsIdleLockState LockState + { + get + { + int LockState; + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.LockState, out LockState); + if (res != SystemSettingsError.None) + { + Log.Warn(SystemSettingsExceptionFactory.LogTag, "unable to get LockState system setting value."); + } + return (SystemSettingsIdleLockState)LockState; + } + set + { + SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueInt(SystemSettingsKeys.LockState, (int)value); + if (res != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LockState system setting."); + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_incomingCallRingtoneChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string path = SystemSettings.IncomingCallRingtone; + IncomingCallRingtoneChangedEventArgs eventArgs = new IncomingCallRingtoneChangedEventArgs(path); + s_incomingCallRingtoneChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_incomingCallRingtoneChanged; + /// + /// IncomingCallRingtoneChanged event is triggered when the file path of the incoming ringtone is changed + /// + /// + /// A IncomingCallRingtoneChangedEventArgs object that contains the key & changed value + public static event EventHandler IncomingCallRingtoneChanged + { + add + { + if (s_incomingCallRingtoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.IncomingCallRingtone, s_incomingCallRingtoneChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_incomingCallRingtoneChanged += value; + } + + remove + { + s_incomingCallRingtoneChanged -= value; + if (s_incomingCallRingtoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.IncomingCallRingtone); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_wallpaperHomeScreenChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string path = SystemSettings.WallpaperHomeScreen; + WallpaperHomeScreenChangedEventArgs eventArgs = new WallpaperHomeScreenChangedEventArgs(path); + s_wallpaperHomeScreenChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_wallpaperHomeScreenChanged; + /// + /// WallpaperHomeScreenChanged event is triggered when the file path of the current home screen wallpaper is changed + /// + /// + /// A WallpaperHomeScreenChangedEventArgs object that contains the key & changed value + public static event EventHandler WallpaperHomeScreenChanged + { + add + { + if (s_wallpaperHomeScreenChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperHomeScreen, s_wallpaperHomeScreenChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_wallpaperHomeScreenChanged += value; + } + + remove + { + s_wallpaperHomeScreenChanged -= value; + if (s_wallpaperHomeScreenChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperHomeScreen); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_wallpaperLockScreenChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string path = SystemSettings.WallpaperLockScreen; + WallpaperLockScreenChangedEventArgs eventArgs = new WallpaperLockScreenChangedEventArgs(path); + s_wallpaperLockScreenChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_wallpaperLockScreenChanged; + /// + /// WallpaperLockScreenChanged event is triggered when the file path of the current lock screen wallpaper is changed + /// + /// + /// A WallpaperLockScreenChangedEventArgs object that contains the key & changed value + public static event EventHandler WallpaperLockScreenChanged + { + add + { + if (s_wallpaperLockScreenChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperLockScreen, s_wallpaperLockScreenChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_wallpaperLockScreenChanged += value; + } + + remove + { + s_wallpaperLockScreenChanged -= value; + if (s_wallpaperLockScreenChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperLockScreen); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_fontSizeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + SystemSettingsFontSize fontSize = SystemSettings.FontSize; + FontSizeChangedEventArgs eventArgs = new FontSizeChangedEventArgs(fontSize); + s_fontSizeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_fontSizeChanged; + /// + /// FontSizeChanged event is triggered when the current system font size is changed + /// + /// + /// A FontSizeChangedEventArgs object that contains the key & changed value + public static event EventHandler FontSizeChanged + { + add + { + if (s_fontSizeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontSize, s_fontSizeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_fontSizeChanged += value; + } + + remove + { + s_fontSizeChanged -= value; + if (s_fontSizeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontSize); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_fontTypeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string fontType = SystemSettings.FontType; + FontTypeChangedEventArgs eventArgs = new FontTypeChangedEventArgs(fontType); + s_fontTypeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_fontTypeChanged; + /// + /// FontTypeChanged event is triggered when the current system font type is changed + /// + /// + /// A FontTypeChangedEventArgs object that contains the key & changed value + public static event EventHandler FontTypeChanged + { + add + { + if (s_fontTypeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontType, s_fontTypeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_fontTypeChanged += value; + } + + remove + { + s_fontTypeChanged -= value; + if (s_fontTypeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontType); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_motionActivationChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool motionActivation = SystemSettings.MotionActivation; + MotionActivationChangedEventArgs eventArgs = new MotionActivationChangedEventArgs(motionActivation); + s_motionActivationChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_motionActivationChanged; + /// + /// MotionActivationChanged event is triggered when the motion service status is changed + /// + /// + /// A MotionActivationChangedEventArgs object that contains the key & changed value + public static event EventHandler MotionActivationChanged + { + add + { + if (s_motionActivationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionActivation, s_motionActivationChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_motionActivationChanged += value; + } + + remove + { + s_motionActivationChanged -= value; + if (s_motionActivationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionActivation); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_emailAlertRingtoneChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string emailAlertRingtone = SystemSettings.EmailAlertRingtone; + EmailAlertRingtoneChangedEventArgs eventArgs = new EmailAlertRingtoneChangedEventArgs(emailAlertRingtone); + s_emailAlertRingtoneChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_emailAlertRingtoneChanged; + /// + /// EmailAlertRingtoneChanged event is triggered when the file path of the current email alert ringtone is changed + /// + /// + /// A EmailAlertRingtoneChangedEventArgs object that contains the key & changed value + public static event EventHandler EmailAlertRingtoneChanged + { + add + { + if (s_emailAlertRingtoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.EmailAlertRingtone, s_emailAlertRingtoneChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_emailAlertRingtoneChanged += value; + } + + remove + { + s_emailAlertRingtoneChanged -= value; + if (s_emailAlertRingtoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.EmailAlertRingtone); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_usbDebuggingSettingChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool usbDebuggingEnabled = SystemSettings.UsbDebuggingEnabled; + UsbDebuggingSettingChangedEventArgs eventArgs = new UsbDebuggingSettingChangedEventArgs(usbDebuggingEnabled); + s_usbDebuggingSettingChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_usbDebuggingSettingChanged; + /// + /// UsbDebuggingSettingChangedEventArgs event is triggered when the USB debugging status is changed + /// + /// + /// A UsbDebuggingSettingChangedEventArgs object that contains the key & changed value + public static event EventHandler UsbDebuggingSettingChanged + { + add + { + if (s_usbDebuggingSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UsbDebuggingEnabled, s_usbDebuggingSettingChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_usbDebuggingSettingChanged += value; + } + + remove + { + s_usbDebuggingSettingChanged -= value; + if (s_usbDebuggingSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UsbDebuggingEnabled); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_data3GNetworkSettingChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool data3GEnabled = SystemSettings.Data3GNetworkEnabled; + Data3GNetworkSettingChangedEventArgs eventArgs = new Data3GNetworkSettingChangedEventArgs(data3GEnabled); + s_data3GNetworkSettingChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_data3GNetworkSettingChanged; + /// + /// Data3GNetworkSettingChanged event is triggered when the 3G data network status is changed + /// + /// + /// A Data3GNetworkSettingChangedEventArgs object that contains the key & changed value + public static event EventHandler Data3GNetworkSettingChanged + { + add + { + if (s_data3GNetworkSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Data3GNetworkEnabled, s_data3GNetworkSettingChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_data3GNetworkSettingChanged += value; + } + + remove + { + s_data3GNetworkSettingChanged -= value; + if (s_data3GNetworkSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Data3GNetworkEnabled); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_lockscreenAppChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string lockScreenApp = SystemSettings.LockscreenApp; + LockscreenAppChangedEventArgs eventArgs = new LockscreenAppChangedEventArgs(lockScreenApp); + s_lockscreenAppChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_lockscreenAppChanged; + /// + /// LockscreenAppChanged event is triggered when the lockscreen app pkg name is changed + /// + /// + /// A LockscreenAppChangedEventArgs object that contains the key & changed value + public static event EventHandler LockscreenAppChanged + { + add + { + if (s_lockscreenAppChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockscreenApp, s_lockscreenAppChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_lockscreenAppChanged += value; + } + + remove + { + s_lockscreenAppChanged -= value; + if (s_lockscreenAppChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockscreenApp); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_defaultFontTypeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string defaultFontType = SystemSettings.DefaultFontType; + DefaultFontTypeChangedEventArgs eventArgs = new DefaultFontTypeChangedEventArgs(defaultFontType); + s_defaultFontTypeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_defaultFontTypeChanged; + /// + /// DefaultFontTypeChanged event is triggered when the current system default font type is changed + /// + /// + /// A DefaultFontTypeChangedEventArgs object that contains the key & changed value + public static event EventHandler DefaultFontTypeChanged + { + add + { + if (s_defaultFontTypeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DefaultFontType, s_defaultFontTypeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_defaultFontTypeChanged += value; + } + + remove + { + s_defaultFontTypeChanged -= value; + if (s_defaultFontTypeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DefaultFontType); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_localeCountryChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string localeCountry = SystemSettings.LocaleCountry; + LocaleCountryChangedEventArgs eventArgs = new LocaleCountryChangedEventArgs(localeCountry); + s_localeCountryChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_localeCountryChanged; + /// + /// LocaleCountryChanged event is triggered when the current country setting in the _ syntax, is changed + /// + /// + /// A LocaleCountryChangedEventArgs object that contains the key & changed value + public static event EventHandler LocaleCountryChanged + { + add + { + if (s_localeCountryChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleCountry, s_localeCountryChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_localeCountryChanged += value; + } + + remove + { + s_localeCountryChanged -= value; + if (s_localeCountryChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleCountry); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_localeLanguageChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string localeLanguage = SystemSettings.LocaleLanguage; + LocaleLanguageChangedEventArgs eventArgs = new LocaleLanguageChangedEventArgs(localeLanguage); + s_localeLanguageChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_localeLanguageChanged; + /// + /// LocaleLanguageChanged event is triggered when the current language setting in the _ syntax, is changed + /// + /// + /// A LocaleLanguageChangedEventArgs object that contains the key & changed value + public static event EventHandler LocaleLanguageChanged + { + add + { + if (s_localeLanguageChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleLanguage, s_localeLanguageChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_localeLanguageChanged += value; + } + + remove + { + s_localeLanguageChanged -= value; + if (s_localeLanguageChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleLanguage); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_localeTimeformat24HourChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool localeTimeFormat24Hour = SystemSettings.LocaleTimeformat24Hour; + LocaleTimeformat24HourChangedEventArgs eventArgs = new LocaleTimeformat24HourChangedEventArgs(localeTimeFormat24Hour); + s_localeTimeformat24HourChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_localeTimeformat24HourChanged; + /// + /// LocaleTimeformat24HourChanged event is triggered when the time format is changed + /// + /// + /// A LocaleTimeformat24HourChangedEventArgs object that contains the key & changed value + public static event EventHandler LocaleTimeformat24HourChanged + { + add + { + if (s_localeTimeformat24HourChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeformat24Hour, s_localeTimeformat24HourChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_localeTimeformat24HourChanged += value; + } + + remove + { + s_localeTimeformat24HourChanged -= value; + if (s_localeTimeformat24HourChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimeformat24Hour); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_localeTimezoneChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string localeTimezone = SystemSettings.LocaleTimezone; + LocaleTimezoneChangedEventArgs eventArgs = new LocaleTimezoneChangedEventArgs(localeTimezone); + s_localeTimezoneChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_localeTimezoneChanged; + /// + /// LocaleTimezoneChanged event is triggered when the current time zone is changed + /// + /// + /// A LocaleTimezoneChangedEventArgs object that contains the key & changed value + public static event EventHandler LocaleTimezoneChanged + { + add + { + if (s_localeTimezoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimezone, s_localeTimezoneChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_localeTimezoneChanged += value; + } + + remove + { + s_localeTimezoneChanged -= value; + if (s_localeTimezoneChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimezone); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_timeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + //bool motionActivation = SystemSettings.Time; + TimeChangedEventArgs eventArgs = new TimeChangedEventArgs(); + s_timeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_timeChanged; + /// + /// TimeChanged event is triggered when the system time is changed + /// + /// + /// A TimeChangedEventArgs object that contains the key & changed value + public static event EventHandler TimeChanged + { + add + { + if (s_timeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Time, s_timeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_timeChanged += value; + } + + remove + { + s_timeChanged -= value; + if (s_timeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Time); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_soundLockChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool soundLock = SystemSettings.SoundLock; + SoundLockChangedEventArgs eventArgs = new SoundLockChangedEventArgs(soundLock); + s_soundLockChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_soundLockChanged; + /// + /// SoundLockChanged event is triggered when the screen lock sound enabled status is changed + /// + /// + /// A SoundLockChangedEventArgs object that contains the key & changed value + public static event EventHandler SoundLockChanged + { + add + { + if (s_soundLockChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundLock, s_soundLockChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_soundLockChanged += value; + } + + remove + { + s_soundLockChanged -= value; + if (s_soundLockChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundLock); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_soundSilentModeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool soundSilentMode = SystemSettings.SoundSilentMode; + SoundSilentModeChangedEventArgs eventArgs = new SoundSilentModeChangedEventArgs(soundSilentMode); + s_soundSilentModeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_soundSilentModeChanged; + /// + /// SoundSilentModeChanged event is triggered when the silent mode status is changed + /// + /// + /// A SoundSilentModeChangedEventArgs object that contains the key & changed value + public static event EventHandler SoundSilentModeChanged + { + add + { + if (s_soundSilentModeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundSilentMode, s_soundSilentModeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_soundSilentModeChanged += value; + } + + remove + { + s_soundSilentModeChanged -= value; + if (s_soundSilentModeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundSilentMode); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_soundTouchChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool soundTouch = SystemSettings.SoundTouch; + SoundTouchChangedEventArgs eventArgs = new SoundTouchChangedEventArgs(soundTouch); + s_soundTouchChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_soundTouchChanged; + /// + /// SoundTouchChanged event is triggered when the screen touch sound enabled status is changed + /// + /// + /// A SoundTouchChangedEventArgs object that contains the key & changed value + public static event EventHandler SoundTouchChanged + { + add + { + if (s_soundTouchChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundTouch, s_soundTouchChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_soundTouchChanged += value; + } + + remove + { + s_soundTouchChanged -= value; + if (s_soundTouchChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundTouch); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_displayScreenRotationAutoChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool displayScreenRotationAuto = SystemSettings.DisplayScreenRotationAuto; + DisplayScreenRotationAutoChangedEventArgs eventArgs = new DisplayScreenRotationAutoChangedEventArgs(displayScreenRotationAuto); + s_displayScreenRotationAutoChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_displayScreenRotationAutoChanged; + /// + /// DisplayScreenRotationAutoChanged event is triggered when the automatic rotation control status is changed + /// + /// + /// A DisplayScreenRotationAutoChangedEventArgs object that contains the key & changed value + public static event EventHandler DisplayScreenRotationAutoChanged + { + add + { + if (s_displayScreenRotationAutoChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DisplayScreenRotationAuto, s_displayScreenRotationAutoChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_displayScreenRotationAutoChanged += value; + } + + remove + { + s_displayScreenRotationAutoChanged -= value; + if (s_displayScreenRotationAutoChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DisplayScreenRotationAuto); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_deviceNameChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string deviceName = SystemSettings.DeviceName; + DeviceNameChangedEventArgs eventArgs = new DeviceNameChangedEventArgs(deviceName); + s_deviceNameChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_deviceNameChanged; + /// + /// DeviceNameChanged event is triggered when the device name is changed + /// + /// + /// A DeviceNameChangedEventArgs object that contains the key & changed value + public static event EventHandler DeviceNameChanged + { + add + { + if (s_deviceNameChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DeviceName, s_deviceNameChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_deviceNameChanged += value; + } + + remove + { + s_deviceNameChanged -= value; + if (s_deviceNameChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DeviceName); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_motionSettingChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool motionEnabled = SystemSettings.MotionEnabled; + MotionSettingChangedEventArgs eventArgs = new MotionSettingChangedEventArgs(motionEnabled); + s_motionSettingChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_motionSettingChanged; + /// + /// MotionSettingChanged event is triggered when the motion feature enabled status is changed + /// + /// + /// A MotionSettingChangedEventArgs object that contains the key & changed value + public static event EventHandler MotionSettingChanged + { + add + { + if (s_motionSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionEnabled, s_motionSettingChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_motionSettingChanged += value; + } + + remove + { + s_motionSettingChanged -= value; + if (s_motionSettingChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionEnabled); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_networkWifiNotificationChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool networkWifiNotification = SystemSettings.NetworkWifiNotification; + NetworkWifiNotificationChangedEventArgs eventArgs = new NetworkWifiNotificationChangedEventArgs(networkWifiNotification); + s_networkWifiNotificationChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_networkWifiNotificationChanged; + /// + /// NetworkWifiNotificationChanged event is triggered when the Wi-Fi-related notifications enabled status is changed + /// + /// + /// A NetworkWifiNotificationChangedEventArgs object that contains the key & changed value + public static event EventHandler NetworkWifiNotificationChanged + { + add + { + if (s_networkWifiNotificationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkWifiNotification, s_networkWifiNotificationChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_networkWifiNotificationChanged += value; + } + + remove + { + s_networkWifiNotificationChanged -= value; + if (s_networkWifiNotificationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkWifiNotification); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_networkFlightModeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + bool networkFlightMode = SystemSettings.NetworkFlightMode; + NetworkFlightModeChangedEventArgs eventArgs = new NetworkFlightModeChangedEventArgs(networkFlightMode); + s_networkFlightModeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_networkFlightModeChanged; + /// + /// NetworkFlightModeChanged event is triggered when the flight mode status is changed + /// + /// + /// A NetworkFlightModeChangedEventArgs object that contains the key & changed value + public static event EventHandler NetworkFlightModeChanged + { + add + { + if (s_networkFlightModeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkFlightMode, s_networkFlightModeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_networkFlightModeChanged += value; + } + + remove + { + s_networkFlightModeChanged -= value; + if (s_networkFlightModeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkFlightMode); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_screenBacklightTimeChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + int screenBacklightTime = SystemSettings.ScreenBacklightTime; + ScreenBacklightTimeChangedEventArgs eventArgs = new ScreenBacklightTimeChangedEventArgs(screenBacklightTime); + s_screenBacklightTimeChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_screenBacklightTimeChanged; + /// + /// ScreenBacklightTimeChanged event is triggered when the backlight time is changed. + /// + /// + /// A ScreenBacklightTimeChangedEventArgs object that contains the key & changed value + public static event EventHandler ScreenBacklightTimeChanged + { + add + { + if (s_screenBacklightTimeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.ScreenBacklightTime, s_screenBacklightTimeChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_screenBacklightTimeChanged += value; + } + + remove + { + s_screenBacklightTimeChanged -= value; + if (s_screenBacklightTimeChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.ScreenBacklightTime); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_soundNotificationChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + string soundNotification = SystemSettings.SoundNotification; + SoundNotificationChangedEventArgs eventArgs = new SoundNotificationChangedEventArgs(soundNotification); + s_soundNotificationChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_soundNotificationChanged; + /// + /// SoundNotificationChanged event is triggered when the file path of the current notification tone set by the user is changed + /// + /// + /// A SoundNotificationChangedEventArgs object that contains the key & changed value + public static event EventHandler SoundNotificationChanged + { + add + { + if (s_soundNotificationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotification, s_soundNotificationChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_soundNotificationChanged += value; + } + + remove + { + s_soundNotificationChanged -= value; + if (s_soundNotificationChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotification); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_soundNotificationRepetitionPeriodChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + int soundNotificationRepetitionPeriod = SystemSettings.SoundNotificationRepetitionPeriod; + SoundNotificationRepetitionPeriodChangedEventArgs eventArgs = new SoundNotificationRepetitionPeriodChangedEventArgs(soundNotificationRepetitionPeriod); + s_soundNotificationRepetitionPeriodChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_soundNotificationRepetitionPeriodChanged; + /// + /// SoundNotificationRepetitionPeriodChanged event is triggered when the time period for notification repetitions is changed + /// + /// + /// A SoundNotificationRepetitionPeriodChangedEventArgs object that contains the key & changed value + public static event EventHandler SoundNotificationRepetitionPeriodChanged + { + add + { + if (s_soundNotificationRepetitionPeriodChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod, s_soundNotificationRepetitionPeriodChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_soundNotificationRepetitionPeriodChanged += value; + } + + remove + { + s_soundNotificationRepetitionPeriodChanged -= value; + if (s_soundNotificationRepetitionPeriodChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + + private static readonly Interop.Settings.SystemSettingsChangedCallback s_lockStateChangedCallback = (SystemSettingsKeys key, IntPtr userData) => + { + SystemSettingsIdleLockState lockState = SystemSettings.LockState; + LockStateChangedEventArgs eventArgs = new LockStateChangedEventArgs(lockState); + s_lockStateChanged?.Invoke(null, eventArgs); + }; + private static event EventHandler s_lockStateChanged; + /// + /// LockStateChanged event is triggered when the current lock state is changed + /// + /// + /// A LockStateChangedEventArgs object that contains the key & changed value + public static event EventHandler LockStateChanged + { + add + { + if (s_lockStateChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockState, s_lockStateChangedCallback, IntPtr.Zero); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + s_lockStateChanged += value; + } + + remove + { + s_lockStateChanged -= value; + if (s_lockStateChanged == null) + { + SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockState); + if (ret != SystemSettingsError.None) + { + throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); + } + } + } + } + } +} + diff --git a/Tizen.System.SystemSettings/SystemSettingsEnums.cs b/Tizen.System.SystemSettings/SystemSettingsEnums.cs new file mode 100644 index 0000000..9c15122 --- /dev/null +++ b/Tizen.System.SystemSettings/SystemSettingsEnums.cs @@ -0,0 +1,171 @@ + +namespace Tizen.System.SystemSettings +{ + /// + /// Enumeration for all available system settings + /// + public enum SystemSettingsKeys + { + /// + /// (string) The file path of the current ringtone + /// + IncomingCallRingtone, + /// + /// (string) The file path of the current home screen wallpaper + /// + WallpaperHomeScreen, + /// + /// (string) The file path of the current lock screen wallpaper + /// + WallpaperLockScreen, + /// + /// (int) The current system font size + /// + FontSize, + /// + /// (string) The current system font type + /// + FontType, + /// + /// (bool) Indicates whether the motion service is activated + /// + MotionActivation, + /// + /// (string) The file path of the current email alert ringtone + /// + EmailAlertRingtone, + /// + /// (bool) Indicates whether the USB debugging is enabled (Since 2.4) + /// + UsbDebuggingEnabled, + /// + /// (bool) Indicates whether the 3G data network is enabled (Since 2.4) + /// + Data3GNetworkEnabled, + /// + /// (string) Indicates lockscreen app pkg name + /// + LockscreenApp = Data3GNetworkEnabled + 2, + /// + /// (string) The current system default font type (only support Get) + /// + DefaultFontType, + /// + /// (string) Indicates the current country setting in the _ syntax. + /// The country setting is in the ISO 639-2 format, + /// and the region setting is in the ISO 3166-1 alpha-2 format + /// + LocaleCountry, + /// + /// (string) Indicates the current language setting in the _ syntax. + /// The language setting is in the ISO 639-2 format + /// and the region setting is in the ISO 3166-1 alpha-2 format. + /// + LocaleLanguage, + /// + /// (bool) Indicates whether the 24-hour clock is used. + /// If the value is false, the 12-hour clock is used. + /// + LocaleTimeformat24Hour, + /// + /// (string) Indicates the current time zone. + /// + LocaleTimezone, + /// + /// (int) Once System changes time, this event occurs to notify time change. + /// + Time, + /// + /// GET (bool) Indicates whether the screen lock sound is enabled on the device. ex) LCD on/off sound + /// + SoundLock, + /// + /// GET (bool) Indicates whether the device is in the silent mode. + /// + SoundSilentMode, + /// + /// GET (bool) Indicates whether the screen touch sound is enabled on the device. + /// + SoundTouch, + /// + /// GET (bool) Indicates whether rotation control is automatic. + /// + DisplayScreenRotationAuto, + /// + /// GET (string) Indicates device name. + /// + DeviceName, + /// + /// GET (bool) Indicates whether the device user has enabled motion feature. + /// + MotionEnabled, + /// + /// GET (bool) Indicates whether Wi-Fi-related notifications are enabled on the device. + /// + NetworkWifiNotification, + /// + /// GET (bool) Indicates whether the device is in the flight mode. + /// + NetworkFlightMode, + /// + /// (int) Indicates the backlight time (in seconds). The following values can be used: 15, 30, 60, 120, 300, and 600. + /// + ScreenBacklightTime, + /// + /// (string) Indicates the file path of the current notification tone set by the user. + /// + SoundNotification, + /// + /// (int) Indicates the time period for notification repetitions. + /// + SoundNotificationRepetitionPeriod, + /// + /// (int) Indicates the current lock state + /// + LockState + } + /// + /// Enumeration for Idle Lock State. + /// + public enum SystemSettingsIdleLockState + { + /// + /// Device is unlocked + /// + Unlock = 0, + /// + /// Device is locked + /// + Lock, + /// + /// Device is being locked + /// + LaunchingLock + } + /// + /// Enumeration for font size. + /// + public enum SystemSettingsFontSize + { + /// + /// A small size + /// + Small = 0, + /// + /// A normal size + /// + Normal, + /// + /// A large size + /// + Large, + /// + /// A huge size + /// + Huge, + /// + /// A giant size + /// + Giant + } +} diff --git a/Tizen.System.SystemSettings/SystemSettingsEventArgs.cs b/Tizen.System.SystemSettings/SystemSettingsEventArgs.cs new file mode 100644 index 0000000..6ac413f --- /dev/null +++ b/Tizen.System.SystemSettings/SystemSettingsEventArgs.cs @@ -0,0 +1,917 @@ +using System; + +namespace Tizen.System.SystemSettings +{ + /// + /// EventArgs type for the event IncomingCallRingtoneChanged + /// + public class IncomingCallRingtoneChangedEventArgs : EventArgs + { + private readonly string _incomingCallRingtone = null; + /// + /// The enum for IncomingCallRingtone system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.IncomingCallRingtone; + } + } + + internal IncomingCallRingtoneChangedEventArgs(string val) + { + _incomingCallRingtone = val; + } + + /// + /// The file path of the current ringtone + /// + public string Value + { + get + { + return _incomingCallRingtone; + } + } + } + + /// + /// EventArgs type for the event WallpaperHomeScreenChanged + /// + public class WallpaperHomeScreenChangedEventArgs : EventArgs + { + private readonly string _wallpaperHomeScreen = null; + /// + /// The enum for WallpaperHomeScreen system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.WallpaperHomeScreen; + } + } + + internal WallpaperHomeScreenChangedEventArgs(string val) + { + _wallpaperHomeScreen = val; + } + + /// + /// The file path of the current home screen wallpaper + /// + public string Value + { + get + { + return _wallpaperHomeScreen; + } + } + } + + /// + /// EventArgs type for the event WallpaperLockScreenChanged + /// + public class WallpaperLockScreenChangedEventArgs : EventArgs + { + private readonly string _wallpaperLockScreen = null; + /// + /// The enum for WallpaperLockScreen system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.WallpaperLockScreen; + } + } + + internal WallpaperLockScreenChangedEventArgs(string val) + { + _wallpaperLockScreen = val; + } + + /// + /// The file path of the current lock screen wallpaper + /// + public string Value + { + get + { + return _wallpaperLockScreen; + } + } + } + + /// + /// EventArgs type for the event FontSizeChanged + /// + public class FontSizeChangedEventArgs : EventArgs + { + private readonly SystemSettingsFontSize _fontSize; + /// + /// The enum for FontSize system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.FontSize; + } + } + internal FontSizeChangedEventArgs(SystemSettingsFontSize val) + { + _fontSize = val; + } + + /// + /// The current system font size + /// + public SystemSettingsFontSize Value + { + get + { + return _fontSize; + } + } + } + + /// + /// EventArgs type for the event FontTypeChanged + /// + public class FontTypeChangedEventArgs : EventArgs + { + private readonly string _fontType = null; + /// + /// The enum for FontType system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.FontType; + } + } + internal FontTypeChangedEventArgs(string val) + { + _fontType = val; + } + + /// + /// The current system font type + /// + public string Value + { + get + { + return _fontType; + } + } + } + + /// + /// EventArgs type for the event MotionActivationChanged + /// + public class MotionActivationChangedEventArgs : EventArgs + { + private readonly bool _motionActivation; + /// + /// The enum for MotionActivation system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.MotionActivation; + } + } + internal MotionActivationChangedEventArgs(bool val) + { + _motionActivation = val; + } + + /// + /// Indicates whether the motion service is activated + /// + public bool Value + { + get + { + return _motionActivation; + } + } + } + + /// + /// EventArgs type for the event EmailAlertRingtoneChanged + /// + public class EmailAlertRingtoneChangedEventArgs : EventArgs + { + private readonly string _emailAlertRingtone = null; + /// + /// The enum for EmailAlertRingtone system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.EmailAlertRingtone; + } + } + internal EmailAlertRingtoneChangedEventArgs(string val) + { + _emailAlertRingtone = val; + } + + /// + /// The file path of the current email alert ringtone + /// + public string Value + { + get + { + return _emailAlertRingtone; + } + } + } + + /// + /// EventArgs type for the event UsbDebuggingSettingChanged + /// + public class UsbDebuggingSettingChangedEventArgs : EventArgs + { + private readonly bool _usbDebuggingEnabled; + /// + /// The enum for UsbDebuggingEnabled system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.UsbDebuggingEnabled; + } + } + internal UsbDebuggingSettingChangedEventArgs(bool val) + { + _usbDebuggingEnabled = val; + } + + /// + /// Indicates whether the USB debugging is enabled + /// + public bool Value + { + get + { + return _usbDebuggingEnabled; + } + } + } + + /// + /// EventArgs type for the event Data3GNetworkSettingChanged + /// + public class Data3GNetworkSettingChangedEventArgs : EventArgs + { + private readonly bool _data3GNetworkEnabled; + /// + /// The enum for Data3GNetworkEnabled system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.Data3GNetworkEnabled; + } + } + internal Data3GNetworkSettingChangedEventArgs(bool val) + { + _data3GNetworkEnabled = val; + } + + /// + /// Indicates whether the 3G data network is enabled + /// + public bool Value + { + get + { + return _data3GNetworkEnabled; + } + } + } + + /// + /// EventArgs type for the event LockscreenAppChanged + /// + public class LockscreenAppChangedEventArgs : EventArgs + { + private readonly string _lockscreenApp = null; + /// + /// The enum for LockscreenApp system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LockscreenApp; + } + } + internal LockscreenAppChangedEventArgs(string val) + { + _lockscreenApp = val; + } + + /// + /// Indicates lockscreen app pkg name + /// + public string Value + { + get + { + return _lockscreenApp; + } + } + } + + /// + /// EventArgs type for the event DefaultFontTypeChanged + /// + public class DefaultFontTypeChangedEventArgs : EventArgs + { + private readonly string _defaultFontType = null; + /// + /// The enum for DefaultFontType system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.DefaultFontType; + } + } + internal DefaultFontTypeChangedEventArgs(string val) + { + _defaultFontType = val; + } + + /// + /// The current system default font type + /// + public string Value + { + get + { + return _defaultFontType; + } + } + } + + /// + /// EventArgs type for the event LocaleCountryChanged + /// + public class LocaleCountryChangedEventArgs : EventArgs + { + private readonly string _localeCountry = null; + /// + /// The enum for LocaleCountry system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LocaleCountry; + } + } + internal LocaleCountryChangedEventArgs(string val) + { + _localeCountry = val; + } + + /// + /// Indicates the current country setting in the _ syntax. + /// The country setting is in the ISO 639-2 format, and the region setting is in the ISO 3166-1 alpha-2 format + /// + public string Value + { + get + { + return _localeCountry; + } + } + } + + /// + /// EventArgs type for the event LocaleLanguageChanged + /// + public class LocaleLanguageChangedEventArgs : EventArgs + { + private readonly string _localeLanguage = null; + /// + /// The enum for LocaleLanguage system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LocaleLanguage; + } + } + internal LocaleLanguageChangedEventArgs(string val) + { + _localeLanguage = val; + } + + /// + /// Indicates the current language setting in the _ syntax. + /// The language setting is in the ISO 639-2 format and the region setting is in the ISO 3166-1 alpha-2 format + /// + public string Value + { + get + { + return _localeLanguage; + } + } + } + + /// + /// EventArgs type for the event LocaleTimeformat24HourChanged + /// + public class LocaleTimeformat24HourChangedEventArgs : EventArgs + { + private readonly bool _localeTimeformat24Hour; + /// + /// The enum for LocaleTimeformat24Hour system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LocaleTimeformat24Hour; + } + } + internal LocaleTimeformat24HourChangedEventArgs(bool val) + { + _localeTimeformat24Hour = val; + } + + /// + /// Indicates whether the 24-hour clock is used. If the value is false, the 12-hour clock is used. + /// + public bool Value + { + get + { + return _localeTimeformat24Hour; + } + } + } + + /// + /// EventArgs type for the event LocaleTimezoneChanged + /// + public class LocaleTimezoneChangedEventArgs : EventArgs + { + private readonly string _localeTimezone = null; + /// + /// The enum for LocaleTimezone system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LocaleTimezone; + } + } + internal LocaleTimezoneChangedEventArgs(string val) + { + _localeTimezone = val; + } + + /// + /// Indicates the current time zone + /// + public string Value + { + get + { + return _localeTimezone; + } + } + } + + /// + /// EventArgs type for the event TimeChanged + /// + public class TimeChangedEventArgs : EventArgs + { + /// + /// The enum for Time system setting event + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.Time; + } + } + } + + /// + /// EventArgs type for the event SoundLockChanged + /// + public class SoundLockChangedEventArgs : EventArgs + { + private readonly bool _soundLock; + /// + /// The enum for SoundLock system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.SoundLock; + } + } + internal SoundLockChangedEventArgs(bool val) + { + _soundLock = val; + } + + /// + /// Indicates whether the screen lock sound is enabled on the device. ex) LCD on/off sound + /// + public bool Value + { + get + { + return _soundLock; + } + } + } + + /// + /// EventArgs type for the event SoundSilentModeChanged + /// + public class SoundSilentModeChangedEventArgs : EventArgs + { + private readonly bool _soundSilentMode; + /// + /// The enum for SoundSilentMode system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.SoundSilentMode; + } + } + internal SoundSilentModeChangedEventArgs(bool val) + { + _soundSilentMode = val; + } + + /// + /// Indicates whether the device is in the silent mode. + /// + public bool Value + { + get + { + return _soundSilentMode; + } + } + } + + /// + /// EventArgs type for the event SoundTouchChanged + /// + public class SoundTouchChangedEventArgs : EventArgs + { + private readonly bool _soundTouch; + /// + /// The enum for SoundTouch system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.SoundTouch; + } + } + internal SoundTouchChangedEventArgs(bool val) + { + _soundTouch = val; + } + + /// + /// Indicates whether the screen touch sound is enabled on the device. + /// + public bool Value + { + get + { + return _soundTouch; + } + } + } + + /// + /// EventArgs type for the event DisplayScreenRotationAutoChanged + /// + public class DisplayScreenRotationAutoChangedEventArgs : EventArgs + { + private readonly bool _displayScreenRotationAuto; + /// + /// The enum for DisplayScreenRotationAuto system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.DisplayScreenRotationAuto; + } + } + internal DisplayScreenRotationAutoChangedEventArgs(bool val) + { + _displayScreenRotationAuto = val; + } + + /// + /// Indicates whether rotation control is automatic + /// + public bool Value + { + get + { + return _displayScreenRotationAuto; + } + } + } + + /// + /// EventArgs type for the event DeviceNameChanged + /// + public class DeviceNameChangedEventArgs : EventArgs + { + private readonly string _deviceName = null; + /// + /// The enum for DeviceName system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.DeviceName; + } + } + internal DeviceNameChangedEventArgs(string val) + { + _deviceName = val; + } + + /// + /// Indicates device name + /// + public string Value + { + get + { + return _deviceName; + } + } + } + + /// + /// EventArgs type for the event MotionSettingChanged + /// + public class MotionSettingChangedEventArgs : EventArgs + { + private readonly bool _motionEnabled; + /// + /// The enum for MotionEnabled system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.MotionEnabled; + } + } + internal MotionSettingChangedEventArgs(bool val) + { + _motionEnabled = val; + } + + /// + /// Indicates whether the device user has enabled motion feature + /// + public bool Value + { + get + { + return _motionEnabled; + } + } + } + + /// + /// EventArgs type for the event NetworkWifiNotificationChanged + /// + public class NetworkWifiNotificationChangedEventArgs : EventArgs + { + private readonly bool _networkWifiNotification; + /// + /// The enum for NetworkWifiNotification system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.NetworkWifiNotification; + } + } + internal NetworkWifiNotificationChangedEventArgs(bool val) + { + _networkWifiNotification = val; + } + + /// + /// Indicates whether Wi-Fi-related notifications are enabled on the device + /// + public bool Value + { + get + { + return _networkWifiNotification; + } + } + } + + /// + /// EventArgs type for the event NetworkFlightModeChanged + /// + public class NetworkFlightModeChangedEventArgs : EventArgs + { + private readonly bool _networkFlightMode; + /// + /// The enum for NetworkFlightMode system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.NetworkFlightMode; + } + } + internal NetworkFlightModeChangedEventArgs(bool val) + { + _networkFlightMode = val; + } + + /// + /// Indicates whether the device is in the flight mode + /// + public bool Value + { + get + { + return _networkFlightMode; + } + } + } + + /// + /// EventArgs type for the event ScreenBacklightTimeChanged + /// + public class ScreenBacklightTimeChangedEventArgs : EventArgs + { + private readonly int _screenBacklightTime; + /// + /// The enum for ScreenBacklightTime system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.ScreenBacklightTime; + } + } + internal ScreenBacklightTimeChangedEventArgs(int val) + { + _screenBacklightTime = val; + } + + /// + /// Indicates the backlight time (in seconds) + /// + public int Value + { + get + { + return _screenBacklightTime; + } + } + } + + /// + /// EventArgs type for the event SoundNotificationChanged + /// + public class SoundNotificationChangedEventArgs : EventArgs + { + private readonly string _soundNotification = null; + /// + /// The enum for SoundNotification system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.SoundNotification; + } + } + internal SoundNotificationChangedEventArgs(string val) + { + _soundNotification = val; + } + + /// + /// Indicates the file path of the current notification tone set by the user + /// + public string Value + { + get + { + return _soundNotification; + } + } + } + + /// + /// EventArgs type for the event SoundNotificationRepetitionPeriodChanged + /// + public class SoundNotificationRepetitionPeriodChangedEventArgs : EventArgs + { + private readonly int _soundNotificationRepetitionPeriod; + /// + /// The enum for SoundNotificationRepetitionPeriod system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.SoundNotificationRepetitionPeriod; + } + } + internal SoundNotificationRepetitionPeriodChangedEventArgs(int val) + { + _soundNotificationRepetitionPeriod = val; + } + + /// + /// Indicates the time period for notification repetitions + /// + public int Value + { + get + { + return _soundNotificationRepetitionPeriod; + } + } + } + + /// + /// EventArgs type for the event LockStateChanged + /// + public class LockStateChangedEventArgs : EventArgs + { + private readonly SystemSettingsIdleLockState _lockState; + /// + /// The enum for LockState system setting key + /// + public SystemSettingsKeys Key + { + get + { + return SystemSettingsKeys.LockState; + } + } + internal LockStateChangedEventArgs(SystemSettingsIdleLockState val) + { + _lockState = val; + } + + /// + /// Indicates the current lock state + /// + public SystemSettingsIdleLockState Value + { + get + { + return _lockState; + } + } + } +} diff --git a/Tizen.System.SystemSettings/SystemSettingsExceptionFactory.cs b/Tizen.System.SystemSettings/SystemSettingsExceptionFactory.cs new file mode 100644 index 0000000..ca502dc --- /dev/null +++ b/Tizen.System.SystemSettings/SystemSettingsExceptionFactory.cs @@ -0,0 +1,44 @@ +using System; + +namespace Tizen.System.SystemSettings +{ + internal enum SystemSettingsError + { + None = Tizen.Internals.Errors.ErrorCode.None, + InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter, + OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory, + IoError = Tizen.Internals.Errors.ErrorCode.IoError, + PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied, + NotSupported = Tizen.Internals.Errors.ErrorCode.NotSupported, + LockScreenAppPasswordMode = -0x01140000 | 0x01 + }; + internal class SystemSettingsExceptionFactory + { + internal const string LogTag = "Tizen.System.SystemSettings"; + + internal static Exception CreateException(SystemSettingsError err, string msg) + { + Exception exp; + switch (err) + { + case SystemSettingsError.InvalidParameter: + exp = new ArgumentException(msg); + break; + case SystemSettingsError.OutOfMemory: + //fall through + case SystemSettingsError.IoError: + //fall through + case SystemSettingsError.PermissionDenied: + //fall through + case SystemSettingsError.NotSupported: + //fall through + case SystemSettingsError.LockScreenAppPasswordMode: + //fall through + default: + exp = new InvalidOperationException(msg); + break; + } + return exp; + } + } +} diff --git a/Tizen.System.SystemSettings/Tizen.System.SystemSettings.csproj b/Tizen.System.SystemSettings/Tizen.System.SystemSettings.csproj new file mode 100644 index 0000000..b66b16f --- /dev/null +++ b/Tizen.System.SystemSettings/Tizen.System.SystemSettings.csproj @@ -0,0 +1,77 @@ + + + + + Debug + AnyCPU + {09D03C33-2FCE-4C18-BEC8-F585A865A4B4} + Library + Properties + Tizen.System.SystemSettings + Tizen.System.SystemSettings + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + + + Tizen.System.SystemSettings.snk + + + + + + + + + + + ..\..\..\Desktop\Tizen_dlls\Tizen.dll + + + ..\..\..\Desktop\Tizen_dlls\Tizen.Internals.dll + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tizen.System.SystemSettings/Tizen.System.SystemSettings.snk b/Tizen.System.SystemSettings/Tizen.System.SystemSettings.snk new file mode 100644 index 0000000000000000000000000000000000000000..a6e54d1d1c9025cb70743a5455930247242f54c9 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097NR?GqPS<*DRAOk^v7*MJGuxYBt00^HH z8F#d;?v`I(Y$cO8GoKl^)7P#Pl_scW`2GHdUn&|1eS@nC5lZ~nE*`T*NoVuG8n)061OU76`A8_o2v4^x%57H<$oHDY#UZ$g>UO~914OrhW|*8yUP-4 zMFwNM%r9mAyg}rAbIz_34>ZIr15LdrFC^U>kSx#(8qs*b@R7}pgEm?iCvT|J-IO<10ZBP6a~5C@6(q?(v!Bo zew8g(mwM1B^zZ}L$eawp>6TGCnUs7$FCL+rQzu&J8Xhd^`OxTf+8j7J)#Rvi3A3!) z&)6Y591h5E=o!reT6a|Ni>*Ftj_P>|D*_6pNI}ove{4isj^CF&+(8FbWq)Q>B1}(W z`y5kQmcmgfD1r-Ke%~(tysWoEAe+XWNsmLob@#v^p9PM1korcN5h2T4oZp*@Ejy_` znZFtB05^>P(Tu)o+$`!bXnUzV5}+)BS7>k7uTvv%0_Sl@pdv2>S@2Hd(k&d5T0C+d ia|reCOs}z)7{Hk|96Yi}!w(*rwe=2V>w4x?o?$RWkrN>R literal 0 HcmV?d00001 diff --git a/packaging/csapi-systemsettings.manifest b/packaging/csapi-systemsettings.manifest new file mode 100644 index 0000000..75b0fa5 --- /dev/null +++ b/packaging/csapi-systemsettings.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/csapi-systemsettings.pc.in b/packaging/csapi-systemsettings.pc.in new file mode 100644 index 0000000..c396812 --- /dev/null +++ b/packaging/csapi-systemsettings.pc.in @@ -0,0 +1,5 @@ +Name: csapi-systemsettings +Description: Tizen System Settings API for C# +Version: @version@ +Libs: -r:@dllpath@/@dllname@ +Requires: \ No newline at end of file diff --git a/packaging/csapi-systemsettings.spec b/packaging/csapi-systemsettings.spec new file mode 100644 index 0000000..9f47acb --- /dev/null +++ b/packaging/csapi-systemsettings.spec @@ -0,0 +1,84 @@ +%define dllpath %{_libdir}/mono/tizen +%define dllname Tizen.System.SystemSettings.dll + +Name: csapi-systemsettings +Summary: Tizen System API for C# +Version: 1.0.0 +Release: 1 +Group: Development/Libraries +License: Apache-2.0 +URL: https://www.tizen.org +Source0: %{name}-%{version}.tar.gz +Source1: %{name}.manifest +Source2: %{name}.pc.in + +# TODO: replace mono-compiler, mono-devel to mcs, mono-shlib-cop +BuildRequires: mono-compiler +BuildRequires: mono-devel +# TODO: replace mono-core to gacutil. +# mono-core should provide the symbol 'gacutil' +Requires(post): mono-core +Requires(postun): mono-core + +# P/Invoke Dependencies +BuildRequires: pkgconfig(capi-system-system-settings) + +# P/Invoke Runtime Dependencies +# TODO: It should be removed after fix tizen-rpm-config +Requires: pkgconfig(capi-system-system-settings) +# DLL Dependencies +BuildRequires : pkgconfig(csapi-tizen) + +%description +Tizen System Device API for C# + +%package devel +Summary: Development package for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Development package for %{name} + +%prep +%setup -q + +cp %{SOURCE1} . + +%build +# build dll +mcs -target:library -out:%{dllname} -keyfile:Tizen.System.SystemSettings/Tizen.System.SystemSettings.snk -pkg:csapi-tizen \ + Tizen.System.SystemSettings/Properties/AssemblyInfo.cs \ + Tizen.System.SystemSettings/SystemSettings.cs \ + Tizen.System.SystemSettings/SystemSettingsEnums.cs \ + Tizen.System.SystemSettings/SystemSettingsEventArgs.cs \ + Tizen.System.SystemSettings/SystemSettingsExceptionFactory.cs \ + Tizen.System.SystemSettings/Interop/Interop.Settings.cs + +# check p/invoke +if [ -x %{dllname} ]; then + RET=`mono-shlib-cop %{dllname}`; \ + CNT=`echo $RET | grep -E "^error:" | wc -l`; \ + if [ $CNT -gt 0 ]; then exit 1; fi +fi + +%install +# copy dll +mkdir -p %{buildroot}%{dllpath} +install -p -m 644 %{dllname} %{buildroot}%{dllpath} + +# generate pkgconfig +mkdir -p %{buildroot}%{_libdir}/pkgconfig +sed -e "s#@version@#%{version}#g" \ + -e "s#@dllpath@#%{dllpath}#g" \ + -e "s#@dllname@#%{dllname}#g" \ + %{SOURCE2} > %{buildroot}%{_libdir}/pkgconfig/%{name}.pc + +%post +gacutil -i %{dllpath}/%{dllname} + +%files +%{dllpath}/%{dllname} + +%files devel +%{_libdir}/pkgconfig/%{name}.pc diff --git a/tct-system-settings-tizen-tests/Makefile b/tct-system-settings-tizen-tests/Makefile new file mode 100644 index 0000000..8f7b62d --- /dev/null +++ b/tct-system-settings-tizen-tests/Makefile @@ -0,0 +1,48 @@ + +ifndef config + config=debug +endif + +ifndef verbose + SILENT = @ +endif + +PROJECTS := tct-system-settings-tizen-tests + +CSC = mcs + +.PHONY: all clean help $(PROJECTS) prebuild prelink + +ifeq ($(config),debug) + FLAGS = /debug /noconfig /d:DEBUG +endif + +ifeq ($(config),release) + FLAGS = /optimize /noconfig /d:NDEBUG +endif + +FLAGS += /t:exe + +TARGETDIR = bin +OBJDIR = obj +TARGET = $(TARGETDIR)/$(PROJECTS).exe +SOURCES = $(wildcard src/**/*.cs src/*.cs) +null := +space := $(null) # +comma := , +DLLS = $(wildcard lib/*.dll) +ifneq ("$(DLLS)", "") + REFERENCE = "/reference:$(subst $(space),$(comma),$(DLLS))" +endif + +all: $(TARGETDIR) $(TARGET) + +$(TARGET): $(SOURCES) $(DLLS) + @echo "=== Building $(PROJECTS) ($(config))" + $(SILENT) $(CSC) /nologo /out:$@ $(REFERENCE) $(FLAGS) $(SOURCES) + +$(TARGETDIR): + $(SILENT) mkdir -p $(TARGETDIR) + +clean: + $(SILENT) rm -rf $(TARGETDIR) diff --git a/tct-system-settings-tizen-tests/ReadMe.md b/tct-system-settings-tizen-tests/ReadMe.md new file mode 100644 index 0000000..d1a7384 --- /dev/null +++ b/tct-system-settings-tizen-tests/ReadMe.md @@ -0,0 +1,12 @@ +tct-system-settings-tizen-tests +├── src - Directory containing main method and test cases. +│ ├── Program.cs - Main method of the application. +│ ├── testcase +│ │ └── TSSystemSettings.cs - Test case file of SystemSettings Class. +├── bin - Contains executable file which is created by make file. +├── lib - Library files which needs to be packed. +├── res - Resource folder for any resources needed to run test. +├── share +├── Makefile - Script which builds package. +├── TCTCert.p12 - A Certificate file for building package. (pw:test) +└── tizen-manifest.xml - A Tizen Manifest file for declaring privilege and controls. diff --git a/tct-system-settings-tizen-tests/TCTCert.p12 b/tct-system-settings-tizen-tests/TCTCert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..386746380f484c74e9ceda9e2d28bd6296d131bb GIT binary patch literal 2429 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 R53AGP&zbA}g#S|x{1?dFMfLyy literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/lib/Tizen.Internals.dll b/tct-system-settings-tizen-tests/lib/Tizen.Internals.dll new file mode 100644 index 0000000000000000000000000000000000000000..fa644e1261bfd6e4deab863bb2a4d449a3919a9e GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/lib/Tizen.System.SystemSettings.dll b/tct-system-settings-tizen-tests/lib/Tizen.System.SystemSettings.dll new file mode 100644 index 0000000000000000000000000000000000000000..fd9c8f76ed5ed64d501c0c0868d95a53e43f6deb GIT binary patch literal 45568 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

A@=p(blEy96;+8_Xiq?p< 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 literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/lib/Tizen.dll b/tct-system-settings-tizen-tests/lib/Tizen.dll new file mode 100644 index 0000000000000000000000000000000000000000..f656769e42f790a36dee6f2f000f6ac7a5d95e77 GIT binary patch literal 7168 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 PP0|xwgZ|(C=Q8j&_*ki< literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/ReadMe.md b/tct-system-settings-tizen-tests/res/ReadMe.md new file mode 100644 index 0000000..451175c --- /dev/null +++ b/tct-system-settings-tizen-tests/res/ReadMe.md @@ -0,0 +1,11 @@ +# Naming conventions + +1) "TC" refers to "org.test.tizen.tizen". + +# purpose of those scripts + +1) "push.sh" - this script is made for pushing the TC and "install.sh", "run.sh" scripts to Tizen device. Run it in Ubuntu. + +2) "install.sh" - this script is made for installing the test application in Tizen device. This script will be pushed to "/home/owner" directory of Tizen device. Manually run it. + +3) "run.sh" - this script is made for launching & relaunching TC for API. This script will be pushed to "/home/owner" directory of Tizen device. Manually run it. diff --git a/tct-system-settings-tizen-tests/res/Result/style/application.js b/tct-system-settings-tizen-tests/res/Result/style/application.js new file mode 100644 index 0000000..147094f --- /dev/null +++ b/tct-system-settings-tizen-tests/res/Result/style/application.js @@ -0,0 +1,194 @@ +function getScrollTop() { + return f_scrollTop(); +} + +function f_scrollTop() { + return f_filterResults($(window) ? $(window).scrollTop() : 0, + document.documentElement ? document.documentElement.scrollTop : 0, + document.body ? document.body.scrollTop : 0); +} +function f_filterResults(n_win, n_docel, n_body) { + var n_result = n_win ? n_win : 0; + if (n_docel && (!n_result || (n_result > n_docel))) + n_result = n_docel; + return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result; +} + +function setScrollTop() { + $(window) ? $(window).scrollTop(0) : 0; + document.documentElement ? document.documentElement.scrollTop = 0 : 0; + document.body ? document.body.scrollTop = 0 : 0; +} + +function goTopEx() { + $node = $('#goTopBtn'); + if (getScrollTop() > 0) { + $node.show(); + } else { + $node.hide(); + } + + $(window).scroll(function() { + if (getScrollTop() > 0) { + $node.show(); + } else { + $node.hide(); + } + }); + + $node.click(function() { + setScrollTop(); + }); +} + +function drawRatio() { + $('.suite_item').each(function(i, node) { + drawSuiteRatio(node) + }); +} + +$(".see_all").click(function(){ + $("#see_all").show(); + $("#see_fail").hide(); + $("#see_block").hide(); + $("#see_na").hide(); + updateToggles(); + return false; +}); + +$(".see_failed").click(function(){ + $("#see_all").hide(); + $("#see_fail").show(); + $("#see_block").hide(); + $("#see_na").hide(); + updateToggles(); + return false; +}); + +$(".see_blocked").click(function(){ + $("#see_all").hide(); + $("#see_fail").hide(); + $("#see_block").show(); + $("#see_na").hide(); + updateToggles(); + return false; +}); + +$(".see_na").click(function(){ + $("#see_all").hide(); + $("#see_fail").hide(); + $("#see_block").hide(); + $("#see_na").show(); + updateToggles(); + return false; +}); + +$("a.test_case_popup").click(function(){ + var $this = $(this); + Popup.show($this.attr('id')); + return false; +}); + +$(".see_capabilities").click(function(){ + if ($('#capability_table').css('display') == 'none') { + $("#capability_table").show(); + }else{ + $("#capability_table").hide(); + } + return false; +}); + +function drawSuiteRatio(node) { + arrTitle = new Array("Passed", "Failed", "Blocked", "Not Executed"); + var $node = $(node); + var $total = $node.find('.total'); + var $pass = $node.find('.pass'); + var $fail = $node.find('.fail'); + var $block = $node.find('.block'); + var $na = $node.find('.na'); + var $div = $node.find('.RatioGraphic'); + + var total_int = parseInt($total.text()); + var pass_int = parseInt($pass.text()); + var fail_int = parseInt($fail.text()); + var block_int = parseInt($block.text()); + var na_int = parseInt($na.text()); + + var pass_rate = pass_int * 100 / total_int; + var fail_rate = fail_int * 100 / total_int; + var block_rate = block_int * 100 / total_int; + var na_rate = na_int * 100 / total_int; + + var areaWidth = 380; + + var pass_width = areaWidth * pass_rate / 100; + var fail_width = areaWidth * fail_rate / 100; + var block_width = areaWidth * block_rate / 100; + var na_width = areaWidth * na_rate / 100; + + pass_rate = pass_rate.toFixed(2); + fail_rate = fail_rate.toFixed(2); + block_rate = block_rate.toFixed(2); + na_rate = na_rate.toFixed(2); + + var pass_style = "padding:3px 0px 0px 0px;font-size:9pt;height:17px;text-align:center;color:white;font-weight:bold;background:url("./style/blue.jpg");" + var fail_style = "padding:3px 0px 0px 0px;font-size:9pt;height:17px;text-align:center;color:white;font-weight:bold;background:url("./style/red.jpg");" + var block_style = "padding:3px 0px 0px 0px;font-size:9pt;height:17px;text-align:center;color:white;font-weight:bold;background:url("./style/orange.jpg");" + var na_style = "padding:3px 0px 0px 0px;font-size:9pt;height:17px;text-align:center;color:white;font-weight:bold;background:url("./style/gray.jpg");" + + var html = ""; + if (pass_width > 0){ + html += ""; + } + if (fail_width > 0){ + html += ""; + } + if (block_width > 0){ + html += ""; + } + if (na_width > 0){ + html += ""; + } + html += "
"; + if (pass_width > 20){ + html += pass_rate + "%" + } + html += ""; + if (fail_width > 20){ + html += fail_rate + "%" + } + html += ""; + if (block_width > 20){ + html += block_rate + "%" + } + html += ""; + if (na_width > 20){ + html += na_rate + "%" + } + html += "
"; + $div.html(html); +} diff --git a/tct-system-settings-tizen-tests/res/Result/style/back_top.png b/tct-system-settings-tizen-tests/res/Result/style/back_top.png new file mode 100644 index 0000000000000000000000000000000000000000..19cbd763108a85a2a7c2954c0172b580a7ccb3b3 GIT binary patch literal 1122 zcmV-o1fBbdP)r0015c0ssI2d=e3600001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1NTWpK~!i%?ODH1 z+dvd{+C)SOk|P+hp$yOgm6jPqnTZ7I)Gcc=!k+>oS=pEnNXbkQnJGvNz!0%z0L2wZ zMoHzq^PTPU`E1|$a1~W&Wgzjp_uhTq`*labaU4TG(~7`{X?0Bdg%Hs6Om!S+dNe&# zjlfhpR}dWy9<9Q;9okCWbT-PlZmxGRYz)9cX@6&K*AzANaPz!$H3sR{X6o*f- z4b*pEk}JU4uwK_a%~5TJF*!IJ;>H6{=Ny#NbHyhHA$=!8ayEz&r+zXFgmpvfhqI?w|FUEqarP39Cc>f-quc3jEdu+U@+o)4zI3^xJNqzVuyjX!~+ej2wH~ z!#?9@^sW!Wb4xOgtua!P|?@BCZTN@<*r+%(Pxu0eDfun^ZQju zN7LD^EJhIPU3jryH{Y7jCsuOOy7#FG2=cVzO?_1 zlUSm)i8WXLUKd>&D<`V6w9Fo>i_18DN0a+_FQn-SR4r6UeIN$n?O7At&)G*bY)h>= zu2H-L&wm;uiKSmp^?}Eaeo3F#ad`p_g zkaTccl`IJj#%&VJotuA|7HL``L^*eEN#;^7^gJj%uZS@*os`d9+Ec76WDhY%&DLh+ zk~gPu{7RB6cX^W=C|O+bb10mksqr3fuC*y~*&4DVsdKGL=1E#fs&zGbAaCd)4J^Z) z7R;>36Esb7Ig3c*^kNl;p$CS#b-#ql94e#c+#y@;{KUk8jLy$r=fXIkvq!3R;o_DW zp;~~4fZ~5Q)UroYk~0FDo}2+zQ?Kb!!!PI6y7%M^u$p?EJ!<&nyjs(fGr(%NP!T_~pF%FN1_9_w2rCUjP6A07*qoM6N<$f@q*1S^xk5 literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/Result/style/blue.jpg b/tct-system-settings-tizen-tests/res/Result/style/blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1db8f724fa76eb1f4efb914d24be05c187109d8 GIT binary patch literal 954 zcmex=eAA-4QK!nlZm zfsvIF3>ct*k%^gwm5rT)lZ%^?ff*tPBq6d$k^&4&jLghTEX=H|EG$4{YJqYLEP|{; ziiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@shPQjrIoXb ztDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRvK4a#rMT?g# zUABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~zj*oTTk@SCu%S(U=?B5(qa)L@X*7#m8DOl#UiAmVu=Tcr^qMLDWl0zutf1t zBi|CmOpYi9pn9eTp$4HD$1WIZ_T(D&E;DSK>FjIRYjVusvPR}AiOW61}+8- zMh!;Ip3DVF!4kKUr80XGmjzt*N%l4DF*zlb)n;;8;#Ml}g5=B|uVf*RYM?(BumIgA z)*$QQbO~sVEYxs0nBhm2+=B!b0qtV}TDGM@LtqO7&{>=goIc4J5^Xb%%|f!ps7)#v aXp7m5W0y5@nSs8&EHMS7nw6pc|4jgm*fB5w literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/Result/style/gray.jpg b/tct-system-settings-tizen-tests/res/Result/style/gray.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1acfdbe94c05b638ac06a84edf7c7bbb1125f3e GIT binary patch literal 866 zcmex=wkpZ3brsCPqdOf&yk%W)NUwVPR%vXJcmvVGd4iP7V$(4t91fUM?^_0R}-120_L^W=16jCP7AKLB{__7~~lk7+Hbd0r?0D z7@3$^SlNJ1;^GD>*eU>YJ~J~D(6Ov6EI`$@KzRlhK~^C}Lq|5@z(jVXLJ_0Ji3>TD zoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)HEIcAIDmf)J zEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf$Ie}c z4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fpj10^WZ^38f2KE_o9%~}YXK;@p{B?_ghnW!=dCY3JE*Eh+R}GQb@{A;m&0YWe@)1OTom7e@d9 literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/Result/style/jquery.min.js b/tct-system-settings-tizen-tests/res/Result/style/jquery.min.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/tct-system-settings-tizen-tests/res/Result/style/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/tct-system-settings-tizen-tests/res/Result/style/orange.jpg b/tct-system-settings-tizen-tests/res/Result/style/orange.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac4c7493f8b541b2d97af3982860fdfce378d658 GIT binary patch literal 934 zcmex=eAA-4QK!nlZm zfsvIF3>ct*k%^gwm5rT)lZ%^?ff*tPBq6d$k^&4&jLghTEX=H|EG$4{YJqYLEP|{; ziiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@shPQjrIoXb ztDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRvK4a#rMT?g# zUABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~zj*oTqL?A@(1V@JrB8&TV2R?P3GG}?A^{LuY(jg0VkSov zg9gI_rUsz~p&3UOuq-pwkhqmB?UNK>xaFA1Wr}B8g@Ex zLJT$oT9usHlWW+!ASoDRpTiNL#f+LgUJ%CstzcM?1Tucn1imF64;_Hc1{xpe0W_I^ z0npHgAQm^!hfbG3j^|?VVt_diXl^FN7g9hL$o$JbKrt^ihznR5L>L0t|K9`v=nx~$ literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/Result/style/popup.js b/tct-system-settings-tizen-tests/res/Result/style/popup.js new file mode 100644 index 0000000..5f994f4 --- /dev/null +++ b/tct-system-settings-tizen-tests/res/Result/style/popup.js @@ -0,0 +1,1215 @@ +/** + * Copyright (c)2005-2009 Matt Kruse (javascripttoolbox.com) + * + * Dual licensed under the MIT and GPL licenses. + * This basically means you can use this code however you want for + * free, but don't claim to have written it yourself! + * Donations always accepted: http://www.JavascriptToolbox.com/donate/ + * + * Please do not link to the .js files on javascripttoolbox.com from + * your site. Copy the files locally to your server instead. + * + */ +/* ******************************************************************* */ +/* UTIL FUNCTIONS */ +/* ******************************************************************* */ +var Util = {'$VERSION':1.06}; + +// Util functions - these are GLOBAL so they +// look like built-in functions. + +// Determine if an object is an array +function isArray(o) { + return (o!=null && typeof(o)=="object" && typeof(o.length)=="number" && (o.length==0 || defined(o[0]))); +}; + +// Determine if an object is an Object +function isObject(o) { + return (o!=null && typeof(o)=="object" && defined(o.constructor) && o.constructor==Object && !defined(o.nodeName)); +}; + +// Determine if a reference is defined +function defined(o) { + return (typeof(o)!="undefined"); +}; + +// Iterate over an array, object, or list of items and run code against each item +// Similar functionality to Perl's map() function +function map(func) { + var i,j,o; + var results = []; + if (typeof(func)=="string") { + func = new Function('$_',func); + } + for (i=1; i>>=4; + } + while(hex.length<6) { hex='0'+hex; } + return "#" + hex; + }; + + // Convert hyphen style names like border-width to camel case like borderWidth + css.hyphen2camel = function(property) { + if (!defined(property) || property==null) { return null; } + if (property.indexOf("-")<0) { return property; } + var str = ""; + var c = null; + var l = property.length; + for (var i=0; i0) { + return bodies[0]; + } + } + return null; + }; + + // Get the amount that the main document has scrolled from top + // -------------------------------------------------------------------- + screen.getScrollTop = function() { + if (document.documentElement && defined(document.documentElement.scrollTop) && document.documentElement.scrollTop>0) { + return document.documentElement.scrollTop; + } + if (document.body && defined(document.body.scrollTop)) { + return document.body.scrollTop; + } + return null; + }; + + // Get the amount that the main document has scrolled from left + // -------------------------------------------------------------------- + screen.getScrollLeft = function() { + if (document.documentElement && defined(document.documentElement.scrollLeft) && document.documentElement.scrollLeft>0) { + return document.documentElement.scrollLeft; + } + if (document.body && defined(document.body.scrollLeft)) { + return document.body.scrollLeft; + } + return null; + }; + + // Util function to default a bad number to 0 + // -------------------------------------------------------------------- + screen.zero = function(n) { + return (!defined(n) || isNaN(n))?0:n; + }; + + // Get the width of the entire document + // -------------------------------------------------------------------- + screen.getDocumentWidth = function() { + var width = 0; + var body = screen.getBody(); + if (document.documentElement && (!document.compatMode || document.compatMode=="CSS1Compat")) { + var rightMargin = parseInt(CSS.get(body,'marginRight'),10) || 0; + var leftMargin = parseInt(CSS.get(body,'marginLeft'), 10) || 0; + width = Math.max(body.offsetWidth + leftMargin + rightMargin, document.documentElement.clientWidth); + } + else { + width = Math.max(body.clientWidth, body.scrollWidth); + } + if (isNaN(width) || width==0) { + width = screen.zero(self.innerWidth); + } + return width; + }; + + // Get the height of the entire document + // -------------------------------------------------------------------- + screen.getDocumentHeight = function() { + var body = screen.getBody(); + var innerHeight = (defined(self.innerHeight)&&!isNaN(self.innerHeight))?self.innerHeight:0; + if (document.documentElement && (!document.compatMode || document.compatMode=="CSS1Compat")) { + var topMargin = parseInt(CSS.get(body,'marginTop'),10) || 0; + var bottomMargin = parseInt(CSS.get(body,'marginBottom'), 10) || 0; + return Math.max(body.offsetHeight + topMargin + bottomMargin, document.documentElement.clientHeight, document.documentElement.scrollHeight, screen.zero(self.innerHeight)); + } + return Math.max(body.scrollHeight, body.clientHeight, screen.zero(self.innerHeight)); + }; + + // Get the width of the viewport (viewable area) in the browser window + // -------------------------------------------------------------------- + screen.getViewportWidth = function() { + if (document.documentElement && (!document.compatMode || document.compatMode=="CSS1Compat")) { + return document.documentElement.clientWidth; + } + else if (document.compatMode && document.body) { + return document.body.clientWidth; + } + return screen.zero(self.innerWidth); + }; + + // Get the height of the viewport (viewable area) in the browser window + // -------------------------------------------------------------------- + screen.getViewportHeight = function() { + if (!window.opera && document.documentElement && (!document.compatMode || document.compatMode=="CSS1Compat")) { + return document.documentElement.clientHeight; + } + else if (document.compatMode && !window.opera && document.body) { + return document.body.clientHeight; + } + return screen.zero(self.innerHeight); + }; + + return screen; +})();var Sort = (function(){ + var sort = {}; + sort.AlphaNumeric = function(a,b) { + if (a==b) { return 0; } + if (a0 && document.anchors[0].x) { + for (var i=0; i0) { + top -= el.scrollTop; + } + if (el.scrollLeft && el.scrollLeft>0) { + left -= el.scrollLeft; + } + } + } + // If this node is also the offsetParent, add on the offsets and reset to the new offsetParent + if (el == offsetParent) { + left += o.offsetLeft; + if (el.clientLeft && el.nodeName!="TABLE") { + left += el.clientLeft; + } + top += o.offsetTop; + if (el.clientTop && el.nodeName!="TABLE") { + top += el.clientTop; + } + o = el; + if (o.offsetParent==null) { + if (o.offsetLeft) { + left += o.offsetLeft; + } + if (o.offsetTop) { + top += o.offsetTop; + } + } + offsetParent = o.offsetParent; + } + } + + + if (originalObject.offsetWidth) { + width = originalObject.offsetWidth; + } + if (originalObject.offsetHeight) { + height = originalObject.offsetHeight; + } + + return {'left':left, 'top':top, 'width':width, 'height':height + }; + }; + + // Retrieve the position of an object's center point + // ================================================= + pos.getCenter = function(o) { + var c = this.get(o); + if (c==null) { return null; } + c.left = c.left + (c.width/2); + c.top = c.top + (c.height/2); + return c; + }; + + return pos; +})();// CLASS CONSTRUCTOR +// -------------------------------------------------------------------- +var Popup = function(div, options) { + this.div = defined(div)?div:null; + this.index = Popup.maxIndex++; + this.ref = "Popup.objects["+this.index+"]"; + Popup.objects[this.index] = this; + // Store a reference to the DIV by id, also + if (typeof(this.div)=="string") { + Popup.objectsById[this.div] = this; + } + if (defined(this.div) && this.div!=null && defined(this.div.id)) { + Popup.objectsById[this.div.id] = this.div.id; + } + // Apply passed-in options + if (defined(options) && options!=null && typeof(options)=="object") { + for (var i in options) { + this[i] = options[i]; + } + } + return this; +}; + +// CLASS PROPERTIES +// -------------------------------------------------------------------- +// Index of popup objects, to maintain a global reference if necessary +Popup.maxIndex = 0; +Popup.objects = {}; +Popup.objectsById = {}; + +// The z-index value that popups will start at +Popup.minZIndex = 101; + +// Class names to assign to other objects +Popup.screenClass = "PopupScreen"; +Popup.iframeClass = "PopupIframe"; +Popup.screenIframeClass = "PopupScreenIframe"; + +// CLASS METHODS +// -------------------------------------------------------------------- + +// Hide all currently-visible non-modal dialogs +Popup.hideAll = function() { + for (var i in Popup.objects) { + var p = Popup.objects[i]; + if (!p.modal && p.autoHide) { + p.hide(); + } + } +}; +// Catch global events as a trigger to hide auto-hide popups +Event.add(document, "mouseup", Popup.hideAll, false); + +// A simple class method to show a popup without creating an instance +Popup.show = function(divObject, referenceObject, position, options, modal) { + var popup; + if (defined(divObject)) { + popup = new Popup(divObject); + } + else { + popup = new Popup(); + popup.destroyDivOnHide = true; + } + if (defined(referenceObject)) { popup.reference = DOM.resolve(referenceObject); } + if (defined(position)) { popup.position = position; } + if (defined(options) && options!=null && typeof(options)=="object") { + for (var i in options) { + popup[i] = options[i]; + } + } + if (typeof(modal)=="boolean") { + popup.modal = modal; + } + popup.destroyObjectsOnHide = true; + popup.show(); + return popup; +}; + +// A simple class method to show a modal popup +Popup.showModal = function(divObject, referenceObject, position, options) { + Popup.show(divObject, referenceObject, position, options, true); +}; + +// A method to retrieve a popup object based on a div ID +Popup.get = function(divId) { + if (defined(Popup.objectsById[divId])) { + return Popup.objectsById[divId]; + } + return null; +}; + +// A method to hide a popup based on a div id +Popup.hide = function(divId) { + var popup = Popup.get(divId); + if (popup!=null) { + popup.hide(); + } +}; + +// PROTOTYPE PROPERTIES +// -------------------------------------------------------------------- +Popup.prototype.content = null; +Popup.prototype.className = "PopupDiv"; +Popup.prototype.style = null; // Styles to be applied to the DIV +Popup.prototype.width = null; +Popup.prototype.height = null; +Popup.prototype.top = null; +Popup.prototype.left = null; +Popup.prototype.offsetLeft = 0; +Popup.prototype.offsetTop = 0; +Popup.prototype.constrainToScreen = true; +Popup.prototype.autoHide = true; +Popup.prototype.useIframeShim = false; /*@cc_on @*/ /*@if (@_win32) {Popup.prototype.useIframeShim = true;} @end @*/ +Popup.prototype.iframe = null; +Popup.prototype.position = null; // vertical: "above top center bottom below", horizontal: "adjacent-left,left,center,right,adjacent-right" +Popup.prototype.reference = null; +Popup.prototype.modal = false; +Popup.prototype.destroyDivOnHide = false; +Popup.prototype.destroyObjectsOnHide = false; +Popup.prototype.screen = null; +Popup.prototype.screenIframeShim = null; +Popup.prototype.screenOpacity=.4; +Popup.prototype.screenColor="#cccccc"; + +// INSTANCE METHODS +// -------------------------------------------------------------------- + +// Show the popup +// -------------------------------------------------------------------- +Popup.prototype.show = function(options, modal) { + this.modal = this.modal || (typeof(modal)=="boolean" && modal); + if (defined(options) && options!=null && typeof(options)=="object") { + for (var i in options) { + this[i] = options[i]; + } + } + this.div = DOM.resolve(this.div); + CSS.setStyle(this.div,'position','absolute'); + + // If there is no div pre-defined to use, create one + if (this.div==null) { + this.div = this.createDiv(); + } + if (this.content!=null) { + this.div.innerHTML = this.content; + this.content = null; + } + if (this.className!=null) { + this.div.className = this.className; + } + if (this.style!=null) { + this.applyStyle(); + } + if (this.width!=null) { + this.div.style.width = this.width+"px"; + this.div.style.overflowX="auto"; + } + if (this.height!=null) { + this.div.style.height = this.height+"px"; + this.div.style.overflowY="auto"; + } + + // Do the actual display - this is a separate method so display transitions can be implemented + this.transition(); + + // Make sure clicks on the DIV don't bubble up to the document + this.div.onclick = function(e) { + Event.cancelBubble(Event.resolve(e)); + }; + this.div.onmouseup = this.div.onclick; + + // Focus to the DIV if possible + if (this.modal && this.div.focus) { + this.div.focus(); + } +}; + +// Show the popup but make it modal +// -------------------------------------------------------------------- +Popup.prototype.transition = function() { + if (this.modal) { + this.addScreen(); + } + + // Make the DIV displayed but hidden so its size can be measured + CSS.setStyle(this.div,'visibility','hidden'); + CSS.setStyle(this.div,'display','block'); + + // Position the popup + this.setPosition(); + + // Add the shim if necessary + if (this.useIframeShim) { + this.addIframeShim(); + } + + // Make sure the DIV is higher than the shim + this.div.style.zIndex = Popup.minZIndex++; + + CSS.setStyle(this.div,'display','block'); + CSS.setStyle(this.div,'visibility','visible'); +}; + +// Show the popup but make it modal +// -------------------------------------------------------------------- +Popup.prototype.showModal = function(options) { + this.show(options,true); +}; + +// Apply user styles to the DIV +// -------------------------------------------------------------------- +Popup.prototype.applyStyle = function() { + if (this.div!=null && this.style!=null && typeof(this.style)=="object") { + for (var i in this.style) { + this.div.style[i] = this.style[i]; + } + } +}; + +// Hide the popup +// -------------------------------------------------------------------- +Popup.prototype.hide = function() { + // If this was a temp object creating on-the-fly, then remove objects from the DOM so + // The document doesn't get littered with extra objects + if (this.destroyDivOnHide) { + DOM.removeNode(this.div); + this.div = null; + delete Popup.objects[this.id]; + } + else if (this.div!=null) { + CSS.setStyle(this.div,'display','none'); + } + + if (this.destroyObjectsOnHide) { + DOM.removeNode(this.iframe); + DOM.removeNode(this.screen); + DOM.removeNode(this.screenIframeShim); + } + else { + if (this.iframe!=null) { + this.iframe.style.display = "none"; + } + if (this.screen!=null) { + this.screen.style.display = "none"; + } + if (this.screenIframeShim!=null) { + this.screenIframeShim.style.display = "none"; + } + } +}; + +// Util funcs for position +// -------------------------------------------------------------------- +Popup.prototype.setTop = function(top) { + this.div.style.top = top+"px"; +}; +Popup.prototype.setLeft = function(left) { + this.div.style.left = left+"px"; +}; +Popup.prototype.getTop = function() { + return parseInt(CSS.getStyle(this.div,"top"),10); +}; +Popup.prototype.getLeft = function() { + return parseInt(CSS.getStyle(this.div,"left"),10); +}; + +// All the logic to position the popup based on various criteria +// -------------------------------------------------------------------- +Popup.prototype.setPosition = function() { + if (this.position!=null) { + var m = this.position.match(/^(\S+)\s+(\S+)/); + if (m!=null && m.length==3) { + var v = m[1]; + var h = m[2]; + + var ref = this.reference; + if (ref==null) { ref = Screen.getBody(); } + var p = Position.get(ref); + var refTop = p.top; + var refLeft = p.left; + var refWidth = DOM.getOuterWidth(ref); + var refHeight = DOM.getOuterHeight(ref); + + var width = DOM.getOuterWidth(this.div); + var height = DOM.getOuterHeight(this.div); + + var scrollLeft = Screen.getScrollLeft(); + var scrollTop = Screen.getScrollTop(); + + // Set vertical position relative to reference object + if (v=="above") { this.setTop(refTop-height+this.offsetTop); } + else if (v=="top") { this.setTop(refTop+this.offsetTop); } + else if (v=="center") { this.setTop(refTop+(refHeight/2)-(height/2)+this.offsetTop); } + else if (v=="bottom") { this.setTop(refTop+refHeight-height+this.offsetTop); } + else if (v=="below") { this.setTop(refTop+refHeight+this.offsetTop); } + + // Set horizontal position relative to reference object + if (h=="adjacent-left") { this.setLeft(refLeft-width+this.offsetLeft); } + else if (h=="left") { this.setLeft(refLeft+this.offsetLeft); } + else if (h=="center") { this.setLeft(refLeft+(refWidth/2)-(width/2)+this.offsetLeft); } + else if (h=="right") { this.setLeft(refLeft+refWidth-width+this.offsetLeft); } + else if (h=="adjacent-right") { this.setLeft(refLeft+refWidth+this.offsetLeft); } + } + } + else if (this.top==null && this.left==null) { + this.center(); + } + else { + if (this.top==null) { this.top=0; } + if (this.left==null) { this.left=0; } + this.div.style.top = this.top+this.offsetTop+"px"; + this.div.style.left = this.left+this.offsetLeft+"px"; + } + + // Re-position to make sure it stays on the screen + if (this.constrainToScreen) { + this.fitToScreen(); + } +}; + +// Append an object to the body +// -------------------------------------------------------------------- +Popup.prototype.appendToBody = function(o) { + var body = Screen.getBody(); + if (body && body.appendChild) { + body.appendChild(o); + } +}; + +// Create a new DIV object to be used for a popup +// -------------------------------------------------------------------- +Popup.prototype.createDiv = function() { + if (document.createElement) { + var d = document.createElement("DIV"); + d.style.position="absolute"; + d.style.display="block"; + d.style.visibility="hidden"; + this.appendToBody(d); + return d; + } + alert("ERROR: Couldn't create DIV element in Popup.prototype.createDiv()"); + return null; +}; + +// Create a new IFRAME object to be used behind the popup +// -------------------------------------------------------------------- +Popup.prototype.createIframe = function() { + if (document.createElement) { + var i= document.createElement("IFRAME"); + i.style.position="absolute"; + i.style.display="block"; + i.style.visibility="hidden"; + i.style.background="none"; + this.appendToBody(i); + return i; + } + else { + alert("ERROR: Couldn't create IFRAME object in Popup.prototype.createIframe()"); + } +}; + +// Add an IFRAME shim for the DIV +// -------------------------------------------------------------------- +Popup.prototype.addIframeShim = function() { + if (this.iframe==null) { + this.iframe = this.createIframe(); + } + this.iframe.className = Popup.iframeClass; + CSS.setStyle(this.iframe,'top',this.getTop()+"px"); + CSS.setStyle(this.iframe,'left',this.getLeft()+"px"); + CSS.setStyle(this.iframe,'width',DOM.getOuterWidth(this.div) + "px"); + CSS.setStyle(this.iframe,'height',DOM.getOuterHeight(this.div) + "px"); + CSS.setStyle(this.iframe,'zIndex',Popup.minZIndex++); + CSS.setStyle(this.iframe,'opacity',0); + CSS.setStyle(this.iframe,'visibility','visible'); + CSS.setStyle(this.iframe,'display','block'); +}; + +// Create a "screen" to make a popup modal +// -------------------------------------------------------------------- +Popup.prototype.addScreen = function() { + if (this.screen==null) { + this.screen = this.createDiv(); + this.screen.style.top="0px"; + this.screen.style.left="0px"; + this.screen.style.backgroundColor = this.screenColor; + this.screen.className=Popup.screenClass;; + CSS.setStyle(this.screen,"opacity",this.screenOpacity); + this.screen.onclick = function(e) { Event.cancelBubble(Event.resolve(e)); } + } + if (this.screenIframeShim==null) { + this.screenIframeShim = this.createIframe(); + this.screenIframeShim.style.top="0px"; + this.screenIframeShim.style.left="0px"; + this.screenIframeShim.className=Popup.screenIframeClass; + CSS.setStyle(this.screenIframeShim,"opacity",0); + } + this.screen.style.width = Screen.getDocumentWidth()+"px"; + this.screen.style.height = Screen.getDocumentHeight()+"px"; + this.screenIframeShim.style.width = Screen.getDocumentWidth()+"px"; + this.screenIframeShim.style.height = Screen.getDocumentHeight()+"px"; + this.screenIframeShim.style.zIndex = Popup.minZIndex++; + this.screenIframeShim.style.visibility="visible"; + this.screenIframeShim.style.display="block"; + this.screen.style.zIndex = Popup.minZIndex++; + this.screen.style.visibility="visible"; + this.screen.style.display="block"; +}; + +// Re-position the DIV so it stays on the screen +// -------------------------------------------------------------------- +Popup.prototype.fitToScreen = function() { + var width = DOM.getOuterWidth(this.div); + var height = DOM.getOuterHeight(this.div); + var top = this.getTop(); + var left = this.getLeft(); + + var clientWidth = Screen.getViewportWidth(); + var clientHeight = Screen.getViewportHeight(); + + var scrollLeft = Screen.getScrollLeft(); + var scrollTop = Screen.getScrollTop(); + + if (top-scrollTop+height>clientHeight) { + top = top - ((top+height) - (scrollTop+clientHeight)); + this.div.style.top = top + "px"; + } + if (left-scrollLeft+width>clientWidth) { + left = left - ((left+width) - (scrollLeft+clientWidth)); + this.div.style.left = left + "px"; + } + if (topeAA-4QK!nlZm zfsvIF3>ct*k%^gwm5rT)lZ%^?ff*tPBq6d$k^&4&jLghTEX=H|EG$4{YJqYLEP|{; ziiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@shPQjrIoXb ztDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRvK4a#rMT?g# zUABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~zj*oT6sAHsIig>XiL))b}k321|c8>nspdx@(iG{%BBu(K&!4Y9QI+mEHH&37-Vju zLldT>k$fT&#Q10e(7~!v)3CT7ZvHIBwv~*6t02B`<~5MYY`B#y*2w8_bb+G-D>Ii9 JS3>>&n*dJ776JeO literal 0 HcmV?d00001 diff --git a/tct-system-settings-tizen-tests/res/Result/style/summary.xsl b/tct-system-settings-tizen-tests/res/Result/style/summary.xsl new file mode 100644 index 0000000..0bf44fe --- /dev/null +++ b/tct-system-settings-tizen-tests/res/Result/style/summary.xsl @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + \n + + + + +
+ + + +
+ + + +
+
+
diff --git a/tct-system-settings-tizen-tests/res/Result/style/tests.css b/tct-system-settings-tizen-tests/res/Result/style/tests.css new file mode 100644 index 0000000..2fda634 --- /dev/null +++ b/tct-system-settings-tizen-tests/res/Result/style/tests.css @@ -0,0 +1,195 @@ +@charset "UTF-8"; +/* CSS Document */ +#testcasepage div,#testcasepage h1,#testcasepage p,#testcasepage table,#testcasepage tr,#testcasepage th,#testcasepage td + { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 0.96em; + font-family: arial; + vertical-align: baseline; +} + +#title td, #btc td{ + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 0.96em; + font-family: arial; + vertical-align: baseline; +} + +td.Ratio { + text-align: left; + font-weight: normal; + padding: 4px 10px 4px 5px; + vertical-align: middle; +} + +th.Ratio { + width: 400px; +} + +#testcasepage p { + text-align: left; +} + +#suite_title { + text-align: left; +} + +#btc { + text-align: right; +} + +#btc table { + position: absolute; + right: 0px; + width: 600px; +} + +#testcasepage table { + border-collapse: separate; + border-spacing: 0; + margin-bottom: 1.4em; + vertical-align: middle; +} + +#testcasepage th,#testcasepage td { + text-align: left; + font-weight: normal; + padding: 4px 10px 4px 5px; + vertical-align: middle; +} + +#cases table { + width: 101%; +} + +#cases td { + border-left: 0px; + font-weight: normal; + border-bottom: 0px; +} + +#suite_summary table { + width: 100%; +} + + +#overview table { + width: 101%; +} + +#overview table, #overview td, #overview tr { + border-left: none; + border-bottom: none; + border-right: none; + vertical-align: top; +} + +#overview td{ + width: 50%; +} + +#capability table { + width: 50%; +} + +#fail_cases table { + width: 101%; +} + +#title table { + width: 101%; +} + +#device table { + width: 100%; +} + +#summary table { + width: 100%; +} + +#testcasepage th { + border-bottom: 1px solid #000; + background-color: #AAAAAA; + border-left: 1px solid #000; + border-top: 1px solid #000; + color: #000; + font-weight: bold; + vertical-align: bottom; +} + +#summary th:last-child,#summary td:last-child, #device th:last-child,#device td:last-child, #suite_summary th:last-child,#suite_summary td:last-child,#cases th:last-child,#cases td:last-child,#capability th:last-child,#capability td:last-child { + border-right: 1px solid #000; +} + +#testcasepage td { + font-weight: normal; +} + +#summary td, #device td, #capability td, #suite_summary td, #cases td{ + border-left: 1px solid; + font-weight: normal; + border-bottom: 1px solid; +} + +#testcasepage td.yellow_rate { + background-color: #ffcc00; +} + +#testcasepage td.green_rate { + background-color: #1E90FF; +} + +#testcasepage td.dgreen_rate { + background-color: #339933; +} + +#testcasepage td.red_rate { + background-color: #FF3333; +} + +#testcasepage td.orange_rate { + background-color: #FFA500; +} + +#testcasepage td.gray_rate { + background-color: #AAAAAA; +} + +#title table,#title tr,#title td { + border-left: none; + border-bottom: none; + text-align: center; +} + +#title td:last-child { + border-right: none; +} + +#testcasepage h1 { + font-size: 2em; + font-family: Arial, sans-serif; + font-weight: bold; + line-height: 1; + color: #000; + margin-bottom: 0.75em; + padding-top: 0.25em; + font-weight: bold; +} + +#goTopBtn { + right: 0px; + bottom: 0px; + position: fixed; + + position: absolute; + top: expression(parseInt(document.body.scrollTop)+document.body.clientHeight-40 + ); +} diff --git a/tct-system-settings-tizen-tests/res/install.sh b/tct-system-settings-tizen-tests/res/install.sh new file mode 100644 index 0000000..33dc67c --- /dev/null +++ b/tct-system-settings-tizen-tests/res/install.sh @@ -0,0 +1,2 @@ +pkgcmd -u -n org.test.system-settings.tizen +pkgcmd -t tpk -i -p org.test.system-settings.tizen.tpk -q diff --git a/tct-system-settings-tizen-tests/res/pull.sh b/tct-system-settings-tizen-tests/res/pull.sh new file mode 100755 index 0000000..411bb58 --- /dev/null +++ b/tct-system-settings-tizen-tests/res/pull.sh @@ -0,0 +1,5 @@ +# pull result file +sdb root on +sdb pull /home/owner/share/SystemSettings/SystemSettings.xml Result/ +sdb pull /home/owner/share/SystemSettings/summary.xml Result/ +sdb pull /home/owner/share/SystemSettings/test.xml Result/ \ No newline at end of file diff --git a/tct-system-settings-tizen-tests/res/push.sh b/tct-system-settings-tizen-tests/res/push.sh new file mode 100755 index 0000000..ce0e399 --- /dev/null +++ b/tct-system-settings-tizen-tests/res/push.sh @@ -0,0 +1,2 @@ +sdb root on +sdb push ../org.test.system-settings.tizen.tpk install.sh run.sh /home/owner diff --git a/tct-system-settings-tizen-tests/res/run.sh b/tct-system-settings-tizen-tests/res/run.sh new file mode 100644 index 0000000..ca108d5 --- /dev/null +++ b/tct-system-settings-tizen-tests/res/run.sh @@ -0,0 +1,2 @@ +# install & run TC +app_launcher -s org.test.system-settings.tizen diff --git a/tct-system-settings-tizen-tests/share/res/icon.png b/tct-system-settings-tizen-tests/share/res/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD(Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtone); + var setValue = "/opt/share/settings/Ringtones/ringtone_sdk.mp3"; + Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtone = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtone; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_incomingCallRingtoneChangedCallbackCalled = false; + private static readonly string s_incomingCallRingtoneValue = "/opt/share/settings/Ringtones/ringtone_sdk.mp3"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:IncomingCallRingtoneChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtoneChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public async static Task IncomingCallRingtoneChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtoneChanged += OnIncomingCallRingtoneChanged; + Tizen.System.SystemSettings.SystemSettings.IncomingCallRingtone = s_incomingCallRingtoneValue; + await Task.Delay(2000); + Assert.IsTrue(s_incomingCallRingtoneChangedCallbackCalled); + s_incomingCallRingtoneChangedCallbackCalled = false; + } + private static void OnIncomingCallRingtoneChanged(object sender, Tizen.System.SystemSettings.IncomingCallRingtoneChangedEventArgs e) + { + s_incomingCallRingtoneChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_incomingCallRingtoneValue, "The callback should receive the latest value for the property"); + } + + // WallpaperHomeScreen + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:WallpaperHomeScreen is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreen A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void WallpaperHomeScreen_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreen); + var setValue = "/opt/share/settings/Wallpapers/Home_default.jpg"; + Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreen = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreen; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_wallpaperHomeScreenChangedCallbackCalled = false; + private static readonly string s_wallpaperHomeScreenValue = "/opt/share/settings/Wallpapers/Home_default.jpg"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:WallpaperHomeScreenChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreenChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task WallpaperHomeScreenChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreenChanged += OnWallpaperHomeScreenChanged; + Tizen.System.SystemSettings.SystemSettings.WallpaperHomeScreen = s_wallpaperHomeScreenValue; + await Task.Delay(2000); + Assert.IsTrue(s_wallpaperHomeScreenChangedCallbackCalled); + s_wallpaperHomeScreenChangedCallbackCalled = false; + } + private static void OnWallpaperHomeScreenChanged(object sender, Tizen.System.SystemSettings.WallpaperHomeScreenChangedEventArgs e) + { + s_wallpaperHomeScreenChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_wallpaperHomeScreenValue, "The callback should receive the latest value for the property"); + } + + // WallpaperLockScreen + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:WallpaperLockScreen is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreen A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void WallpaperLockScreen_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreen); + var setValue = "/opt/share/settings/Wallpapers/Home_default.jpg"; + Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreen = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreen; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_wallpaperLockScreenChangedCallbackCalled = false; + private static readonly string s_wallpaperLockScreenValue = "/opt/share/settings/Wallpapers/Home_default.jpg"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:WallpaperLockScreenChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreenChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task WallpaperLockScreenChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreenChanged += OnWallpaperLockScreenChanged; + Tizen.System.SystemSettings.SystemSettings.WallpaperLockScreen = s_wallpaperLockScreenValue; + await Task.Delay(2000); + Assert.IsTrue(s_wallpaperLockScreenChangedCallbackCalled); + s_wallpaperLockScreenChangedCallbackCalled = false; + } + private static void OnWallpaperLockScreenChanged(object sender, Tizen.System.SystemSettings.WallpaperLockScreenChangedEventArgs e) + { + s_wallpaperLockScreenChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_wallpaperLockScreenValue, "The callback should receive the latest value for the property"); + } + + // FontSize + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:FontSize is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSize A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void FontSize_READ_WRITE_ALL() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.FontSize); + var setValue = Tizen.System.SystemSettings.SystemSettingsFontSize.Small; + Tizen.System.SystemSettings.SystemSettings.FontSize = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.FontSize; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsFontSize.Normal; + Tizen.System.SystemSettings.SystemSettings.FontSize = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.FontSize; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsFontSize.Large; + Tizen.System.SystemSettings.SystemSettings.FontSize = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.FontSize; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsFontSize.Huge; + Tizen.System.SystemSettings.SystemSettings.FontSize = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.FontSize; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsFontSize.Giant; + Tizen.System.SystemSettings.SystemSettings.FontSize = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.FontSize; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_fontSizeChangedCallbackCalled = false; + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontSizeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSizeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontSizeChanged_CHECK_EVENT_SMALL() + { + Tizen.System.SystemSettings.SystemSettings.FontSizeChanged += OnFontSizeChangedSmall; + Tizen.System.SystemSettings.SystemSettings.FontSize = Tizen.System.SystemSettings.SystemSettingsFontSize.Small; + await Task.Delay(2000); + Assert.IsTrue(s_fontSizeChangedCallbackCalled); + s_fontSizeChangedCallbackCalled = false; + } + private static void OnFontSizeChangedSmall(object sender, Tizen.System.SystemSettings.FontSizeChangedEventArgs e) + { + s_fontSizeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsFontSize.Small, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontSizeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSizeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontSizeChanged_CHECK_EVENT_NORMAL() + { + Tizen.System.SystemSettings.SystemSettings.FontSizeChanged += OnFontSizeChangedNormal; + Tizen.System.SystemSettings.SystemSettings.FontSize = Tizen.System.SystemSettings.SystemSettingsFontSize.Normal; + await Task.Delay(2000); + Assert.IsTrue(s_fontSizeChangedCallbackCalled); + s_fontSizeChangedCallbackCalled = false; + } + private static void OnFontSizeChangedNormal(object sender, Tizen.System.SystemSettings.FontSizeChangedEventArgs e) + { + s_fontSizeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsFontSize.Normal, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontSizeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSizeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontSizeChanged_CHECK_EVENT_LARGE() + { + Tizen.System.SystemSettings.SystemSettings.FontSizeChanged += OnFontSizeChangedLarge; + Tizen.System.SystemSettings.SystemSettings.FontSize = Tizen.System.SystemSettings.SystemSettingsFontSize.Large; + await Task.Delay(2000); + Assert.IsTrue(s_fontSizeChangedCallbackCalled); + s_fontSizeChangedCallbackCalled = false; + } + private static void OnFontSizeChangedLarge(object sender, Tizen.System.SystemSettings.FontSizeChangedEventArgs e) + { + s_fontSizeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsFontSize.Large, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontSizeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSizeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontSizeChanged_CHECK_EVENT_HUGE() + { + Tizen.System.SystemSettings.SystemSettings.FontSizeChanged += OnFontSizeChangedHuge; + Tizen.System.SystemSettings.SystemSettings.FontSize = Tizen.System.SystemSettings.SystemSettingsFontSize.Huge; + await Task.Delay(2000); + Assert.IsTrue(s_fontSizeChangedCallbackCalled); + s_fontSizeChangedCallbackCalled = false; + } + private static void OnFontSizeChangedHuge(object sender, Tizen.System.SystemSettings.FontSizeChangedEventArgs e) + { + s_fontSizeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsFontSize.Huge, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontSizeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontSizeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontSizeChanged_CHECK_EVENT_GIANT() + { + Tizen.System.SystemSettings.SystemSettings.FontSizeChanged += OnFontSizeChangedGiant; + Tizen.System.SystemSettings.SystemSettings.FontSize = Tizen.System.SystemSettings.SystemSettingsFontSize.Giant; + await Task.Delay(2000); + Assert.IsTrue(s_fontSizeChangedCallbackCalled); + s_fontSizeChangedCallbackCalled = false; + } + private static void OnFontSizeChangedGiant(object sender, Tizen.System.SystemSettings.FontSizeChangedEventArgs e) + { + s_fontSizeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsFontSize.Giant, "The callback should receive the latest value for the property"); + } + + // FontType + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:FontType is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontType A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void FontType_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.FontType); + var setValue = "BreezeSans"; + Tizen.System.SystemSettings.SystemSettings.FontType = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.FontType; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_fontTypeChangedCallbackCalled = false; + private static readonly string s_fontTypeValue = "BreezeSans"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:FontTypeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.FontTypeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task FontTypeChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.FontTypeChanged += OnFontTypeChanged; + Tizen.System.SystemSettings.SystemSettings.FontType = s_fontTypeValue; + await Task.Delay(2000); + Assert.IsTrue(s_fontTypeChangedCallbackCalled); + s_fontTypeChangedCallbackCalled = false; + } + private static void OnFontTypeChanged(object sender, Tizen.System.SystemSettings.FontTypeChangedEventArgs e) + { + s_fontTypeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_fontTypeValue, "The callback should receive the latest value for the property"); + } + + // MotionActivation + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:MotionActivation is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.MotionActivation A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void MotionActivation_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.MotionActivation); + Tizen.System.SystemSettings.SystemSettings.MotionActivation = true; + var getValue = Tizen.System.SystemSettings.SystemSettings.MotionActivation; + Assert.AreEqual(getValue == true, "Set value and get value of the property should be same"); + } + + private static bool s_motionActivationChangedCallbackCalled = false; + private static readonly bool s_motionActivationValue = !Tizen.System.SystemSettings.SystemSettings.MotionActivation; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:MotionActivationChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.MotionActivationChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task MotionActivationChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.MotionActivationChanged += OnMotionActivationChanged; + Tizen.System.SystemSettings.SystemSettings.MotionActivation = s_motionActivationValue; + await Task.Delay(2000); + Assert.IsTrue(s_motionActivationChangedCallbackCalled); + s_motionActivationChangedCallbackCalled = false; + } + private static void OnMotionActivationChanged(object sender, Tizen.System.SystemSettings.MotionActivationChangedEventArgs e) + { + s_motionActivationChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_motionActivationValue, "The callback should receive the latest value for the property"); + } + + // EmailAlertRingtone + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:EmailAlertRingtone is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtone A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void EmailAlertRingtone_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtone); + var setValue = "/opt/share/settings/Alerts/General notification_sdk.wav"; + Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtone = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtone; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_emailAlertRingtoneChangedCallbackCalled = false; + private static readonly string s_emailAlertRingtoneValue = "/opt/share/settings/Alerts/General notification_sdk.wav"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:EmailAlertRingtoneChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtoneChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task EmailAlertRingtoneChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtoneChanged += OnEmailAlertRingtoneChanged; + Tizen.System.SystemSettings.SystemSettings.EmailAlertRingtone = s_emailAlertRingtoneValue; + await Task.Delay(2000); + Assert.IsTrue(s_emailAlertRingtoneChangedCallbackCalled); + s_emailAlertRingtoneChangedCallbackCalled = false; + } + private static void OnEmailAlertRingtoneChanged(object sender, Tizen.System.SystemSettings.EmailAlertRingtoneChangedEventArgs e) + { + s_emailAlertRingtoneChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_emailAlertRingtoneValue, "The callback should receive the latest value for the property"); + } + + // UsbDebuggingEnabled + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:UsbDebuggingEnabled is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void UsbDebuggingEnabled_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled); + Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled = true; + var getValue = Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled; + Assert.IsTrue(getValue, "Set value and get value of the property should be same"); + } + + private static bool s_usbDebuggingSettingChangedCallbackCalled = false; + private static readonly bool s_usbDebuggingSettingValue = !Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:UsbDebuggingSettingChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.UsbDebuggingSettingChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task UsbDebuggingSettingChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.UsbDebuggingSettingChanged += OnUsbDebuggingSettingChanged; + Tizen.System.SystemSettings.SystemSettings.UsbDebuggingEnabled = s_usbDebuggingSettingValue; + await Task.Delay(2000); + Assert.IsTrue(s_usbDebuggingSettingChangedCallbackCalled); + s_usbDebuggingSettingChangedCallbackCalled = false; + } + private static void OnUsbDebuggingSettingChanged(object sender, Tizen.System.SystemSettings.UsbDebuggingSettingChangedEventArgs e) + { + s_usbDebuggingSettingChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_usbDebuggingSettingValue, "The callback should receive the latest value for the property"); + } + + // Data3GNetworkEnabled + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:Data3GNetworkEnabled is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void Data3GNetworkEnabled_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled); + Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled = true; + var getValue = Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled; + Assert.IsTrue(getValue, "Set value and get value of the property should be same"); + } + + private static bool s_data3GNetworkSettingChangedCallbackCalled = false; + private static readonly bool s_data3GNetworkSettingValue = !Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:Data3GNetworkSettingChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.Data3GNetworkSettingChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task Data3GNetworkSettingChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.Data3GNetworkSettingChanged += OnData3GNetworkSettingChanged; + Tizen.System.SystemSettings.SystemSettings.Data3GNetworkEnabled = s_data3GNetworkSettingValue; + await Task.Delay(2000); + Assert.IsTrue(s_data3GNetworkSettingChangedCallbackCalled); + s_data3GNetworkSettingChangedCallbackCalled = false; + } + private static void OnData3GNetworkSettingChanged(object sender, Tizen.System.SystemSettings.Data3GNetworkSettingChangedEventArgs e) + { + s_data3GNetworkSettingChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_data3GNetworkSettingValue, "The callback should receive the latest value for the property"); + } + + // LockscreenApp + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LockscreenApp is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockscreenApp A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LockscreenApp_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LockscreenApp); + var setValue = "org.tizen.lockscreen"; + Tizen.System.SystemSettings.SystemSettings.LockscreenApp = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.LockscreenApp; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_lockscreenAppChangedCallbackCalled = false; + private static readonly string s_lockscreenAppValue = "org.tizen.lockscreen"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LockscreenAppChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockscreenAppChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LockscreenAppChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.LockscreenAppChanged += OnLockscreenAppChanged; + Tizen.System.SystemSettings.SystemSettings.LockscreenApp = s_lockscreenAppValue; + await Task.Delay(2000); + Assert.IsTrue(s_lockscreenAppChangedCallbackCalled); + s_lockscreenAppChangedCallbackCalled = false; + } + private static void OnLockscreenAppChanged(object sender, Tizen.System.SystemSettings.LockscreenAppChangedEventArgs e) + { + s_lockscreenAppChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_lockscreenAppValue, "The callback should receive the latest value for the property"); + } + + // DefaultFontType + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:DefaultFontType is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.DefaultFontType A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void DefaultFontType_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.DefaultFontType); + } + + // LocaleCountry + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LocaleCountry is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleCountry A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LocaleCountry_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LocaleCountry); + var setValue = "en_US"; + Tizen.System.SystemSettings.SystemSettings.LocaleCountry = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.LocaleCountry; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_localeCountryChangedCallbackCalled = false; + private static readonly string s_localeCountryValue = "en_US"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LocaleCountryChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleCountryChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LocaleCountryChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.LocaleCountryChanged += OnLocaleCountryChanged; + Tizen.System.SystemSettings.SystemSettings.LocaleCountry = s_localeCountryValue; + await Task.Delay(2000); + Assert.IsTrue(s_localeCountryChangedCallbackCalled); + s_localeCountryChangedCallbackCalled = false; + } + private static void OnLocaleCountryChanged(object sender, Tizen.System.SystemSettings.LocaleCountryChangedEventArgs e) + { + s_localeCountryChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_localeCountryValue, "The callback should receive the latest value for the property"); + } + + // LocaleLanguage + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LocaleLanguage is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleLanguage A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LocaleLanguage_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LocaleLanguage); + var setValue = "en_US"; + Tizen.System.SystemSettings.SystemSettings.LocaleLanguage = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.LocaleLanguage; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_localeLanguageChangedCallbackCalled = false; + private static readonly string s_localeLanguageValue = "en_US"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LocaleLanguageChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleLanguageChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LocaleLanguageChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.LocaleLanguageChanged += OnLocaleLanguageChanged; + Tizen.System.SystemSettings.SystemSettings.LocaleLanguage = s_localeLanguageValue; + await Task.Delay(2000); + Assert.IsTrue(s_localeLanguageChangedCallbackCalled); + s_localeLanguageChangedCallbackCalled = false; + } + private static void OnLocaleLanguageChanged(object sender, Tizen.System.SystemSettings.LocaleLanguageChangedEventArgs e) + { + s_localeLanguageChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_localeLanguageValue, "The callback should receive the latest value for the property"); + } + + // LocaleTimeformat24Hour + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LocaleTimeformat24Hour is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LocaleTimeformat24Hour_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour); + Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour = true; + var getValue = Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour; + Assert.IsTrue(getValue, "Set value and get value of the property should be same"); + } + + private static bool s_localeTimeformat24HourChangedCallbackCalled = false; + private static readonly bool s_localeTimeformat24HourValue = !Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LocaleTimeformat24HourChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24HourChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LocaleTimeformat24HourChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24HourChanged += OnLocaleTimeformat24HourChanged; + Tizen.System.SystemSettings.SystemSettings.LocaleTimeformat24Hour = s_localeTimeformat24HourValue; + await Task.Delay(2000); + Assert.IsTrue(s_localeTimeformat24HourChangedCallbackCalled); + s_localeTimeformat24HourChangedCallbackCalled = false; + } + private static void OnLocaleTimeformat24HourChanged(object sender, Tizen.System.SystemSettings.LocaleTimeformat24HourChangedEventArgs e) + { + s_localeTimeformat24HourChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_localeTimeformat24HourValue, "The callback should receive the latest value for the property"); + } + + // LocaleTimezone + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LocaleTimezone is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleTimezone A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LocaleTimezone_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LocaleTimezone); + var setValue = "Pacific/Tahiti"; + Tizen.System.SystemSettings.SystemSettings.LocaleTimezone = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.LocaleTimezone; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_localeTimezoneChangedCallbackCalled = false; + private static readonly string s_localeTimezoneValue = "Pacific/Tahiti"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LocaleTimezoneChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LocaleTimezoneChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LocaleTimezoneChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.LocaleTimezoneChanged += OnLocaleTimezoneChanged; + Tizen.System.SystemSettings.SystemSettings.LocaleTimezone = s_localeTimezoneValue; + await Task.Delay(2000); + Assert.IsTrue(s_localeTimezoneChangedCallbackCalled); + s_localeTimezoneChangedCallbackCalled = false; + } + private static void OnLocaleTimezoneChanged(object sender, Tizen.System.SystemSettings.LocaleTimezoneChangedEventArgs e) + { + s_localeTimezoneChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_localeTimezoneValue, "The callback should receive the latest value for the property"); + } + + // SoundLock + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:SoundLock is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundLock A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void SoundLock_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.SoundLock); + } + + // SoundSilentMode + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:SoundSilentMode is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundSilentMode A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void SoundSilentMode_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.SoundSilentMode); + } + + // SoundTouch + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:SoundTouch is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundTouch A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void SoundTouch_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.SoundTouch); + } + + // DisplayScreenRotationAuto + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:DisplayScreenRotationAuto is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.DisplayScreenRotationAuto A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void DisplayScreenRotationAuto_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.DisplayScreenRotationAuto); + } + + // DeviceName + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:DeviceName is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.DeviceName A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void DeviceName_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.DeviceName); + } + + // MotionEnabled + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:MotionEnabled is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.MotionEnabled A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void MotionEnabled_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.MotionEnabled); + } + + // NetworkWifiNotification + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:NetworkWifiNotification is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.NetworkWifiNotification A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void NetworkWifiNotification_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.NetworkWifiNotification); + } + + // NetworkFlightMode + [Test] + [Category("P1")] + [Description("Test if get for SystemSettings:NetworkFlightMode is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.NetworkFlightMode A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void NetworkFlightMode_READ_ONLY() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.NetworkFlightMode); + } + + // ScreenBacklightTime + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:ScreenBacklightTime is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void ScreenBacklightTime_READ_WRITE_ALL() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime); + var setValue = 15; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = 30; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = 60; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = 120; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = 300; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = 600; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_screenBacklightTimeChangedCallbackCalled = false; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_15() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged15; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 15; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged15(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 15, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_30() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged30; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 30; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged30(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 30, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_60() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged60; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 60; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged60(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 60, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_120() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged120; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 120; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged120(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 20, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_300() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged300; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 300; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged300(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 300, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:ScreenBacklightTimeChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task ScreenBacklightTimeChanged_CHECK_EVENT_600() + { + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTimeChanged += OnScreenBacklightTimeChanged600; + Tizen.System.SystemSettings.SystemSettings.ScreenBacklightTime = 600; + await Task.Delay(2000); + Assert.IsTrue(s_screenBacklightTimeChangedCallbackCalled); + s_screenBacklightTimeChangedCallbackCalled = false; + } + private static void OnScreenBacklightTimeChanged600(object sender, Tizen.System.SystemSettings.ScreenBacklightTimeChangedEventArgs e) + { + s_screenBacklightTimeChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, 600, "The callback should receive the latest value for the property"); + } + + // SoundNotification + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:SoundNotification is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundNotification A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void SoundNotification_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.SoundNotification); + var setValue = "/opt/share/settings/Alerts/General notification_sdk.wav"; + Tizen.System.SystemSettings.SystemSettings.SoundNotification = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.SoundNotification; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_soundNotificationChangedCallbackCalled = false; + private static readonly string s_soundNotificationValue = "/opt/share/settings/Alerts/General notification_sdk.wav"; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:SoundNotificationChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundNotificationChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task SoundNotificationChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.SoundNotificationChanged += OnSoundNotificationChanged; + Tizen.System.SystemSettings.SystemSettings.SoundNotification = s_soundNotificationValue; + await Task.Delay(2000); + Assert.IsTrue(s_soundNotificationChangedCallbackCalled); + s_soundNotificationChangedCallbackCalled = false; + } + private static void OnSoundNotificationChanged(object sender, Tizen.System.SystemSettings.SoundNotificationChangedEventArgs e) + { + s_soundNotificationChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_soundNotificationValue, "The callback should receive the latest value for the property"); + } + + // SoundNotificationRepetitionPeriod + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:SoundNotificationRepetitionPeriod is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriod A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void SoundNotificationRepetitionPeriod_READ_WRITE() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriod); + var setValue = 300; + Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriod = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriod; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_soundNotificationRepetitionPeriodChangedCallbackCalled = false; + private static readonly int s_soundNotificationRepetitionPeriodValue = 300; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:SoundNotificationRepetitionPeriodChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriodChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task SoundNotificationRepetitionPeriodChanged_CHECK_EVENT() + { + Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriodChanged += OnSoundNotificationRepetitionPeriodChanged; + Tizen.System.SystemSettings.SystemSettings.SoundNotificationRepetitionPeriod = s_soundNotificationRepetitionPeriodValue; + await Task.Delay(2000); + Assert.IsTrue(s_soundNotificationRepetitionPeriodChangedCallbackCalled); + s_soundNotificationRepetitionPeriodChangedCallbackCalled = false; + } + private static void OnSoundNotificationRepetitionPeriodChanged(object sender, Tizen.System.SystemSettings.SoundNotificationRepetitionPeriodChangedEventArgs e) + { + s_soundNotificationRepetitionPeriodChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, s_soundNotificationRepetitionPeriodValue, "The callback should receive the latest value for the property"); + } + + // LockState + [Test] + [Category("P1")] + [Description("Test if set/get for SystemSettings:LockState is working properly")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockState A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRW MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static void LockState_READ_WRITE_ALL() + { + /* TEST CODE */ + Assert.IsInstanceOf(Tizen.System.SystemSettings.SystemSettings.LockState); + var setValue = Tizen.System.SystemSettings.SystemSettingsIdleLockState.Unlock; + Tizen.System.SystemSettings.SystemSettings.LockState = setValue; + var getValue = Tizen.System.SystemSettings.SystemSettings.LockState; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsIdleLockState.Lock; + Tizen.System.SystemSettings.SystemSettings.LockState = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.LockState; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + + setValue = Tizen.System.SystemSettings.SystemSettingsIdleLockState.LaunchingLock; + Tizen.System.SystemSettings.SystemSettings.LockState = setValue; + getValue = Tizen.System.SystemSettings.SystemSettings.LockState; + Assert.AreEqual(setValue, getValue, "Set value and get value of the property should be same"); + } + + private static bool s_lockStateChangedCallbackCalled = false; + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LockStateChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockStateChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LockStateChanged_CHECK_EVENT_LOCK() + { + Tizen.System.SystemSettings.SystemSettings.LockStateChanged += OnLockStateChangedLock; + Tizen.System.SystemSettings.SystemSettings.LockState = Tizen.System.SystemSettings.SystemSettingsIdleLockState.Lock; + await Task.Delay(2000); + Assert.IsTrue(s_lockStateChangedCallbackCalled); + s_lockStateChangedCallbackCalled = false; + } + private static void OnLockStateChangedLock(object sender, Tizen.System.SystemSettings.LockStateChangedEventArgs e) + { + s_lockStateChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsIdleLockState.Lock, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LockStateChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockStateChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LockStateChanged_CHECK_EVENT_UNLOCK() + { + Tizen.System.SystemSettings.SystemSettings.LockStateChanged += OnLockStateChangedUnlock; + Tizen.System.SystemSettings.SystemSettings.LockState = Tizen.System.SystemSettings.SystemSettingsIdleLockState.Unlock; + await Task.Delay(2000); + Assert.IsTrue(s_lockStateChangedCallbackCalled); + s_lockStateChangedCallbackCalled = false; + } + private static void OnLockStateChangedUnlock(object sender, Tizen.System.SystemSettings.LockStateChangedEventArgs e) + { + s_lockStateChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsIdleLockState.Unlock, "The callback should receive the latest value for the property"); + } + + [Test] + [Category("P1")] + [Description("Check if callback to SystemSettings:LockStateChanged event is called")] + [Property("SPEC", "Tizen.System.SystemSettings.SystemSettings.LockStateChanged A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL MAE")] + [Property("AUTHOR", "Aditya Aswani, a.aswani@samsung.com")] + public static async Task LockStateChanged_CHECK_EVENT_LAUNCHING_LOCK() + { + Tizen.System.SystemSettings.SystemSettings.LockStateChanged += OnLockStateChangedLaunchingLock; + Tizen.System.SystemSettings.SystemSettings.LockState = Tizen.System.SystemSettings.SystemSettingsIdleLockState.LaunchingLock; + await Task.Delay(2000); + Assert.IsTrue(s_lockStateChangedCallbackCalled); + s_lockStateChangedCallbackCalled = false; + } + private static void OnLockStateChangedLaunchingLock(object sender, Tizen.System.SystemSettings.LockStateChangedEventArgs e) + { + s_lockStateChangedCallbackCalled = true; + Assert.IsInstanceOf(e.Value); + Assert.AreEqual(e.Value, Tizen.System.SystemSettings.SystemSettingsIdleLockState.LaunchingLock, "The callback should receive the latest value for the property"); + } + } +} diff --git a/tct-system-settings-tizen-tests/tizen-manifest.xml b/tct-system-settings-tizen-tests/tizen-manifest.xml new file mode 100644 index 0000000..89135b1 --- /dev/null +++ b/tct-system-settings-tizen-tests/tizen-manifest.xml @@ -0,0 +1,10 @@ + + + + icon.png + + + + http://tizen.org/privilege/systemsettings.admin + + -- 2.7.4