ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater.UserSettingsSupport/SettingsSubscriberBase.cs
Revision: 34
Committed: Wed May 9 11:29:33 2012 UTC (11 years ago) by william
File size: 2021 byte(s)
Log Message:
+ add settings upgrade subscriber support (needs to be called in a static constructor for types that are always used)

File Contents

# Content
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Reflection;
6 using System.Configuration;
7
8 namespace RomCheater.UserSettingsSupport
9 {
10 public sealed class SettingSubscriber
11 {
12 private class SettingsEventArgs : EventArgs
13 {
14 public SettingsEventArgs() :this(null) { }
15 public SettingsEventArgs(System.Configuration.ApplicationSettingsBase settings) { this.Settings = settings; }
16 public System.Configuration.ApplicationSettingsBase Settings { get; private set; }
17 }
18 private static EventHandler<SettingsEventArgs> OnSubscribeAddedEvent;
19 static SettingSubscriber() { OnSubscribeAddedEvent += new EventHandler<SettingsEventArgs>(OnSubscribeAdded); }
20 public static void AddSubscriber(System.Configuration.ApplicationSettingsBase settings) { if (OnSubscribeAddedEvent != null) { OnSubscribeAddedEvent(new SettingSubscriber(), new SettingsEventArgs(settings)); } }
21 private static void OnSubscribeAdded(object SubscribingAssembly, SettingsEventArgs e)
22 {
23 if (e.Settings != null)
24 {
25 foreach (SettingsProperty prop in e.Settings.Properties)
26 {
27 if (prop.Name == "UpgradeRequired")
28 {
29 bool UpgradeRequired = Convert.ToBoolean(e.Settings[prop.Name]);
30 try
31 {
32 if (UpgradeRequired)
33 {
34 e.Settings.Upgrade();
35 e.Settings.Reload();
36 e.Settings[prop.Name] = false;
37 e.Settings.Save();
38 }
39 }
40 catch { e.Settings.Reset(); }
41 break;
42 }
43 }
44 }
45 }
46 }
47 }