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
}
}