JD2022-TU1/main/tools/legacy/NetworkCommon/Settings.cs

140 lines
3.6 KiB
C#

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<string> IPs = new List<string>();
public bool SelectCustomPort = false;
public List<string> Ports = new List<string>();
}
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<string> GetIPs()
{
return m_setting.IPs;
}
public List<string> 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;
}
}
}
}