public static void SaveConfiguration() { string fullFileName = Path.Combine(Assembly.GetExecutingAssembly().Location, fileName); if (!LocalConfig) { fullFileName = Path.Combine(GetLocalStoragePath(), fileName); } if (File.Exists(fullFileName)) { FileInfo fileInfo = new FileInfo(fullFileName); fileInfo.Attributes = FileAttributes.Normal; } XmlWriterSettings xwSettings = new XmlWriterSettings(); xwSettings.Indent = true; MemoryStream ms = new MemoryStream(); using (XmlWriter xw = XmlWriter.Create(ms, xwSettings)) { xw.WriteStartDocument(); xw.WriteStartElement("config"); xw.WriteStartElement("integrators"); foreach (string url in FarmList) { xw.WriteStartElement("integrator"); xw.WriteAttributeString("url", url); xw.WriteEndElement(); } xw.WriteEndElement(); xw.WriteStartElement("buildNotifications"); foreach (BuildNotificationViewInfo bnvi in buildNotifications) { xw.WriteStartElement("notification"); xw.WriteRaw(SmartCCNetHelper.GetSerializeString(bnvi.Notification)); xw.WriteEndElement(); } xw.WriteEndElement(); xw.WriteStartElement("PowerShellScripts"); foreach (PSScript script in powerShellScripts) { xw.WriteStartElement("PowerShellScript"); xw.WriteRaw(SmartCCNetHelper.GetSerializeString(script)); xw.WriteEndElement(); } xw.WriteEndElement(); xw.WriteStartElement("lastProjectDurationDictionary"); byte[] lastBuildDurationData = ProjectInfo.GetLastBuildDurationDictSaveData(); xw.WriteBase64(lastBuildDurationData, 0, lastBuildDurationData.Length); xw.WriteEndElement(); xw.WriteStartElement("layoutXml"); xw.WriteRaw(layoutXml); xw.WriteEndElement(); xw.WriteStartElement("gridProjectXml"); xw.WriteRaw(gridProjectXml); xw.WriteEndElement(); xw.WriteStartElement("gridTestsXml"); xw.WriteRaw(gridTestsXml); xw.WriteEndElement(); xw.WriteStartElement("gridServersXml"); xw.WriteRaw(gridServersXml); xw.WriteEndElement(); xw.WriteStartElement("gridNotificationsXml"); xw.WriteRaw(gridNotificationsXml); xw.WriteEndElement(); xw.WriteElementString("volunteerColorString", VolunteerColorString); xw.WriteElementString("alwaysOnTop", AlwaysOnTop.ToString()); xw.WriteElementString("refreshTime", RefreshTime.ToString()); xw.WriteElementString("minimized", Minimized.ToString()); xw.WriteElementString("buildLogMaximized", BuildLogMaximized.ToString()); xw.WriteElementString("formWidth", FormWidth.ToString()); xw.WriteElementString("formHeight", FormHeight.ToString()); xw.WriteElementString("formLeft", FormLeft.ToString()); xw.WriteElementString("formTop", FormTop.ToString()); xw.WriteElementString("updateUrl", UpdateUrl); xw.WriteElementString("workUserName", WorkUserName); xw.WriteElementString("useSkin", UseSkin.ToString()); xw.WriteElementString("UsePowerShellScript", UsePowerShellScript.ToString()); xw.WriteElementString("needAskForStutup", NeedAskForStutup.ToString()); xw.WriteElementString("alreadyReloadGridTestsLayout", AlreadyReloadGridTestsLayout.ToString()); xw.WriteElementString("skinName", SkinName); xw.WriteElementString("popupHideTimeout", PopupHideTimeout.ToString()); xw.WriteStartElement("trackedProjects"); foreach (ProjectShortInfo info in TrackedProjects) { xw.WriteStartElement("trackedProject"); xw.WriteAttributeString("name", info.Name); xw.WriteAttributeString("status", info.BuildStatus); xw.WriteEndElement(); } xw.WriteEndElement(); xw.WriteEndElement(); xw.WriteEndDocument(); } File.WriteAllBytes(fullFileName, ms.ToArray()); }
public static void LoadConfiguration() { string fullFileName = Path.Combine(Assembly.GetExecutingAssembly().Location, fileName); if (!LocalConfig) { fullFileName = Path.Combine(GetLocalStoragePath(), fileName); } if (File.Exists(fullFileName)) { try { XmlDocument doc = new XmlDocument(); doc.Load(fullFileName); LoadFarmList(doc); buildNotifications.Clear(); foreach (XmlNode node in doc.GetElementsByTagName("buildNotifications")) { if (node != null) { foreach (XmlNode bnNode in node.ChildNodes) { BuildNotification bn = (BuildNotification)SmartCCNetHelper.GetSerializedObject(bnNode.InnerText); BuildNotificationViewInfo bnvi = new BuildNotificationViewInfo(bn); bnvi.Read = true; buildNotifications.Add(bnvi); } } } trackedProjects.Clear(); foreach (XmlNode node in doc.GetElementsByTagName("trackedProject")) { if (node.ParentNode != null && node.ParentNode.Name == "trackedProjects") { ProjectShortInfo info = new ProjectShortInfo(); foreach (XmlAttribute attr in node.Attributes) { switch (attr.Name) { case "name": info.Name = attr.Value; break; case "status": info.BuildStatus = attr.Value; break; } } trackedProjects.Add(info); } } powerShellScripts.Clear(); foreach (XmlNode node in doc.GetElementsByTagName("PowerShellScript")) { if (node != null) { foreach (XmlNode scriptNode in node.ChildNodes) { PSScript script = (PSScript)SmartCCNetHelper.GetSerializedObject(scriptNode.InnerText); powerShellScripts.Add(script); } } } UsePowerShellScript = LoadBoolean(doc, "UsePowerShellScript", false); LoadLayoutAndGrid(doc); gridNotificationsXml = LoadString(doc, "gridNotificationsXml", string.Empty); alwaysOnTop = LoadBoolean(doc, "alwaysOnTop", defaultAlwaysOnTop); minimized = LoadBoolean(doc, "minimized", defaultMinimized); formWidth = LoadInt(doc, "formWidth", defaultFormWidth); formHeight = LoadInt(doc, "formHeight", defaultFormHeight); formLeft = LoadInt(doc, "formLeft", defaultFormLeft); formTop = LoadInt(doc, "formTop", defaultFormTop); refreshTime = LoadInt(doc, "refreshTime", defaultRefreshTime); LoadUpdateUrl(doc); workUserName = LoadString(doc, "workUserName", string.Empty); if (string.IsNullOrEmpty(workUserName)) { workUserName = defaultUserName; } useSkin = LoadBoolean(doc, "useSkin", defaultUseSkin); needAskForStutup = LoadBoolean(doc, "needAskForStutup", true); alreadyReloadGridTestsLayout = LoadBoolean(doc, "alreadyReloadGridTestsLayout", defaultAlreadyReloadGridTestsLayout); skinName = LoadString(doc, "skinName", defaultSkinName); popupHideTimeout = LoadInt(doc, "popupHideTimeout", defaultPopupHideTimeout); string tempString; if (TryLoadString(doc, "volunteerColorString", out tempString)) { VolunteerColorString = tempString; } else { LoadDefaultVolunteerColors(); } byte[] lastProjectDurationDictionaryData = LoadBase64(doc, "lastProjectDurationDictionary", null); ProjectInfo.LoadLastBuildDurationDict(lastProjectDurationDictionaryData); } catch (Exception exc) { Log.Error("exception", exc); LoadDefaultConfiguration(); } } else { LoadDefaultConfiguration(); } DXCCTrayConfiguration.CanSetConfig = false; }