00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using Microsoft.Win32;
00005 using System.Xml;
00006 using System.IO;
00007 using System.Reflection;
00008
00009 namespace Client
00010 {
00017 public class LocalSettings
00018 {
00020 private string username = "";
00022 private string password = "";
00024 private bool rememberme = false;
00026 private string server = "localhost";
00028 private int port = 8080;
00029
00031 private XmlWriterSettings writerSettings;
00033 private string settingsFile;
00034
00038 public LocalSettings()
00039 {
00040 writerSettings = new XmlWriterSettings();
00041 writerSettings.Indent = true;
00042 writerSettings.IndentChars = (" ");
00043 settingsFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar + "settings.xml";
00044
00045 Dictionary<string, string> theSettings = new Dictionary<string,string>();
00046
00047 if (File.Exists(settingsFile))
00048 {
00049 using (System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(settingsFile))
00050 {
00051 string settingName, settingValue;
00052 while (reader.Read())
00053 {
00054 reader.MoveToContent();
00055
00056 if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.Name == "Setting")
00057 {
00058 settingName = reader.GetAttribute("Name");
00059 settingValue = reader.ReadString();
00060 theSettings[settingName] = settingValue;
00061 }
00062 }
00063 }
00064
00065
00066 username = theSettings.ContainsKey("Username") ? theSettings["Username"] : "";
00067 password = theSettings.ContainsKey("Password") ? theSettings["Password"] : "";
00068 rememberme = theSettings.ContainsKey("Rememberme") ? Convert.ToBoolean(theSettings["Rememberme"]) : false;
00069 server = theSettings.ContainsKey("Server") ? theSettings["Server"] : "localhost";
00070 port = theSettings.ContainsKey("Port") ? Convert.ToInt32(theSettings["Port"]) : 8080;
00071 }
00072 }
00073
00075 public string Username
00076 {
00077 get { return username; }
00078 set { username = value; this.SaveSettings(); }
00079 }
00080
00082 public string Password
00083 {
00084 get { return password; }
00085 set { password = value; this.SaveSettings(); }
00086 }
00087
00089 public bool RememberMe
00090 {
00091 get { return rememberme; }
00092 set { rememberme = value; this.SaveSettings(); }
00093 }
00094
00096 public string Server
00097 {
00098 get { return server; }
00099 set { server = value; this.SaveSettings(); }
00100 }
00101
00103 public int Port
00104 {
00105 get { return port; }
00106 set { port = value; this.SaveSettings(); }
00107 }
00108
00114 internal void SaveSettings()
00115 {
00116 Dictionary<string, string> theSettings = new Dictionary<string,string>();
00117 theSettings["Username"] = username;
00118 theSettings["Password"] = password;
00119 theSettings["Rememberme"] = Convert.ToString(rememberme);
00120 theSettings["Server"] = server;
00121 theSettings["Port"] = Convert.ToString(port);
00122
00123 using (XmlWriter writer = XmlWriter.Create(settingsFile, writerSettings))
00124 {
00125 writer.WriteStartElement("Settings");
00126 foreach (KeyValuePair<string, string> theSetting in theSettings)
00127 {
00128 writer.WriteStartElement("Setting");
00129 writer.WriteStartAttribute("Name");
00130 writer.WriteValue(theSetting.Key);
00131 writer.WriteEndAttribute();
00132 writer.WriteString(theSetting.Value.ToString());
00133 writer.WriteEndElement();
00134 }
00135 writer.WriteEndElement();
00136 writer.Flush();
00137 }
00138
00139 }
00140 }
00141 }