/// <summary> /// Moves the selected task down in order within active task list. /// </summary> public void MoveDownTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); TaskViewModel nextTaskVM = ActiveTasks[ActiveTasks.IndexOf(selectedTaskVM) + 1]; if (selectedTaskVM != null && nextTaskVM != null) { int selectedSortOrder = selectedTaskVM.SortOrder.Value; int nextSortOrder = nextTaskVM.SortOrder.Value; selectedTaskVM.SortOrder = nextSortOrder; selectedTaskVM.Save(); nextTaskVM.SortOrder = selectedSortOrder; nextTaskVM.Save(); } }
/// <summary> /// Moves the selected task up in order within active task list. /// </summary> public void MoveUpTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); TaskViewModel previousTaskVM = ActiveTasks[ActiveTasks.IndexOf(selectedTaskVM) - 1]; if (selectedTaskVM != null && previousTaskVM != null) { int selectedSortOrder = selectedTaskVM.SortOrder.Value; int previousSortorder = previousTaskVM.SortOrder.Value; selectedTaskVM.SortOrder = previousSortorder; selectedTaskVM.Save(); previousTaskVM.SortOrder = selectedSortOrder; previousTaskVM.Save(); } }
void GongSolutions.Wpf.DragDrop.IDropTarget.Drop(DropInfo dropInfo) { TaskViewModel sourceTask = (TaskViewModel)dropInfo.Data; int oldIndex = ActiveTasks.IndexOf(sourceTask); int newIndex = dropInfo.InsertIndex; if (oldIndex >= 0) { if (newIndex < oldIndex) { // move the item up in the list toward the top ActiveTasks.Move(oldIndex, newIndex); List <TaskViewModel> tasksToSave = new List <TaskViewModel>(); // update our sort order values for (int i = newIndex; i < oldIndex; i++) { TaskViewModel currentTaskVM = ActiveTasks[i]; TaskViewModel nextTaskVM = ActiveTasks[i + 1]; int currentSortOrder = currentTaskVM.SortOrder.Value; int nextSortOrder = nextTaskVM.SortOrder.Value; currentTaskVM.SortOrder = nextSortOrder; nextTaskVM.SortOrder = currentSortOrder; tasksToSave.Add(currentTaskVM); if (i + 1 == oldIndex) { tasksToSave.Add(nextTaskVM); } } foreach (TaskViewModel updatedTask in tasksToSave) { updatedTask.Save(); } } else if (newIndex > oldIndex) { // move the item down in the list toward the bottom ActiveTasks.Move(oldIndex, newIndex - 1); List <TaskViewModel> tasksToSave = new List <TaskViewModel>(); // update our sort order values for (int i = newIndex - 1; i > oldIndex; i--) { TaskViewModel currentTaskVM = ActiveTasks[i]; TaskViewModel previousTaskVM = ActiveTasks[i - 1]; int currentSortOrder = currentTaskVM.SortOrder.Value; int previousSortOrder = previousTaskVM.SortOrder.Value; currentTaskVM.SortOrder = previousSortOrder; previousTaskVM.SortOrder = currentSortOrder; tasksToSave.Add(currentTaskVM); if (i - 1 == oldIndex) { tasksToSave.Add(previousTaskVM); } } foreach (TaskViewModel updatedTask in tasksToSave) { updatedTask.Save(); } } } }
bool CanMoveDownTask() { TaskViewModel selectedTask = ActiveTasks.Where(t => t.IsSelected == true).FirstOrDefault(); return(selectedTask != null && (ActiveTasks.IndexOf(selectedTask) < (ActiveTasks.Count - 1)) && ActiveTasks.Count(t => t.IsSelected == true) == 1); }