/* * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace Tizen.System { /// /// 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get IncomingCallRingtone system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get WallpaperHomeScreen system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get WallpaperLockScreen system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get FontSize system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get FontType system setting."); } 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 MotionActivationEnabled { get { bool isMotionServiceActivated; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.MotionActivationEnabled, out isMotionServiceActivated); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get MotionActivation system setting."); } return isMotionServiceActivated; } set { SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.MotionActivationEnabled, 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get EmailAlertRingtone system setting."); } 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 /// public static bool UsbDebuggingEnabled { get { bool isusbDebuggingEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.UsbDebuggingEnabled, out isusbDebuggingEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get UsbDebuggingEnabled system setting."); } 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 /// public static bool Data3GNetworkEnabled { get { bool is3GDataEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.Data3GNetworkEnabled, out is3GDataEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get Data3GNetworkEnabled system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LockscreenApp system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LocaleCountry system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LocaleLanguage system setting."); } 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 LocaleTimeFormat24HourEnabled { get { bool is24HrFormat; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, out is24HrFormat); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LocaleTimeFormat24Hour system setting."); } return is24HrFormat; } set { SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueBool(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, value); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to set LocaleTimeFormat24Hour system setting."); } } } /// /// Indicates the current time zone. Eg. "Pacific/Tahiti" /// public static string LocaleTimeZone { get { string timeZone; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.LocaleTimeZone, out timeZone); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LocaleTimeZone system setting."); } 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."); } } } /// /// Once System changes time, this event occurs to notify time change. /// public static int Time { get { int time; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.Time, out time); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get Time system setting."); } return time; } } /// /// Indicates whether the screen lock sound is enabled on the device. ex) LCD on/off sound /// public static bool SoundLockEnabled { get { bool isSoundLockEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundLockEnabled, out isSoundLockEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get SoundLock system setting."); } return isSoundLockEnabled; } } /// /// Indicates whether the device is in the silent mode. /// public static bool SoundSilentModeEnabled { get { bool isSilent; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundSilentModeEnabled, out isSilent); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get SoundSilentMode system setting."); } return isSilent; } } /// /// Indicates whether the screen touch sound is enabled on the device. /// public static bool SoundTouchEnabled { get { bool isTouchSoundEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.SoundTouchEnabled, out isTouchSoundEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get SoundTouch system setting value."); } return isTouchSoundEnabled; } } /// /// Indicates whether rotation control is automatic. /// public static bool DisplayScreenRotationAutoEnabled { get { bool isRotationAutomatic; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, out isRotationAutomatic); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get DisplayScreenRotationAuto system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get MotionEnabled system setting value."); } return isMotionEnabled; } } /// /// Indicates whether Wi-Fi-related notifications are enabled on the device. /// public static bool NetworkWifiNotificationEnabled { get { bool isWifiNotificationEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.NetworkWifiNotificationEnabled, out isWifiNotificationEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get NetworkWifiNotification system setting."); } return isWifiNotificationEnabled; } } /// /// Indicates whether the device is in the flight mode. /// public static bool NetworkFlightModeEnabled { get { bool isFlightModeEnabled; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueBool(SystemSettingsKeys.NetworkFlightModeEnabled, out isFlightModeEnabled); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get NetworkFlightMode system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get ScreenBacklightTime system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get SoundNotification system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get SoundNotificationRepetitionPeriod system setting."); } 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) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get LockState system setting."); } 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."); } } } /// /// The current system ADS ID /// public static string AdsId { get { string adsId; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueString(SystemSettingsKeys.AdsId, out adsId); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get AdsId system setting."); } return adsId; } set { SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsSetValueString(SystemSettingsKeys.AdsId, value); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to set AdsId system setting."); } } } /// /// Indicates the time period for notification repetitions. /// public static SystemSettingsUdsState UltraDataSave { get { int UltraDataSave; SystemSettingsError res = (SystemSettingsError)Interop.Settings.SystemSettingsGetValueInt(SystemSettingsKeys.UltraDataSave, out UltraDataSave); if (res != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(res, "unable to get UltraDataSave system setting."); } return (SystemSettingsUdsState)UltraDataSave; } } 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.MotionActivationEnabled; MotionActivationSettingChangedEventArgs eventArgs = new MotionActivationSettingChangedEventArgs(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 MotionActivationSettingChanged { add { if (s_motionActivationChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionActivationEnabled, 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.MotionActivationEnabled); 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_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.LocaleTimeFormat24HourEnabled; LocaleTimeFormat24HourSettingChangedEventArgs eventArgs = new LocaleTimeFormat24HourSettingChangedEventArgs(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 LocaleTimeFormat24HourSettingChanged { add { if (s_localeTimeFormat24HourChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, 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.LocaleTimeFormat24HourEnabled); 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) => { int time = SystemSettings.Time; TimeChangedEventArgs eventArgs = new TimeChangedEventArgs(time); 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.SoundLockEnabled; SoundLockSettingChangedEventArgs eventArgs = new SoundLockSettingChangedEventArgs(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 SoundLockSettingChanged { add { if (s_soundLockChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundLockEnabled, 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.SoundLockEnabled); 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.SoundSilentModeEnabled; SoundSilentModeSettingChangedEventArgs eventArgs = new SoundSilentModeSettingChangedEventArgs(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 SoundSilentModeSettingChanged { add { if (s_soundSilentModeChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundSilentModeEnabled, 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.SoundSilentModeEnabled); 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.SoundTouchEnabled; SoundTouchSettingChangedEventArgs eventArgs = new SoundTouchSettingChangedEventArgs(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 SoundTouchSettingChanged { add { if (s_soundTouchChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundTouchEnabled, 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.SoundTouchEnabled); 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.DisplayScreenRotationAutoEnabled; DisplayScreenRotationAutoSettingChangedEventArgs eventArgs = new DisplayScreenRotationAutoSettingChangedEventArgs(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 DisplayScreenRotationAutoSettingChanged { add { if (s_displayScreenRotationAutoChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, 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.DisplayScreenRotationAutoEnabled); 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.NetworkWifiNotificationEnabled; NetworkWifiNotificationSettingChangedEventArgs eventArgs = new NetworkWifiNotificationSettingChangedEventArgs(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 NetworkWifiNotificationSettingChanged { add { if (s_networkWifiNotificationChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkWifiNotificationEnabled, 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.NetworkWifiNotificationEnabled); 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.NetworkFlightModeEnabled; NetworkFlightModeSettingChangedEventArgs eventArgs = new NetworkFlightModeSettingChangedEventArgs(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 NetworkFlightModeSettingChanged { add { if (s_networkFlightModeChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkFlightModeEnabled, 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.NetworkFlightModeEnabled); 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"); } } } } private static readonly Interop.Settings.SystemSettingsChangedCallback s_adsIdChangedCallback = (SystemSettingsKeys key, IntPtr userData) => { string adsId = SystemSettings.AdsId; AdsIdChangedEventArgs eventArgs = new AdsIdChangedEventArgs(adsId); s_adsIdChanged?.Invoke(null, eventArgs); }; private static event EventHandler s_adsIdChanged; /// /// AdsIdChanged event is triggered when the current ADS ID state is changed /// /// /// A AdsIdChangedEventArgs object that contains the key & changed value public static event EventHandler AdsIdChanged { add { if (s_adsIdChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AdsId, s_adsIdChangedCallback, IntPtr.Zero); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } s_adsIdChanged += value; } remove { s_adsIdChanged -= value; if (s_adsIdChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AdsId); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } } } private static readonly Interop.Settings.SystemSettingsChangedCallback s_ultraDataSaveChangedCallback = (SystemSettingsKeys key, IntPtr userData) => { SystemSettingsUdsState ultraDataSave = SystemSettings.UltraDataSave; UltraDataSaveChangedEventArgs eventArgs = new UltraDataSaveChangedEventArgs(ultraDataSave); s_ultraDataSaveChanged?.Invoke(null, eventArgs); }; private static event EventHandler s_ultraDataSaveChanged; /// /// UltraDataSaveChanged event is triggered when the current Ultra Data Save state is changed /// /// /// A UltraDataSaveChangedEventArgs object that contains the key & changed value public static event EventHandler UltraDataSaveChanged { add { if (s_ultraDataSaveChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSave, s_ultraDataSaveChangedCallback, IntPtr.Zero); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } s_ultraDataSaveChanged += value; } remove { s_ultraDataSaveChanged -= value; if (s_ultraDataSaveChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSave); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } } } private static readonly Interop.Settings.SystemSettingsChangedCallback s_ultraDataSavePackageListChangedCallback = (SystemSettingsKeys key, IntPtr userData) => { string ultraDataSavePackageList = "None"; UltraDataSavePackageListChangedEventArgs eventArgs = new UltraDataSavePackageListChangedEventArgs(ultraDataSavePackageList); s_ultraDataSavePackageListChanged?.Invoke(null, eventArgs); }; private static event EventHandler s_ultraDataSavePackageListChanged; /// /// UltraDataSavePackageListChanged event is triggered when the current ADS ID state is changed /// /// /// A UltraDataSavePackageListChangedEventArgs object that contains the key & changed value public static event EventHandler UltraDataSavePackageListChanged { add { if (s_ultraDataSavePackageListChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSavePackageList, s_ultraDataSavePackageListChangedCallback, IntPtr.Zero); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } s_ultraDataSavePackageListChanged += value; } remove { s_ultraDataSavePackageListChanged -= value; if (s_ultraDataSavePackageListChanged == null) { SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSavePackageList); if (ret != SystemSettingsError.None) { throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling"); } } } } } }