private TToDoItem GetTask(TToDoItem rootitem, string name) { TToDoItem tmp = null; // проверим текущий узел на совпадениие имени if (rootitem.Name == name) tmp = rootitem; else { // если есть узлы у него, подзадачи, то рекурсивно обходим их for (int i = 0; i < rootitem.GetItemsCount; i++) { if (rootitem[i].Name == name) tmp = rootitem[i]; else GetTask(rootitem[i], name); } } return tmp; }
/// <summary> /// Удаление задачи по ее индексу в массиве (с подзадачами получается) /// </summary> /// <param name="ind">Индекс задачи в массиве</param> public void RemoveItem(int ind) { if (Items.Length == 0) { throw new Exception("Список задач пуст!"); } TToDoItem[] tmp = new TToDoItem[Items.Length - 1]; int k = 0; for (int i = 0; i < Items.Length; i++) if (ind != i) { tmp[k] = Items[i]; k++; } // заменяем новым массивом задач Items = tmp; }
string name; // название списка дел #endregion Fields #region Constructors /// <summary> /// Инициализация нового списка с начальными параметрами /// </summary> /// <param name="pname">Название списка</param> /// <param name="pdesc">Описание списка</param> public TToDoList(string pname, string pdesc) { name = pname; description = pdesc; Items = new TToDoItem(); // инициализируем корень дерева дел isChanged = true; // только создан, уже можно сохранять, без заданий }
/// <summary> /// Добавление записи в массив записей данной задачи (то есть, дочерние) /// </summary> /// <param name="item">Задача для добавления в массив</param> /// <returns>Возврашает индекс добавленной в массив задач новой задачи</returns> public int AddItem(TToDoItem item) { Array.Resize(ref Items, Items.Length + 1); Items[Items.Length - 1] = item; return Items.Length - 1; }