using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
|
namespace Bro.Common.Helper
|
{
|
public static class SettingHelper
|
{
|
const string SETTINGFILE = "Setting.json";
|
|
public static SettingInfo SettingInfo = null;
|
static string SettingPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, SETTINGFILE);
|
|
static SettingHelper()
|
{
|
if (File.Exists(SettingPath))
|
{
|
using (StreamReader reader = new StreamReader(SettingPath, System.Text.Encoding.UTF8))
|
{
|
string dataStr = reader.ReadToEnd();
|
SettingInfo = JsonConvert.DeserializeObject<SettingInfo>(dataStr);
|
}
|
}
|
}
|
|
public static List<string> GetProductionCodes()
|
{
|
if (SettingInfo.ProductionCodes.Count == 0)
|
{
|
SettingInfo.ProductionCodes.Add("Default");
|
}
|
|
if (!string.IsNullOrWhiteSpace(SettingInfo.DefaultProduction))
|
{
|
if (SettingInfo.ProductionCodes.Contains(SettingInfo.DefaultProduction))
|
{
|
SettingInfo.ProductionCodes.Remove(SettingInfo.DefaultProduction);
|
SettingInfo.ProductionCodes.Insert(0, SettingInfo.DefaultProduction);
|
}
|
}
|
|
return SettingInfo.ProductionCodes;
|
}
|
|
public static List<string> GetProcessCodes()
|
{
|
if (!string.IsNullOrWhiteSpace(SettingInfo.DefaultProcess))
|
{
|
if (SettingInfo.ProcessCodes.Contains(SettingInfo.DefaultProcess))
|
{
|
SettingInfo.ProcessCodes.Remove(SettingInfo.DefaultProcess);
|
SettingInfo.ProcessCodes.Insert(0, SettingInfo.DefaultProcess);
|
}
|
}
|
|
return SettingInfo.ProcessCodes;
|
}
|
|
public static void AddNewProductionCode(string code)
|
{
|
if (!SettingInfo.ProductionCodes.Contains(code))
|
{
|
SettingInfo.ProductionCodes.Add(code);
|
}
|
|
SaveSettingInfo();
|
}
|
|
public static string GetConfigFilePath()
|
{
|
return SettingInfo.ConfigPath;
|
}
|
|
public static string GetProgramDescription()
|
{
|
if (string.IsNullOrWhiteSpace(SettingInfo.Description))
|
{
|
SettingInfo.Description = "伯肯森自动化技术有限公司";
|
}
|
|
return SettingInfo.Description;
|
}
|
|
public static string GetProgramIcon()
|
{
|
string iconPath = SettingInfo.IconPath;
|
if (string.IsNullOrWhiteSpace(iconPath) || !File.Exists(iconPath))
|
{
|
iconPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logo.ico");
|
}
|
|
if (!File.Exists(iconPath))
|
{
|
iconPath = "";
|
}
|
return iconPath;
|
}
|
|
#region 保存
|
public static void SetDefaultProcess(string processCode)
|
{
|
if (SettingInfo.DefaultProcess != processCode)
|
{
|
SettingInfo.DefaultProcess = processCode;
|
SaveSettingInfo();
|
}
|
}
|
|
public static void SetDefaultProduction(string productionCode)
|
{
|
if (SettingInfo.DefaultProduction != productionCode)
|
{
|
SettingInfo.DefaultProduction = productionCode;
|
SaveSettingInfo();
|
}
|
}
|
|
public static void SetDefault(string processCode,string productionCode)
|
{
|
bool isChanged = false;
|
if (SettingInfo.DefaultProcess != processCode)
|
{
|
isChanged = true;
|
SettingInfo.DefaultProcess = processCode;
|
}
|
|
if (SettingInfo.DefaultProduction != productionCode)
|
{
|
isChanged = true;
|
SettingInfo.DefaultProduction = productionCode;
|
}
|
|
if (isChanged)
|
{
|
SaveSettingInfo();
|
}
|
}
|
|
static object saveLock = new object();
|
private static void SaveSettingInfo()
|
{
|
string newDataStr = JsonConvert.SerializeObject(SettingInfo);
|
lock (saveLock)
|
{
|
using (StreamWriter writer = new StreamWriter(SettingPath, false, System.Text.Encoding.UTF8))
|
{
|
writer.Write(newDataStr);
|
writer.Flush();
|
writer.Close();
|
}
|
}
|
}
|
#endregion
|
}
|
|
public class SettingInfo
|
{
|
public List<string> ProcessCodes { get; set; } = new List<string>();
|
public List<string> ProductionCodes { get; set; } = new List<string>();
|
|
public string DefaultProcess { get; set; }
|
|
public string DefaultProduction { get; set; }
|
|
public string ConfigPath { get; set; }
|
public string Description { get; set; }
|
public string IconPath { get; set; }
|
}
|
}
|