using System; using System.IO; using Microsoft.Win32; namespace TeamXBMC.TranslatorCore { /// /// Application wide settings /// public sealed class Settings { private string languageFolder; private string language; private const string languageOriginal="English"; private string name=""; private string email=""; private static Settings instance=null; #region Constructor private Settings() { } #endregion #region Registry /// /// Loads settings from the registry /// private void ReadSettings() { RegistryKey keyUser=Registry.CurrentUser; RegistryKey keyTranslator=keyUser.CreateSubKey(@"SOFTWARE\Team XBMC\Translator"); languageFolder=(string)keyTranslator.GetValue("LanguageFolder"); language=(string)keyTranslator.GetValue("Language"); name=(string)keyTranslator.GetValue("Name"); email=(string)keyTranslator.GetValue("Email"); if (!Directory.Exists(languageFolder) || !File.Exists(FilenameOriginal)) { languageFolder=""; language=""; } } /// /// Saves settings to the registry /// private void WriteSettings() { RegistryKey keyUser=Registry.CurrentUser; RegistryKey keyTranslator=keyUser.CreateSubKey(@"SOFTWARE\Team XBMC\Translator"); if (languageFolder!=null) keyTranslator.SetValue("LanguageFolder", languageFolder); if (language!=null) keyTranslator.SetValue("Language", language); if (name!=null) keyTranslator.SetValue("Name", name); if (email!=null) keyTranslator.SetValue("Email", email); } #endregion #region Properties /// /// Returns the instance of the settings object /// public static Settings Instance { get { if (instance==null) { instance=new Settings(); instance.ReadSettings(); } return instance; } } /// /// Gets/Sets the language folder /// public string LanguageFolder { get { return languageFolder; } set { languageFolder=value; WriteSettings(); } } /// /// Gets/Sets the language currently edited /// public string Language { get { return language; } set { language=value; WriteSettings(); } } /// /// Gets the language uses a master /// public string LanguageOriginal { get { return languageOriginal; } } /// /// Gets the filename of the active language /// public string FilenameTranslated { get { return LanguageFolder+@"\"+Language+@"\strings.xml"; } } /// /// Gets the filename of the master language /// public string FilenameOriginal { get { return LanguageFolder+@"\"+LanguageOriginal+@"\strings.xml"; } } /// /// Gets the filename of the langinfo of the active language /// public string FilenameLanguageInfo { get { return LanguageFolder+@"\"+Language+@"\langinfo.xml"; } } /// /// Gets/Sets the name of the translator /// public string TranslatorName { get { return name==null ? "" : name; } set { name=value; WriteSettings(); } } /// /// Gets/Sets the email adress of the translator /// public string TranslatorEmail { get { return email==null ? "" : email; } set { email=value; WriteSettings(); } } #endregion } }