예제 #1
0
        /// <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;
        }
예제 #2
0
 /// <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;
 }
예제 #3
0
 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;
 }
예제 #4
0
        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; // начальный статус работы
        }