private static void LoadLocale(Config config)
        {
            Locale locale = Utilities.ResourceHelper.GetLocale(config.Language);

            // in case the config xml gets hosed, or a user goes a-tamperin'
            if (locale == null) {
                locale = Utilities.ResourceHelper.GetLocale("en-us");
            }

            locale.Init();
        }
 public static void InitDefaults(Config config)
 {
     config.FirstRun = true;
     config.FlashCount = 4;
 }
		public static void Init() {
			if(!Directory.Exists(_path)) {
				Directory.CreateDirectory(_path);
			}

			Config config = new Config();
			String xml = null;
			FileInfo file = new FileInfo(Path.Combine(_path, _fileName));

			if(file.Exists) {
				using(StreamReader sr = file.OpenText()) {
					xml = sr.ReadToEnd();
				}

				if(!String.IsNullOrEmpty(xml)) {
					config = Utilities.Serializer.DeserializeContract<Config>(xml);
				}
			}
			else {
				InitDefaults(config);
				config.Save();
			}

			if(config.StartupState == StartupState.None) {
				// we need to check for the legacy <firstrun> node. if it exists and is false, we're on the second run.

				XmlDocument document = new XmlDocument();
				document.LoadXml(xml);

				XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
				manager.AddNamespace("n", "http://schemas.datacontract.org/2004/07/GmailNotifierPlus");

				XmlNode node = document.SelectSingleNode("n:config/n:firstrun", manager);

				if(node == null) {
					config.StartupState = StartupState.First;
				}
				else {
					config.StartupState = StartupState.Second;
				}
			}

			config.Language = config.Language;

			Config.Current = config;

			// Fire up the locale information and init localization
			Dictionary<String, String> locales = Utilities.ResourceHelper.AvailableLocales;

			LoadLocale(config);

			for(var i = 0; i < config.Accounts.Count; i++) {
				config.Accounts[i].Init();
			}

			// Check to see if recent document tracking is turned on.
			// If it isn't we cannot add custom categories to the jumplist.

			try {
				using(RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", false)) {
					object trackDocs = key.GetValue("Start_TrackDocs"); //DWORD value. 
					if(trackDocs != null) {
						int tracking = Convert.ToInt32(trackDocs);
						config.RecentDocsTracked = tracking == 1;
					}
					else {
						// if the value doesn't exist, that means it's turned on (but will probably not put out, s**t.).
						config.RecentDocsTracked = true;
					}
					key.Close();
				}
			}
			catch(System.Security.SecurityException) {
			}


		}
        public static void Init()
        {
            if (!Directory.Exists(_path)) {
                Directory.CreateDirectory(_path);
            }

            Config config = new Config();
            String xml = null;
            FileInfo file = new FileInfo(Path.Combine(_path, _fileName));

            if (file.Exists) {
                using (StreamReader sr = file.OpenText()) {
                    xml = sr.ReadToEnd();
                }

                if (!String.IsNullOrEmpty(xml)) {
                    config = Utilities.Serializer.DeserializeContract<Config>(xml);
                }
            }
            else {
                InitDefaults(config);
                config.Save();
            }

            config.Language = config.Language.ToLower();

            Config.Current = config;

            // Fire up the locale information and init localization
            Dictionary<String, String> locales = Utilities.ResourceHelper.AvailableLocales;

            LoadLocale(config);

            for (var i = 0; i < config.Accounts.Count; i++) {
                config.Accounts[i].Init();
            }

            // Check to see if recent document tracking is turned on.
            // If it isn't we cannot add custom categories to the jumplist.

            try {
                using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", false)) {
                    object trackDocs = key.GetValue("Start_TrackDocs"); //DWORD value.
                    if (trackDocs != null) {
                        int tracking = Convert.ToInt32(trackDocs);
                        config.RecentDocsTracked = tracking == 1;
                    }
                    key.Close();
                }
            }
            catch (System.Security.SecurityException) {
            }
        }
		public static void InitDefaults(Config config) {
			//config.FirstRun = true;
			config.StartupState = GmailNotifierPlus.StartupState.First;
			config.FlashCount = 4;
		}