using PdmSwPlugin.Common.Entity;
|
using PdmSwPlugin.Common.Util.Xml;
|
using System;
|
using System.IO;
|
using System.Linq;
|
using System.Reflection;
|
|
namespace PdmSwPlugin.Common.Setting
|
{
|
public class YwtUserSetting : NotifyBase
|
{
|
public static YwtUserSetting Instance { get; private set; }
|
|
private string _SwFilePath;
|
public string SwFilePath
|
{
|
get => _SwFilePath;
|
set => RaiseAndSetIfChanged(ref _SwFilePath, value);
|
}
|
|
private YwtUserSetting() { }
|
|
private static string GetSettingPath()
|
{
|
string dllPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
string settingPath = Path.Combine(dllPath, "UserSetting", "YwtUserSetting.xml");
|
return settingPath;
|
}
|
|
private static YwtUserSetting LoadFromXml()
|
{
|
string settingPath = GetSettingPath();
|
if (!File.Exists(settingPath))
|
{
|
return new YwtUserSetting();
|
}
|
try
|
{
|
return XmlUtil.ReadFromXml<YwtUserSetting>(settingPath);
|
}
|
catch (Exception e)
|
{
|
return new YwtUserSetting();
|
}
|
}
|
|
public bool SaveToXml(out string ErrMsg)
|
{
|
ErrMsg = null;
|
string settingPath = GetSettingPath();
|
string settingDir = Path.GetDirectoryName(settingPath);
|
if (!Directory.Exists(settingDir))
|
{
|
Directory.CreateDirectory(settingDir);
|
}
|
XmlUtil.WriteToXml(settingPath, this);
|
return true;
|
}
|
|
|
public static YwtUserSetting Load(bool force)
|
{
|
if (Instance == null || force)
|
{
|
YwtUserSetting setting = LoadFromXml();
|
var props = setting.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();
|
|
foreach (var prop in props)
|
{
|
string name = prop.Name;
|
var oldValue = prop.GetValue(setting);
|
if (oldValue == null)
|
{
|
string value = PluginSetting.Instance[name];
|
prop.SetValue(setting, value);
|
}
|
}
|
Instance = setting;
|
}
|
return Instance;
|
}
|
}
|
}
|