예제 #1
0
        public UISettingsManager(IIOSettingsManager ioSettingsManager, IEnumerable <BaseUISettingsFactory> factories)
        {
            directRef = new Dictionary <ISetting, BaseUISettingsFactory>();

            var ioSettingsDir = ioSettingsManager.GetSettings().ToDictionary(s => s.Key, s => s);

            foreach (var factory in factories)
            {
                foreach (var key in factory.SettingKeys)
                {
                    if (!key.Contains('.'))
                    {
                        throw new InvalidOperationException($"Every key in {factory.GetType().FullName}.{nameof(BaseUISettingsFactory.SettingKeys)} must contain a '.' i.e. must be in a section");
                    }

                    if (ioSettingsDir.TryGetValue(key, out var setting))
                    {
                        directRef.Add(setting, factory);
                    }
                    else
                    {
                        directRef.Add(new VirtualSetting(key), factory);
                    }
                }
            }
        }
예제 #2
0
        public ThemesManager(IEnumerable <Theme> themes, IIOSettingsManager settingsManager) : base(t => t.Name, themes)
        {
            if (ContainsKey(SettingConsts.ThemeDefaultName))
            {
                throw new InvalidOperationException($"It is not allowed to register a {nameof(Theme)} with {nameof(Theme.Name)} \"{SettingConsts.ThemeDefaultName}\"");
            }

            _collection.Add(new Theme(SettingConsts.ThemeDefaultName, string.Empty, "Windows"));

            setting = (KeyedCollectionSetting <string, Theme, IThemesManager>)settingsManager.GetSetting(SettingConsts.ThemeKey);
        }
예제 #3
0
        public object?Deserialize(Type type, XmlElement settingElement, IIOSettingsManager settingsManager)
        {
            var collection     = (type.GetConstructor(Array.Empty <Type>()) ?? throw new InvalidOperationException($"{nameof(CollectionSerializer)} cannot create an instance of type {type.FullName} using a default constructor")).Invoke(null);
            var itemType       = GetItemType(type);
            var itemSerializer = settingsManager.FindSerializer(itemType);
            var addMethod      = type.GetMethod("Add", new[] { itemType }) ?? throw new InvalidOperationException($"{nameof(CollectionSerializer)} cannot find an Add method for item type {itemType.FullName} on type {type.FullName}");

            foreach (var childElement in settingElement.ChildNodes.OfType <XmlElement>().Where(e => e.Name == ITEMNAME))
            {
                addMethod.Invoke(collection, new[] { itemSerializer.Deserialize(itemType, childElement, settingsManager) });
            }

            return(collection);
        }
예제 #4
0
        public void Serialize(object?value, XmlElement settingElement, IIOSettingsManager settingsManager)
        {
            if (value is null)
            {
                return;
            }
            else if (value is IEnumerable enumerable)
            {
                var itemType       = GetItemType(value.GetType());
                var itemSerializer = settingsManager.FindSerializer(itemType);

                foreach (var itemValue in enumerable)
                {
                    var childElement = settingElement.OwnerDocument.CreateElement(ITEMNAME);
                    itemSerializer.Serialize(itemValue, childElement, settingsManager);
                    settingElement.AppendChild(childElement);
                }
            }
            else
            {
                throw new InvalidOperationException($"{nameof(CollectionSerializer)} cannot serialize an object of type {value.GetType().FullName}");
            }
        }
예제 #5
0
 public static T GetResolvedValue <T>(this IIOSettingsManager manager, string key) => (T)((IResolveableIOSetting)manager.GetSetting(key)).GetResolvedValue() !;
예제 #6
0
 public static T GetValue <T>(this IIOSettingsManager manager, string key) where T : notnull => (T)manager.GetValue(key) !;
 public void Serialize(object?value, XmlElement settingNode, IIOSettingsManager settingsManager)
 {
     settingNode.InnerText = Convert.ToString(value) ?? string.Empty;
 }
 public object?Deserialize(Type type, XmlElement settingNode, IIOSettingsManager settingsManager)
 {
     return(Enum.Parse(type, settingNode.InnerText));
 }
 public ConvertToFileInteractable(IIOSettingsManager settingsManager) : base("ConvertToFileIcon",
                                                                             new ConvertToFileInteractableAction((IResolveableIOSetting)settingsManager.GetSetting(SettingConsts.ToFileBitmapEncoderKey)),
                                                                             new SaveToFileInteractableAction((IResolveableIOSetting)settingsManager.GetSetting(SettingConsts.ToFileBitmapEncoderKey)))
 {
 }
예제 #10
0
        public UpdateChecker(IAppInfo appInfo, INotificationsManager notificationsManager, IIOSettingsManager ioSettingsManager, ILogger <UpdateChecker> logger)
        {
            this.appInfo = appInfo;
            this.notificationsManager = notificationsManager;
            this.logger = logger;

            checkPrereleasesSetting = ioSettingsManager.GetSetting(AppUISettingsFactory.CheckForPrereleases);
            checkUpdatesOnStartUp   = ioSettingsManager.GetSetting(AppUISettingsFactory.CheckUpdatesOnStartUp);
        }
 public object?Deserialize(Type type, XmlElement settingNode, IIOSettingsManager settingsManager)
 {
     return(Convert.ChangeType(settingNode.InnerText, type));
 }
예제 #12
0
 public OwnerProgramClipboardFilter(IIOSettingsManager settingsManager)
 {
     programFilterSetting = settingsManager.GetSetting(SettingConsts.OwnerProgramClipboardFilterKey);
 }
예제 #13
0
 public Windows10ClipboardFilter(IIOSettingsManager iOSettingsManager)
 {
     historySetting = iOSettingsManager.GetSetting(SettingConsts.Windows10HistoryFilterKey);
     cloudSetting   = iOSettingsManager.GetSetting(SettingConsts.Windows10CloudFilterKey);
 }
예제 #14
0
 public StartupContext(IAppInfo appInfo, IAppDataManager appDataManager, IIOSettingsManager iOSettingsManager)
 {
     AppInfo           = appInfo;
     AppDataManager    = appDataManager;
     IOSettingsManager = iOSettingsManager;
 }