/// <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; }
/// <summary> /// Добавление элемента в список элементов работы /// </summary> /// <param name="elm">Новый элемент для добавления</param> /// <returns>Возвращает индекс нового втавленного элемента в список</returns> public int AddElement(Element elm) { Array.Resize(ref elements, elements.Length + 1); elements[elements.Length - 1] = elm; return elements.Length - 1; }
public static Element[] GetElementsFromIndexes(int[] selels) { Element[] tmp = new Element[selels.Length]; for (int i = 0; i < selels.Length; i++) { tmp[i].type = (ElementsTypes)Enum.Parse(typeof(ElementsTypes), selels[i].ToString()); tmp[i].isCompleted = false; } return tmp; }
TStatus status; // статус выполнения работы #endregion Fields #region Constructors /// <summary> /// Инициализация новой работы /// </summary> /// <param name="pname">Название работы</param> /// <param name="pdesc">Описание работы</param> /// <param name="els">Элементы работы</param> public TListItem(string pname, string pdesc, Element[] els) { name = pname; description = pdesc; elements = els; status = TStatus.NotStarted; // начальный статус работы }