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(dataStr); } } } public static List 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 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 ProcessCodes { get; set; } = new List(); public List ProductionCodes { get; set; } = new List(); 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; } } }