using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core; namespace Tango.FSE.Diagnostics.Project { public class DiagnosticsUserSettingsManager : ExtendedObject { private static object _syncLock = new object(); private static DiagnosticsUserSettingsManager _default; public static DiagnosticsUserSettingsManager Default { get { if (_default == null) { _default = new DiagnosticsUserSettingsManager(); } return _default; } } public String FilePath { get; protected set; } public DiagnosticsUserSettingsCollection Settings { get; set; } private DiagnosticsUserSettingsManager() { Settings = new DiagnosticsUserSettingsCollection(); FilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Twine", "Tango", "Diagnostics", Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName) + ".User.json"); Reload(); } public void Reload() { try { Settings = DiagnosticsUserSettingsCollection.FromFile(FilePath); } catch (Exception ex) { LogManager.Log(ex, "Error loading diagnostics user settings."); } if (Settings == null) { Settings = new DiagnosticsUserSettingsCollection(); } } public void ClearGhostRecords(List widgets) { Settings.Widgets.RemoveAll(x => !widgets.Exists(y => y.ID == x.WidgetID)); } public void Save() { lock (_syncLock) { Directory.CreateDirectory(Path.GetDirectoryName(FilePath)); Settings.ToFile(FilePath); } } } }