Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Diagnostics;
- using System.IO;
- namespace Utility
- {
- [Serializable]
- public class Settings
- {
- #region Static -> Load & Save Settings
- static readonly Settings _default;
- public static Settings Default
- {
- get
- {
- return _default;
- }
- }
- static Settings()
- {
- _default = Load();
- }
- public static Settings Load()
- {
- Settings loaded = null;
- string settingsPath = GetSettingsFilePath();
- string contents = null;
- if (File.Exists(settingsPath))
- contents = File.ReadAllText(settingsPath);
- if (!string.IsNullOrWhiteSpace(contents))
- {
- loaded = XmlSerialization.Deserialize<Settings>(contents);
- if (loaded == null)
- Trace.TraceWarning("Settings->Load() Failed XmlSerialization->Deserialize() returned null");
- }
- if (loaded == null)
- loaded = new Settings();
- return loaded;
- }
- public static void Save()
- {
- Save(Settings.Default);
- }
- public static void Save(Settings data)
- {
- string settingsPath = GetSettingsFilePath();
- if (File.Exists(settingsPath))
- {
- FileAttributes att = File.GetAttributes(settingsPath);
- if (att == FileAttributes.ReadOnly)
- File.SetAttributes(settingsPath, att | FileAttributes.Normal);
- File.Delete(settingsPath);
- }
- string xmldata = XmlSerialization.Serialize<Settings>(data);
- File.WriteAllText(settingsPath, xmldata);
- }
- public static string GetSettingsFilePath()
- {
- string settingsFileName = Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule.FileName) + ".settings.xml";
- FileInfo procInfo = new FileInfo(Process.GetCurrentProcess().MainModule.FileName);
- string procDirectory = procInfo.Directory.FullName;
- string settingsPath = Path.Combine(procDirectory, settingsFileName);
- return settingsPath;
- }
- #region XmlSerialization Helper Class
- /// <summary>
- /// Utility class to serialize and deserialize objects
- /// </summary>
- [DebuggerStepThrough]
- static class XmlSerialization
- {
- public static string Serialize<T>(T xmlObject)
- {
- return Serialize<T>(xmlObject, false);
- }
- public static string Serialize<T>(T xmlObject, bool encodeInBase64)
- {
- using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
- {
- System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
- System.Xml.Serialization.XmlSerializerNamespaces xmlNamespace = new System.Xml.Serialization.XmlSerializerNamespaces();
- xmlNamespace.Add(string.Empty, string.Empty);
- xs.Serialize(memoryStream, xmlObject, xmlNamespace);
- System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
- if (encodeInBase64)
- return Convert.ToBase64String(System.Text.ASCIIEncoding.Unicode.GetBytes(encoding.GetString(memoryStream.ToArray())));
- else
- return encoding.GetString(memoryStream.ToArray());
- }
- }
- public static string Serialize(object xmlObject)
- {
- return Serialize(xmlObject, false);
- }
- public static string Serialize(object xmlObject, bool encodeInBase64)
- {
- using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
- {
- System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(xmlObject.GetType());
- System.Xml.Serialization.XmlSerializerNamespaces xmlNamespace = new System.Xml.Serialization.XmlSerializerNamespaces();
- xmlNamespace.Add(string.Empty, string.Empty);
- xs.Serialize(memoryStream, xmlObject, xmlNamespace);
- System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
- if (encodeInBase64)
- return Convert.ToBase64String(System.Text.ASCIIEncoding.Unicode.GetBytes(encoding.GetString(memoryStream.ToArray())));
- else
- return encoding.GetString(memoryStream.ToArray());
- }
- }
- public static T Deserialize<T>(string xml)
- {
- return Deserialize<T>(xml, false);
- }
- public static T Deserialize<T>(string xml, bool decodeInBase64)
- {
- string data = xml;
- if (decodeInBase64)
- data = System.Text.ASCIIEncoding.Unicode.GetString(Convert.FromBase64String(xml));
- System.Xml.Serialization.XmlSerializer xs = System.Xml.Serialization.XmlSerializer.FromTypes(new Type[] { typeof(T) })[0];
- System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
- using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(encoding.GetBytes(data)))
- {
- System.Xml.XmlTextWriter xmlTextWriter = new System.Xml.XmlTextWriter(memoryStream, System.Text.Encoding.UTF8);
- return (T)xs.Deserialize(memoryStream);
- }
- }
- }
- #endregion
- #endregion
- public Settings()
- {
- //set defaults here
- }
- //[DisplayName("Images Save Directory")]
- //[Category("Productivity Watcher")]
- //[Description("Gets or Sets the directory to save captured images")]
- public int LastAppID { get; set; }
- public int LastDivisionID { get; set; }
- public string LastDefaultObjectKey { get; set; }
- public int LastDepartmentNumber { get; set; }
- public int LastClassificationID { get; set; }
- public int LastDocTypeID { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment