using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml.Serialization; using System.Windows.Forms; using System.Linq; using NetworkCommon.Network; namespace NetworkCommon { public class Settings { public bool SelectCustomIP = false; public List IPs = new List(); public bool SelectCustomPort = false; public List Ports = new List(); } public class SettingsManager { public static SettingsManager Instance { get; private set; } private Settings m_setting = new Settings(); static SettingsManager() { Instance = new SettingsManager(); } public void Clear() { m_setting.IPs.Clear(); m_setting.Ports.Clear(); m_setting.SelectCustomIP = false; m_setting.SelectCustomPort = false; } public void AddIP(string ip) { m_setting.IPs.Remove(ip); m_setting.IPs.Insert(0, ip); } public void AddPort(string port) { m_setting.Ports.Remove(port); m_setting.Ports.Insert(0, port); } public List GetIPs() { return m_setting.IPs; } public List GetPorts() { return m_setting.Ports; } public bool SelectedCustomIP { get { return m_setting.SelectCustomIP; } set { m_setting.SelectCustomIP = value; } } public bool SelectedCustomPort { get { return m_setting.SelectCustomPort; } set { m_setting.SelectCustomPort = value; } } private SettingsManager() { Load(); } public static string PathName { get { string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); return Path.Combine(path, Application.ProductName + "_settings.xml"); } } public void retrieveLastParameters(ConnectTools _gateway) { if(SelectedCustomIP) _gateway.ConnectIP = GetIPs().FirstOrDefault() ?? ConnectTools.LOCALHOST; if(SelectedCustomPort) { int port; if(int.TryParse(GetPorts().FirstOrDefault() ?? "-1", out port)) _gateway.ConnectPort = port; } } public bool Load() { try { XmlSerializer serializerReader = new XmlSerializer(typeof(Settings)); using(FileStream fs = new FileStream(PathName, FileMode.OpenOrCreate)) using(TextReader reader = new StreamReader(fs)) { m_setting = (Settings)serializerReader.Deserialize(reader); } return true; } catch (System.Exception ex) { string str = ex.Message; return false; } } public bool Save() { try { XmlSerializer serializer = new XmlSerializer(typeof(Settings)); TextWriter writer = new StreamWriter(PathName); serializer.Serialize(writer, m_setting); writer.Close(); return true; } catch (System.Exception ex) { string str = ex.Message; MessageBox.Show(str); return false; } } } }