Example #1
0
        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);
            }
        }
Example #2
0
        private bool CanMoveDown(object obj)
        {
            if (SelectedTaskNode == null || dialog != null || !MainWindow.IsEnable)
            {
                return(false);
            }

            if (SelectedTaskNode.ParentNode != null)
            {
                TreeNode parentNode = SelectedTaskNode.ParentNode;
                int      index      = parentNode.TreeNodes.IndexOf(SelectedTaskNode);
                if (index + 1 < parentNode.TreeNodes.Count)
                {
                    return(true);
                }
            }
            else
            {
                int index = TreeRoots.IndexOf(SelectedTaskNode);
                if (index + 1 < TreeRoots.Count)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #3
0
        // If you have install the code sniplets, use "propvm + [tab] +[tab]" create a property propcmd for command
        // 如果您已经安装了 MVVMSidekick 代码片段,请用 propvm +tab +tab 输入属性 propcmd 输入命令

        public MultiLevelSelection_Model()
        {
            if (IsInDesignMode)
            {
            }

            var rval = Enumerable.Range(0, 3)
                       .Select(
                i =>
            {
                var item = new TreeItemModel <string, string> {
                    State = "Item" + i.ToString()
                };
                PopulateVNext(item);

                foreach (TreeItemModel <string, string> itmlv2 in item.Children)
                {
                    PopulateVNext(itmlv2);
                }
                return(item);
            }
                );


            foreach (var item in rval)
            {
                TreeRoots.Add(item);
            }



            Level1Selection.GetValueContainer(x => x.SelectedItem)
            .GetNullObservable()
            .Where(_ => Level1Selection.SelectedItem != null)
            .Subscribe(
                _ =>
            {
                Level2Selection.Items = new ObservableCollection <TreeItemModel <string, string> >(Level1Selection.SelectedItem.Children.Cast <TreeItemModel <string, string> >());
            }
                );


            Level2Selection.GetValueContainer(x => x.SelectedItem)
            .GetNullObservable()
            .Where(_ => Level2Selection.SelectedItem != null)
            .Subscribe(
                _ =>
            {
                Level3Selection.Items = new ObservableCollection <TreeItemModel <string, string> >(Level2Selection.SelectedItem.Children.Cast <TreeItemModel <string, string> >());
            }
                );
        }
Example #4
0
        public void DoTaskCommand(KeyValuePair <FaveTaskCommandEnum, Task> pair)
        {
            FaveTaskCommandEnum command = pair.Key;
            Task task = pair.Value;

            if (!TasksVM.Dictionary.ContainsKey(task.ID))
            {
                return;
            }

            switch (command)
            {
            case FaveTaskCommandEnum.Edit:
                TreeNode oldNode = TasksVM.Dictionary[task.ID];
                int      index   = -1;

                if (oldNode.ParentNode == null)
                {
                    index = TreeRoots.IndexOf(oldNode);
                }

                //if (oldNode.ParentNode != TasksVM.DictionaryFull[task.ID].ParentNode)
                //{
                //    Context.procedureWork.RepareUserFave(task.ID);
                //    TasksVM.Init_tracker = false;
                //    TasksVM.InitFave();
                //}

                TasksVM.Edit(task, false);
                TreeNode newNode = TasksVM.Dictionary[task.ID];

                if (index != -1 && newNode.ParentNode == null)
                {
                    UpdateRootNode(index, newNode);
                }
                else if (newNode.ParentNode == null)
                {
                    AddRootNode(newNode);
                }
                else
                {
                    DeleteRootNode(oldNode);
                }

                break;
            }
        }
Example #5
0
        private void DeleteFaveTask(object obj)
        {
            FilterTaskText = "";
            FilterTree(obj);
            TasksVM.FilterFaveTaskText = "";
            var dialogResult = System.Windows.MessageBox.Show("Вы уверены, что хотите удалить задачу из избранного?", "Подтверждение",
                                                              MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (dialogResult == MessageBoxResult.No)
            {
                return;
            }

            //Mouse.OverrideCursor = Cursors.Wait;
            Mouse.SetCursor(Cursors.Wait);

            //Roots
            int delTaskID    = SelectedTaskNode.Task.ID;
            int?parentTaskID = SelectedTaskNode.Task.ParentTaskID;

            if (TreeRoots.Contains(SelectedTaskNode))
            {
                TreeRoots.Remove(SelectedTaskNode);
            }
            //if (TasksVM.Dictionary.ContainsKey(SelectedTaskNode.Task.ID))
            //    TasksVM.Dictionary.Remove(SelectedTaskNode.Task.ID);


            TasksVM.DeleteFaveWithChildren(delTaskID);
            if (parentTaskID != null)
            {
                ChangeSelection(TasksVM.Dictionary[(int)parentTaskID]);
            }
            else
            {
                ChangeSelection(TasksVM.Dictionary.FirstOrDefault().Value);
            }
            //Mouse.OverrideCursor = Cursors.Arrow;
            Mouse.SetCursor(Cursors.Arrow);
        }
Example #6
0
        private void MoveUp(object obj)
        {
            int  curI  = (int)SelectedTaskNode.IndexNumber;
            var  task1 = SelectedTaskNode.Task;
            Task task2 = null;

            if (SelectedTaskNode.ParentNode != null)
            {
                TreeNode parentNode = SelectedTaskNode.ParentNode;
                int      index      = parentNode.TreeNodes.IndexOf(SelectedTaskNode);
                parentNode.TreeNodes[index].IndexNumber     = parentNode.TreeNodes[index - 1].IndexNumber;
                parentNode.TreeNodes[index - 1].IndexNumber = curI;
                task2 = parentNode.TreeNodes[index - 1].Task;


                DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, parentNode.TreeNodes[index].Task));
                DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, parentNode.TreeNodes[index - 1].Task));

                parentNode.TreeNodes.Move(index, index - 1);
                ChangeSelection(parentNode.TreeNodes[index - 1]);
            }
            else
            {
                int index = TreeRoots.IndexOf(SelectedTaskNode);

                TreeRoots[index].IndexNumber     = TreeRoots[index - 1].IndexNumber;
                TreeRoots[index - 1].IndexNumber = curI;
                task2 = TreeRoots[index - 1].Task;

                DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, TreeRoots[index].Task));
                DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, TreeRoots[index - 1].Task));

                TreeRoots.Move(index, index - 1);
                ChangeSelection(TreeRoots[index - 1]);
            }
            TasksVM.ReplaceUserTasks(task1, task2);
        }