using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Configuration; namespace RomCheater.UserSettingsSupport { public sealed class SettingSubscriber { private class SettingsEventArgs : EventArgs { public SettingsEventArgs() :this(null) { } public SettingsEventArgs(System.Configuration.ApplicationSettingsBase settings) { this.Settings = settings; } public System.Configuration.ApplicationSettingsBase Settings { get; private set; } } private static EventHandler OnSubscribeAddedEvent; static SettingSubscriber() { OnSubscribeAddedEvent += new EventHandler(OnSubscribeAdded); } public static void AddSubscriber(System.Configuration.ApplicationSettingsBase settings) { AddSubscriber(null, settings); } public static void AddSubscriber(object Subscriber, System.Configuration.ApplicationSettingsBase settings) { if (OnSubscribeAddedEvent != null) { OnSubscribeAddedEvent(Subscriber, new SettingsEventArgs(settings)); } } private static void OnSubscribeAdded(object Subscriber, SettingsEventArgs e) { if (e.Settings != null) { foreach (SettingsProperty prop in e.Settings.Properties) { if (prop.Name == "UpgradeRequired") { bool UpgradeRequired = Convert.ToBoolean(e.Settings[prop.Name]); try { if (UpgradeRequired) { e.Settings.Upgrade(); e.Settings.Reload(); e.Settings[prop.Name] = false; e.Settings.Save(); } } catch { e.Settings.Reset(); } break; } } } } } }