/// <summary> /// Create a new task /// </summary> public void CreateNewTask() { TaskToDo newTask = null; using (FormTaskEditor dialog = new FormTaskEditor("- New task")) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { newTask = dialog.Task; } } if (newTask != null) { //save the new task _tasks.AddTask(newTask); SaveTasksToFile(); //select this new task _selectedTask = newTask; _selectedSubtask = newTask; //Refresh GUI RefreshContext refresher = new RefreshContext(); refresher.SetAll(); RefreshGui(refresher); } }
/// <summary> /// Set current selected subtask as not completed /// </summary> public void SetCurrentSubTaskNotCompleted() { if (_selectedSubtask == null) { return; } //update task status Boolean hasBegun = _selectedSubtask.Progression.HasBegun; //need to know if we will modify one of its child _selectedSubtask.SetNotCompleted(); SaveTasksToFile(); //update GUI RefreshContext refresher = new RefreshContext(); refresher.ContextMenus = true; refresher.ListOfTasksSoft = true; if (_hideCompletedSubtasks && hasBegun) //new child will appear { refresher.CurrentTaskHard = true; } else //all child were already visible { refresher.CurrentTaskSoft = true; } refresher.ListOfTasksSoft = true; RefreshGui(refresher); }
/// <summary> /// Switch in edition mode for current task /// </summary> public void EditCurrentTask() { if (_selectedTask == null) { return; } TaskToDo editedTask = null; using (FormTaskEditor form = new FormTaskEditor(_selectedTask)) { if (form.ShowDialog() == DialogResult.OK) { editedTask = form.Task; } } if (editedTask != null) { //proceed to task replacement _tasks.ReplaceTask(_selectedTask, editedTask); SaveTasksToFile(); //Change the selection with current task _selectedTask = editedTask; _selectedSubtask = editedTask; //Refresh GUI RefreshContext refresher = new RefreshContext(); refresher.SetAll(); RefreshGui(refresher); } }
/// <summary> /// Change the current selected subtask /// </summary> /// <param name="selectedSubtask"></param> public void SelectCurrentSubTask(TaskToDo selectedSubtask) { RefreshContext refresher = new RefreshContext(); SetSelectedSubTask(selectedSubtask, refresher); RefreshGui(refresher); }
/// <summary> /// changes the selected subtask (inside the current task) /// </summary> /// <param name="selectedSubtask"></param> /// <param name="refreshContext"></param> private void SetSelectedSubTask(TaskToDo selectedSubtask, RefreshContext refreshContext) { _selectedSubtask = selectedSubtask; refreshContext.CurrentTaskSoft = true; refreshContext.ContextMenus = true; refreshContext.Description = true; }
/// <summary> /// changes the selected task (inside the list of tasks) /// </summary> /// <param name="selectedTask"></param> /// <param name="refreshContext"></param> private void SetSelectedTask(TaskToDo selectedTask, RefreshContext refreshContext) { _selectedTask = selectedTask; _selectedSubtask = _selectedTask != null ? _selectedTask : null; refreshContext.ListOfTasksSoft = true; refreshContext.CurrentTaskHard = true; refreshContext.ContextMenus = true; refreshContext.Description = true; }
/// <summary> /// Changes the filter that is applied on subtasks /// </summary> /// <param name="hideCompletedSubtasks"></param> public void ChangeSubtaskFilter(Boolean hideCompletedSubtasks) { _hideCompletedSubtasks = hideCompletedSubtasks; RefreshContext refresher = new RefreshContext(); //change the current selected subtask if becomes hidden if (_hideCompletedSubtasks && _selectedSubtask != null && _selectedSubtask.IsCompleted) { SetSelectedSubTask(_selectedTask, refresher); //use the top level task because it is always displayed } //refresh the GUI refresher.CurrentTaskHard = true; refresher.FilterOption = true; RefreshGui(refresher); }
/// <summary> /// Move the seleted task in list of tasks down /// </summary> public void MoveSelectedTaskDown() { if (_selectedTask == null || !_tasks.CanMoveTaskDown(_selectedTask)) { return; } //Move task down _tasks.MoveTaskDown(_selectedTask); SaveTasksToFile(); //Refresh GUI RefreshContext refresher = new RefreshContext(); refresher.ContextMenus = true; refresher.ListOfTasksHard = true; RefreshGui(refresher); }
/// <summary> /// Move the current selected subtask down (swap it with its next brother) /// </summary> public void MoveSelectedSubtaskDown() { if (_selectedSubtask == null || !_selectedSubtask.CanMoveDown()) { return; } //move the subtask down _selectedSubtask.MoveDown(); SaveTasksToFile(); //Refresh GUI RefreshContext refresher = new RefreshContext(); refresher.CurrentTaskHard = true; refresher.ContextMenus = true; RefreshGui(refresher); }
/// <summary> /// init the controller and the main view /// </summary> public void Init() { //try to load the saved file if (File.Exists(_saveFileName)) { _tasks.LoadFromFile(_saveFileName); } else { _view.DisplayMessageBox(String.Format("{0} doesn't exist, create a new empty collection of tasks", _saveFileName), "New file"); } //Refresh all the GUI RefreshContext refresher = new RefreshContext(); refresher.SetAll(); RefreshGui(refresher); }
/// <summary> /// Removes the currently selected task from the collection /// </summary> public void DeleteSelectedTask() { if (_selectedTask == null) { return; } //remove the task _tasks.RemoveTask(_selectedTask); SaveTasksToFile(); //Delete the selection _selectedTask = null; _selectedSubtask = null; //Refresh the GUI RefreshContext refresher = new RefreshContext(); refresher.SetAll(); RefreshGui(refresher); }
/// <summary> /// Deletes the selected subtask /// </summary> public void DeleteSelectedSubtask() { if (_selectedSubtask == null || _selectedSubtask.IsRoot) //cannot delete the root task { return; } //remove the subtask TaskToDo parent = _selectedSubtask.ParentTask; parent.RemoveSubtask(_selectedSubtask); SaveTasksToFile(); //change the selection to its parent RefreshContext refresher = new RefreshContext(); SetSelectedSubTask(parent, refresher); //update GUI refresher.CurrentTaskHard = true; refresher.ListOfTasksSoft = true; RefreshGui(refresher); }
/// <summary> /// Set current selected subtask as completed /// </summary> public void SetCurrentSubTaskCompleted() { if (_selectedSubtask == null) { return; } RefreshContext refresher = new RefreshContext(); //change status of current selected subtask _selectedSubtask.SetCompleted(); SaveTasksToFile(); //add needed update to the GUI refresher.CurrentTaskSoft = true; refresher.ContextMenus = true; refresher.ListOfTasksSoft = true; //change selected items if it becomes hidden if (_hideCompletedSubtasks) //become hidden, change the selected item for the top level task { SetSelectedSubTask(_selectedTask, refresher); //task of top level is now selected refresher.CurrentTaskHard = true; } RefreshGui(refresher); }
/// <summary> /// Refresh some parts of the GUI /// </summary> /// <param name="toRefresh"></param> private void RefreshGui(RefreshContext toRefresh) { //list of tasks if (toRefresh.ListOfTasksHard) { _view.HardRefreshListOfTasks(_tasks.Tasks, _selectedTask); } else if (toRefresh.ListOfTasksSoft) { _view.SoftRefreshListOfTasks(_selectedTask); } //current task if (toRefresh.CurrentTaskHard) { _view.HardRefreshCurrentTask(_selectedTask, _selectedSubtask, _hideCompletedSubtasks); } else if (toRefresh.CurrentTaskSoft) { _view.SoftRefreshCurrentTask(); } //Description if (toRefresh.Description) { RefreshDescription(); } //context Menus if (toRefresh.ContextMenus) { RefreshContextMenus(); } //filter options if (toRefresh.FilterOption) { _view.RefreshFilterOptions(_hideCompletedSubtasks); } }