Exemplo n.º 1
0
        public void AddOrUpdateValue <T>(string key, T value, SettingStrategy strategy = SettingStrategy.Local, string containerName = "")
        {
            _loggingService.WriteLine($"Adding setting {key} to {strategy.ToString().ToLower()} container {containerName} with value '{value}'.");

            var type = typeof(T);

            if (value != null)
            {
                type = value.GetType();
            }

            var container = new ApplicationDataCompositeValue();
            var converted = JsonConvert.SerializeObject(value, Formatting.None);

            if (converted != null)
            {
                container["Value"] = converted;
            }

            if ((type != typeof(string) && !type.GetTypeInfo().IsValueType) || (type != typeof(T)))
            {
                container["Type"] = type.AssemblyQualifiedName;
            }

            GetContainerValuesForStrategyAndContainerName(strategy, containerName)[key] = container;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Retrieves application settings of types bool, float, int, long, ICollection<string> and string
        /// </summary>
        /// <param name="key">Setting Key</param>
        /// <param name="settingStrategy">Setting Strategy</param>
        /// <returns>Application Settings of types bool, float, int, long, ICollection<string> or string</returns>
        public T GetSetting <T>(string key, SettingStrategy settingStrategy)
        {
            switch (settingStrategy)
            {
            case SettingStrategy.Local:
                if (typeof(T) == typeof(bool))
                {
                    return((T)(object)_localSettings.Values[key]);
                }
                else if (typeof(T) == typeof(float))
                {
                    return((T)(object)_localSettings.Values[key]);
                }
                else if (typeof(T) == typeof(int))
                {
                    return((T)(object)_localSettings.Values[key]);
                }
                else if (typeof(T) == typeof(long))
                {
                    return((T)(object)_localSettings.Values[key]);
                }
                else if (typeof(T) == typeof(ICollection <string>))
                {
                    return((T)(object)_localSettings.Values[key]);
                }
                else
                {
                    return((T)(object)_localSettings.Values[key]);
                }

            case SettingStrategy.Roaming:
                if (typeof(T) == typeof(bool))
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }
                else if (typeof(T) == typeof(float))
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }
                else if (typeof(T) == typeof(int))
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }
                else if (typeof(T) == typeof(long))
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }
                else if (typeof(T) == typeof(ICollection <string>))
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }
                else
                {
                    return((T)(object)_roamingSettings.Values[key]);
                }

            default:
                return(default);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Removes application settings
        /// </summary>
        /// <param name="key">Settings Key</param>
        /// <param name="settingStrategy">Setting Strategy</param>
        public void RemoveSetting(string key, SettingStrategy settingStrategy)
        {
            switch (settingStrategy)
            {
            case SettingStrategy.Local:
                _localSettings.Values.Remove(key);
                break;

            case SettingStrategy.Roaming:
                _roamingSettings.Values.Remove(key);
                break;

            default:
                break;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Saves application settings of types bool, float, int, long, ICollection<string> and string
        /// </summary>
        /// <param name="key">Settings Key</param>
        /// <param name="value">Settings Value</param>
        /// <param name="settingStrategy">Setting Strategy</param>
        public void SaveSetting(string key, object value, SettingStrategy settingStrategy)
        {
            switch (settingStrategy)
            {
            case SettingStrategy.Local:
                _localSettings.Values[key] = value;
                break;

            case SettingStrategy.Roaming:
                _roamingSettings.Values[key] = value;
                break;

            default:
                break;
            }
        }
Exemplo n.º 5
0
        private IPropertySet GetContainerValuesForStrategyAndContainerName(SettingStrategy strategy, string containerName)
        {
            var container = ApplicationData.Current.LocalSettings;

            if (strategy == SettingStrategy.Roaming)
            {
                container = ApplicationData.Current.RoamingSettings;
            }

            if (!string.IsNullOrWhiteSpace(containerName))
            {
                container = container.CreateContainer(containerName, ApplicationDataCreateDisposition.Always);
            }

            return(container.Values);
        }
Exemplo n.º 6
0
        public T GetValueOrDefault <T>(string key, T defaultValue = default(T), SettingStrategy strategy = SettingStrategy.Local, string containerName = "")
        {
            _loggingService.WriteLine($"Trying to fetch setting {key} from {strategy.ToString().ToLower()} container {containerName}.");

            try
            {
                var values = GetContainerValuesForStrategyAndContainerName(strategy, containerName);

                if (values.ContainsKey(key))
                {
                    var container = values[key] as ApplicationDataCompositeValue;

                    var type = typeof(T);
                    if (container.ContainsKey("Type"))
                    {
                        type = Type.GetType((string)container["Type"]);
                    }

                    string value = null;
                    if (container.ContainsKey("Value"))
                    {
                        value = container["Value"] as string;
                    }

                    var converted = (T)JsonConvert.DeserializeObject(value, type);

                    _loggingService.WriteLine($"Returning value: {converted}");

                    return(converted);
                }

                _loggingService.WriteLine($"Returning default value: {defaultValue}");
                return(defaultValue);
            }
            catch
            {
                _loggingService.WriteLine($"Returning default value: {defaultValue}");
                return(defaultValue);
            }
        }
Exemplo n.º 7
0
 public bool Contains(string key, SettingStrategy strategy = SettingStrategy.Local, string containerName = "")
 => GetContainerValuesForStrategyAndContainerName(strategy, containerName).ContainsKey(key);
Exemplo n.º 8
0
 public void Clear(SettingStrategy strategy = SettingStrategy.Roaming, string containerName = "")
 => GetContainerValuesForStrategyAndContainerName(strategy, containerName).Clear();
Exemplo n.º 9
0
 public void Remove(string key, SettingStrategy strategy = SettingStrategy.Roaming, string containerName = "")
 => GetContainerValuesForStrategyAndContainerName(strategy, containerName).Remove(key);
Exemplo n.º 10
0
 public IDictionary <string, object> GetContainer(string containerName, SettingStrategy strategy = SettingStrategy.Local)
 => GetContainerValuesForStrategyAndContainerName(strategy, containerName);
Exemplo n.º 11
0
 public IDictionary <string, object> GetReadingProgressContainer(SettingStrategy strategy)
 => Settings.SettingsService.GetContainer($"ReadingProgressContainer-{Settings.Authentication.ClientId}", strategy);