public void AddToFave(int taskID) { if (TasksVM.IsFave(taskID)) { return; } var taskNode = TasksVM.DictionaryFull[taskID]; // Добавим всех родителей, если их нет в избранном List <TreeNode> toAddInFave = new List <TreeNode>(); var parent = taskNode.ParentNode; while (parent != null && !TreeRoots.Contains(parent)) { toAddInFave.Add(parent); parent = parent.ParentNode; } for (int i = toAddInFave.Count - 1; i >= 0; --i) { if (!TasksVM.IsFave(toAddInFave[i].Task.ID)) { TasksVM.AddFave(toAddInFave[i].Task); } } // Добавим себя TasksVM.AddFave(taskNode.Task); if (taskNode.Task.ParentTaskID == null) { TreeRoots.Add(taskNode); } }
public void Accept(object obj) { if (_favouritingTask == null) { return; } if (TasksVM.IsFave(_favouritingTask.ID)) { MessageBox.Show("Данная задача уже добавлена в избранное"); return; } //Mouse.OverrideCursor = Cursors.Wait; Mouse.SetCursor(Cursors.Wait); // Добавим всех родителей, если их нет в избранном List <TreeNode> toAddInFave = new List <TreeNode>(); var parent = SelectedTaskNode.ParentNode; while (parent != null && !FaveTreeRoots.Contains(parent)) { toAddInFave.Add(parent); parent = parent.ParentNode; } for (int i = toAddInFave.Count - 1; i >= 0; --i) { if (!TasksVM.IsFave(toAddInFave[i].Task.ID)) { TasksVM.AddFave(toAddInFave[i].Task); } } // Добавим себя TasksVM.AddFave(_favouritingTask); // Добавим своё поддерево Queue <TreeNode> nodeToFave = new Queue <TreeNode>(); nodeToFave.Enqueue(SelectedTaskNode); while (nodeToFave.Count > 0) { var curNode = nodeToFave.Dequeue(); foreach (var childNode in curNode.TreeNodes) { TasksVM.AddFave(childNode.Task); nodeToFave.Enqueue(childNode); } } //Mouse.OverrideCursor = Cursors.Arrow; Mouse.SetCursor(Cursors.Arrow); MessageBox.Show("Задача: " + _favouritingTask.TaskName + " добавлена в избранное", "Добавление в избранное", MessageBoxButton.OK, MessageBoxImage.Information); //MessengerInstance.Unregister<KeyValuePair<TaskCommandEnum, Task>>(this, _doTaskCommand); }