public FListInfo(TSubjectList list) { InitializeComponent(); // вывод данных в компоненты CurrentList = list; InitData(list); }
/// <summary> /// Инициализация данных в окне /// </summary> /// <param name="list">Список предметов</param> private void InitData(TSubjectList list) { textBox1.Text = list.Name; textBox2.Text = list.Description; textBox3.Text = list.DateCreated.ToString(); textBox3.ReadOnly = true; InitImages(); }
/// <summary> /// Сохранение списка в файл /// </summary> /// <param name="list">Список предметов и работы по ним</param> /// <param name="fname">Полный путь и название файла для сохранения</param> public static void SaveListToFile(TSubjectList list, string fname) { XmlTextWriter file = new XmlTextWriter(fname, Encoding.UTF8); file.WriteStartDocument(); file.WriteStartElement("subjlist"); file.WriteStartAttribute("name"); file.WriteValue(list.Name); file.WriteStartAttribute("description"); file.WriteValue(list.Description); file.WriteStartAttribute("datecreated"); file.WriteValue(list.DateCreated); // теперь записываем все предметы из списка по порядку for (int i = 0; i < list.GetSubjectListCount; i++) { file.WriteStartElement("subject"); // открываем элемент <subject> file.WriteStartAttribute("name"); file.WriteValue(list[i].Name); file.WriteStartAttribute("status"); file.WriteValue(list[i].Status.ToString()); // записывем элемент список лаб <lablist> file.WriteStartElement("lablist"); // открываем элемент <lablist> file.WriteStartAttribute("name"); file.WriteValue(list[i].List.Name); file.WriteStartAttribute("description"); file.WriteValue(list[i].List.Description); // теперь записываем все лабы предмета for (int j = 0; j < list[i].List.Items.Length; j++) { file.WriteStartElement("lab"); // открываем элемент <lab> file.WriteStartAttribute("name"); file.WriteValue(list[i].List.Items[j].Name); file.WriteStartAttribute("description"); file.WriteValue(list[i].List.Items[j].Description); file.WriteStartAttribute("status"); file.WriteValue(list[i].List.Items[j].Status.ToString()); // теперь записываем состав каждой лабы (элементы) for (int k = 0; k < list[i].List.Items[j].Elements.Length; k++) { file.WriteStartElement("element"); // открываем элемент </element> file.WriteStartAttribute("type"); file.WriteValue(list[i].List.Items[j].Elements[k].type.ToString()); file.WriteStartAttribute("iscompleted"); file.WriteValue(list[i].List.Items[j].Elements[k].isCompleted); file.WriteEndElement(); // закрываем элемент </element> } // закрываем элемент </lab> file.WriteEndElement(); } // закрываем элемент </lablist> file.WriteEndElement(); // закрываем элемент </subject> file.WriteEndElement(); } // закрываем элемент </subjlist> file.WriteEndElement(); file.Close(); }
/// <summary> /// Загрузка данных из файла /// </summary> /// <param name="fname">Полный путь и имя файла для чтения</param> /// <returns>Возвращает список предметов с ихними работами</returns> public static TSubjectList LoadListFromFile(string fname) { XmlTextReader file = null; TSubjectList list = null; TSubject subj = null; TListItem item = null; try { // Load the reader with the data file and ignore all white space nodes. file = new XmlTextReader(fname); file.WhitespaceHandling = WhitespaceHandling.None; // Parse the file and display each of the nodes. while (file.Read()) { switch (file.NodeType) { case XmlNodeType.Element: switch (file.Name) // проверяем элемент из XML файла { case "subjlist": // создание объекта списка list = new TSubjectList(file.GetAttribute("name"), file.GetAttribute("description")); break; case "subject": // считываем описание предмета subj = new TSubject(file.GetAttribute("name"), (TStatus)Enum.Parse(typeof(TStatus), file.GetAttribute("status"))); break; case "lablist": // считываем описание списка работ if (subj != null) subj.List = new TLabList(file.GetAttribute("name"), file.GetAttribute("description")); break; case "lab": item = new TListItem(file.GetAttribute("name"), file.GetAttribute("description"), (TStatus)Enum.Parse(typeof(TStatus), file.GetAttribute("status"))); break; case "element": if (item != null) { Element el = new Element(); el.type = (ElementsTypes)Enum.Parse(typeof(ElementsTypes) ,file.GetAttribute("type")); el.isCompleted = bool.Parse(file.GetAttribute("iscompleted")); item.AddElement(el); } break; } break; case XmlNodeType.EndElement: switch (file.Name) // проверка на завершение блока элемента { case "lab": // добавление работы в список работ if (subj != null) subj.List.AddItem(item); break; case "subject": // добавление предмета в список if (list != null) list.AddSubject(subj); break; } break; } } } finally { if (file != null) file.Close(); } // возвращаем считанный список из файла return list; }