GARbro-mirror/ArcFormats/ResourceSettings.cs

73 lines
2.0 KiB
C#
Raw Normal View History

//! \file ResourceSettings.cs
//! \date 2018 Jan 08
//! \brief Persistent resource settings implementation.
//
2018-03-17 16:16:53 +08:00
using System;
2018-01-11 22:39:43 +08:00
using System.ComponentModel.Composition;
2018-03-17 16:16:53 +08:00
using System.Diagnostics;
using System.Text;
using GameRes.Formats.Strings;
2018-01-11 22:39:43 +08:00
namespace GameRes.Formats
{
internal class LocalResourceSetting : ResourceSettingBase
{
public override object Value {
get { return Properties.Settings.Default[Name]; }
set { Properties.Settings.Default[Name] = value; }
}
public LocalResourceSetting () { }
public LocalResourceSetting (string name)
{
Name = name;
Text = arcStrings.ResourceManager.GetString (name, arcStrings.Culture) ?? name;
}
}
2018-01-11 22:39:43 +08:00
internal class EncodingSetting : LocalResourceSetting
{
2018-03-17 16:16:53 +08:00
static readonly Encoding DefaultEncoding = Encodings.cp932;
public override object Value {
2018-03-17 16:16:53 +08:00
get {
try
{
return Encoding.GetEncoding ((int)base.Value);
}
catch // fallback to CP932
{
Trace.WriteLine (string.Format ("Unknown encoding code page {0}", base.Value));
return DefaultEncoding;
}
}
set { base.Value = ((Encoding)value).CodePage; }
}
public EncodingSetting () { }
public EncodingSetting (string name) : base (name) { }
}
2018-01-11 22:39:43 +08:00
[Export(typeof(ISettingsManager))]
internal class SettingsManager : ISettingsManager
{
public void UpgradeSettings ()
{
if (Properties.Settings.Default.UpgradeRequired)
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.UpgradeRequired = false;
Properties.Settings.Default.Save();
}
}
public void SaveSettings ()
{
Properties.Settings.Default.Save();
}
}
}